Commit Graph

34 Commits

Author SHA1 Message Date
Zack Weinberg
b919445a10 c-parse.in: Apply Ulrich's changes from c-parse.y.
* c-parse.in: Apply Ulrich's changes from c-parse.y.
	* c-parse.y, objc/objc-parse.y, c-parse.c, objc/objc-parse.c:
	Regenerate.

From-SVN: r31698
2000-01-30 03:44:04 +00:00
Ulrich Drepper
114356ad7c Regenerated.
From-SVN: r31694
2000-01-29 19:18:00 +00:00
Zack Weinberg
4dd7201eac c-common.c, [...]: Remove all references to obstack functions obsoleted by GC...
* c-common.c, c-decl.c, c-lang.c, c-lex.c, c-parse.in, c-pragma.c,
	c-typeck.c, objc/objc-act.c: Remove all references to obstack
	functions obsoleted by GC, such as push_obstacks_nochange,
	end_temporary_allocation, savealloc, saveable_tree_cons, etc.
	and code which existed only to decide whether or not to call
	them.  Remove now-unused NESTED argument from start_function;
	all callers changed.  Do not change behavior based on ggc_p.
	The use of the ixp_obstack in c-iterate.c and the util_obstack
	in objc/objc-act.c remain; these are not obsoleted by garbage
	collection.
	* c-tree.h: Update prototype for start_function.

	* c-parse.y, c-parse.c, objc/objc-parse.c, objc/objc-parse.y: Rebuild.

From-SVN: r31611
2000-01-25 17:13:14 +00:00
Martin v. Löwis
101e59f492 c-parse.in (SAVE_WARN_FLAGS): Create an INTEGER_CST.
* c-parse.in (SAVE_WARN_FLAGS): Create an INTEGER_CST.
	(RESTORE_WARN_FLAGS): Unpack it.
	Change semantic type of extension to ttype.
	* c-common.c (split_specs_attrs): Expect an INTEGER_CST.
	* c-parse.y, c-parse.c, objc/objc-parse.y,
	objc/objc-parse.c: Regenerate.

From-SVN: r31478
2000-01-18 00:01:06 +00:00
Kaveh R. Ghazi
6e090c767a c-common.c: PROTO -> PARAMS.
* c-common.c: PROTO -> PARAMS.
        * c-common.h: Likewise.
        * c-decl.c: Likewise.
        * c-iterate.c: Likewise.
        * c-lang.c: Likewise.
        * c-lex.c: Likewise.
        * c-lex.h: Likewise.
        * c-parse.in: Likewise.
        * c-pragma.c: Likewise.
        * c-pragma.h: Likewise.
        * c-tree.h: Likewise.
        * c-typeck.c: Likewise.
        * objc/objc-act.c: Likewise.
        * objc/objc-act.h: Likewise.

From-SVN: r31362
2000-01-12 22:47:13 +00:00
Zack Weinberg
cdfff38e3d c-parse.in (string action): Do not warn about ANSI string concatenation in system headers.
1999-12-17 13:21 -0800  Zack Weinberg  <zack@rabi.columbia.edu>

	* c-parse.in (string action): Do not warn about ANSI string
	concatenation in system headers.  Affects C parser only.
	* c-parse.y, c-parse.c, c-parse.h: Rebuild.

From-SVN: r30998
1999-12-17 21:23:38 +00:00
Kaveh R. Ghazi
bb66adcad3 c-parse.in (string): With -Wtraditional, warn if ANSI string concatenation is utilized.
* c-parse.in (string): With -Wtraditional, warn if ANSI string
        concatenation is utilized.

        * invoke.texi (-Wtraditional): Document it.

From-SVN: r30863
1999-12-10 21:00:34 +00:00
Kaveh R. Ghazi
ec0ce6e261 c-parse.in (cast_expr): Constify.
* c-parse.in (cast_expr): Constify.

        * cccp.c (special_symbol): Likewise.

        * cse.c (hash_cse_reg_info, cse_reg_info_equal_p): Likewise.

        * dwarf2out.c (base_type_die): Likewise.

        * global.c (allocno_compare): Likewise.

        * local-alloc.c (qty_compare_1, qty_sugg_compare_1): Likewise.

        * regclass.c (fix_register): Likewise.

        * rtl.h (fix_register): Likewise.

        * stupid.c (stupid_reg_compare): Likewise.

        * toplev.c (decode_f_option): Likewise.

        * tree.c (build_complex_type): Likewise.

From-SVN: r30196
1999-10-26 18:13:38 +00:00
Alastair J. Houghton
ffc3b0f915 c-parse.in (component_decl): Support anonymous struct/union.
* c-parse.in (component_decl): Support anonymous struct/union.
        (%expect): Update.
        * c-parse.y: Regenerate.
        * c-parse.c: Likewise.
        * objc/objc-parse.y: Likewise.
        * objc/objc-parse.c: Likewise.
        * c-decl.c (finish_struct): Don't sort the fields.
        (field_decl_cmp): Delete unused function.

Co-Authored-By: Mumit Khan <khan@xraylith.wisc.edu>

From-SVN: r30016
1999-10-15 02:42:02 -06:00
Jim Kingdon
c3b6e11400 c-parse.in: save and restore warn_pointer_arith on __extension__ along with pedantic.
* c-parse.in: save and restore warn_pointer_arith on __extension__
        along with pedantic.
        (SAVE_WARN_FLAGS, RESTORE_WARN_FLAGS): Added.
        Set the type of extension to itype rather than $<itype>1 kludge.
        * extend.texi (Alternate Keywords): Adjust documentation.
        * c-parse.c, c-parse.y, objc-parse.c, objc-parse.y: Rebuilt.

From-SVN: r29588
1999-09-22 06:58:30 -06:00
Linas Vepstas
f3ad1f9c0d Linas Vepstas <linas@linas.org>
* c-common.c: Use ISGRAPH, ISLOWER, toupper.
        * c-lex.c, cccp.c, cexp.c, cexp.y, cppexp.c, dwarf2out.c, genattr.c,
        genattrtab.c, genemit.c, genextract.c, genpeep.c, tree.c: Likewise.
        * system.h (IN_CTYPE_DOMAIN): Define to 1 if HOST_EBCDIC.
        * defaults.h (TARGET_ESC): Add default.

From-SVN: r29192
1999-09-07 23:51:23 -07:00
Jeff Law
c5c7673583 Merge in gcc2-ss-010999
From-SVN: r29150
1999-09-06 23:49:18 -06:00
Bernd Schmidt
1526a0606b Makefile.in (C_AND_OBJC_OBJS): Remove ggc-callbacks.o.
* Makefile.in (C_AND_OBJC_OBJS): Remove ggc-callbacks.o.
	(c-parse.o, c-decl.o, c-lang.o, c-lex.o, c-common.o,
	$(out_object_file)): Depend on ggc.h.
	* c-common.c: Include "ggc.h".
	(combine_strings): If doing GC, use ggc_alloc_string.
	* c-decl.c: Include "ggc.h".
	(ggc_p): Define with value 0.
	(mark_binding_level): New function.
	(init_decl_processing): Add GC roots.
	(mark_c_function_context): New function.
	(lang_mark_false_label_stack): New function.
	(lang_mark_tree): New function.
	(lang_cleanup_tree): New function.
	* c-lang.c: Include "ggc.h".
	(lang_init): Call c_parse_init.
	* c-lex.c: Include "ggc.h".
	(check_linenum): If doing GC, don't copy filenames to permanent
	obstack.
	* c-parse.in: Include "ggc.h".
	(c_parse_init): New function.
	* c-tree.h (c_parse_init, mark_c_function_context): Declare.
	* objc/Make-lang.in (objc-parse.o): Depend on ggc.h.

	* except.c (mark_eh_state): Mark more state.
	* function.c (mark_function_state): Likewise.
	* ggc-simple.c (ggc_alloc_rtvec): Bring in sync with non-gc version.
	(ggc_alloc_string) [GGC_DUMP]: Fix typo.
	* toplev.c (mark_file_stack): New function.
	(compile_file): If doing GC, use ggc_alloc_string on input filename.
	(main): Add root for input_file_stack.

	* i386.c: Include "ggc.h".
	(ix86_mark_machine_status): New function.
	(override_options): Set mark_machine_status.

From-SVN: r29143
1999-09-06 21:28:22 +00:00
Bernd Schmidt
e2ecd91c7b c-decl.c (struct language_function): Renamed from struct c_function.
* c-decl.c (struct language_function): Renamed from struct c_function.
	Delete elt NEXT.
	(c_function_chain): Delete.
	(push_c_function_context): New arg F.  Don't warn about nested
	functions here.  Fill LANGUAGE elt of F.  Delete code to update
	c_function_chain.  Don't call push_function_context.
	(pop_c_function_context): New arg F.  Restore from there instead of
	from c_function_chain.  Don't call pop_function_context.  Clear out
	LANGUAGE field of F when done.
	* c-lang.c: Include "function.h"
	(lang_init): Initialize save_lang_status and restore_lang_status.
	* c-parse.in (nested_function, nested_function_notype): Warn about
	nested functions.  Call push_function_context/pop_function_context
	instead of the _c_ variants.
	* c-tree.h (push_c_function_context, pop_c_function_context): Update
	prototype.
	* Makefile.in (c-lang.o): Update dependencies.

	* emit-rtl.c (init_emit): Use xmalloc to allocate regno_reg_rtx,
	regno_pointer_flag, regno_pointer_align.
	(gen_reg_rtx): Use xrealloc to enlarge them.
	(free_emit_status): New function.
	* function.c (mark_machine_status, mark_lang_status): New variables.
	(assign_stack_local_1): Renamed from assign_outer_stack_local.  Merge
	in some bits from assign_stack_local.  All callers changed to use new
	name.
	(assign_stack_local): Just call assign_stack_local_1.
	(free_after_compilation): New function.
	(put_reg_into_stack): Simplify to always call assign_stack_local_1.
	(trampoline_address): Likewise.
	(assign_parms): Use xcalloc/xrealloc to allocate parm_reg_stack_loc.
	(prepare_function_start): Explicitly clear some more variables.
	* function.h (struct function): New elt can_garbage_collect.
	(mark_machine_status, mark_lang_status): Declare variables.
	(free_after_compilation, free_emit_status, free_varasm_status,
	init_varasm_status): Declare functions.
	* toplev.c (rest_of_compilation): Call free_after_compilation when
	done with the current function.
	* varasm.c (free_varasm_status): New function.

From-SVN: r29117
1999-09-05 01:06:48 +00:00
Richard Henderson
d0668a7393 c-parse.in (compstmt_primary_start): New, broken out of first part of compstmt handling in primary.
* c-parse.in (compstmt_primary_start): New, broken out of first
        part of compstmt handling in primary.
        (primary): Use it.  Add an error clause.
        (compstmt_nostart): Renamed from compstmt; remove all
        initial invocations of compstmt_start.
        (compstmt): New.

From-SVN: r29059
1999-09-02 10:20:19 -07:00
Kaveh R. Ghazi
f425a8879b c-parse.in (language_string): Constify.
* c-parse.in (language_string): Constify.

	* dwarf2out.c (language_string): Remove declaration.

	* dwarfout.c (language_string): Likewise.

	* toplev.c (language_string, init_parse, finish_parse): Likewise.

	* tree.h (language_string, init_parse, finish_parse): Declare.

	* i386/sun386.h (language_string): Remove declaration.

	* mips.h (language_string): Likewise.

	* nextstep.h (language_string): Likewise.

	* nextstep21.h (language_string): Likewise.

	* rs6000.c (language_string): Likewise.

In ch:
	* parse.c (language_string): Constify.
In cp:
	* parse.y (language_string): Constify.
In f:
	* com.c (language_string): Constify.
In java:
	* lang.c (language_string): Constify.

From-SVN: r29000
1999-08-31 02:16:34 +00:00
Jason Merrill
fbb186135d c-lex.c: Sync with C++ frontend.
* c-lex.c: Sync with C++ frontend.
	(linemode): New variable.
	(parse_float): imag, conversion_errno, and type are output only.
	(yylex): Adjust.  Move initial '.' case into main switch.
	Use linemode.
	(handle_generic_pragma): Just deal with tokens.
	(readescape): Use ISXDIGIT and ISGRAPH.
	* c-parse.in: Add END_OF_LINE token.

	* c-lex.c (lang_init): Generalize.
	(nextchar): Remove.  Replace uses with UNGETC.
	(skip_white_space): Handle linemode here.  Optimize for cpplib.
	(skip_white_space_on_line): Remove.
	(extend_token_buffer_to): New fn.
	(extend_token_buffer): Use it.
	(read_line_number, check_newline): Just deal with tokens.
	(token_getch, token_put_back): New fns.
	(yylex): Use them.  More cpplib optimizations.  Simplify.

	* c-lex.c (init_parse): Set cpp_token to CPP_DIRECTIVE.
	(consume_string): Make this smart about USE_CPPLIB.
	(check_newline): Rewrite to be intelligent about USE_CPPLIB.
	(yylex): Rewrite to be intelligent about USE_CPPLIB.
	Also, clean up cases where we redundantly set token_buffer[0].
	(read_line_number): New fn.
	(ignore_escape_flag): New variable.

From-SVN: r28507
1999-08-04 15:55:31 -04:00
Richard Henderson
d3707adb79 builtins.c (expand_builtin_saveregs): Remove static, remove exp and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
* builtins.c (expand_builtin_saveregs): Remove static, remove exp
        and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
        (expand_builtin_next_arg): Accept ARGLIST not EXP.
        (stabilize_va_list): New function.
        (std_expand_builtin_va_start): New function.
        (expand_builtin_va_start): New function.
        (get_varargs_alias_set): New function.
        (std_expand_builtin_va_arg): New function.
        (expand_builtin_va_arg): New function.
        (expand_builtin_va_end): New function.
        (expand_builtin_va_copy): New function.
        (expand_builtin): Call them.
        * c-common.c (c_common_nodes_and_builtins): Build __builtin_va_list,
        __builtin_{varargs_start,stdarg_start,end,copy}.
        (build_va_arg): New function.
        * c-common.h (CTI_PTR_TYPE, ptr_type_node): Delete.
        (build_va_arg): Declare.
        * c-decl.c (ptr_type_node, va_list_type_node): New.
        * c-parse.gperf (__builtin_va_arg): New.
        * c-parse.in (VA_ARG): New token.
        (unary_expr): Recognize it.
        * expr.c (expand_expr): Expand VA_ARG_EXPR.
        * expr.h (std_expand_builtin_va_start): Declare.
        (std_expand_builtin_va_arg): Declare.
        (expand_builtin_va_arg): Declare.
        (get_varargs_alias_set): Declare.
        * tree.def (VA_ARG_EXPR): New.
        * tree.h (BUILT_IN_VARARGS_START): New.
        (BUILT_IN_STDARG_START, BUILT_IN_VA_END): New.
        (ptr_type_node, va_list_type_node): Declare.
        * tm.texi (EXPAND_BUILTIN_SAVEREGS): Kill unused ARGLIST argument.
        * m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
        * m88k.h, m88k.c: Likewise.
        * mn10300.h, mn10300.c: Likewise.
        * pa.h, pa.c: Likewise.
        * rs6000.h, rs6000.c: Likewise.
        * sh.h, sh.c: Likewise.
        * sparc.h, sparc.c: Likewise.

        * emit-rtl.c (operand_subword): Copy alias set.
        (change_address): Likewise.

From-SVN: r28243
1999-07-25 18:21:03 -07:00
Mumit Khan
112cedb09b c-parse.in (absdcl1): Allow attributes in explicit typespecs.
* c-parse.in (absdcl1): Allow attributes in explicit typespecs.
        (%expect): Update.
        * c-parse.y: Regenerate.
        * c-parse.c: Likewise.
        * objc/objc-parse.c: Likewise.
        * objc/objc-parse.y: Likewise.

Co-Authored-By: Donn Terry <donn@interix.com>

From-SVN: r26663
1999-04-26 16:35:58 -06:00
Richard Henderson
19d6ff234b c-parse.in (expr_no_commas): Verify we've an expr before calling C_SET_EXP_ORIGINAL_CODE.
* c-parse.in (expr_no_commas): Verify we've an expr before
        calling C_SET_EXP_ORIGINAL_CODE.

From-SVN: r26590
1999-04-22 15:04:02 -07:00
Jeff Law
5f38fdda61 Update FSF address in copyright header.
From-SVN: r24614
1999-01-11 06:34:38 -07:00
Jeff Law
4283012f9f Copyright fixes.
From-SVN: r24535
1999-01-06 13:44:41 -07:00
Kaveh R. Ghazi
736b02fdfa c-common.c (decl_attributes): Allow applying attribute `unused' on a LABEL_DECL.
* c-common.c (decl_attributes): Allow applying attribute `unused'
        on a LABEL_DECL.
        * c-parse.in (label): Parse attributes after a label, and call
        `decl_attributes' to handle them.
        * gansidecl.h (ATTRIBUTE_UNUSED_LABEL): Define.
        * genrecog.c (OUTPUT_LABEL, write_tree_1, write_tree): When
        generating labels, mark them with ATTRIBUTE_UNUSED_LABEL.
        * invoke.texi: Note that labels can be marked `unused'.

From-SVN: r24478
1999-01-04 07:48:37 +00:00
Ulrich Drepper
6f4d72224e c-common.c (declare_function_name): Declare predefinied variable `__func__'.
* c-common.c (declare_function_name): Declare predefinied variable
        `__func__'.
        * c-decl.c (flag_isoc9x): Set to 1 by default.
        (c_decode_option): Handle -std= option.  Remove -flang-isoc9x.
        (grokdeclarator): Always emit warning about implicit int for ISO C 9x.
        * c-parse.in: Allow constructors in ISO C 9x.
        Rewrite designator list handling.
        Allow [*] parameters.
        Don't warn about comma at end of enum definition for ISO C 9x.
        * cccp.c (c9x): New variable.
        (rest_extension): New variable.
        (print_help): Document new -std= option.
        (main): Recognize -std= option.  Set c9x appropriately.
        (create_definition): Recognize ISO C 9x vararg macros.
        * gcc.c (default_compilers): Adjust specs for -std options.
        (option_map): Add --std.
        (display_help): Document -std.
        * toplev.c (documented_lang_options): Add -std and remove
        -flang-isoc9x.
        * c-lex.c (yylex): Recognize hex FP constants and call REAL_VALUE_ATOF
        or REAL_VALUE_HTOF based on base of the constants.
        * fold-const.c (real_hex_to_f): New function.  Replacement function
        for hex FP conversion if REAL_ARITHMETIC is not defined.
        * real.c (asctoeg): Add handling of hex FP constants.
        * real.h: Define REAL_VALUE_HTOF if necessary using ereal_atof or
        real_hex_to_f.

Co-Authored-By: Richard Henderson <rth@cygnus.com>
Co-Authored-By: Stephen L Moshier <moshier@world.std.com>

From-SVN: r24049
1998-12-01 13:05:17 -08:00
Mark Mitchell
3932261a55 invoke.texi: Document -flang-isoc9x.
* invoke.texi: Document -flang-isoc9x.
	* Makefile.in (OBJS): Add splay-tree.o.
	(c-common.o): Depend on rtl.h.
	(splay-tree.o): List dependencies and provide build rule.
	* rtl.h (record_alias_subset): New function.
	* alias.c: Include splay-tree.h.
	(alias_set_entry): New type.
	(CHECK_ALIAS_SETS_FOR_CONSISTENCY): Remove.
	(DIFFERENT_ALIAS_SETS_P): Use mem_in_disjoint_alias_sets_p.
	(mems_in_disjoin_alias_sets_p): New function.
	(alias_set_compare): Likewise.
	(insert_subset_children): Likewise.
	(get_alias_set_entry): Likewise.
	* tree.h (TYPE_RESTRICT): New macro.
	(TYPE_UNQUALIFIED): New manifest constant.
	(TYPE_QUAL_CONST): Likewise
	(TYPE_QUAL_VOLATILE): Likewise.
	(TYPE_QUAL_RESTRICT): Likewise.
	(tree_type): Add restrict_flag.  Reduce count of free bits.
	(DECL_POINTER_ALIAS_SET): New macro.
	(DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
	(tree_decl): Add pointer_alias_set.
	(build_qualified_type): New function.
	(build_type_variant): Define in terms of build_qualified_type.
	* tree.c (set_type_quals): New function.
	(make_node): Initializae DECL_POINTER_ALIAS_SET.
	(build_type_attribute_variant): Use build_qualified_type and
	set_type_quals.
	(build_type_variant): Rename, and modify, to become...
	(build_qualified_type): New function.
	(build_complex_type): Use set_type_quals.
	* c-tree.h (C_TYPE_OBJECT_P): New macro.
	(C_TYPE_FUNCTION_P): Likewise.
	(C_TYPE_INCOMPLETE_P): Likewise.
	(C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise.
	(c_apply_type_quals_to_decl): New function.
	(c_build_qualified_type): New function.
	(c_build_type_variant): Define in terms of c_build_qualified_type.
	(flag_isoc9x): Declare.
	* c-typeck.c (qualify_type): Use c_build_qualified_type.
	(common_type): Change to use TYPE_QUALS.
	(comptypes): Likewise.
	(convert_for_assignment): Likewise.
	* c-aux-info.c (gen_type): Likewise.  Deal with `restrict'.
	* c-decl.c (flag_isoc9x): Define.
	(c_decode_option): Handle -flang-isoc9x.
	(grokdeclarator): Update to handle restrict.  Use TYPE_QUALS,
	c_build_qualified_type, etc.  Use c_apply_type_quals_to_decl.
	* c-lex.c (init_lex): Deal with restrict.
	(init_lex): Don't treat restrict as a reserved word in
	-traditional mode, or without -flang-isoc9x.
	* c-lex.h (rid): Add RID_RESTRICT.
	* c-parse.gperf (restrict, __restrict, __restrict__): Make
	equivalent to RID_RESTRICT.
	* c-parse.in (TYPE_QUAL): Update comment.
	* c-common.c: Include rtl.h.
	(c_find_base_decl): New function.
	(c_build_type_variant): Rename, and modify, to become ...
	(c_build_qualified_type): New function.
	(c_apply_type_quals_to_decl): Likewise.
	(c_get_alias_set): For INDIRECT_REFs, check to see if we can find
	a particular alias set for the reference.
	* toplev.c (documented_lang_options): Add -flang-isoc9x.

From-SVN: r23212
1998-10-21 09:53:40 +00:00
Jason Merrill
4051959be9 c-parse.in (struct_head, [...]): New nonterminals.
* c-parse.in (struct_head, union_head, enum_head): New nonterminals.
        (structsp): Use them.  Update files generated from c-parse.in.
        * extend.texi (Type Attributes): Document it.

From-SVN: r20971
1998-07-06 16:30:16 -06:00
Jim Wilson
458f4b6b09 More toplev.h cleanup, regnerate c-parse.c.
From-SVN: r19614
1998-05-07 08:07:43 -07:00
Jeff Law
f5963e6170 * Check in merge from gcc2. See ChangeLog.12 for details.
From-SVN: r19553
1998-05-05 17:18:02 -06:00
Kaveh R. Ghazi
944fc8abef More system.h cutover patches:
* c-parse.in: Include system.h, and remove stuff now made redundant.
        * cccp.c: Likewise.
        * cexp.y: Likewise.
        * protoize.c: Likewise.  Properly check for cpp stringification.
        * Makefile.in (c-parse.o, cccp.o, cexp.o, protoize.o, unprotoize.o):
        Depend on system.h.
        * objc/Make-lang.in (objc-parse.o): Likewise.

From-SVN: r19020
1998-04-06 14:01:33 +00:00
H.J. Lu
990ac8d730 c-parse.in: Recognize protocol qualifiers in class definitions for objc.
* c-parse.in: Recognize protocol qualifiers in class
        definitions for objc.
        Include "output.h".
        (yyerror): Remove redundant decl.
        (yyprint): Fix prototype.

From-SVN: r18788
1998-03-23 15:59:18 -07:00
Jeffrey A Law
8dfafd99fd c-parse.y (undeclared variable error): Tweak error message to be clearer.
* c-parse.y (undeclared variable error): Tweak error message
        to be clearer.

From-SVN: r18226
1998-02-24 17:30:00 -07:00
Jeff Law
e9a25f70a0 Update mainline egcs to gcc2 snapshot 971021.
From-SVN: r16278
1997-11-02 14:19:36 -07:00
Jeff Law
c3bcf315fa This commit was generated by cvs2svn to compensate for changes in r16274,
which included commits to RCS files with non-trunk default branches.

From-SVN: r16275
1997-11-02 01:46:26 -07:00
Jeff Law
861bb6c1b0 Initial revision
From-SVN: r14764
1997-08-11 09:56:58 -06:00