Commit Graph

19051 Commits

Author SHA1 Message Date
Alexandre Oliva
b01c911dca init7.C: New test: retry initialization of static locals if first initialization throws
* g++.old-deja/g++.other/init7.C: New test: retry initialization
 	of static locals if first initialization throws

From-SVN: r22901
1998-10-07 20:41:38 +00:00
Ken Raeburn
05714a4ffd add some short comments that should've been in the last checkin
From-SVN: r22900
1998-10-07 18:28:09 +00:00
Ken Raeburn
52db16fde4 981006-1.c: New test.
* special/981006-1.c: New test.  Make sure gcc doesn't lose track of the
possible targets of tablejump insns.
* special/special.exp: Run it.

From-SVN: r22899
1998-10-07 18:26:06 +00:00
Ken Raeburn
5924eecfbc mips.md (tablejump_internal3, [...]): Tack on a `use' of the table label, so flow analysis will recognize a tablejump.
* config/mips/mips.md (tablejump_internal3, tablejump_internal4 and matching
define_insns): Tack on a `use' of the table label, so flow analysis will
recognize a tablejump.

From-SVN: r22898
1998-10-07 18:23:51 +00:00
Richard Henderson
1bba619903 gcse.c (pre_insert_insn): Tweek to notice that calls do not always end basic blocks for abnormal edge reasons.
* gcse.c (pre_insert_insn): Tweek to notice that calls do not
        always end basic blocks for abnormal edge reasons.

From-SVN: r22897
1998-10-07 10:36:32 -07:00
Nick Clifton
c678a7f8bd Move definition of HANDLE_PRAGMA_PACK_PUSH_POP out of i386.h and into
target OS specific headers.

From-SVN: r22896
1998-10-07 14:50:58 +00:00
Nick Clifton
bf294d9262 Fix spelling typo in comment.
From-SVN: r22895
1998-10-07 14:48:02 +00:00
Nick Clifton
14ab9f5287 Do not insert packing attributes unless #pragma pack(push,<n>) is active.
From-SVN: r22894
1998-10-07 14:41:42 +00:00
Jim Wilson
10a9f2beac Fix for irix6 -O0 bug, see testcase gcc.c-torture/compile/981007-1.c.
* expr.c (emit_group_store): Handle a PARALLEL destination.

From-SVN: r22893
1998-10-07 05:12:21 -07:00
Jim Wilson
2883350489 Testcase for emit_group_store patch.
* gcc.c-torture/compile/981007-1.c: New test for irix6 -O0 core dump.

From-SVN: r22892
1998-10-07 05:07:52 -07:00
Richard Henderson
3947e2f984 gcse.c (pre_insert_insn): When a call ends a bb, insert the new insns before the argument regs are loaded.
* gcse.c (pre_insert_insn): When a call ends a bb, insert
        the new insns before the argument regs are loaded.

From-SVN: r22891
1998-10-07 03:08:16 -07:00
Kaveh R. Ghazi
8173d47720 * gperf-2.7-19981006.pat: New file, patch for egcs-local gperf.
From-SVN: r22890
1998-10-07 10:03:01 +00:00
Kaveh R. Ghazi
db127392bc Warning fixes:
* Makefile.in (c-gperf.h): Add -L KR-C -F ', 0, 0' flags to gperf.
        (c-parse.gperf): Update comments describing invocation flags.
        (c-gperf.h): Regenerate using gperf 2.7.1 (19981006 egcs).

From-SVN: r22889
1998-10-07 09:57:38 +00:00
Kaveh R. Ghazi
9e46e5e862 Warning fixes:
* Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
        (gxx.gperf): Update comments describing invocation flags.
        (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).

From-SVN: r22888
1998-10-07 09:50:45 +00:00
Bernd Schmidt
d143a8907a jump.c (duplicate_loop_exit_test): Strip REG_WAS_0 notes off all insns we're going to copy.
* jump.c (duplicate_loop_exit_test): Strip REG_WAS_0 notes off all
	insns we're going to copy.
	* regclass.c (reg_scan_mark_refs): Don't test X for NULL_RTX.

From-SVN: r22887
1998-10-07 03:50:05 -06:00
Bernd Schmidt
237228c033 * loop.c (count_one_set): Add prototype.
From-SVN: r22886
1998-10-07 03:47:54 -06:00
Manfred Hollstein
b0c24c269a reload1.c (reload): Call free before clobbering the memory locations or constants pointers.
�
	* reload1.c (reload): Call free before clobbering the memory
	locations or constants pointers.

From-SVN: r22885
1998-10-07 03:45:58 -06:00
Mark Mitchell
9335e9a3a1 * class.c (finish_struct_1): Add commentary on prevous change.
From-SVN: r22884
1998-10-07 09:30:50 +00:00
Kaveh R. Ghazi
39828aec68 Warning fixes:
* Makefile.in (hash.h): Add -L KR-C -F ', 0, 0, 0' flags to gperf.
        (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).

From-SVN: r22883
1998-10-07 09:29:29 +00:00
Kaveh R. Ghazi
13abbf4781 Warning fixes:
* Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
        (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).

From-SVN: r22882
1998-10-07 09:18:39 +00:00
David S. Miller
07181a20e3 sarray.h: Make boffset be an unsigned long when sparc so it works out on 64-bit systems.
* objc/sarray.h: Make boffset be an unsigned long when sparc so it
	works out on 64-bit systems.

From-SVN: r22881
1998-10-06 19:21:54 -07:00
David S. Miller
959eb7588f sol2-sld-64.h (TRANSFER_FROM_TRAMPOLINE): Rework for efficiency by checking whether we need to modify the current stack...
* config/sparc/sol2-sld-64.h (TRANSFER_FROM_TRAMPOLINE): Rework
	for efficiency by checking whether we need to modify the current
	stack permission at all.
	(ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Define.
	* config/sparc/sparc.c (sparc_initialize_trampoline): Emit
	__enable_execute_stack libcall here too if
	TRANSFER_FROM_TRAMPOLINE is defined.
	* config/sparc/sparc.h: Set TARGET_ARCH32 to a constant if
	IN_LIBGCC2.

From-SVN: r22880
1998-10-06 19:17:57 -07:00
Mark Mitchell
849da744cd cp-tree.h (vtbl_ptr_type_node): New variable.
* cp-tree.h (vtbl_ptr_type_node): New variable.
	* class.c (build_vtbl_ref): Don't indirect through the vptr; it's
	already of the right type.
	(finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
	Simplify code to grow vtable.
	* decl.c (vtbl_ptr_type_node): Define.
	(init_decl_processing): Initialize it.

From-SVN: r22879
1998-10-07 02:08:55 +00:00
Jeffrey A Law
4c2f834629 Makefile.in (DRIVER_DEFINES): Remove last change.
* Makefile.in (DRIVER_DEFINES): Remove last change.
Depends on other changes not in the tree yet.

From-SVN: r22878
1998-10-06 19:29:42 -06:00
Jeff Law
f9cea9b7b6 Daily bump.
From-SVN: r22877
1998-10-06 18:45:03 -06:00
Bernd Schmidt
437a710df0 caller-save.c (restore_referenced_regs): Lose mode argument.
* caller-save.c (restore_referenced_regs): Lose mode argument.
	(insert_save): Lose mode argument.
	(insert_restore): Lose mode argument.
	(insert_one_insn): Lose mode argument.
	(save_call_clobbered_regs): Lose mode argument.
	(setup_save_areas): Take no argument and return void.  All callers
	changed.
	Don't verify validity of memory addresses.
	* reload.h (setup_save_ares): Adjust prototype.
	(save_call_clobbered_regs): Likewise.
	* reload1.c (delete_caller_save_insns): New function.
	(caller_save_spill_class): Delete variable.
	(caller_save_group_size): Delete variable.
	(reload): Call setup_save_areas and save_call_clobbered_regs
	in the main loop, before calling calculate_needs_all_insns.
	Don't call save_call_clobbered_regs after the loop.
	Call delete_caller_save_insns at the end of an iteration if
	something changed.
	Delete code to manage caller_save_spill_class.
	Emit the final note before setting reload_first_uid.
	Simplify test that determines whether reload_as_needed gets run.
	(calculate_needs): Delete code to manage caller_save_spill_class.

From-SVN: r22876
1998-10-06 18:13:49 -06:00
Bernd Schmidt
a4c3ddd83a loop.c (count_one_set): New static function, broken out of count_loop_regs_set
* loop.c (count_one_set): New static function, broken out of
	count_loop_regs_set
	(count_loop_regs_set): Call it.
	* global.c (mark_reg_store): Handle clobbers here by not calling
	set_preference.
	(mark_reg_clobber): Just call mark_reg_store after ensuring SETTER
	is in fact a clobber.
	* integrate.c (process_reg_param): New function, broken out of
	expand_inline_function.
	(expand_inline_function): Call it.

From-SVN: r22875
1998-10-06 14:38:40 -06:00
Jeffrey A Law
9a07247c2a * Makefile.in: Revert last patch.
From-SVN: r22874
1998-10-06 14:18:21 -06:00
Bernd Schmidt
dae0d63ab0 i386.md (addsidi3_1): Delete unused variable temp.
* i386.md (addsidi3_1): Delete unused variable temp.
        (addsidi3_2): Likewise.
        (clstrstrsi): Delete unused variable addr1.

From-SVN: r22873
1998-10-06 13:41:52 -06:00
Bernd Schmidt
42f61866cd * rtl.h: Don't declare any functions also declared in recog.h.
From-SVN: r22872
1998-10-06 13:39:34 -06:00
Alexandre Oliva
5e2f657bb6 * Makefile.in (INCLUDES): Make it multilib-friendly
From-SVN: r22871
1998-10-06 13:33:27 -06:00
Richard Henderson
0eac1e434d * collect2.c (main): Initialize ld_file_name.
From-SVN: r22870
1998-10-06 08:43:24 -07:00
Mark Mitchell
61a127b3d1 cp-tree.def (PTRMEM_CST): New tree node.
* cp-tree.def (PTRMEM_CST): New tree node.
	* cp-tree.h (ptrmem_cst): New type.
	(lang_type): Remove local_typedecls.
	(dummy): Increase to 12 bits from 11.
	(CLASSTYPE_LOCAL_TYPEDECLS): Remove.
	(PTRMEM_CST_CLASS): New macro.
	(PTRMEM_CST_MEMBER): Likewise.
	(current_access_specifier): New variable.
	(current_class_type): Remove duplicate declaration.
	(finish_struct): Change prototype.
	(unreverse_member_declarations): New function.
	(pushdecl_class_level): Change prototype.
	(grok_enum_decls): Remove.
	(fixup_anonymous_union): New function.
	(grok_x_components): Change prototype.
	(tsubst_chain): Remove.
	(finish_member_template_decl): Likewise.
	(check_explicit_specialization): Fix indentation.
	(finish_class_definition): Change prototype.
	(finish_member_class_template): Likewise.
	(finish_member_declaration): New function.
	(check_multiple_declarators): Likewise.
	* class.c (class_stack_node_t): New type.
	(current_class_base): Remove.
	(current_class_stack): Change type.
	(current_access_specifier): New variable.
	(grow_method): Remove.
	(check_member_decl_is_same_in_complete_scope): Break out from
	finish_struct.
	(make_method_vec): New function.
	(free_method_vec): Likewise.
	(add_implicitly_declared_members): Break out from finish_struct_1.
	(free_method_vecs): New variable.
	(add_method): Rework for direct use from parser.
	(handle_using_decl): Watch for NULL_TREE while iterating through
	CLASSTYPE_METHOD_VEC.
	(finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
	just do some error-checking.
	(warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
	(finish_struct_1): Simplify.  Use add_implicitly_declared_members.
	(finish_struct): Change prototype.  Simplify; fields and methods
	are already set up at this point.
	(init_class_processing): Set up current_class_stack.
	(pushclass): Save current_access_specifier.
	(popclass): Restore it.
	(currently_open_class): Simplify.
	(build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
	* decl.c (saved_scope): Add access_specifier.
	(maybe_push_to_top_level): Save it.
	(pop_from_top_level): Restore it.
	(maybe_process_template_type_declaration): Use
	finish_member_declaration.
	(pushtag): Likewise.
	(pushdecl_class_level): Don't return a value.
	(fixup_anonymous_union): Break out from grok_x_components.
	(shadow_tag): Use it.
	(xref_tag): Complain about using an elaborated type specifier to
	reference a template type parameter or typedef name.
	(xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
	(current_local_enum): Remove.
	(build_enumerator): Call finish_member_declaration.
	(grok_enum_decls): Remove.
	* decl2.c (grok_x_components): Simplify.
	(check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
	(grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
	(merge_functions): Add to comment.
	(arg_assoc_type): Prototype.
	(arg_assoc): Pass as many arguments as there are parameters.
	* error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
	OFFSET_REF.
	* expr.c (cpls_expand_expr): Remove dead code.  Handle
	PTRMEM_CST.
	* friend.c (do_friend): Lookup friends when in nested classes.
	Change comments.
	* init.c (build_offset_ref): Do lookup even for classes that are
	only partially defined.
	(decl_constant_value): Remove dead code.
	* method.c (build_overload_value): Remove hack where by TYPE was
	not a TYPE.  Handle PTRMEM_CST.
	(build_template_parm_names): Don't pass a PARM_DECL where a TYPE
	should go.
	* parse.y (components, notype_components, component_decl,
	component_decl_1, component_declarator, component_declarator0):
	Now all are itype rather than ttype.  Rework to add members to
	classes on the fly.
	(typesqpecqual_reserved): Use check_multiple_declarators.
	(structsp): Update class to finish_class_definition.
	(do_xref_defn): Unsplit into named_class_head.
	(access_specifier): Set current_access_specifier.
	* pt.c (set_current_access_from_decl): New function.
	(finish_member_template_decl): Don't take the parameters.
	(comp_template_args): Make more robust.
	(lookup_template_class): Don't use current_local_enum.
	(for_each_template_parm): Handle PTRMEM_CST.
	(instantiate_class_template): Use set_current_access_from_decl,
	finish_member_declaration and unreverse_member_declarations.  Set
	lineno/input_filename before generating implicit member functions.
	(type_unification_real): Don't assume back-unification happens
	only for the last argument.
	(regenerate_decl_from_template): Call pushclass a bit earlier.
	(tsubst_chain): Remove.
	(tsubst_enum): Use set_current_access_from_decl.
	(set_mangled_name_for_template_decl): Fix indentation.
	* search.c (lookup_fnfields_1): Change iteration through
	CLASSTYPE_METHOD_VEC.
	(dfs_pushdecls): Likewise.
	(dfs_compress_decls): Likewise.
	(add_conversions): Likewise.
	* semantics.c (finish_class_definition): Don't take components.
	Change call to finish_struct.
	(finish_member_declaration): New function.
	(finish_member_class_template): Don't take template parameters.
	Change call to grok_x_components.  Call finish_member_template_decl.
	(check_multiple_declarators): New function.
	* sig.c (append_signature_fields): Work from the TYPE_METHODS, not
	a passed in fieldlist.
	* tree.c (search_tree): Handle PTRMEM_CST.
	(mapcar): Likewise.
	* typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
	INTEGER_CSTs, for pointer-to-data members.

From-SVN: r22869
1998-10-06 14:20:30 +00:00
Catherine Moore
1c9a32c2d5 sysv4.h (ASM_OUTPUT_SECTION_NAME): Don't check for flag_function_sections.
* config/sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME):  Don't
        check for flag_function_sections.

From-SVN: r22868
1998-10-06 09:47:21 -04:00
Mark Mitchell
683b80daf3 call.c (resolve_args): Resolve template specializations, if possible.
* call.c (resolve_args): Resolve template specializations, if
	possible.

From-SVN: r22867
1998-10-06 12:38:05 +00:00
J"orn Rennecke
37053d1fe5 * cse.c (insert_regs): Fix bug in Sep 24 change.
From-SVN: r22866
1998-10-06 13:04:55 +01:00
J"orn Rennecke
b707b4509b Cleanup for -fdump-unnumbered:
* flags.h (flag_dump_unnumbered): Declare.
	* toplev.c (flag_dump_unnumbered): Don't declare.
	* print-rtl.c (flags.h): Include.
	(print_rtl_single): Add return value.
	* rtl.h (print_rtl_single): Update declaration.
	* flow.c (flag_dump_unnumbered): Don't declare.
	(print_rtl_with_bb): Use return value of print_rtl_single.

From-SVN: r22865
1998-10-06 10:03:38 +01:00
Kaveh R. Ghazi
87603ed0ee Warning fixes:
* Makefile.in (spew.o): Depend on toplev.h.
        * call.c (compare_ics): Initialize variables `deref_from_type2',
        `deref_to_type1' and `deref_to_type2'.
        * except.c (get_eh_type): Hide prototype and definition.
        (process_start_catch_block_old): Remove unused static prototype.
        * pt.c (tsubst_decl): Initialize variable `argvec'.
        * spew.c: Include toplev.h.

From-SVN: r22864
1998-10-06 05:04:32 +00:00
Jeff Law
bcd26ca722 Daily bump.
From-SVN: r22863
1998-10-05 18:45:02 -06:00
Bernd Schmidt
cad6f7d050 Makefile.in (stupid.o): Update dependencies.
* Makefile.in (stupid.o): Update dependencies.
	(global.o): Likewise.
	* global.c: Include reload.h
	(reg_becomes_live): New function.
	(reg_dies): New function.
	(build_insn_chain): New function.
	(global_alloc): Call build_insn_chain before calling reload.
	* reload.h (struct needs): New structure definition.
	(struct insn_chain): Likewise.
	(reload_insn_chain): Declare variable.
	(new_insn_chain): Declare function.
	* reload1.c (reload_startobj): New variable.
	(reload_insn_chain): New variable.
	(unused_insn_chains): New variable.
	(new_insn_chain): New function.
	(init_reload): Initialize reload_startobj, not reload_firstobj.
	(reload): Initialize reload_firstobj.
	Before returning, free everything on the reload_obstack.
	* stupid.c: Include insn-config.h, reload.h and basic-block.h.
	(reg_where_dead_chain, reg_where_born_exact, reg_where_born_clobber,
	current_chain): New variables.
	(reg_where_born): Delete variable.
	(REG_WHERE_BORN): New macro.
	(find_clobbered_regs): New function.
	(stupid_life_analysis): Don't allocate/free reg_where_born.
	Allocate and free reg_where_born_exact, reg_where_born_clobber,
	reg_where_dead_chain.
	Use REG_WHERE_BORN instead of reg_where_born.
	While processing the insns, build the reload_insn_chain with
	information about register lifetimes.
	(stupid_reg_compare): Use REG_WHERE_BORN instead of reg_where_born.
	(stupid_mark_refs): Replace arg INSN with arg CHAIN.  All callers
	changed.
	Compute and information about birth and death of pseudo registers in
	reg_where_dead_chain, reg_where_born_exact and reg_where_born_clobber.
	Delete code to set elements of reg_where_born.

From-SVN: r22862
1998-10-05 18:39:23 -06:00
Alexandre Oliva
0eaae86cab friend35.C: New test.
* g++.old-deja/g++.pt/friend35.C: New test.  A template function
 	must be declared before its specializations can be named in friend
 	declarations.

From-SVN: r22861
1998-10-06 00:24:05 +00:00
Alexandre Petit-Bianco
40208b1c3a tree.def (GOTO_EXPR): Modified documentation.
0
	* tree.def (GOTO_EXPR): Modified documentation.
	* expr.c (expand_expr): Expand GOTO_EXPR into a goto or a computed
 	goto.

From-SVN: r22860
1998-10-05 15:36:18 -07:00
Alexandre Petit-Bianco
70e6ca43a3 tree.def (GOTO_EXPR): Modified documentation.
8
	* tree.def (GOTO_EXPR): Modified documentation.
	* expr.c (expand_expr): Expand GOTO_EXPR into a goto or a computed
 	goto.

From-SVN: r22859
1998-10-05 15:36:16 -07:00
Jason Merrill
c27be9b9fc pt.c (instantiate_decl): Do save and restore file position.
* pt.c (instantiate_decl): Do save and restore file position.
	* method.c (build_decl_overload_real): Clear
	numeric_output_need_bar after __.
	* call.c (build_new_method_call): Issue 'incomplete type' error,
	if class is not defined.

From-SVN: r22856
1998-10-05 18:10:23 -04:00
David Edelsohn
cac8ce95a1 unroll.c (loop_iteration_var, [...]): No longer static.
* unroll.c (loop_iteration_var, loop_initial_value, loop_increment
        loop_final_value, loop_comparison_code): No longer static.
        (unroll_loop): Delete loop_start_value update.
        * loop.h (loop_iteration_var, loop_initial_value, loop_increment,
        loop_final_value, loop_comparison_code): Extern.
        (loop_start_value): Delete extern.
        * loop.c (loop_can_insert_bct, loop_increment, loop_start_value,
        loop_comparison_value, loop_comparison_code): Delete.
        (loop_optimize): Remove initialization for deleted variables.
        (strength_reduce): Delete analyze_loop_iterations call.  Only call
        insert_bct if flag_branch_count_on_reg set.
        (analyze_loop_iterations): Delete.
        (insert_bct): Remove iteration count calculation.  Move checks for
        viable BCT optimization to here.  Obtain iteration count from
        loop_iterations and correct for unrolling.  Check for enough
        iteration to be beneficial.  Comment out runtime iteration count
        case.
        (insert_bct): Print iteration count in dump file.  Remove
        loop_var_mode and use word_mode directly.
        * rs6000.h (processor_type): Add PROCESSOR_PPC604e.
        * rs6000.c (rs6000_override_options): Use it.
        (optimization_options): Enable use of flag_branch_on_count_reg.
        * rs6000.md (define_function_unit): Describe 604e.

From-SVN: r22852
1998-10-05 18:03:25 -04:00
Kaveh Ghazi
d64db93fbc call.c (build_object_call): Move declaration of variable `fn' into the scope where it is used.
* call.c (build_object_call): Move declaration of variable
        `fn' into the scope where it is used.  Don't access variable
        `fn' when it is uninitialized, instead use `fns'.

From-SVN: r22850
1998-10-05 21:31:14 +00:00
Kaveh Ghazi
08d292de20 call.c (build_object_call): Move declaration of variable `fn' into the scope where it is used.
* call.c (build_object_call): Move declaration of variable
        `fn' into the scope where it is used.  Don't access variable
        `fn' when it is uninitialized, instead use `fns'.

From-SVN: r22849
1998-10-05 21:13:46 +00:00
Herman A.J. ten Brugge
877ca132ec loop.c (move_movables): Corrected threshold calculation for moved_once registers.
* loop.c (move_movables): Corrected threshold calculation for
        moved_once registers.

From-SVN: r22847
1998-10-05 14:48:22 -06:00
Bernd Schmidt
da5a44b36e * loop.c (combine_givs_p): Fix test for identical givs.
From-SVN: r22845
1998-10-05 14:20:39 -06:00
Dave Love
5d7d0cae2f u77-test.f: Add regression test for RAND.
1998-10-05  Dave Love  <d.love@dl.ac.uk>
	* g77.f-torture/execute/u77-test.f: Add regression test for RAND.
	* g77.f-torture/execute/io1.f: New test.

From-SVN: r22844
1998-10-05 11:45:31 +00:00