Commit Graph

32136 Commits

Author SHA1 Message Date
Richard Henderson
f846e0de9b flow.c (calculate_global_regs_live): Force the stack pointer live after reload as well.
* flow.c (calculate_global_regs_live): Force the stack pointer live
        after reload as well.

From-SVN: r38114
2000-12-07 11:29:24 -08:00
Bruce Korb
83c4781c63 use "exeext" for variables and "build_exeext" for substitution
From-SVN: r38113
2000-12-07 14:42:39 +00:00
Nathan Sidwell
38da603971 class.c (check_field_decls): Don't special case anonymous fields in error messages.
* class.c (check_field_decls): Don't special case anonymous
	fields in error messages.
	(note_name_declared_in_class): Use %D on diagnostic.

	* tree.c (pod_type_p): Use strip_array_types.
	(cp_valid_lang_attribute): Likewise.
	* typeck.c (cp_type_quals): Strip arrays separately, to avoid
	multiple evaluations.
	(cp_has_mutable_p): Use strip_array_types.

From-SVN: r38112
2000-12-07 14:26:37 +00:00
Nathan Sidwell
a11d04b523 cp-tree.h (sufficient_parms_p): Declare new function.
* cp-tree.h (sufficient_parms_p): Declare new function.
	* call.c (sufficient_parms_p): New function, broken out of ...
	(add_function_candidate): ... here. Use it.
	(add_conv_candidate): Use it.
	* decl.c (grok_ctor_properties): Use it.

From-SVN: r38111
2000-12-07 14:17:53 +00:00
Jakub Jelinek
5eec284733 optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
* optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.

	* g++.old-deja/g++.other/cleanup4.C: New test.

From-SVN: r38110
2000-12-07 10:19:10 +01:00
Jeff Law
c0d82ab19c Daily bump.
From-SVN: r38109
2000-12-07 01:45:08 -07:00
Joseph Myers
beb039fe77 * gcc_update: Don't touch tradcif.c or java/parse.h.
From-SVN: r38108
2000-12-07 08:13:13 +00:00
Neil Booth
47e4bafaf1 * Changelog: Forgotten commit.
From-SVN: r38107
2000-12-07 08:03:07 +00:00
Joseph Myers
c907e68489 c-common.c (warn_format_security): New variable.
* c-common.c (warn_format_security): New variable.
	(check_format_info): Warn about non-literal formats with no format
	arguments if either -Wformat-nonliteral or -Wformat-security is
	specified.
	(set_Wformat): Set warn_format_security for settings other than 1.
	* c-common.h (warn_format_security): Declare.
	* c-decl.c (c_decode_option): Decode -Wformat-security and
	-Wno-format-security.
	* invoke.texi: Document -Wformat-security.
	* toplev.c (documented_lang_options): Include -Wformat-security
	and -Wno-format-security.

cp:
	* decl2.c (lang_decode_option): Handle -Wformat-security.

testsuite:
	* format-sec-1.c: New test.

From-SVN: r38106
2000-12-07 07:56:44 +00:00
Joseph Myers
1c248308f4 c-common.c (check_format_info): Warn for non-constant format strings with strftime formats if -Wformat-nonliteral.
* c-common.c (check_format_info): Warn for non-constant format
	strings with strftime formats if -Wformat-nonliteral.  Where the
	format can convert arguments, if the format is not a string
	literal and there are no arguments to the format, give a different
	warning message from the general non-string-literal case.

testsuite:
	* gcc.dg/format-nonlit-3.c: New test.

From-SVN: r38105
2000-12-07 07:52:20 +00:00
Joseph Myers
014e7f1d30 c-common.c (format_wanted_type): Add reading_from_flag.
* c-common.c (format_wanted_type): Add reading_from_flag.
	(print_char_table): Mark %s and %S formats with flag "R".
	(check_format_info_main): Set up reading_from_flag appropriately.
	If aflag, always set writing_in_flag rather than relying on the
	format used being a scanf format and so having it set.
	(check_format_types): Check for formats reading through null
	pointers.

testsuite:
	* gcc.dg/c90-printf-1.c: Add test for printf formats reading
	through a null pointer.

From-SVN: r38104
2000-12-07 07:40:45 +00:00
Joseph Myers
8308e0b786 invoke.texi (-Wformat): Document what format features are checked.
* invoke.texi (-Wformat): Document what format features are
	checked.

From-SVN: r38103
2000-12-07 07:38:13 +00:00
Kriang Lerdsuwanakij
74601d7c09 pt.c (verify_class_unification): New function.
* pt.c (verify_class_unification): New function.
	(get_class_bindings): Use it.
	(try_class_unification): Tidy.
	(unify): Handle when argument of a template-id is not
	template parameter dependent.
	(template_args_equal): Handle when TREE_CODE's do not match.

	* g++.old-deja/g++.oliva/partspec1.C: Remove XFAIL.
	* g++.old-deja/g++.pt/partial4.C: New test.

From-SVN: r38102
2000-12-07 07:17:09 +00:00
Neil Booth
9ba2e1ef80 c-common.c (parse_in): Make a cpp_reader *.
* c-common.c (parse_in): Make a cpp_reader *.
        * cppfiles.c (_cpp_fake_include): Remove.
        * cpphash.h: Similarly.
        * cpplib.c (do_line): Don't call _cpp_fake_include.  A valid
        #line always creates a callback; FC_RENAME if there are no
        #line flags.
        * fix-header.c (read_scan_file): cpp_push_buffer cannot fail.
        The first EOF must be our get_char buffer.

From-SVN: r38101
2000-12-07 07:14:42 +00:00
Benjamin Kosnik
167ed88f7a locale_facets.h (ctype): Remove _Ctype_nois and _Ctype and replace with common __ctype_abstract_base.
2000-12-06  Benjamin Kosnik  <bkoz@kredhat.com>

	* include/bits/locale_facets.h (ctype): Remove _Ctype_nois and
	_Ctype and replace with common __ctype_abstract_base.
	(ctype<wchar_t>::_M_convert_to_wmask): Move to locale.cc.
	* config/os/gnu-linux/bits/ctype_noninline.h (ctype<char>::ctype):
	And here.
	* config/os/solaris/solaris2.7/bits/ctype_noninline.h (ctype): Same.
	* config/os/solaris/solaris2.6/bits/ctype_noninline.h (ctype): Same.
	* config/os/solaris/solaris2.5/bits/ctype_noninline.h (ctype): Same.
	* config/os/newlib/bits/ctype_noninline.h (ctype): Same.
	* config/os/irix/bits/ctype_noninline.h (ctype): Same.
	* config/os/hpux/bits/ctype_noninline.h (ctype): Same.
	* config/os/generic/bits/ctype_noninline.h (ctype): Same.
	* config/os/aix/bits/ctype_noninline.h (ctype): Same.
	* config/os/bsd/netbsd/bits/ctype_noninline.h (ctype): Same.
	* config/os/bsd/freebsd/bits/ctype_noninline.h (ctype): Same.
	* src/locale-inst.cc: Clean instantiations.
	* src/locale.cc (ctype<char>): Add definitions here.
	(ctype<wchar_t>::_M_wmask): Move definitions here.

	* config/os/generic/bits/ctype_inline.h (ctype<char>::is):
	Implement in a generic way, with only "C" functionality and no
	knowlege of the target os.
	* config/os/generic/bits/os_defines.h: Change comments to C++ style.
	* testsuite/22_locale/ctype_char_members.cc (test01): Add tests.

	* include/bits/codecvt.h (ctype_byname): Remove specializations,
	as not required.
	* include/bits/localefwd.h (codecvt_byname): And here.
	* src/codecvt.cc: Remove codecvt_byname specializations.

	* include/c/bits/std_cstdio.h: Include c++config.h.

From-SVN: r38100
2000-12-07 06:44:49 +00:00
Kazu Hirata
1120a1d327 * config/h8300/h8300.h: Fix formatting.
From-SVN: r38095
2000-12-06 20:14:30 -07:00
Joel Sherrill
bc98ef7f6c config.gcc (a29k*-*-rtems*, [...]): New targets.
* config.gcc (a29k*-*-rtems*, arm*-*-rtems*, c4x-*-rtems*,
        h8300-*-rtems*, hppa1.1-*-rtems, *mips*-*-rtems*): New targets.
        * config.gcc (*-rtems*): Add support for gthr-rtems.h.
        * gthr-rtems.h, config/a29k/rtems.h, config/arm/rtems-elf.h,
        config/h8300/rtems.h, config/mips/rtems.h: New files.

From-SVN: r38094
2000-12-06 19:42:02 -07:00
Mark Kettenis
5eeab2e3fd config.gcc: Reorganize handling of *-*-gnu*, to share target specific make details with Linux.
* config.gcc: Reorganize handling of *-*-gnu*, to share target
	specific make details with Linux.  Update comments to clarify
        the distinction between GNU/Linux and GNU/Hurd.

From-SVN: r38093
2000-12-06 19:35:41 -07:00
Rodney Brown
f5720527d9 c-lex.c (cb_indent): Decorate `str' argument, unused on HP-UX.
* c-lex.c (cb_indent): Decorate `str' argument, unused on HP-UX.
    * collect2.c (scan_libraries): Remove unused `ch'.
    (COFF specific stuff): Prototype ldgetname.  Declare and prototype
    ldbtread and ldclose.

From-SVN: r38092
2000-12-06 19:31:47 -07:00
Jeffrey A Law
6b4b8cb9ef contrib.texi: Fix my email address.
* contrib.texi: Fix my email address.  Update Per's
        list of contributions.

From-SVN: r38091
2000-12-06 19:26:59 -07:00
J. David Anglin
56ef50e465 * gcc.c-torture/execute/ieee/hugeval.x: New.
From-SVN: r38090
2000-12-06 19:05:33 -07:00
Jeff Law
0460a979f9 Forgot to commit with last change.
From-SVN: r38089
2000-12-06 19:01:22 -07:00
Rodney Brown
2398fb2aea osf.h: Standarize copyright statement.
* config/alpha/osf.h: Standarize copyright statement.
	* config/arc/arc.h: Likewise.
	* config/arm/elf.h config/arm/coff.h config/arm/aout.h: Likewise.
	* config/arm/arm.c config/arm/arm.h: Likewise.
	* config/elxsi/elxsi.h: Likewise.
	* config/i386/sco.h: Likewise.
	* config/m68k/crds.h config/m68k/hp320.h config/m68k/lynx.h: Likewise.
	* config/m68k/m68kv4.h config/m68k/next21.h: Likewise.
	* config/m68k/sun3.h: Likewise.
	* config/m88k/dgux.h config/m88k/dguxbcs.h: Likewise.
	* config/pdp11/2bsd.h config/pdp11/pdp11.h: Likewise.
	* config/romp/romp.h: Likewise.
	* config/rs6000/aix41.h: Likewise.
	* config/sparc/sysv4.h: Likewise.
	* config/we32k/we32k.c config/we32k/we32k.h: Likewise.
	* fixinc/gnu-regex.c fixinc/gnu-regex.h: Likewise.
	* cpplib.h cppexp.c cselib.h profile.c: Likewise.
	* longlong.h: Likewise.
	* libgcc2.c: Likewise.

From-SVN: r38088
2000-12-06 18:58:25 -07:00
Rodney Brown
48e1571acc actions.h: Standarize copyright statement.
* actions.h: Standarize copyright statement.
        * except.c inout.c lang.c lex.c lex.h loop.c nloop.c: Likewise.
        * parse.c tasking.c tasking.h timing.c xtypeck.c: Likewise.

From-SVN: r38087
2000-12-06 18:55:52 -07:00
Rodney Brown
0b749da1b8 * getopt.h obstack.h: Standarize copyright statement.
From-SVN: r38086
2000-12-06 18:54:13 -07:00
Jeff Law
ff08da301e machmode.def: Use correct definition for BITSIZE on targets where BITS_PER_UNIT != 8.
* machmode.def: Use correct definition for BITSIZE on targets where
	BITS_PER_UNIT != 8.

From-SVN: r38085
2000-12-06 18:47:31 -07:00
Ralf Corsepius
68c9c61a01 * thr-rtems.c: New file. Stub to compile.
From-SVN: r38084
2000-12-06 18:40:42 -07:00
Bruce Korb
6047d50309 Make the fixinc/Makefile.* files more similar
From-SVN: r38083
2000-12-07 01:32:11 +00:00
J. David Anglin
becf164798 pa.c: Include expr.h before c-tree.h.
* pa.c: Include expr.h before c-tree.h.
        (remove_useless_addtr_insns): Use reverse_condition_maybe_unordered
        instead of reverse_condition.
        (print_operand): Correct predicates for GT, GE, LT and LE.  Add
        predicates for LTGT, UNLE, UNLT, UNGE, UNGT, UNEQ, UNORDERED and
        ORDERED.
        (cmpib_comparison_operator): Add GEU and LTU codes.
        * pa.h (PREDICATE_CODES): Add codes for cmpib_comparison_operator.
        * pa.md (bltgt, bunle, bunlt, bunge, bungt, buneq, bunordered,
        bordered): New float conditional branch patterns.

From-SVN: r38082
2000-12-06 18:06:47 -07:00
Tom Tromey
b2d98afe06 GridBagConstraints.java: Filled in values for static final fields.
* java/awt/GridBagConstraints.java: Filled in values for static
	final fields.

From-SVN: r38081
2000-12-07 00:46:13 +00:00
J"orn Rennecke
2a84158850 * final.c (final_addr_vec_align): Fix clipping to BIGGEST_ALIGNMENT.
From-SVN: r38080
2000-12-07 00:13:23 +00:00
Phil Edwards
f84ef7fb01 acinclude.m4 (GLIBCPP_CHECK_*_DECL_AND_LINKAGE_*): Pre-test whether the cached result is present.
2000-12-06  Phil Edwards  <pme@sources.redhat.com>

	* acinclude.m4 (GLIBCPP_CHECK_*_DECL_AND_LINKAGE_*):  Pre-test
	  whether the cached result is present.
	* aclocal.m4:  Regenerate.
	* configure:  Regenerate.
	* Makefile.in:  Regenerate.
	* libio/Makefile.in:  Regenerate.
	* libmath/Makefile.in:  Regenerate.
	* libsupc++/Makefile.in:  Regenerate.
	* src/Makefile.in:  Regenerate.

From-SVN: r38079
2000-12-06 21:44:50 +00:00
Tom Tromey
308d7d2b3b * java/util/BitSet.java: Updated copyright notice.
From-SVN: r38078
2000-12-06 21:26:32 +00:00
Tom Tromey
c9e99de581 Removed erroneous ChangeLog line
From-SVN: r38077
2000-12-06 21:23:00 +00:00
Tom Tromey
ef9508c093 Makefile.in: Rebuilt.
* Makefile.in: Rebuilt.
	* Makefile.am (awt_java_source_files): Added new file.
	* java/awt/GridBagConstraints.java: New file.

From-SVN: r38076
2000-12-06 21:22:23 +00:00
Tom Tromey
456ffe4c68 Collator.java (decomposeCharacter, [...]): Now package-private, not protected.
* java/text/Collator.java (decomposeCharacter, decmp, strength):
	Now package-private, not protected.
	* java/text/DateFormatSymbols.java (equals): Now private.
	* java/text/DecimalFormatSymbols.java (safeGetChar): Now private.
	* java/util/BitSet.java: Class no longer final.
	* java/util/Set.java (toArray(Object[])): New method.

From-SVN: r38075
2000-12-06 21:14:14 +00:00
Richard Earnshaw
f0bffd9921 configure.target (*-*-freebsd, *-*-netbsd): Correct paths to os_include_dir.
* configure.target (*-*-freebsd, *-*-netbsd): Correct paths to
os_include_dir.

From-SVN: r38074
2000-12-06 21:04:19 +00:00
Neil Booth
176cb77883 * gcc.dg/cpp/backslash2.c
From-SVN: r38073
2000-12-06 20:14:32 +00:00
Sylvain Pion
c673abe457 cpplex.c (skip_escaped_newlines): Don't warn for spaces between backslash and newline, when inside a comment.
* cpplex.c (skip_escaped_newlines): Don't warn for spaces between
        backslash and newline, when inside a comment.

From-SVN: r38072
2000-12-06 20:12:59 +00:00
Alexandre Petit-Bianco
46142b263c parse.y (end_artificial_method_body): Fixed typo.
2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (end_artificial_method_body): Fixed typo.

(http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00320.html)

From-SVN: r38071
2000-12-06 12:02:02 -08:00
Alexandre Petit-Bianco
c7303e411e [multiple changes]
2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * jcf-write.c (OP1): Update `last_bc'.
        (struct jcf_block): Fixed indentation and typo in comments.  New
        field `last_bc'.
        (generate_bytecode_insns): Insert `nop' if `jsr' immediately
        follows `monitorenter'.
        * parse.y (patch_synchronized_statement): New local `tmp'. Call
        `patch_string'.
        Fixes gcj/232.

2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * check-init.c (check_init): Fixed leading comment. Use
        LOCAL_FINAL_P.
        * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
        (give_name_to_locals): Likewise.
        (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
        fields in lang_decl_var.
        * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
        DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
        (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
        (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
        DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
        (LOCAL_FINAL): Rewritten.
        (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
        MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
        (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
        `init_final' fields.
        (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
        `final_uid', `final_liic', `final_ierr' and `local_final' fields.
        (TYPE_HAS_FINAL_VARIABLE): New macro.
        (struct lang_type): Added `afv' field.
        * parse.y (check_static_final_variable_assignment_flag): New function.
        (reset_static_final_variable_assignment_flag): Likewise.
        (check_final_variable_local_assignment_flag): Likewise.
        (reset_final_variable_local_assignment_flag): Likewise.
        (check_final_variable_indirect_assignment): Likewise.
        (check_final_variable_global_assignment_flag): Likewise.
        (add_inner_class_fields): Use LOCAL_FINAL_P.
        (register_fields): Handle local finals and final variables.
        (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
        (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
        (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
        on local finals.
        (java_complete_expand_methods): Loop to set
        TYPE_HAS_FINAL_VARIABLE. Call
        `reset_final_variable_local_assignment_flag' and
        `check_final_variable_local_assignment_flag' accordingly before
        and after constructor expansion. Call
        `reset_static_final_variable_assignment_flag'
        before expanding <clinit> and after call
        `check_static_final_variable_assignment_flag' if the
        current_class isn't an interface. After all methods have been
        expanded, call `check_final_variable_global_assignment_flag' and
        `check_static_final_variable_assignment_flag' if the current class
        is an interface.
        (maybe_yank_clinit): Fixed typo in comment.
        (build_outer_field_access_methods): Removed old sanity check. Use
        FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
        Don't create access methods for finals.
        (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
        (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
        existing DECL_INIT has been processed.
        (java_complete_lhs): Likewise.
        (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
        Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
        logic.
        (patch_assignment): Use LOCAL_FINAL_P.
        (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
        DECL_INITIAL is nullified.
        Fixes gcj/163.

2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (pop_current_osb): New function.
        (array_type:): Use `dims:', changed actions
        accordingly. Suggested by Anthony Green.
        (array_creation_expression:): Used pop_current_osb.
        (cast_expression:): Likewise.
        (search_applicable_method_list): Fixed indentation.

2000-10-08  Anthony Green  <green@redhat.com>

        * parse.y (array_type_literal): Remove production.
        (type_literals): Refer to array_type, not array_type_literal.

(http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00317.html)

From-SVN: r38070
2000-12-06 10:55:42 -08:00
Joseph Myers
ee4570050a invoke.texi: Use @table @samp instead of @itemize @minus for table of language standards.
* invoke.texi: Use @table @samp instead of @itemize @minus for
	table of language standards.  Fix use of @pxref.  From Zack
	Weinberg.  Also exclude specs documentation from generated
	manpage, and create separate ENVIRONMENT section.

From-SVN: r38069
2000-12-06 18:50:49 +00:00
Michael Matz
b614171efe gcse.c (compute_pre_data): Kill trapping expressions in destination blocks of abnormal edges.
* gcse.c (compute_pre_data): Kill trapping expressions in
        destination blocks of abnormal edges.

From-SVN: r38068
2000-12-06 10:45:31 -08:00
Alexandre Oliva
8954e858e6 lang-specs.h (c++): When invoking the stand-alone preprocessor for -save-temps...
* lang-specs.h (c++): When invoking the stand-alone preprocessor
for -save-temps, pass all relevant -Defines to it, and then don't
pass them to cc1plus.

From-SVN: r38067
2000-12-06 17:19:32 +00:00
Alexandre Oliva
03391b53b5 Rebuilt again, something went wrong last time
From-SVN: r38066
2000-12-06 17:16:32 +00:00
Kaveh R. Ghazi
a903143d21 stdio-opt-1.c: Add more checks.
* testsuite/gcc.c-torture/execute/stdio-opt-1.c: Add more checks.
	* testsuite/gcc.c-torture/execute/stdio-opt-2.c: New test.

From-SVN: r38065
2000-12-06 13:05:28 +00:00
Jeff Law
5fbf4574d4 Daily bump.
From-SVN: r38064
2000-12-06 01:45:14 -07:00
Robert Lipe
162f5967da Regenerate to pick up libtool fix. Per Alexandre Oliva.
From-SVN: r38063
2000-12-06 04:06:15 +00:00
Richard Sandiford
f6cd7c62a1 mn10300.c (mn10300_print_reg_list): Added.
2000-12-05  Richard Sandiford  <r.sandiford@redhat.com>

	* config/mn10300/mn10300.c (mn10300_print_reg_list): Added.
	(mn10300_get_live_callee_saved_regs): Likewise.
	(mn10300_gen_multiple_store): Likewise.
	(store_multiple_operation): Likewise.
	(expand_prologue): Use mn10300_gen_multiple_store().
	* config/mn10300/mn10300-protos.h (mn10300_print_reg_list): Added.
	(mn10300_get_live_callee_saved_regs): Likewise.
	(mn10300_gen_multiple_store): Likewise.
	(store_multiple_operation): Likewise.
	* config/mn10300/mn10300.md (store_movm): Use a MATCH_PARALLEL
	tied to store_multiple_operation().

From-SVN: r38062
2000-12-05 20:56:43 -07:00
Jeffrey A Law
598730fe6e configure.target (hpux): Set os_include_dir.
* configure.target (hpux): Set os_include_dir.
        * config/os/hpux/bits/ctype_base.h: New file
        * config/os/hpux/bits/ctype_inline.h: New file
        * config/os/hpux/bits/ctype_noinline.h: New file
        * config/os/hpux/bits/os_defines.h: New file

Forgot to commit last week...

From-SVN: r38061
2000-12-05 20:23:34 -07:00