Commit Graph

692 Commits

Author SHA1 Message Date
Richard Henderson
80a480ca16 function.c (expand_function_start): Don't abort on PARALLEL returns from hard_function_value.
* function.c (expand_function_start): Don't abort on PARALLEL
        returns from hard_function_value.

From-SVN: r42577
2001-05-25 12:05:24 -07:00
Richard Henderson
d5bf114347 function.c (expand_function_start): Always use a pseudo for the function result value.
* function.c (expand_function_start): Always use a pseudo
        for the function result value.

From-SVN: r42486
2001-05-23 00:01:43 -07:00
Mark Mitchell
db3c03158c function.c (expand_function_start): Avoid creating BLKmode pseudos.
* function.c (expand_function_start): Avoid creating BLKmode
	pseudos.

	* dwarf2out.c (output_comp_unit): Always output a compilation-unit
	DIE, even if it has no children.
	(dwarf2out_finish): Always output the line-number table, even if
	it has no content.

From-SVN: r42254
2001-05-18 07:25:50 +00:00
Richard Kenner
6349ad241c function.c (fixup_var_regs_1, [...]): Use promoted mode for replacement.
* function.c (fixup_var_regs_1, case SUBREG): Use promoted mode
	for replacement.

From-SVN: r41765
2001-05-02 13:31:19 -04:00
Kaveh R. Ghazi
6496a589df bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".
* bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* combine.c: Likewise.
	* rs6000.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* objc/objc-act.c: Likewise.
	* recog.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.c: Likewise.
	* reload1.c: Likewise.
	* simplify-rtx.c: Likewise.
	* stmt.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r41722
2001-05-01 12:11:35 +00:00
Zack Weinberg
cc2e8b2d91 function.c (purge_addressof_1): Remove the duplicate if (code == SET) block.
* function.c (purge_addressof_1): Remove the duplicate
	if (code == SET) block.  Fold the two if (code == ADDRESSOF)
	blocks together.

From-SVN: r41649
2001-04-27 23:55:03 +00:00
Geoffrey Keating
fbffc70af6 function.c (expand_function_end): Always clobber the return registers, even if there is no return label.
* function.c (expand_function_end): Always clobber the
	return registers, even if there is no return label.

From-SVN: r41612
2001-04-26 20:54:51 +00:00
Jakub Jelinek
43e720723f gcse.c (gcse_main): Fix comment typo.
* gcse.c (gcse_main): Fix comment typo.
	(delete_null_pointer_check): Likewise.
	(hash_scan_set): Don't consider sets with REG_EQUIV MEM notes.
	* cse.c (cse_insn): Likewise.
	* function.c (fixup_var_refs_insns_with_hash): The sequence is
	toplevel.

	* gcc.c-torture/execute/20010403-1.c: New test.

From-SVN: r41444
2001-04-20 09:56:50 +02:00
Jim Wilson
aa570f545a Fix ia64 libffi build failure.
* function.c (expand_function_end): Handle PARALLEL real_decl_rtl.

From-SVN: r41361
2001-04-15 01:37:34 -07:00
Andrew MacLeod
55107ee39c function.c (purge_single_hard_subreg_set): Only check REGNO if the subreg was a hard register.
2001-04-10  Andrew MacLeod  <amacleod@redhat.com>

	* function.c (purge_single_hard_subreg_set): Only check REGNO if
	the subreg was a hard register. Pseudos are left as subregs.

From-SVN: r41217
2001-04-10 02:47:32 +00:00
DJ Delorie
c39ada0455 function.h (virtuals_instantiated): Declare.
* function.h (virtuals_instantiated): Declare.
* function.c: (virtuals_instantiated): Make global.
* calls.c (emit_library_call_value_1): Use
virtual_outgoing_args_rtx only if it hasn't been instantiated.
Otherwise, use the stack pointer directly.

From-SVN: r41127
2001-04-05 16:13:53 -04:00
Jakub Jelinek
ddef6bc7a3 Use byte offsets in SUBREGs instead of words.
2001-04-03  Jakub Jelinek  <jakub@redhat.com>
	    David S. Miller  <davem@pierdol.cobaltmicro.com>
            Andrew MacLeod  <amacleod@redhat.com>

	Use byte offsets in SUBREGs instead of words.

	* alias.c (nonlocal_mentioned_p): Use subreg_regno function.
	* caller-save.c (mark_set_regs): Change callers of subreg_hard_regno
	to pass new argument.
	(add_stored_regs): Use subreg_regno_offset function.
	* calls.c (expand_call): For non-paradoxical SUBREG take endianess
	into account.
	(precompute_arguments): Use gen_lowpart_SUBREG.
	* combine.c (try_combine): Replace explicit XEXP with SUBREG_REG.
	(combine_simplify_rtx): Rework to use SUBREG_BYTE.
	(simplify_set): Rework to use SUBREG_BYTE.
	(expand_field_assignment): Use SUBREG_BYTE.
	(make_extraction): Use SUBREG_BYTE.
	(if_then_else_cond): Use SUBREG_BYTE.
	(apply_distributive_law): Use SUBREG_BYTE and fixup subreg comments.
	(gen_lowpart_for_combine): Compute full byte offset.
	* cse.c (mention_regs): Use SUBREG_BYTE.
	(remove_invalid_subreg_refs): Rework to use SUBREG_BYTE.
	(canon_hash): Use SUBREG_BYTE.
	(fold_rtx): Pass SUBREG_BYTE div UNITS_PER_WORD to operand_subword.
	(gen_lowpart_if_possible): Formatting.
	* dbxout.c (dbxout_symbol_location): Compute SUBREG hard regnos
	correctly.
	* dwarf2out.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* dwarfout.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(output_mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(output_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* emit-rtl.c (gen_rtx_SUBREG): New function, used to verify
	certain invariants about SUBREGs the compiler creates.
	(gen_lowpart_SUBREG): New function.
	(subreg_hard_regno): New function to get the final register number.
	(gen_lowpart_common): Use SUBREG_BYTE.
	(gen_imagpart): Spacing nits.
	(subreg_realpart_p): Use SUBREG_BYTE.
	(gen_highpart): Use SUBREG_BYTE.
	(subreg_lowpart_p): Always compute endian corrected goal offset,
	even at the byte level, then compare against that.
	(constant_subword): New function, pulled out all constant cases
	from operand_subword and changed second argument name to offset.
	(operand_subword): Detect non REG/SUBREG/CONCAT/MEM cases early
	and call constant_subword to do the work.  Return const0_rtx if
	looking for a word outside of OP.
	(operand_subword_force): Change second arg name to offset.
	* expmed.c (store_bit_field): Use SUBREG_BYTE.
	(store_split_bit_field): Use SUBREG_BYTE.
	(extract_bit_field): Use SUBREG_BYTE.
	(extract_split_bit_field): Use SUBREG_BYTE.
	(expand_shift): Use SUBREG_BYTE.
	* expr.c (store_expr, expand_expr): Use gen_lowpart_SUBREG.
	* final.c (alter_subreg) Use subreg_hard_regno and SUBREG_BYTE.
	* flow.c (set_noop_p): Use SUBREG_BYTE.
	(mark_set_1): Remove ALTER_HARD_SUBREG. Use subreg_regno_offset instead.
	* function.c (fixup_var_refs_1): Fixup explicit XEXP into a SUBREG_REG.
	(fixup_memory_subreg): Use SUBREG_BYTE and remove byte endian
	correction code.
	(optimize_bit_field): Use SUBREG_BYTE.
	(purge_addressof_1): Use SUBREG_BYTE.
	(purge_single_hard_subreg_set): Use subreg_regno_offset function.
	(assign_params): Mark arguments SUBREG_PROMOTED_VAR_P if they are
	actually promoted by the caller and PROMOTE_FOR_CALLS_ONLY is true.
	* gengenrtl.c (special_rtx): Add SUBREG.
	* global.c (mark_reg_store): Use SUBREG_BYTE.
	(set_preference): Rework to use subreg_regno_offset and SUBREG_BYTE.
	* ifcvt (noce_emit_move_insn): Use SUBREG_BYTE.
	* integrate.c (copy_rtx_and_substitute): Use SUBREG_BYTE and make sure
	final byte offset is congruent to subreg's mode size.
	(subst_constants): Use SUBREG_BYTE.
	(mark_stores): Use subreg_regno_offset function.
	* jump.c (rtx_renumbered_equal_p, true_regnum): Use subreg_regno_offset
	function and SUBREG_BYTE.
	* local-alloc.c (combine_regs): Use subreg_regno_offset function.
	(reg_is_born): Use subreg_hard_regno.
	* recog.c (valid_replace_rtx_1): Use SUBREG_BYTE and remove byte
	endian correction code.  Don't combine subregs unless resulting
	offset aligns with type.  Fix subreg constant extraction for DImode.
	Simplify SUBREG of VOIDmode CONST_DOUBLE.
	(general_operand): Remove dead mode_altering_drug code.
	(indirect_operand): Use SUBREG_BYTE.
	(constrain_operands): Use subreg_regno_offset function.
	* reg-stack.c (get_true_reg): Use subreg_regno_offset function.
	* regmove.c (regmove_optimize): Use SUBREG_BYTE.
	(optimize_reg_copy_3): Use gen_lowpart_SUBREG.
	* regs.h (REG_SIZE): Allow target to override.
	(REGMODE_NATURAL_SIZE): New macro which target can override.
	* reload.c (reload_inner_reg_of_subreg): subreg_regno should be used
	on the entire subreg rtx.
	(push_reload): Use SUBREG_BYTE in comments and code.
	(find_dummy_reload): Use subreg_regno_offset.  Only adjust offsets
	for hard registers inside subregs.
	(operands_match_p): Use subreg_regno_offset.
	(find_reloads): Use SUBREG_BYTE and only advance offset for subregs
	containing hard regs.
	(find_reload_toplev): Use SUBREG_BYTE.  Remove byte endian
	corrections when fixing up MEM subregs.
	(find_reloads_address_1): Use SUBREG_BYTE, subreg_regno, and
	subreg_regno_offset where appropriate.
	(find_reloads_subreg_address): Use SUBREG_BYTE.  Remove
	byte endian corrections when fixing up MEM subregs.
	(subst_reloads): When combining two subregs, make sure final
	offset is congruent to subreg's mode size.
	(find_replacement): Use SUBREG_BYTE and subreg_regno_offset.
	(refers_to_regno_for_reload_p): Use subreg_regno.
	(reg_overlap_mentioned_for_reload_p): Use subreg_regno_offset.
	* reload1.c (eliminate_regs) Use SUBREG_BYTE. Remove byte endian
	correction code for memory subreg fixups.
	(forget_old_reload_1): Use subreg_regno_offset.
	(choose_reload_regs): Use subreg_regno.
	(emit_input_reload_insns): Use SUBREG_BYTE.
	(reload_combine_note_store): Use subreg_regno_offset.
	(move2add_note_store): Use subreg_regno_offset.
	* resource.c (update_live_status, mark_referenced_resources): Use
	subreg_regno function.
	(mark_set_resources): Use subreg_regno function.
	* rtl.h (SUBREG_WORD): Rename to SUBREG_BYTE.
	(subreg_regno_offset, subreg_regno): Define prototypes.
	(subreg_hard_regno, constant_subword, gen_rtx_SUBREG): Newi functions.
	(gen_lowpart_SUBREG): Add prototype.
	* rtl.texi (subreg): Update to reflect new byte offset representation.
	Add mentioning of the effect that BYTES_BIG_ENDIAN has on subregs now.
	* rtlanal.c (refers_to_regno_p): Use subreg_regno.
	(reg_overlap_mentioned_p): Use subreg_regno.
	(replace_regs); Make sure final offset of combined subreg is
	congruent to size of subreg's mode.
	(subreg_regno_offset): New function.
	(subreg_regno): New function.
	* sched-vis.c (print_value): Change SUBREG_WORD to SUBREG_BYTE.
	* sdbout.c (sdbout_symbol): Compute offset using alter_subreg.
	* stmt.c (expand_anon_union_decl): Use gen_lowpart_SUBREG.
	* tm.texi (ALTER_HARD_SUBREG): Remove, it is now dead.
	(SUBREG_REGNO_OFFSET): Describe SUBREG_REGNO_OFFSET overrides.
	* config/a29k/a29k.c (gpc_reg_operand): Use subreg_regno.
	(a29k_get_reloaded_address): Use SUBREG_BYTE.
	(print_operand): Use SUBREG_BYTE.
	* config/alpha/alpha.c (print_operand_address): Use SUBREG_BYTE.
	* config/arm/arm.c (arm_reload_in_hi): Use SUBREG_BYTE.
	(arm_reload_out_hi): Use SUBREG_BYTE.
	* config/d30v/d30v.c (d30v_split_double): Use subreg_regno_offset
	instead of SUBREG_WORD.
	(d30v_print_operand_memory_reference): Use subreg_regno_offset.
	* config/dsp16xx/dsp16xx.md (extendqihi2, zero_extendqihi2): Fix
	SUBREG creation to use byte offset.
	* config/h8300/h8300.md (Unnamed HImode zero extraction and 16bit
	inverted load insns): Fix explicit rtl subregs to use byte
	offsets.
	* config/i370/i370.md (cmpstrsi, movstrsi, mulsi3, divsi3,
	udivsi3, umodsi3): Generate SUBREGs with byte offsets.
	* config/i860/i860.c (single_insn_src_p): Use SUBREG_BYTE.
	* config/i860/i860.md (mulsi3_big): Fixup explicit SUBREGs in rtl
	to use byte offsets.
	(unnamed fmlow.dd insn): Fixup SUBREGS to use byte offsets.
	* config/i960/i960.md (extendhisi2): Generate SUBREGs with byte
	offsets, also make sure it is congruent to SUBREG's mode size.
	(extendqisi2, extendqihi2, zero_extendhisi2, zero_extendqisi2,
	unnamed ldob insn): Generate SUBREGs with byte offset.
	(zero_extendqihi2): SUBREG's are byte offsets.
	* config/m68hc11/m68hc11.c (m68hc11_gen_lowpart): Use SUBREG_BYTE.
	(m68hc11_gen_highpart): Use SUBREG_BYTE.
	* config/m68k/m68k.md (zero_extendhisi2, zero_extendqihi2,
	zero-extendqisi2): Generate SUBREGs with byte offset.
	(umulsidi3, mulsidi3, subreghi1ashrdi_const32,
	subregsi1ashrdi_const32, subreg1lshrdi_const32): Fixup explicit
	subregs in rtl to use byte offsets.
	* config/m88k/m88k.md (extendsidi2): fixup subregs to use byte offset.
	* config/mips/mips.c (mips_move_1word): Use subreg_regno_offset.
	(mips_move_2words): Use subreg_regno_offset.
	(mips_secondary_reload_class): Use subreg_regno_offset.
	* config/mips/mips.md (DImode plus, minus, move, and logical op
	splits): Fixup explicit subregs in rtl to use byte offsets.
	* config/mn10200/mn10200.c (print_operand): Use subreg_regno function.
	* config/mn10300/mn10300.c (print_operand): Use subreg_regno function.
	* config/ns32k/ns32k.md (udivmoddisi4): Fix explicit subregs in
	rtl to use byte offsets.
	* config/pa/pa.c (emit_move_sequence): Use SUBREG_BYTE.
	* config/pa/pa.md (floatunssisf2, floatunssidf2, mulsi3): fix explicit
	subregs to use byte offsets.
	* config/pdp11/pdp11.md (zero_extendhisi2, modhi3, modhi3+1):
	Fixup explicit subregs in rtl to use byte offsets.
	* config/romp/romp.c (memory_offset_in_range_p): Use SUBREG_BYTE
	and remove byte endian correction code.
	* config/sh/sh.c (output_movedouble): Use subreg_regno.
	(gen_ashift_hi): Use SUBREG_BYTE.
	(regs_used): Use subreg_regno_offset.
	(machine_dependent_reorg): Use subreg_regno_offset.
	* config/sh/sh.h (INDEX_REGISTER_RTX_P): Use SUBREG_BYTE.
	* config/sh/sh.md (DImode and DFmode move splits): Use subreg_regno.
	(movdf_i4): Subregs are byte offsets now.
	* config/sparc/sparc.c (ultra_find_type): Use SUBREG_BYTE.
	* config/sparc/sparc.h (ALTER_HARD_SUBREG): Removed.
	(REGMODE_NATURAL_SIZE): Override.
	(REG_SIZE): For SUBREG check float mode on SUBREG_REG's mode.
	* config/sparc/sparc.md (TFmode move splits): Generate SUBREGs
	with byte offsets.
	(zero_extendhisi2, zero_extendqidi2_insn, extendhisi2,
	extendqihi2, sign_extendqihi2_insn, sign_extendqisi2_insn,
	extendqidi2): Generate SUBREGs with byte offsets, also make sure
	it is congruent to SUBREG's mode size.
	(smulsi3_highpart_v8plus): Fix explicit subregs in rtl to use byte
	offsets.
	(cmp_siqi_trunc, cmp_siqi_trunc_set, cmp_diqi_trunc,
	cmp_diqi_trunc_set, lshrdi3_v8plus+1, lshrdi3_v8plus+2,
	lshrdi3_v8plus+3, lshrdi3_v8plus+4): Use proper
	SUBREG_BYTE offset for non-paradoxical subregs in patterns.
	* config/v850/v850.c (print_operand, output_move_double): Use
	subreg_regno function.

Co-Authored-By: Andrew MacLeod <amacleod@redhat.com>
Co-Authored-By: David S. Miller <davem@pierdol.cobaltmicro.com>

From-SVN: r41058
2001-04-03 15:06:12 +00:00
Richard Henderson
52a11cbfcf IA-64 ABI Exception Handling.
From-SVN: r40924
2001-03-28 03:04:51 -08:00
Richard Henderson
3d74dad834 function.c (expand_function_start): Set DECL_REGISTER on a pseudo used for DECL_RESULT.
* function.c (expand_function_start): Set DECL_REGISTER on
        a pseudo used for DECL_RESULT.

From-SVN: r40896
2001-03-27 19:28:28 -08:00
Richard Henderson
5e7f4a4ab9 mkconfig.sh: Include insn-flags.h.
* mkconfig.sh: Include insn-flags.h.
	* Makefile.in (CONFIG_H): Include insn-flags.h.
	(lots of objects): Remove insn-codes.h and insn-flags.h.

	* alias.c, bb-reorder.c, calls.c, do-loop.c, flow.c, haifa-sched.c,
	integrate.c, jump.c, loop.c, predict.c, profile.c, reg-stack.c,
	regmove.c, reorg.c, a29k/a29k.c, alpha/alpha.c, arc/arc.c, arm/arm.c,
	avr/avr.c, clipper/clipper.c, convex/convex.c, d30v/d30v.c,
	dsp16xx/dsp16xx.c, fr30/fr30.c, h8300/h8300.c, i370/i370.c,
	i386/i386.c, i860/i860.c, ia64/ia64.c, m32r/m32r.c, m68hc11/m68hc11.c,
	m68k/m68k.c, m88k/m88k.c, mcore/mcore.c, mn10200/mn10200.c,
	mn10300/mn10300.c, ns32k/ns32k.c, pa/pa.c, pdp11/pdp11.c,
	pj/pj.c, romp/romp.c, rs6000/rs6000.c, sh/sh.c, sparc/sparc.c,
	v850/v850.c, vax/vax.c:
	Don't include insn-flags.h.

	* diagnostic.c, expr.h, reload.c, toplev.c:
	Don't include insn-codes.h.

	* builtins.c, combine.c, except.c, explow.c, expmed.c, expr.c,
	final.c, function.c, optabs.c, recog.c, reload1.c, stmt.c,
	c4x/c4x.c, i960/i960.c, mips/mips.c:
	Don't include insn-codes.h or insn-flags.h.

	* genemit.c, genopinit.c, genoutput.c: Don't include insn-codes.h
	or insn-flags.h in the generated code.
	* genflags.c (gen_proto): Use "struct rtx_def *" instead of "rtx".
	(main): Forward declare struct rtx_def.

From-SVN: r40754
2001-03-22 10:48:52 -08:00
Richard Henderson
bf501a6512 defaults.h (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Move from ...
* defaults.h (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Move from ...
        * calls.c: ... here.
        * combine.c, expr.c, final.c, function.c toplev.c: Don't provide
        defaults for them here.

From-SVN: r40603
2001-03-18 13:38:33 -08:00
Mark Mitchell
19e7881c81 varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME...
* varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME, not the
	contents of the RTL, to determine the name of the object.

	* tree.h (DECL_RTL): Allocate RTL lazily.
	(SET_DECL_RTL): New macro.
	(DECL_RTL_SET_P): Likewise.
	(COPY_DECL_RTL): Likewise.
	(DECL_RTL_IF_SET): Likewise.
	* varasm.c (make_decl_rtl): Add assertions about the kind of
	declaration we are processing.
	* c-decl.c (duplicate_decls): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	* c-semantics.c (emit_local_var): Likewise.
	* calls.c (expand_call): Likewise.
	* dbxout.c (dbxout_symbol): Likewise.
	* emit-rtl.c (unshare_all_rtl): Likewise.
	(unshare_all_decls): Likewise.
	(reset_used_decls): Likewise.
	* expr.c (store_constructor): Likewise.
	(safe_from_p): Likewise.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(instantiate_decls_1): Likewise.
	(assign_parms): Likewise.
	(expand_function_start): Likewise.
	(expand_function_end): Likewise.
	* ggc-common.c (gcc_mark_trees): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	(copy_decl_for_inlining): Likewise.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.
	(integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* reg-stack.c (stack_result): Likewise.
	* stmt.c (label_rtx): Likewise.
	(expand_return): Likewise.
	(expand_decl): Likewise.
	(expand_decl_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	* toplev.c (check_global_declarations): Likewise.
	(rest_of_decl_compilation): Likewise.
	* tree.c (simple_cst_equal): Likewise.
	* objc/objc-act.c (generate_static_references): Likewise.

	* class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* cp-tree.h (DECL_IN_MEMORY_P): Likewise.
	* decl.c (duplicate_decls): Likewise.
	(builtin_function): Likewise.
	(build_library_fn): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(cp_finish_decl): Likewise.
	* decl2.c (grokfield): Likewise.
	(grok_function_init): Remove #if 0'd code.
	(finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* friend.c (do_friend): Likewise.
	* init.c (get_temp_regvar): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Likewise.
	* semantics.c (genrtl_named_return_value): Likewise.
	(expand_body): Likewise.
	(genrtl_finish_function): Likewise.
	* tree.c (cp_tree_equal): Likewise.

	* com.c (ffecom_member_phase_2): Use COPY_DECL_RTL,
	DECL_RTL_SET_P, etc.
	(duplicate_decls): Likewise.
	(start_decl): Likewise.

	* class.c (build_static_field_ref): Likewise.
	(make_method_value): Likewise.
	(get_dispatch_table): Likewise.

	* decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.

From-SVN: r40482
2001-03-15 02:51:03 +00:00
Jeffrey Oldham
a84efb51f7 emit-rtl.c (remove_unnecessary_notes): Reverse Richard Kenner's 2001-02-24 which broke building the Java library.
2001-03-12  Jeffrey Oldham  <oldham@codesourcery.com>

	* emit-rtl.c (remove_unnecessary_notes): Reverse Richard Kenner's
	2001-02-24 which broke building the Java library.
	* function.c (identify_blocks): Likewise.
	(all_blocks): Likewise.
	* integrate.c (integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* tree.h (BLOCK_NUMBER): Likewise.
	(struct tree_block): Likewise.

From-SVN: r40431
2001-03-12 22:22:54 +00:00
Zack Weinberg
d6edb99e92 xm-lynx.h, [...]: Do not define TRUE or FALSE.
* config/xm-lynx.h, config/xm-std32.h, config/a29k/xm-a29k.h,
	config/a29k/xm-unix.h, config/alpha/xm-alpha.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h, config/c4x/xm-c4x.h,
	config/clipper/xm-clix.h, config/convex/xm-convex.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h,
	config/h8300/xm-h8300.h, config/i370/xm-i370.h,
	config/i370/xm-linux.h, config/i370/xm-mvs.h,
	config/i370/xm-oe.h, config/i386/xm-aix.h,
	config/i386/xm-i386.h, config/i386/xm-osf.h,
	config/i860/xm-i860.h, config/i960/xm-i960.h,
	config/ia64/xm-ia64.h, config/m32r/xm-m32r.h,
	config/m68k/xm-m68k.h, config/m88k/xm-m88k.h,
	config/mcore/xm-mcore.h, config/mips/xm-mips.h,
	config/mn10200/xm-mn10200.h, config/mn10300/xm-mn10300.h,
	config/ns32k/xm-ns32k.h, config/pa/xm-linux.h,
	config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/pa/xm-papro.h,
	config/pj/xm-pj.h, config/romp/xm-romp.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h,
	config/vax/xm-vms.h, config/we32k/xm-we32k.h:
	Do not define TRUE or FALSE.

	* config/i386/xm-aix.h, config/i386/xm-osf.h: Delete; made
	empty by above change.
	* config.gcc: Remove references to these files.

	* configure.in: Detect stdbool.h.
	* configure, config.in: Regenerate.
	* system.h: Include stddef.h here if available.  Set
	HAVE__BOOL based on GCC_VERSION and __STDC_VERSION__.  Then
	set up a sensible boolean type at the very end.

	* combine.c, cse.c, expr.c, fold-const.c, gensupport.c,
	f/com.c, config/mcore/mcore.c:
	Rename variables named 'true' and/or 'false'.

	* hash.h: Delete 'boolean' typedef and related #undefs.
	* f/proj.h: Delete 'bool' type.  Don't include stddef.h here.

	* function.c, ggc-common.c, hash.h, hash.c, tlink.c, cp/decl.c,
	java/class.c, java/decl.c, java/java-tree.h:
	Replace all uses of 'boolean' with 'bool'.

From-SVN: r40176
2001-03-02 01:51:02 +00:00
Richard Kenner
bd015d3783 tree.h (BLOCK_DEAD): New macro.
* tree.h (BLOCK_DEAD): New macro.
	(struct tree_block): New flag, dead_flag.
	* print-tree.c (print_node, case 'b'): Print missing fields.
	* emit-rtl.c (remove_unnecessary_notes): Set BLOCK_DEAD.
	* function.c (identify_blocks): Enable test for misplaced notes.
	(all_blocks): Skip BLOCK_DEAD blocks.
	* integrate.c (integrate_decl_tree): Likewise.

From-SVN: r40039
2001-02-24 08:15:55 -05:00
Jan Hubicka
016030fea6 function.c (epilogue_done): Be ready for first basic block not containing PROLOGUE_END note.
* function.c (epilogue_done): Be ready for first basic block not
	containing PROLOGUE_END note.
	(reposition_prologue_and_epilogue_notes): Avoid placing
	PROLOGUE_END note between BASIC_BLOCK.

From-SVN: r40020
2001-02-24 02:22:07 +00:00
Richard Kenner
d64236b44d function.c (assign_parms): Set RTX_UNCHANGING_P in pseudo when we do in memory.
* function.c (assign_parms): Set RTX_UNCHANGING_P in pseudo when we
	do in memory.

From-SVN: r39737
2001-02-15 21:30:37 -05:00
Richard Kenner
d14057222f combine.c (nonzero_bits, case PLUS): If pointers extend unsigned and this is the sum of a pointer and a constant...
* combine.c (nonzero_bits, case PLUS): If pointers extend unsigned
	and this is the sum of a pointer and a constant, we know the result
	did not overflow.
	(num_sign_bit_copies, case PLUS): Likewise.
	* explow.c (convert_memory_address): Remove opposite SUBREG.
	* function.c (instantiate_new_reg): New function (from common code).
	(instantiate_virtual_regs_1): Call it.
	For PLUS, handle if (plus (subreg (virt-reg) (const_int))
	if pointers sign- or zero-extend.
	* simplify-rtx.c (simplify_unary_operation, case ZERO_EXTEND):
	If pointers extend unsigned, use inside of SUBREG.
	(simplify_unary_operation, case SIGN_EXTEND): Likewise, if sign extend.

From-SVN: r39489
2001-02-06 07:39:15 -05:00
Chandrakala Chavva
411707f4e4 final.c: Move the declaration profile_label_no to ...
* final.c: Move the declaration profile_label_no to ...
        * output.h: ... here.
        * function.c (expand_function_start): Call PROFILE_HOOK.
        * config/rs6000/aix.h: Define PROFILE_HOOK.
        * config/rs6000/rs6000-protos.h: output_profile_hook new.
        * config/rs6000/rs6000.c (output_profile_hook): Define.
        (output_prolog): Do nothing for ABI_AIX as it is taken care by
        output_profile_hook.
        tm.texi : Explain new macro PROFILE_HOOK.

From-SVN: r39473
2001-02-05 20:23:13 -05:00
Richard Kenner
b845f89747 Reinstall 1.245 -> 1.246 change
From-SVN: r39154
2001-01-20 08:40:23 -05:00
Zack Weinberg
a42a5f59d0 [multiple changes]
2001-01-20  Jakub Jelinek  <jakub@redhat.com>

	* function.c (fixup_var_refs): Move CALL_PLACEHOLDER handling...
	(fixup_var_refs_insns): ...here.

	* gcc.c-torture/compile/20010118-1.c: New test.

2001-01-20  Zack Weinberg  <zack@wolery.stanford.edu>

	* function.c (fixup_var_refs_insns): Break up into
	fixup_var_refs_insn [body of loop], fixup_var_refs_insns
	[loop over entire insn list], and fixup_var_refs_insns_with_hash
	[loop over hash table entries].
	(fixup_var_refs): Adjust calls to fixup_var_refs_insns and/or
	fixup_var_refs_insns_with_hash, to match above changes.

From-SVN: r39151
2001-01-20 09:12:08 +00:00
Richard Kenner
831ecbd460 alias.c (rtx_equal_for_memref_p, [...]): Don't assume args are REG.
* alias.c (rtx_equal_for_memref_p, case ADDRESSOF): Don't assume
	args are REG.
	* expr.c (store_constructor): Don't look at MEM_ALIAS_SET unless MEM.
	* function.c (assign_parms): Use INTVAL for a CONST_INT.

From-SVN: r39139
2001-01-19 13:04:23 -05:00
Richard Kenner
8207e7c604 Minor whitespace changes
From-SVN: r39066
2001-01-16 09:29:08 -05:00
Nick Clifton
414c4dc49c Remove {save|restore}_machine_status.
Document {init|mark|free}_machine_status.

From-SVN: r38882
2001-01-10 21:40:14 +00:00
Jeffrey A Law
87c61e2d0d function.c (instantiate_virtual_regs): Instantiate virtual registers found in CALL_INSN_FUNCTION_USAGE.
* function.c (instantiate_virtual_regs): Instantiate virtual
        registers found in CALL_INSN_FUNCTION_USAGE.

From-SVN: r38873
2001-01-10 11:35:50 -07:00
Zack Weinberg
b05467dc15 function.c (fixup_var_refs): Use push_to_full_sequence where possible.
* function.c (fixup_var_refs): Use push_to_full_sequence where
	possible.

From-SVN: r38729
2001-01-05 23:23:26 +00:00
DJ Delorie
cc1fe44fe8 function.c (reorder_blocks): Make sure the flags are all reset before using them to mark blocks...
* function.c (reorder_blocks): Make sure the flags are all reset
before using them to mark blocks, else a second invocation will
corrupt the block chain.
(reorder_blocks_0): New, resets the flags.

From-SVN: r38724
2001-01-05 16:13:42 -05:00
J"orn Rennecke
e2a5f96bbf integrate.c (expand_inline_function): Don't put a virtual register into the reg map.
* integrate.c (expand_inline_function): Don't put a virtual
	register into the reg map.

	* function.c (fixup_var_refs_1): If force_operand didn't put
	the address into the target, move it there.

From-SVN: r38694
2001-01-04 23:28:00 +00:00
Richard Kenner
d1608933b9 function.c (expand_function_end): Properly handle DECL_RESULT and copy when ptr_mode != Pmode.
* function.c (expand_function_end): Properly handle DECL_RESULT
	and copy when ptr_mode != Pmode.
	* expmed.c (make_tree): Convert X from Pmode to ptr_mode, if needed.

From-SVN: r38607
2001-01-01 21:31:22 -05:00
Richard Kenner
1da68f560d alias.c (alias_sets_conflict_p): New function.
* alias.c (alias_sets_conflict_p): New function.
	(mems_in_disjoint_alias_sets_p): Use it.
	(readonly_fields_p): Moved from expr.c; check for record type.
	(objects_must_conflict_p): New function.
	* calls.c (expand_call): Use assign_temp as much as possible, use
	readonly variant if assigned once, and don't set memory attributes.
	(emit_library_call_value_1, store_one_arg): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (expand_asm_operands, expand_return): Likewise.
	* expr.c (copy_blkmode_from_reg, store_constructor): Likewise.
	(store_field, save_noncopied_parts, expand_expr): Likewise.
	(expand_expr_unaligned): Likewise.
	(readonly_fields_p): Moved to alias.c.
	(safe_from_p): Rework handling of SAVE_EXPR.
	MEMs ony conflict if alias sets conflict; likewise for INDIRECT_REF.
	* function.c (struct temp_slot): Delete field ALIAS_SET; add TYPE.
	(assign_stack_for_temp): Use objects_must_confict_p.
	Set all memory attributes from type, if specified.
	(mark_temp_slot): Mark TYPE field.
	* tree.h (alias_sets_conflict_p, readonly_fields_p): New decls.
	(objects_must_conflict_p): Likewise.

	* stmt.c (expand_decl): Don't use assign_stack_temp in error case.
	(add_case_node): No need to copy nodes anymore.

From-SVN: r38559
2000-12-30 08:10:51 -05:00
Alexandre Oliva
f523247a94 function.c (assign_parms): Convert arguments passed by reference to the right mode.
* function.c (assign_parms): Convert arguments passed by
reference to the right mode.

From-SVN: r38528
2000-12-29 08:38:19 +00:00
Alexandre Oliva
fd81f5f608 function.c (assign_parms): Update parm's DECL_INCOMING_RTL when optimizing PARALLEL to REG.
* function.c (assign_parms): Update parm's DECL_INCOMING_RTL
when optimizing PARALLEL to REG.

From-SVN: r38444
2000-12-22 08:10:53 +00:00
Alexandre Oliva
b33493e3f3 function.c (adjust_trampoline_addr): New function.
* function.c (adjust_trampoline_addr): New function.
(trampoline_address): Call it instead of round_trampoline_addr().
* tm.texi (TRAMPOLINE_ADJUST_ADDRESS): Document it.

From-SVN: r38279
2000-12-15 09:09:41 +00:00
Alexandre Oliva
e68a6ce10e function.c (assign_parms): Optimize incoming PARALLELs into REGs if possible.
* function.c (assign_parms): Optimize incoming PARALLELs into
REGs if possible.

From-SVN: r38233
2000-12-13 21:24:03 +00:00
John David Anglin
3502dc9cd3 function.h (emit_status): Delete member regno_pointer_flag and rename regno_pointer_flag_length to...
* function.h (emit_status): Delete member regno_pointer_flag and
	rename regno_pointer_flag_length to regno_pointer_align_length.
	Delete define for REGNO_POINTER_FLAG.
	* integrate.h (inline_remap): Delete member regno_pointer_flag.
	Add member x_regno_reg_rtx.
	* rtl.h (rtx_def): Use frame_related bit to indicate register is
	a pointer in REG expressions.  Define REG_POINTER macro.
	* alias.c (find_base_value, find_base_term): Use REG_POINTER
	instead of REGNO_POINTER_FLAG.
	* combine.c (nonzero_bits, num_sign_bit_copies): Likewise.
	* emit-rtl.c (gen_reg_rtx): Use regno_pointer_align_length instead
	of regno_pointer_flag_length.  Remove code which refers to
	regno_pointer_flag.
	(mark_reg_pointer): Use REG_POINTER.
	(free_emit_status): Remove code which refers to regno_pointer_flag.
	(init_emit, mark_emit_status): Likewise.
	* flow.c (dump_flow_info): Likewise.
	* function.c (preserve_temp_slots): Likewise.
	* integrate.c (expand_inline_function, copy_rtx_and_substitute):
	Use x_regno_reg_rtx instead of regno_pointer_flag for function
	pointer determination in map.
	* loop.c (strength_reduce, maybe_eliminate_biv_1): Use REG_POINTER.
	* predict.c (estimate_probability): Likewise.
	* regclass.c (record_address_regs, reg_scan_mark_refs): Likewise.
	* unroll.c (unroll_loop): Use x_regno_reg_rtx instead of
	regno_pointer_flag for function pointer determination in map.
	* convex.h (RTX_COSTS): Don't test regno_pointer_flag and use
	REG_POINTER.
	* pa.c (hppa_legitimize_address, emit_move_sequence, basereg_operand):
	Use REG_POINTER.
	(restore_unscaled_index_insn_codes): Revise comment.

From-SVN: r37863
2000-11-29 23:31:19 -07:00
Mark Mitchell
cf77f15f54 * function.c (free_after_compilation): Clear x_clobber_return_insn.
From-SVN: r37806
2000-11-27 20:14:21 +00:00
Mark Mitchell
db5fbfb420 function.c (assign_parms): When calling put_var_into_stack...
* function.c (assign_parms): When calling put_var_into_stack, make
	sure that there are no hidden pending sequences.

From-SVN: r37417
2000-11-13 07:00:55 +00:00
Jason Merrill
d96a6d1a1c function.c (assign_parms): If TREE_ADDRESSABLE is set...
* function.c (assign_parms): If TREE_ADDRESSABLE is set, try to
        give the parm a register and then call put_var_into_stack.
        * stmt.c (expand_decl): Likewise.

cp/
        * typeck.c (mark_addressable): Don't call put_var_into_stack.

From-SVN: r37396
2000-11-11 19:11:47 -05:00
Jakub Jelinek
768f06694f function.c (expand_function_start): Cast GET_MODE_SIZE to HOST_WIDE_INT before negating it.
* function.c (expand_function_start): Cast GET_MODE_SIZE to
	HOST_WIDE_INT before negating it.

From-SVN: r37317
2000-11-08 14:13:10 +01:00
Joseph Myers
961192e1dd alias.c [...] (init_alias_analysis, [...]): Use memset () instead of bzero ().
* alias.c (init_alias_analysis), calls.c (expand_call,
	emit_library_call_value_1), combine.c (init_reg_last_arrays),
	cse.c (new_basic_block), dbxout.c (dbxout_type), diagnostic.c
	(init_output_buffer, set_diagnostic_context), dwarf2out.c
	(equate_decl_number_to_die, build_abbrev_table), emit-rtl.c
	(init_emit_once), fold-const.c (mul_double, div_and_round_double),
	function.c (assign_parms), gcse.c (compute_can_copy,
	alloc_gcse_mem, alloc_reg_set_mem, record_one_set,
	compute_hash_table, compute_set_hash_table,
	compute_expr_hash_table), genattrtab.c (optimize_attrs), global.c
	(global_alloc, global_conflicts), haifa-sched.c (compute_trg_info,
	clear_units, schedule_block), integrate.c (initialize_for_inline,
	expand_inline_function), jump.c (thread_jumps), local-alloc.c
	(local_alloc), loop.c (combine_movables, count_loop_regs_set,
	load_mems_and_recount_loop_regs_set), print-tree.c (debug_tree),
	regclass.c (init_reg_sets, init_reg_sets_1, regclass,
	record_reg_classes, allocate_reg_info), reload.c
	(get_secondary_mem, remove_address_replacements, find_reloads),
	reload1.c (reload, set_initial_label_offsets, finish_spills,
	reload_as_needed, choose_reload_regs_init,
	reload_cse_simplify_operands), reorg.c (dbr_schedule), sbitmap.c
	(sbitmap_zero), simplify-rtx.c (simplify_plus_minus), ssa.c
	(rename_registers), stmt.c (expand_end_case), unroll.c
	(unroll_loop), varray.c (varray_grow), objc/objc-act.c: Use memset
	() instead of bzero ().

ch:
	* actions.c (check_missing_cases), typeck.c (build_chill_slice,
	build_chill_cast): Use memset () instead of bzero ().

cp:
	* class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
	(push_binding_level), error.c (cp_tree_printer), pt.c
	(process_partial_specialization, tsubst_template_arg_vector),
	search.c (lookup_member): Use memset () instead of bzero ().

java:
	* expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
	(init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
	instead of bzero ().

From-SVN: r37303
2000-11-07 22:50:06 +00:00
Richard Kenner
1468899dc2 * function.c (locate_and_pad_parm): Use host_integerp and tree_low_cst.
From-SVN: r36973
2000-10-20 14:49:24 -04:00
Richard Henderson
23ccfa6dbb * function.c (locate_and_pad_parm): Zero alignment_pad.
From-SVN: r36969
2000-10-20 10:40:52 -07:00
Franz Sirl
832ea3b309 function.c (locate_and_pad_parm): Don't align stack unconditionally.
2000-10-17  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* function.c (locate_and_pad_parm): Don't align stack unconditionally.
	Fixes execute/20001017-1.c on pwerpc-linux-gnu.
	* expr.c (store_constructor): Apply MEM_ALIAS_SET to MEMs only.
	* rs6000/rs6000.c (rs6000_hash_constant): use X0INT to access a
	LABEL_REF.
	* rs6000/rs6000.h (NO_DOLLAR_IN_LABEL, DOLLARS_IN_IDENTIFIERS,
	ENCODE_SECTION_INFO, ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Move from
	here...
	* rs6000/aix.h: ...to here.
	* rs6000/linux.h (ASM_APP_ON, ASM_APP_OFF): Define to Linux-style.

From-SVN: r36914
2000-10-17 22:17:34 +00:00
Mark Mitchell
1f8f4a0b31 Remove obstacks.
* Makefile.in (ggc-callbacks.o): Remove target.
	(flow.o): Depend on GGC_H.
	* alias.c (init_alias_analysis):
	Remove ggc_p conditionals.
	(end_alias_analysis): Likewise.
	* basic-block.h (init_flow): New function.
	(allocate_reg_life_data): Declare.
	* bb-reorder.c	(function_obstack): Replace with ...
	(flow_obstack): ... new variable.
	(fixup_reorder_chain): Use it.
	* c-decl.c (ggc_p): Remove.
	(caller-save.c): Don't call oballoc/obfree.
	* combine.c (struct
	undobuf): Remove storage.
	(try_combine): Don't call oballoc.
	(undo_all): Don't call obfree.
	* cse.c (insert): Use xmalloc, not
	oballoc.
	(cse_main): Adjust accordingly.
	* dwarf2out.c (save_rtx): Remove
	obstack code.
	(dwarf2out_init): Remove ggc_p conditionals.
	* emit-rtl.c (rtl_obstack): Remove.
	(gen_rtx_CONST_INT): Remove ggc_p conditionals.
	(make_insn_raw): Likewise.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(gen_sequence): Likewise.
	(copy_insn_1): Remove handling of `b' RTL components.
	(init_emit_once): Remove ggc_p conditionals.
	* except.c (create_rethrow_ref): Don't fool with obstacks.
	(add_partial_entry): Likewise.
	(call_get_eh_context): Likewise.
	(begin_protect_partials): Likewise.
	(protect_with_terminate): Likewise.
	* explow.c
	(plus_constant_wide): Likewise.
	* expr.c (init_expr_once):
	Likewise.
	(emit_block_move): Likewise.
	(clear_storage): Likewise.
	(expand_expr): Likewise.
	* flow.c (function_obstack): Remove.
	(flow_obstack): New variable.
	(flow_firstobj): Likewise.
	(create_base_block): Use the flow_obstack.
	(split_block): Likewise.
	(split_edge): Likewise.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Make it static.  Likewiwse.
	(init_flow): New function.
	(size_int_type_wide): Remove ggc_p conditionals.
	* function.c
	(push_function_context_to): Don't call save_tree_status.
	(pop_function_context_from): Or restore_tree_status.
	(assign_stack_local_1): Don't call push_obstacks.
	(find_fixup_replacement): Use xmalloc.
	(fixup_var_refs_insns): Free the storage.
	(insns_for_mem_walk): Don't mess with obstacks.
	(instantiate_decls): Likewise.
	(trampoline_address): Likewise.
	(expand_function_end): Likewise.
	* function.h (sturct function):
	Remove obstack-related variables.
	(save_tree_status): Don't declare.
	(restore_tree_status): Likewise.
	* gcse.c (compute_can_copy):
	Don't call oballoc/obfree.
	* genattrtab.c (operate_exp): Remove
	ggc_p conditionals.
	(simplify_cond): Likewise.
	(simplify_test_exp): Don't mess with obstacks.
	(optimize_attrs): Likewise.
	* gengenrtl.c (gendef): Don't include
	ggc_p conditionals.
	* ggc-callbacks.c (ggc_p): Remove.
	* ggc-none.c (ggc_p): Remove.
	* ggc.h (ggc_p): Don't declare.
	* integrate.c (save_for_inline): Don't mess with obstacks.
	(integrate_decl_tree): Likewise.
	(output_inline_function): Likewise.
	* lists.c
	(init_EXPR_INSN_LIST_cache): Likewise.
	* loop.c (temp_obstack):
	Remove.
	(rtl_obstack): Likewise.
	(init_loop): Don't mess with obstacks.
	(reg_address_cost): Free BIVs and GIVs.
	(check_insns_for_bivs): Use xmalloc, not oballoc.
	(find_mem_givs): Likewise.
	(record_biv): Likewise.
	(general_induction_var): Likewise.
	(product_cheap_p): Likewse.
	* optabs.c (init_one_libfunc): Remove
	ggc_p conditional.
	* print-tree.c (debug_tree): Don't use
	oballoc/obfree.
	(print_node): Likewise.
	* profile.c (output_func_start_profiler):
	Remove call to temporary_allocation.
	* reload1.c
	(eliminate_regs_in_insn): Don't mess with obstacks.
	* resource.c
	(mark_target_live_regs): Use xmalloc.
	(free_resource_info): Free the memory.
	* rtl.c (rtl_obstack):
	Remove.
	(rtvec_alloc): Don't mess with obstacks.
	(rtx_alloc): Likewise.
	(rtx_free): Remove.
	(copy_rtx): Don't handle `b' cases.
	(read_rtx): Use a local rtl_obstack.
	* rtl.h (oballoc): Remove.
	(obfree): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(allocate_bb_life_data): Likewise.
	(allocate_reg_life_data): Likewise.
	(rtx_free): Likewise.
	* sdbout.c (sdbout_queue_anonymous_type):
	Use tree_cons, not saveable_tree_cons.
	* simplify-rtx.c
	(cselib_init): Don't mess with obstacks.
	* stmt.c
	(mark_block_nesting): Mark the label_chain.
	(epxand_label): Use ggc_alloc, not oballoc.
	(clear_last_expr): Don't mess with obstacks.
	(expand_decl_cleanup): Likewise.
	(expand_dcc_cleanup): Likewise.
	(expand_dhc_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	(add_case_node): Use xmalloc, not oballoc.
	(free_case_nodes): New function.
	(expand_end_case): Call it.
	* stor-layout.c (layout_type): Don't
	mess with obstacks.
	(layout_type): Likewise.
	* toplev.c (wrapup_global_declarations):
	Likewise.
	(compile_file): Remove ggc_p conditionals.
	(rest_of_compilation): Call init_flow.  Remove ggc_p conditionals.
	(decode_f_option): Remove ggc_p conditionals.
	* tree.c
	(function_maybepermanent_obstack): Remove.
	(maybepermanent_obstack): Likewise.
	(function_obstack): Likewise.
	(tmeporary_obstack): Likewise.
	(momentary_obstack): Likewise.
	(temp_decl_obstack): Likewise.
	(saveable_obstack): Likewise.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(expression_obstack): Likewise.
	(struct obstack_stack): Likewise.
	(obstack_stack): Likewise.
	(obstack_stack_obstack): Likewise.
	(maybepermanent_firstobj): Likewise.
	(temporary_firstobj): Likewise.
	(momentary_firstobj): Likewise.
	(temp_decl_firstobj): Likewise.
	(momentary_function_firstobj): Likewise.
	(all_types_permanent): Likewise.
	(struct momentary_level): Likewise.
	(momentary_stack): Likewise.
	(init_obstacks): Remove initialization of removed obstacks.
	(save_tree_status): Remove.
	(restore_tree_status): Likewise.
	(temporary_allocation): Liekwise.
	(end_temporary_allocation): Liekwise.
	(resume_temporary_allocation): Likewise.
	(saveable_allocation): Likewise.
	(push_obstacks): Likewise.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(allocation_temporary_p): Likewise.
	(permanent_allocation): Likewise.
	(preserve_data): Likewise.
	(preserve_initializer): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(oballoc): Likewise.
	(obfree): Likewise.
	(savealloc): Likewise.
	(expralloc): Likewise.
	(print_obstack_name): Likewise.
	(debug_obstack): Likewise.
	(object_permanent_p): Likewise.
	(push_momentary): Likewise.
	(perserve_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(pop_momentary_nofree): Likewise.
	(suspend_momentary): Likewise.
	(resume_momentary): Likewise.
	(make_node): Don't set TREE_PERMANENT.
	(copy_node): Remove ggc_p conditionals.  Don't set TYPE_OBSTACK.
	Don't set TREE_PERMANENT.
	(get_identifier): Remove ggc_p conditionals.
	(build_string): Likewise.
	(make_tree_vec): Likewise.
	(build_decl_list): Remove.
	(build_expr_list): Likewise.
	(tree_cons): Remove ggc_p conditionals.
	(decl_tree_cons): Remove.
	(expr_tree_cons): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(build1): Remove ggc_p conditionals.
	(build_parse_node): Likewise.
	(build_type_attribute_variant): Don't mess with obstacks.
	(build_type_copy): Likewise.
	(type_hash_canon): Likewise.
	(build_pointer_type): Likewise.
	(build_reference_type): Likewise.
	(build_index_type): Likewise.
	(build_range_type): Likewise.
	(dump_tree_statistics): Don't print obstack information.
	* tree.h
	(struct tree_common): Remove permanent_flag.
	(TREE_PERMANENT): Remove.
	(TREE_SET_PERMANENT): Likewise.
	(TYPE_OBSTACK): Likewise.
	(struct tree_type): Remove obstack.
	(oballoc): Remove.
	(savealloc): Likewise.
	(build_decl_list): Likewise.
	(build_expr_list): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(decl_tree_cons): Likewise.
	(expr_tree_cons): Likewise.
	(suspend_momentary): Likewise.
	(allocation_temporary_p): Likewise.
	(resume_momentary): Likewise.
	(push_obstacks_nochange): Likewise.
	(permanent_allocation): Likewise.
	(push_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(end_temporary_allocation): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(pop_momentary_nofree): LIkewise.
	(preserve_momentary): Likewise.
	(saveable_allocation): Likewise.
	(temporary_allocation): Likewise.
	(resume_temporary_allocation): Likewise.
	(perserve_initializer): Likewise.
	(debug_obstack): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(obfree): Likewise.
	* varasm.c (current_obstack): Remove.
	(saveable_obstack): Remove.
	(rtl_obstack): Remove.
	(immed_double_const): Don't mess with obstacks.
	(immed_real_cons): Likewise.
	(output_constant_def): Likewise.
	(init_varasm_status): Use xcalloc.
	(mark_pool_constant): Mark the pool constant itself.
	(free_varasm_status): Free memory.
	(decode_rtx_const): Call bzero directly, rather than expanding it
	inline.
	(record_rtx_const): Don't mess with obstacks.
	(force_const_mem): Likewise.
	* config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p
	conditionals.
	(aof_pic_entry): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/m32r/m32r.c (m32r_encode_section_info): Likewise.
	* config/pa/pa.c (saveable_obstack): Remove.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(output_call): Don't mess with obstacks.
	(hppa_encode_label): Remove ggc_p conditionals.
	* config/romp/romp.c (get_symref): Don't mess with obstacks.
	* config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional.
	(rs6000_encode_section_info): Likewise.
	* config/sh/sh.c (get_fpscr_rtx): Likewise.

From-SVN: r36856
2000-10-13 06:26:46 +00:00
Richard Henderson
3e4eac3fe9 function.c (diddle_return_value): Examine current_function_return_rtx instead of the DECL_RESULT.
* function.c (diddle_return_value): Examine
        current_function_return_rtx instead of the DECL_RESULT.
        (expand_function_end): Handle reloading DECL_RESULT from memory
        into a hard register.  Query promote_mode for sign of mismatched
        modes.

From-SVN: r36769
2000-10-06 18:45:21 -07:00
Richard Henderson
b313a0fe15 c-decl.c (warn_missing_noreturn): Remove.
* c-decl.c (warn_missing_noreturn): Remove.
        (c_expand_body): Don't set or check can_reach_end.
        * c-tree.h (warn_missing_noreturn): Move ...
        * flags.h: ... here.
        (can_reach_end): Remove.
        * flow.c (check_function_return_warnings): New.
        (make_edges): No edge to exit for noreturn sibcalls.
        * function.c (expand_function_end): Save the return value
        clobber instruction.
        (mark_function_status): Mark it.
        * function.h (struct function): Add x_clobber_return_insn.
        * jump.c (can_reach_end): Remove.
        (calculate_can_reach_end): Remove.
        (jump_optimize_1): Don't call it.
        * output.h (check_function_return_warnings): Declare.
        * toplev.c (warn_missing_noreturn): Move from c-decl.c
        (rest_of_compilation): Call check_function_return_warnings.

From-SVN: r36750
2000-10-05 23:01:27 -07:00
Jim Wilson
cc0cbae17e Fix IA-64 REG_LIBCALL dangling reference.
* function.c (fixup_var_refs_1, case SET): When gen_move_insn returns a
	SEQUENCE, call emit_insn_before, copy PATTERN and REG_NOTES of last
	sequence insn to INSN, and delete last sequence insn.

From-SVN: r36735
2000-10-05 16:24:18 -07:00
Jim Wilson
226ed43f1e Fix ia64-linux kernel fn_hash() miscompilation.
* function.c (fixup_var_refs_1, case ZERO_EXTRACT): If we have a
	paradoxical subreg, then directly substitute the replacement and
	return.

From-SVN: r36515
2000-09-18 14:37:37 -07:00
Andrew Haley
659e47fb24 toplev.c (rest_of_compilation): Call purge_hard_subreg_sets to remove all SETs of SUBREGs of hard registers.
2000-09-15  Andrew Haley  <aph@redhat.com>

        * toplev.c (rest_of_compilation): Call purge_hard_subreg_sets to
        remove all SETs of SUBREGs of hard registers.
        * function.c (purge_hard_subreg_sets): New function.
        (purge_single_hard_subreg_set): New function.
        * rtl.h: (purge_hard_subreg_sets): New function.

From-SVN: r36511
2000-09-18 19:27:37 +00:00
Bernd Schmidt
ebb1b59ac0 Bring back equal forms for libcalls
From-SVN: r36469
2000-09-17 12:45:51 +00:00
Geoff Keating
1b3d8f8a35 stmt.c (expand_asm_operands): Twiddle generating_concat_p so that CONCATs are not generated for ASMs.
* stmt.c (expand_asm_operands): Twiddle generating_concat_p
so that CONCATs are not generated for ASMs.
* emit-rtl.c (gen_reg_rtx): Don't generate CONCATs when
not generating_concat_p.
* function.c (pop_function_context_from): Reset
generating_concat_p.
(prepare_function_start): Likewise.
* rtl.c (generating_concat_p): Define.
* rtl.h (generating_concat_p): Declare.
* toplev.c (rest_of_compilation): No CONCATs after RTL generation.

From-SVN: r36088
2000-09-01 01:03:29 +00:00
Jim Wilson
caa511fdfa Fix x86-x-ia64 abort while compiling glibc ldbl2mpn.c.
* function.c (gen_mem_addressof): Clear MEM_ALIAS_SET if no decl.

From-SVN: r35991
2000-08-25 14:32:05 -07:00
Richard Kenner
3f546a5319 function.c (fixup_var_refs_1, case MEM): Update CODE after updating X.
* function.c (fixup_var_refs_1, case MEM): Update CODE after
	updating X.

From-SVN: r35790
2000-08-18 14:11:02 -04:00
Richard Kenner
43db0363f1 calls.c (calls_function_1, [...]): Only test TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.
* calls.c (calls_function_1, expand_call): Only test
	TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.
	* function.c (thread_prologue_and_epilogue_insns): Likewise.

From-SVN: r35743
2000-08-16 07:59:03 -04:00
Richard Kenner
7393c6422b calls.c (ECF_SP_DEPRESSED): New macro.
* calls.c (ECF_SP_DEPRESSED): New macro.
	(calls_function_1): Treat calling sp-depressed function as alloca.
	(emit_call_1): Don't adjust SP if calling sp-depressed function.
	(expand_call): Set ECF_SP_DEPRESSED if TYPE_RETURNS_STACK_DEPRESSED.
	If sp-depressed, ensure block saves and restores SP.
	* fold-const.c (extract_muldiv): Only check TYPE_IS_SIZETYPE
	for INTEGER_TYPE.
	* function.c (keep_stack_depressed): New function.
	(thread_prologue_and_epilogue_insns): Call it.
	* print-tree.c (print_node): Use HOST_WIDE_INT_PRINT_UNSIGNED
	to print DECL_OFFSET_ALIGN.
	Print no-force-blk and transparent-union flags properly.
	* stmt.c (expand_goto_internal): Don't restore stack if last block
	and function returns with sp depressed.
	(fixup_gotos): Likewise.
	(save_stack_pointer): New function, from code in expand_decl.
	(expand_decl): Call new function.
	* tree.h (TYPE_IS_SIZETYPE): Call INTEGER_TYPE_CHECK.
	(TYPE_RETURNS_STACK_DEPRESSED): New macro.
	(save_stack_pointer): New declaration.

From-SVN: r35734
2000-08-15 21:15:37 -04:00
Kazu Hirata
718fe40625 * cse.c: Fix formatting.
From-SVN: r35676
2000-08-14 08:34:52 -06:00
Geoff Keating
0858c623d0 flow.c (attempt_auto_inc): Remove unused variable `bb'.
* flow.c (attempt_auto_inc): Remove unused variable `bb'.
(attempt_auto_inc): Suppress parentheses warning.
* function.c (put_reg_into_stack): Remove unused variable `unsigned_p'.
* loop.c (load_mems): Remove `u' suffix in two places.
* config/rs6000/rs6000.c: Remove unnecessary `u' suffixes from
hex constants.
* config/rs6000/rs6000.h: Likewise.
* config/rs6000/sol-c0.c: Prototype some functions.  Remove the
__eabi dummy routine.
* config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Remove unused
variable `buf_ptr'.

From-SVN: r35670
2000-08-14 05:59:50 +00:00
Richard Henderson
8b4944fbce function.c (put_reg_into_stack): Allow type to be NULL.
* function.c (put_reg_into_stack): Allow type to be NULL.
        (schedule_fixup_var_refs): Likewise.
        (gen_mem_addressof): Allow decl to be NULL.
        (put_addressof_into_stack): Likewise.

From-SVN: r35625
2000-08-11 00:49:07 -07:00
J"orn Rennecke
018577e426 function.c (schedule_fixup_var_refs): New function, broken out of put_reg_into_stack.
* function.c (schedule_fixup_var_refs): New function, broken out
	of put_reg_into_stack.
	(put_reg_into_stack): Use it.
	(put_var_into_stack): In CONCAT case, fixup up references for
	components only after fixing up references to the whole concat.
testsuite:
	* gcc.c-torture/execute/20000804-1.c: New test.

From-SVN: r35495
2000-08-04 23:06:49 +01:00
Rodney Brown
2c3c49dec3 alias.c (mark_constant_function): Use INSN_P.
* alias.c (mark_constant_function): Use INSN_P.
	(init_alias_analysis): Likewise.
	* combine.c (combine_instructions): Use INSN_P.
	(can_combine_p): Likewise.
	(try_combine): Likewise.
	(distribute_notes): Likewise.
	(distribute_links): Likewise.
	* cse.c (cse_around_loop): Use INSN_P.
	(invalidate_skipped_block): Likewise.
	(cse_set_around_loop): Likewise.
	(cse_end_of_basic_block): Likewise.
	(delete_trivially_dead_insns): Likewise.
	* emit-rtl.c (unshare_all_rtl_again): Use INSN_P.
	(unshare_all_rtl_1): Likewise.
	(next_cc0_user): Likewise.
	(try_split make_insn_raw): Likewise.
	(remove_unnecessary_notes): Likewise.
	* final.c (shorten_branches): Use INSN_P.
	(leaf_renumber_regs): Likewise.
	(leaf_renumber_regs_insn): Likewise.
	* flow.c (find_label_refs): Use INSN_P.
	(verify_wide_reg): Likewise.
	(notice_stack_pointer_modification): Likewise.
	(count_or_remove_death_notes): Likewise.
	(verify_flow_info): Likewise.
	(clear_log_links): Likewise.
	* function.c (fixup_var_refs_insns): Use INSN_P.
	(compute_insns_for_mem): Likewise.
	* gcse.c (alloc_gcse_mem): Use INSN_P.
	(compute_sets): Likewise.
	(compute_hash_table): Likewise.
	(classic_gcse): Likewise.
	(cprop): Likewise.
	(insert_insn_end_bb): Likewise.
	(delete_null_pointer_checks_1): Likewise.
	* global.c (expand_preferences): Use INSN_P.
	(build_insn_chain): Likewise.
	* graph.c (node_data): Use INSN_P.
	* haifa-sched.c (priority): Use INSN_P.
	(rm_line_notes): Likewise.
	(rm_other_notes): Likewise.
	(find_insn_reg_weight): Likewise.
	(init_target_units): Likewise.
	(schedule_block): Likewise.
	(compute_block_forward_dependences): Likewise.
	(debug_dependencies): Likewise.
	(set_priorities): Likewise.
	* integrate.c (function_cannot_inline_p): Use INSN_P.
	(save_parm_insns): Likewise.
	(copy_insn_list): Likewise.
	* jump.c (mark_all_labels): Use INSN_P.
	(never_reached_warning): Likewise.
	* lcm.c (optimize_mode_switching): Use INSN_P.
	* local-alloc.c (validate_equiv_mem): Use INSN_P.
	(memref_used_between_p): Likewise.
	(update_equiv_regs): Likewise.
	(block_alloc): Likewise.
	(no_conflict_p): Likewise.
	* loop.c (scan_loop): Use INSN_P.
	(find_and_verify_loops): Likewise.
	(count_loop_regs_set): Likewise.
	(loop_reg_used_before_p): Likewise.
	(strength_reduce): Likewise.
	(recombine_givs): Likewise.
	(check_dbra_loop): Likewise.
	(load_mems): Likewise.
	(try_copy_prop): Likewise.
	* print-rtl.c (print_rtx): Use INSN_P.
	* recog.c (find_single_use): Use INSN_P.
	* reg-stack.c (stack_regs_mentioned): Use INSN_P.
	(next_flags_user): Likewise.
	(swap_rtx_condition): Likewise.
	* regmove.c (mark_flags_life_zones): Use INSN_P.
	(optimize_reg_copy_1): Likewise.
	(optimize_reg_copy_2): Likewise.
	(optimize_reg_copy_3): Likewise.
	(reg_is_remote_constant_p): Likewise.
	(fixup_match_2): Likewise.
	(regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	* regrename.c (build_def_use): Use INSN_P.
	(replace_reg_in_block): Likewise.
	(consider_use): Likewise.
	* reload.c (find_equiv_reg): Use INSN_P.
	* reload1.c (reload): Use INSN_P.
	(maybe_fix_stack_asms): Likewise.
	(calculate_needs_all_insns): Likewise.
	(reload_as_needed): Likewise.
	(emit_output_reload_insns): Likewise.
	(delete_address_reloads_1): Likewise.
	(reload_cse_regs_1): Likewise.
	(reload_combine): Likewise.
	(reload_cse_move2add): Likewise.
	* reorg.c (redundant_insn): Use INSN_P.
	(dbr_schedule): Likewise.
	* resource.c (find_dead_or_set_registers): Use INSN_P.
	(mark_target_live_regs): Likewise.
	* rtlanal.c (reg_used_between_p): Use INSN_P.
	(reg_referenced_between_p): Likewise.
	(reg_set_between_p): Likewise.
	(reg_set_p): Likewise.
	(single_set): Likewise.
	(multiple_sets): Likewise.
	(find_last_value): Likewise.
	(reg_set_last): Likewise.
	(find_reg_note): Likewise.
	(find_regno_note): Likewise.
	* sibcall.c (sequence_uses_addressof): Use INSN_P.
	* simplify-rtx.c (cselib_process_insn): Use INSN_P.
	* ssa.c (find_evaluations): Use INSN_P.
	(rename_block): Likewise.
	(rename_equivalent_regs): Likewise.
	* unroll.c (loop_find_equiv_value): Use INSN_P.
	(set_dominates_use): Likewise.
	* varasm.c (mark_constant_pool): Use INSN_P.
	(mark_constants): Likewise.
	* config/alpha/alpha.c (alpha_does_function_need_gp): Use INSN_P.
	(alphaev4_next_group): Likewise.
	(alphaev5_next_group): Likewise.
	* config/c4x/c4x.c (c4x_process_after_reload): Use INSN_P.
	(c4x_rptb_rpts_p): Likewise.
	* config/mips/mips.c (mips16_optimize_gp): Use INSN_P.
	* config/rs6000/rs6000.c (uses_TOC): Use INSN_P.
	(rs6000_adjust_priority): Likewise.
	* config/sh/sh.c (sh_loop_align): Use INSN_P.
	(machine_dependent_reorg): Likewise.
	(split_branches): Likewise.
	* config/tahoe/tahoe.c (tahoe_cmp_check): Use INSN_P.

From-SVN: r35494
2000-08-04 14:28:08 -06:00
Jan Hubicka
dbab7b72b5 function.c (assign_stack_local_1, [...]): Do not call gen_mode_alignment when mode is BLKmode.
* function.c (assign_stack_local_1, assign_stack_temp_for_type):
	Do not call gen_mode_alignment when mode is BLKmode.

From-SVN: r35345
2000-07-30 18:26:46 +00:00
J. David Anglin
539a6f058c * function.c (round_down): Delete obsolete prototype.
From-SVN: r34631
2000-06-21 10:19:22 -06:00
Richard Kenner
c357082f8e function.c (put_var_into_stack): Don't reference DECL_ fields if input is a SAVE_EXPR.
* function.c (put_var_into_stack): Don't reference DECL_ fields
	if input is a SAVE_EXPR.
	Use set_mem_attributes in COMPLEX case.

From-SVN: r34591
2000-06-18 21:33:32 -04:00
J. David Anglin
a696c1d662 function.c (assign_parms): Add missing argument to set_mem_attributes call.
* function.c (assign_parms): Add missing argument to set_mem_attributes
	call.

From-SVN: r34404
2000-06-05 12:58:25 -04:00
Richard Kenner
2bf105ab5b alias.c (struct alias_set_entry): New field has_zero_child.
* alias.c (struct alias_set_entry): New field has_zero_child.
	(mem_in_disjoint_alias_sets_p): Return 0 if set in either ase.
	(get_alias_set): If language-dependent routine set TYPE_ALIAS_SET,
	do nothing.
	Call record_component_aliases for aggregate types.
	(record_alias_subset): Set has_zero_child.
	(record_component_aliases, case ARRAY_TYPE): Do nothing if
	TYPE_NONALIASES_COMPONENT.
	(record_component_aliases, case RECORD_TYPE): Test
	DECL_NONADDRESSABLE_P.
	* c-decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead
	of TREE_ADDRESSABLE.
	* calls.c (initialize_argument_information): Only test
	TYPE_TRANSPARENT_UNION for UNION_TYPE.
	* function.c (assign_parms): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	* stor-layout.c (finish_record_layout): Don't call
	record_component_aliases.
	* tree.h (struct tree_int_cst): Use struct tree_common.
	(struct tree_real_cst, struct tree_string): Likewise.
	(struct tree_complex, struct tree_identifier): Likewise.
	(struct tree_list, struct tree_vec, struct tree_exp): Likewise.
	(struct tree_block, struct tree_type, struct tree_decl): Likewise.
	(TYPE_TRANSPARENT_UNION): Use UNION_TYPE_CHECK.
	(TYPE_NONALIASES_COMPONENT): New macro.
	(TYPE_AMBIENT_BOUNDEDNESS): Use FUNCTION_TYPE_CHECK.
	(DECL_NONADDRESSABLE_P): New macro.
	(struct tree_decl): Reorder bits for clarity of how many left;
	add non_adressable.
	* cp/cp-tree.h: Use struct tree_common instead of a char array.
	* cp/decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead
	of TREE_ADDRESSABLE.

From-SVN: r34373
2000-06-02 21:57:46 -04:00
Richard Kenner
3bdf5ad138 Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
	* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
	(REG_BASE_VALUE): Remove unneeded cast to unsigned.
	(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
	(find_base_decl): New function, from c_find_base_decl in c-common.c.
	(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
	(get_alias_set): Likewise.
	Major rework to do more things and allow language-specific code
	to just handle special-cases.
	(record_alias_subset): Args are HOST_WIDE_INT.
	(record_component_alias): Local vars are HOST_WIDE_INT.
	Don't handle COMPLEX_EXPR.
	(get_varargs_alias_set): Moved from builtins.c.
	(get_frame_alias_set): New function.
	* builtins.c (expand_builtin_return_address): Use frame alias set.
	(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
	for setjmp buffer.
	(get_memory_rtx): Rework to use set_mem_attributes.
	(get_varargs_alias_set): Deleted from here.
	* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
	(c_find_base_decl): Deleted from here.
	(c_get_alias_set): Remove many cases and rework to just handle
	C-specific cases.
	* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
	* c-decl.c (rtl.h, expr.h): Now included.
	(init_decl_processing): Call record_component_aliases on array types.
	(grokdeclarator): Likewise.
	Set TREE_ADDRESSABLE for all fields that are not bitfields.
	* c-typeck.c (common_type): Call record_component_aliases for array.
	* caller-save.c (setup_save_areas): Rework register loop for unsigned.
	Set all save areas to the frame alias set.
	* calls.c (initialie_argument_information): Call set_mem_attributes.
	(compute_argument_addresses, expand_call): Likewise.
	* explow.c (set_mem_attributes): New function.
	(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
	* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
	LEN and OFFSET now HOST_WIDE_INT.
	(clear_by_pieces): Similar changes.
	(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
	(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
	(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
	(clear_by_pieces_1): Likewise.
	(emit_push_insn): Call set_mem_attributes.
	(expand_expr, case INDIRECT_REF): Likewise.
	(expand_expr, case VAR_DECL): Call change_address.
	* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
	tree_low_cst.
	(get_varargs_alias_set, get_frame_alias_set): New decls.
	(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
	(new_alias_set, set_mem_attributes): Likewse.
	* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
	(assign_stack_temp_for_type): Likewise.
	Can split slot even if alias set since can copy.
	Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
	(assign_temp): Use host_integerp and tree_low_cst.
	(put_var_into_stack): Properly handle SAVE_EXPR.
	(put_addressof_into_stack): Likewise.
	(assign_parms): Call set_mem_attributes.
	Delete #if 0 code.
	(fix_lexical_address): Put reference to chain into frame alias set.
	(expand_function_start): Call set_mem_attributes.
	* integrate.c (expand_inline_function): Likewise.
	* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
	* regmove.c (try_apply_stack_adjustment): Likewise.
	* reload.c (push_reload, make_memloc): Likewise.
	* reload1.c (alter_reg): Make alias sets for spilled pseudos.
	* rtl.def (MEM): Update comment.
	* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
	(move_by_pieces): Change length to HOST_WIDE_INT.
	(record_base_value, record_alias_subset): Delete from here.
	* stmt.c (expand_decl): Call set_mem_attributes.
	* stor-layout.c (finish_record_layout): Call record_component_aliases.i
	* toplev.c (compile_file): Call init_alias_once earlier.
	* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
	from here: now in alias.c.
	* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
	(struct tree_decl): Likewise.
	(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
	* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
	(output_constant_def, force_const_mem): Likewise.
	* cp/Makefile.in (decl.o): Include ../expr.h.
	* cp/decl.c (expr.h): Include.
	(init_decl_processing): Call record_component_aliases for arrays.
	(grokdeclarator): Likewise.
	Set TREE_ADDRESSABLE for fields that aren't bitfields.
	* cp/tree.c (build_cplus_array_type_1): Call record_component_aliases.

From-SVN: r34305
2000-05-31 14:37:31 -04:00
Richard Henderson
86c8265412 function.c (emit_return_into_block): New line_note arg; emit it.
* function.c (emit_return_into_block): New line_note arg; emit it.
        (thread_prologue_and_epilogue_insns): Attempt to locate a line note
        for the close brace to accompany HAVE_return.  Move all line notes
        following the epilogue to before the NOTE_INSN_EPILOGUE_BEG.

From-SVN: r34251
2000-05-29 01:18:30 -07:00
Richard Henderson
5828d72574 function.c (diddle_return_value): A pcc-style struct return returns a pointer.
* function.c (diddle_return_value): A pcc-style struct return
        returns a pointer.

From-SVN: r34230
2000-05-28 05:31:40 -07:00
Richard Henderson
30196c1ff4 function.c (thread_prologue_epilogue_insns): Don't move the line note at the head of the chain.
* function.c (thread_prologue_epilogue_insns): Don't move the
        line note at the head of the chain.  Only force a lineno note
        before the end of block 0.

From-SVN: r34207
2000-05-27 13:10:38 -07:00
Richard Henderson
ca1117ccf7 function.c (thread_prologue_and_epilogue_insns): Make sure existing line number notes appear after the prologue.
* function.c (thread_prologue_and_epilogue_insns): Make sure
        existing line number notes appear after the prologue.

From-SVN: r34098
2000-05-22 20:40:53 -07:00
Andrew Cagney
078721e1a2 Add options -Wunused-variable, -Wunused-function, -Wunused-label,
-Wunused-parameter.  Retain existing -Wunused behavour.  Document.

From-SVN: r33953
2000-05-17 08:15:29 +00:00
Zack Weinberg
3b304f5b7d top level:
* Makefile.in (WARN_CFLAGS): Add -Wwrite-strings.
	(tree.o): Depend on output.h.

	* c-decl.c (pending_invalid_xref_file,
	current_function_prototype_file): Constify.
	(pushdecl): Constify a local char *.
	(define_label): Constify filename parameter.
	* c-lex.c (init_parse): Constify parameter and return value.
	* c-typeck.c (c_expand_asm_operands): Constify filename parameter.
	* c-tree.h: Update prototypes.
	* c-parse.in: Constify filename member of %union, and if_stmt_file.
	* c-parse.y, c-parse.c, c-parse.h, objc/objc-parse.y,
	objc/objc-parse.c: Regenerate.

	* dwarfout.c (dwarfout_init): Constify main_input_filename parameter.
	* dwarfout.h: Update prototypes.
	* expr.c (expand_expr): Constify a local char *.
	* flags.h: Constify main_input_filename.
	* function.c (expand_function_end): Constify filename parameter.
	* genrecog.c (make_insn_sequence): Use a character array for
	c_test_pos.
	(main): Remove unused variables.
	* input.h: Constify input_filename, main_input_filename, and
	file_stack.name.  Update prototypes.
	* output.h: Declare first_global_object_name and
	weak_global_object_name here, as const char *.
	* stmt.c (expand_asm_operands): Constify filename parameter.
	* toplev.c (compile_file, push_srcloc, debug_start_source_file):
	Constify filename parameter.
	(input_filename, main_input_filename): Constify.
	* toplev.h: Update prototypes.
	* tree.c: Include output.h.  Don't declare
	first_global_object_name or weak_global_object_name.  Clean up string
	bashing in get_file_function_name_long.
	* tree.h (struct tree_decl): Constify filename member.
	(input_filename): Constify.
	Update prototypes.
	* varasm.c (first_global_object_name, weak_global_object_name):
	Constify.
	(assemble_start_function, assemble_variable): Clean up string bashing.

	* gcc.c: Constify all spec-related strings initialized,
	transitively, from string constants.  Constify all strings
	and string variables related to multilibs.
	(set_spec, read_specs): Cast argument to free to PTR.
	(used_arg): Do not modify multilib_matches.  Use strncmp plus
	length comparison to compare multilib switches.
	* genmultilib: Constify everything declared in multilib.h.

ch:
	* ch-tree.h: Update prototypes.  Remove prototypes for
	functions declared elsewhere.
	* decl.c (define_label): Constify filename parameter.
	* grant.c (globalize_decl, set_default_grant_file): Constify
	local char * variables.  Don't declare
	first_global_object_name or asm_out_file.
	* lang.c (chill_real_input_filename): Constify.
	* lex.c (init_parse): Constify parameter and return value.
	* parse.c: Don't declare input_filename.
	(ch_expand_asm_operands): Constify filename parameter.
	(parse_multi_dimension_case_action): Constify local char *.
	* satisfy.c (safe_satisfy_decl): Constify local char *.

cp:
	* cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
	and pending_inline.filename.  Update prototypes.
	* decl.c (define_label): Constify filename parameter.
	* decl2.c (warn_if_unknown_interface): Constify local char *.
	* input.c Constify input_source.filename. Don't declare
	input_filename or lineno.  Constify filename parameter to feed_input.
	* lex.c (init_parse): Constify parameter and return value.
	(cp_pragma_interface, cp_pragma_implementation): Constify
	filename argument.
	(reinit_parse_for_method, reinit_parse_for_block,
	reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
	Constify local char *.
	* pt.c: Don't declare lineno or input_filename.
	(print_template_context, tsubst_friend_function, tsubst_decl,
	tsubst, instantiate_decl): Constify local char *.
	* semantics.c (expand_body): Constify local char *.
	* tree.c (build_srcloc): Constify filename parameter.
	* typeck.c (c_expand_asm_operands): Constify filename
	parameter.

f:
	* com.c (ffecom_subscript_check_): Constify array_name
	parameter. Clean up string bashing.
	(ffecom_arrayref_, ffecom_char_args_x_): Constify array_name
	parameter.
	(ffecom_do_entry_, ffecom_gen_sfuncdef_, ffecom_start_progunit_,
	ffecom_sym_transform_, ffecom_sym_transform_assign_): Constify
	local char *.
	(init_parse): Constify parameter and return value.
	* lex.c: Include dwarfout.h instead of prototyping dwarfout_*
	functions here.
	(ffelex_file_pop_, ffelex_file_push_): Constify filename parameter.
	(ffelex_hash_, ffelex_include_): Constify local char *.
	* std.c (ffestd_exec_end): Constify local char *.
	* where.c (ffewhere_file_new): Constify filename parameter.
	* where.h: Update prototypes.

java:
	* check_init.c (check_init): Constify local char *.
	* class.c (push_class): Constify local char *.
	* java_tree.h: Update prototypes.
	* jcf-io.c (open_class): Constify filename parameter and
	return value.
	(find_class): Remove redundant string copy.  Cast return from
	open_class.
	* jcf-parse.c (read_class, parse_class_file, yyparse):
	Constify local char *.
	* jcf-write.c (generate_bytecode_insns, generate_classfile):
	Constify local char *.
	* jcf.h (JCF): Constify filename and classname.
	(JCF_FINISH): Cast args to FREE to char * when appropriate.
	* lang.c (init_parse): Constify parameter and return value.
	* lex.c (java_get_line_col): Constify filename parameter.
	* parse.h: Constify parser_ctxt.filename.  Update prototypes.
	* parse.y (java_parser_context_suspend,
	issue_warning_error_from_context, safe_layout_class): Constify
	local char *.
	* parse.c: Regenerate.

From-SVN: r33804
2000-05-09 19:56:01 +00:00
Kaveh R. Ghazi
362440248c bb-reorder.c (get_next_bb_note, [...]): Prototype.
* bb-reorder.c (get_next_bb_note, get_prev_bb_note): Prototype.

	* diagnostic (vbuild_message_string, build_message_string,
	build_location_prefix, output_get_prefix, init_output_buffer,
	output_notice, vline_wrapper_message_with_location,
	v_message_with_decl, default_print_error_function): De-constify.
	(set_real_maximum_length): Prototype.

	* diagnostic.h (struct output_buffer, init_output_buffer,
	output_get_prefix, output_set_prefix): De-constify.

	* function.c (init_function_start): Constify.

	* gensupport.c (remove_constraints, process_rtx): Prototype.

	* gthr-posix.h: Indent uses of #pragma.

	* objc/objc-act.c (ggc_mark_imp_list, ggc_mark_hash_table):
	Prototype.

	* predict.c (find_expected_value): Delete prototype.
	(expected_value_to_br_prob): Initialize variable `ev_reg'.

	* sbitmap.h (debug_sbitmap): Prototype.

	* ssa.c (compute_coalesced_reg_partition): Prototype.

	* stor-layout.c (debug_rli): Prototype.

	* tree.h (round_down): Prototype.
	(init_function_start): Constify.

ch:
	* ch-tree.h (init_function_start): Constify.

From-SVN: r33675
2000-05-04 17:58:40 +00:00
Richard Kenner
bf49b1396b rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and MEM_ALIAS_SET.
* rtl.h (MEM_COPY_ATTRIBUTES): Also copy RTX_UNCHANGING_P and
	MEM_ALIAS_SET.
	* alias.c (canon_rtx): Don't copy RTX_UNCHANGING_P or MEM_ALIAS_SET
	when calling MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword, change_address): Likewise.
	* explow.c (stabilize): Likewise.
	* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* combine.c (combine_simplify_rtx): Don't copy RTX_UNCHANGING_P
	when calling MEM_COPY_ATTRIBUTES.
	(make_extraction, simplify_shift_const, gen_lowpart_for_combine):
	Likewise.
	* cse.c (gen_lowpart_if_possible): Likewise.
	* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
	* optabs.c (gen_move_insn): Likewise.
	* recog.c (validate_replace_rtx_1): Likewise.
	* simplify-rtx.c (add_mem_for_addr): Likewise.
	* stmt.c (expand_anon_union_decl): Likewise.
	* config/arm/arm.md: Likewise.
	* config/h8300/h7300.c (fix_bit_operand): Likewise.
	* config/m88k/m88k.c (legitimize_address, block_move_loop): Likewise.
	(block_move_no_loop, block_move_sequence): Likewise.
	* config/rs6000/rs6000.c (expand_block_move_mem): Likewise.
	* config/alpha/alpha.c (get_aligned_mem): Likewise.
	Clear MEM_ALIAS_SET.
	* final.c (alter_subreg): Don't copy MEM_ALIAS_SET when calling
	MEM_COPY_ATTRIBUTES.

From-SVN: r33665
2000-05-04 09:49:50 -04:00
Jan Hubicka
1b513b7711 * function.c (epilogue_done): Pass whole insn to record_insns.
From-SVN: r33488
2000-04-27 15:34:16 +00:00
Richard Kenner
b3b42a4db6 rtl.c: Use NOTE_INSN_REPEATED_LINE_NUMBER and NOTE_INSN_RANGE_BEG.
* rtl.c: Use NOTE_INSN_REPEATED_LINE_NUMBER and NOTE_INSN_RANGE_BEG.
	* rtl.h: Likewise.
	* rtl.def: Update comment.
	* function.c (expand_function): Use NOTE_INSN_REPEATED_LINE_NUMBER.
	* integrate.c (expand_inline_function): Likewise.
	* profile.c (branch_prob): Likewise.
	* ggc-common.c (ggc_mark_rtx_children): Use NOTE_INSN_RANGE_BEG.
	* print-rtl.c (print_rtx): Likewise.
	* haifa-sched.c (sched_analyze, unlink_other_notes): Likewise.
	(reemit_notes): Likewise; also use enum insn_note.

From-SVN: r33314
2000-04-21 15:32:10 -04:00
Mark Mitchell
ab36bd3ed4 function.c (expand_function_start): Use hard_function_value to compute the RTL to use for DECL_RESULT.
* function.c (expand_function_start): Use hard_function_value to
	compute the RTL to use for DECL_RESULT.

From-SVN: r33219
2000-04-18 00:23:33 +00:00
Jeffrey A Law
4fa48eaefa Jeffrey A Law (law@cygnus.com)
* function.c (purge_addressof): Unshare any shared rtl created by
        purge_addressof and its children.

From-SVN: r33133
2000-04-12 16:47:06 -07:00
Mark Mitchell
d7bf8ada06 function.c (aggregate_value_p): VOID_TYPE nodes are never aggregates.
* function.c (aggregate_value_p): VOID_TYPE nodes are never
	aggregates.

From-SVN: r33129
2000-04-12 22:07:38 +00:00
Mark Mitchell
bedda2da7f final.c (final): Use xcalloc to allocate line_note_exists.
* final.c (final): Use xcalloc to allocate line_note_exists.
	* function.c (free_after_compilation): Free the temp_slots.
	(assign_stack_temp_for_type): Use xmalloc to allocate temp_slots.
	(combine_temp_slot): Free temp_slots when they get combined.
	(purge_addressof): Fix typo in comment.
	* stmt.c (mark_goto_fixup): Mark the fixup itself.
	(expand_fixup): Allocate the fixup with ggc_alloc_obj.

	* ggc.h: Include varray.h.
	(ggc_pending_trees): Declare.
	(ggc_mark_tree_children): Remove declaration.
	(ggc_mark_tree): Just push unmarked trees on ggc_pending_trees.
	* ggc-common.c (ggc_pending_trees): New variable.
	(ggc_mark_roots): Call ggc_mark_trees.
	(ggc_mark_tree_children): Rename to ggc_mark_trees.  Process all
	the ggc_pending_trees.
	* Makefile.in (GGC_H): New variable.  Use it throughout in place
	of ggc.h.

	* Makefile.in (GGC_H): New variable.  Use it throughout in place
	of ggc.h.

	* call.c: Don't include obstack.h.  Include ggc.h.
	(obstack_chunk_alloc): Don't define.
	(obstack_chunk_free): Likewise.
	(add_candidate): Allocate the z_candidate with ggc_alloc_obj.
	* decl.c (push_switch): Use xmalloc to allocate the cp_switch.
	(pop_switch): Free it.

	* decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.

	* dump.c (dequeue_and_dump): Don't try to print the bit_position
	if we don't have a DECL_FIELD_OFFSET.

	* Makefile.in (GGC_H): Add varray.h.

From-SVN: r32956
2000-04-06 00:51:25 +00:00
Jeffrey A Law
744bfbfa78 function.c (expand_function_end): Pass alignment argument to emit_block_move in bits, not bytes.
* function.c (expand_function_end): Pass alignment argument to
        emit_block_move in bits, not bytes.

From-SVN: r32835
2000-03-30 13:32:31 -07:00
Richard Kenner
bdb429a5a1 calls.c (expand_call): Pass bit alignment to mark_reg_pointer.
* calls.c (expand_call): Pass bit alignment to mark_reg_pointer.
	* explow.c (memory_address, allocate_dynamic_stack_space): Likewise.
	* function.c (assign_parms): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (expand_decl): Likewise.
	(copy_rtx_and_substitute): Likewise.
	* expr.c (expand_expr, expand_expr_unaligned): Likewise.
 	(clear_by_pieces): Fix error in last change.
	* emit-rtl.c (init_emit): Set known registers alignment in bits.
	* function.h (regno_pointer_align): Now unsigned.
	* config/arm/arm.c (alignable_memory_operand): REGNO_POINTER_ALIGN
	is in bits.
	* config/i386/i386.c (aligned_operand): Likewise.
	* config/sparc/sparc.c (mem_min_alignment): Likewise.
	* config/alpha/alpha.c (aligned_memory_operand): Likewise.
	(unaligned_memory_operand): Likewise.
	(alpha_expand_block_move, alpha_expand_block_clear): Likewise.
	Also make alignments and sizes unsigned and some whitespace cleanup.
	(alpha_va_start): Do nothing if VALIST's type is error_mark_node.

From-SVN: r32829
2000-03-30 08:46:05 -05:00
Richard Kenner
19caa751a8 builtins.c (get_pointer_alignment): Use host_integerp & tree_low_cst.
* builtins.c (get_pointer_alignment): Use host_integerp & tree_low_cst.
	(expand_builtin_apply): Pass alignment to emit_block_move in bits.
	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
	(expand_builtin_memset): Likewise, but to clear_storage.
	* calls.c (save_fixed_argument_area): Likewise, to move_by_pieces.
	(restore_fixed_argument_area): Likewise.
	(store_unaligned_arguments_into_pseudos): Likewise, to store_bit_field.
	(load_register_parameters): Likewise, to emit_group_load.
	(expand_call): Likewise, to emit_group_store and emit_block_move.
	(emit_library_call_value_1): Likewise, to emit_block_move.
	(store_one_arg): Likewise, and to emit_push_insn.
	* expmed.c (extract_bit_field): Alignment is in bits, not bytes.
	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
	* expr.c (move_by_pieces, move_by_pieces_ninsns): Likewise.
	(emit_block_move, emit_group_load, emit_group_store): Likewise.
	(clear_by_pieces, clear_storage, emit_push_insn): Likewise.
	(expand_assigment, store_expr, store_constructor_field): Likewise.
	(expand_expr_unaligned, do_jump, do_compare_and_jump): Likewise.
	(store_constructor, store_field, get_inner_reference): Likewise.
	Use host_integerp and tree_low_cst; sizes and positions HOST_WIDE_INT.
	(expand_expr, case COMPONENT_REF): Likewise.
	(copy_blkmode_from_regs): Use UNSIGNED_HOST_WIDE_INT for sizes
	and positions; reindent code.
	* expr.h (emit_cmp_insn, emit_cmp_and_jump_insns): Alignment unsigned.
	* function.c (purge_addressof_1): Pass bit align to store_bit_field.
	(assign_parms): Likewise to emit_group_store.
	* optbas.c (prepare_cmp_insn): Alignment is in bits.
	(emit_cmp_and_jump_insns, emit_cmp_insn): Likewise, and also unsigned.
	* stmt.c (expand_value_return): Pass align in bits to emit_group_load.
	(expand_return): Likewise to {extract,store}_bit_field.
	* stor-layout.c (get_mode_alignment): Minor cleanup.
	* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Align is in bits.
	* config/sh/sh.h (MOVE_BY_PIECES_P): Likewise.
	* ch/expr.c (chill_expand_expr): Pass bit alignment to emit_block_move.

From-SVN: r32827
2000-03-30 06:47:08 -05:00
Jan Hubicka
f73ad30e01 Convert ACCUMULATE_OUTGOING_ARGS to an expression.
* calls.c (PUSH_ARGS_REVERSED) Change to expression.
	(ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Provide default value.
	(struct arg_data): Remove #ifdef ACCUMULATE_OUTGOING_ARGS.
	(save_fixed_argument_area, restore_fixed_argument_area):
	conditionize by #ifdef REG_PARM_STACK_SPACE only.
	(emit_call): Change #ifdefs on ACCUMULATE_OUTGOING_ARGS
	to conditions, handle RETURN_POPS_ARGS on ACCUMULATE_OUTGOING_ARGS.
	(precompute_register_parameters): Avoid #ifdefs on
	ACCUMULATE_OUTGOING_ARGS and PUSH_ARGS_REVERSED.
	(stire_one_args): Likewise.
	(expand_call): Likewise; conditionize PUSH_ROUNDING code by PUSH_ARGS.
	(emit_library_call_value_1): Likewise.
	(compute_argument_block_size): Align to STACK_BOUNDARY only for
	ACCUMULATE_OUTGOING_ARGS.
	* combine.c (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Provide default
	value.
	(nonzero_bits): Conditionize PUSH_ROUNDING code by USE_PUSH.
	(use_crosses_set_p): Likewise.
	* all targets (ACCUMULATE_OUTGOING_ARGS define): Change to
	#define ACCUMULATE_OUTGOING_ARGS 1.
	* i386.c (ix86_compute_frame_size): Handle ACCUMULATE_OUTGOING_ARGS
	frames.
	* i386.h (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS): New
	constants.
	(TARGET_PUSH_ARGS, TARGET_ACCUMULATE_OUTGOING_ARGS): New macros.
	(TARGET_SWITCHES): Add push-args, no-push-args,
	accumulate-outgoing-args and no-accumulate-outgoing-args.
	(ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): New macro.
	* expr.c (ACCUMULATE_OUTGONG_ARGS, PUSH_ARGS): Provide default.
	(push_block): Avoid ifdefs on ACCUMULATE_OUTGONG_ARGS
	and PUSH_ROUNDING.
	(emit_push_insn): Likewise.
	* final.c (ACCUMULATE_OUTGOING_ARGS): Provide default.
	(final_scan_insn): Avoid ifdefs on ACCUMULATE_OUTGOING_ARGS.
	* function.c (ACCUMULATE_OUTGOING_ARGS): Provide default.
	(STACK_DYNAMIC_OFFSET): Define correctly for both
	ACCUMULATE_OUTGOING_ARGS and normal mode.
	* invoke.texi (-mpush_args, -maccumulate-outgoing-args): Document.
	* tm.texi (PUSH_ARGS): Document.
	(ACCUMULATE_OUTGOING_ARGS, PUSH_ROUNDING): Update documentation.

From-SVN: r32803
2000-03-29 13:10:44 +00:00
Richard Kenner
13eb1f7f0d expr.c (store_constructor): SIZE now signed.
* expr.c (store_constructor): SIZE now signed.
	For EXPR_SIZE, don't evaluate size; just needed if constant.
	* fold-const.c (fold): Fix a number of cases when folded tree is
	wrong type.
	* function.c (flush_addressof): Reenable.
	* tree.h (flush_addressof): Likewise.
	* toplev.c (independent_decode_option): Look at strings_processed.
	* config/alpha/alpha.h (MINIMUM_ATOMIC_ALIGNMENT): Cast to unsigned.

From-SVN: r32783
2000-03-28 12:01:49 -05:00
Richard Kenner
770ae6cc71 * Rework fields used to describe positions of bitfields and
modify sizes to be unsigned and use HOST_WIDE_INT.
	* alias.c (reg_known_value_size): Now unsigned.
	* c-typeck.c (build_unary_op, case ADDR_EXPR): Use byte_position.
	(really_start_incremental_init): Use bitsize_zero_node.
	(push_init_level, pop_init_level, output_init_element): Likewise.
	Use bitsize_unit_node and bitsize_one_node.
	(output_pending_init_elements, process_init_element): Likewise.
	* combine.c (combine_max_regno, reg_sign_bit_copies): Now unsigned.
	(make_extraction): Position and length HOST_WIDE_INT and unsigned
	HOST_WIDE_INT, respectively.
	(get_pos_from_mask): Passed in value is unsigned HOST_WIDE_INT.
	(num_sign_bit_copies): Returns unsigned.
	BITWIDTH now unsigned; rework arithmetic.
	Remove recursive call from arg to MAX.
	(combine_instructions, init_reg_last_arrays): NREGS now unsigned.
	(setup_incoming_promotions, can_combine_p, try_combine, simplify_set):
	REGNO now unsigned.
	(set_nonzero_bit_and_sign_copies): NUM now unsigned.
	(find_split_point, expand_compound_operation, make_extraction): LEN
	now unsigned HOST_WIDE_INT, POS now HOST_WIDE_INT.
	(make_field_assignment): Likewise.
	(combine_simplify_rtx): Add cast.
	(expand_compound_operation): MODEWIDTH now unsigned; rework arithmetic.
	(force_to_mode): WIDTH now unsigned; add cast.
	(if_then_else_cond): SIZE now unsigned.
	(nonzero_bits): MODE_WIDTH, RESULT_WIDTH, and WIDTH now unsigned.
	(extended_count): Now returns unsigned.
	(simplify_shift_const): COUNT unsigned; arg is now INPUT_COUNT.
	Add SIGNED_COUNT variable; MODE_WORDS and FIRST_COUNT now unsigned.
	(simplify_comparison): MODE_WIDTH now unsigned.
	(update_table_tick): REGNO and ENDREGNO now unsigned; new var R.
	(mark_used_regs_combine): Likewise; rework arithmetic.
	(record_value_for_reg): REGNO, ENDREGNO, and I now unsigned.
	(record_dead_and_set_regs, reg_dead_at_p, distribute_notes): Likewise.
	(record_promoted_value): REGNO now unsigned.
	(get_last_value_validate): REGNO, ENDREGNO, and J now unsigned.
	(get_last_value): REGNO now unsigned.
	(use_crosses_set_p): REGNO and ENDREGNO now unsigned.
	(reg_dead_regno, reg_dead_endregno): Now unsigned.
	(remove_death): Arg REGNO now unsigned.
	(move_deaths):  REGNO, DEADREGNO, DEADEND, OUREND, and I now unsigned.
	(reg_bitfield_target_p): REGNO, REGNO, ENDREGNO, and ENDTREGNO
	now unsigned.
	* convert.c (convert_to_integer): INPREC and OUTPREC now unsigned.
	* cse.c (struct qty_table_elem): FIRST_REG and LAST_REG now unsigned.
	(struct cse_reg_info): REGNO now unsigned.
	(cached_regno): Now unsigned.
	(REGNO_QTY_VALID_P): Add cast.
	(make_new_qty, make_regs_eqv, delete_reg_eqiv): Regno args unsigned.
	(remove_invalid_regs): Likewise.
	(remove_invalid_subreg_refs): Likewise; arg WORD also unsigned
	as are variables END and I.
	(get_cse_reg_info, insert): Likewise.
	(mention_regs, invalidate_for_call): REGNO, ENDREGNO, and I unsigned.
	(canon_hash): Likewise.
	(insert_regs, lookup_for_remove): REGNO now unsigned.
	(invalidate): REGNO, ENDREGNO, TREGNO, and TENDREGNO now unsigned.
	New variable RN.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't check for REGNO < 0.
	* dwarf2out.c (dwarf2ou_frame_debug_expr): Remove cast.
	* emit-rtl.c (subreg_realpart_p): Add cast.
	(operand_subword): Arg I is now unsigned as is var PARTWORDS.
	(operand_subword_force): Arg I is now unsigned.
	* except.c (eh_regs): Variable I is now unsigned.
	* explow.c (hard_function_value): BYTES is unsigned HOST_WIDE_INT.
	* expmed.c (store_fixed_bit_field): Position is HOST_WIDE_INT;
	length is unsigned HOST_WIDE_INT; likewise for internal variables.
	(store_split_bit_field, extract_fixed_bit_field): Likewise.
	(extract_split_bit_field, store_bit_field, extract_bit_field):
	Likewise.
	* expr.c (store_constructor_fields, store_constructor, store_field):
	Positions are HOST_WIDE_INT and lengths are unsigned HOST_WIDE_INT.
	(expand_assignment, expand_expr, expand_expr_unaligned): Likewise.
	(do_jump): Likewise.
	(move_by_pieces, move_by_pieces_ninsns, clear_by_pieces):
	MAX_SIZE is now unsigned.
	(emit_group_load): BYTEPOS is HOST_WIDE_INT; BYTELEN is unsigned.
	(emit_group_store): Likewise.
	(emit_move_insn): I now unsigned.
	(store_constructor): Use host_integerp, tree_low_cst, and
	bitsize_unit_node.
	(get_inner_reference): Return bitpos and bitsize as HOST_WIDE_INT.
	Rework all calculations to use trees and new fields.
	* expr.h (promoted_input_arg): Regno now unsigned.
	(store_bit_field, extract_bit_field): Adjust types of pos and size.
	(mark_seen_cases): Arg is HOST_WIDE_INT.
	* flow.c (verify_wide_reg_1): REGNO now unsigned.
	* fold-const.c (decode_field_reference): Size and pos HOST_WIDE_INT;
	precisions and alignments are unsigned.
	(optimize_bit_field_compare, fold_truthop): Likewise.
	(int_const_binop): Adjust threshold for size_int_type_wide call.
	(fold_convert): Likewise.
	(size_int_type_wide): Make table larger and fix thinko that only
	had half of table used.
	(all_ones_mask_p, fold): Precisions are unsigned.
	* function.c (put_reg_info_stack): REGNO is unsigned.
	(instantiate_decl): Size is HOST_WIDE_INT.
	(instantiate_virtual_regs): I is unsigned.
	(assign_parms): REGNO, REGNOI, and REGNOR are unsigned.
	(promoted_input_arg): REGNO is unsigned.
	* function.h (struct function): x_max_parm_reg is now unsigned.
	* gcse.c (max_gcse_regno): Now unsigned.
	(struct null_pointer_info): min_reg and max_reg now unsigned.
	(lookup_set, next_set): REGNO arg now unsigned.
	(compute_hash_table): REGNO and I now unsigned.
	(handle_avail_expr): regnum_for_replacing now unsigned.
	(cprop_insn): REGNO now unsigned.
	(delete_null_pointer_checks_1): BLOCK_REG now pointer to unsigned.
	* ggc-common.c (ggc_mark_tree_children, case FIELD_DECL): New case.
	* global.c (set_preference): SRC_REGNO, DEST_REGNO, and I now unsigned.
	* hard-reg-set.h (reg_class_size): Now unsigned.
	* integrate.c (mark_stores): LAST_REG and I now unsigned; new UREGNO.
	* jump.c (mark_modified_reg): I now unsigned; add cast.
	(rtx_equal_for_thread_p): Add cast.
	* loop.c (max_reg_before_loop): Now unsigned.
	(struct_movable): REGNO now unsigned.
	(try_copy_prop): REGNO arg unsigned.
	(regs_match_p): XN and YN now unsigned.
	(consec_sets_invariant_p, maybe_eliminate_biv): REGNO now unsigned.
	(strength_reduce): Likewise; NREGS also unsigned.
	(first_increment_giv, last_increment_giv unsigned): Now unsigned.
	* loop.h (struct iv_class): REGNO now unsigned.
	(max_reg_before_loop, first_increment_giv, last_increment_giv):
	Now unsigned.
	* machmode.h (mode_size, mode_unit_size): Now unsigned.
	(mode_for_size, smallest_mode_for_size): Pass size as unsigned.
	* optabs.c (expand_binop): I and NWORDS now unsigned.
	(expand_unop): I now unsigned.
	* print-tree.c (print_node): Don't print DECL_FIELD_BITPOS, but do
	print DECL_FIELD_OFFSET and DECL_FIELD_BIT_OFFSET.
	* real.c (significand_size): Now returns unsigned.
	* real.h (significand_size): Likewise.
	* regclass.c (reg_class_size): Now unsigned.
	(choose_hard_reg_mode): Both operands now unsigned.
	(record_reg_classes): REGNO and NR now unsigned.
	(reg_scan): NREGS now unsigned.
	(reg_scan_update): old_max_regno now unsigned.
	(reg_scan_mark_refs): Arg MIN_REGNO and var REGNO now unsigned.
	* reload.c (find_valid_class): BEST_SIZE now unsigned.
	(find_dummy_reload): REGNO, NWORDS, and	I now unsigned.
	(hard_reg_set_here_p): Args BEG_REGNO and END_REGNO now unsigned.
	Likewise for variable R.
	(refers_to_regno_for_reload_p): Args REGNO and END_REGNO now unsigned,
	as are variables INNER_REGNO and INNER_ENDREGNO; add new variable R.
	(find_equiv_reg): Add casts.
	(regno_clobbered_p): Arg REGNO now unsigned.
	* reload.h (struct reload): NREGS now unsigned.
	(refers_to_regno_for_reload_p): Regno args are unsigned.
	(regno_clobbered_p): Likewise.
	* reload1.c (reg_max_ref_width, spill_stack_slot_width): Now unsigned.
	(compute_use_by_pseudos): REGNO now unsigned.
	(find_reg): I and J now unsigned, new variable K, and change loop
	variables accordingly; THIS_NREGS now unsigned.
	(alter_reg): INHERENT_SIZE and TOTAL_SIZE now unsigned.
	(spill_hard_reg): REGNO arg now unsigned; add casts.
	(forget_old_reloads_1): REGNO, NR, and I now unsigned.
	(mark_reload_reg_in_use): Arg REGNO and vars NREGS and I now unsigned.
	(clear_reload_reg_in_use): Arg REGNO and vars NREGS, START_REGNO,
	END_REGNO, CONFLICT_START, and CONFLICT_END now unsigned.
	(reload_reg_free_p, reload_reg_reaches_end_p): Arg REGNO now unsigned.
	(choose_reload_regs): MAX_GROUP_SIZE now unsigned.
	(emit_reload_insns): REGNO now unsigned.
	(reload_cse_move2add): Add cast.
	(move2add_note_store): REGNO and I now unsigned; new variable ENDREGNO
	and rework loop.
	* resource.c (mark_referenced_resources, mark_set_resources): New
	variable R; REGNO and LAST_REGNO now unsigned.
	(mark_target_live_regs): J and REGNO now unsigned.
	* rtl.c (mode_size, mode_unit_size): Now unsigned.
	* rtl.h (union rtunion_def): New field rtuint.
	(XCUINT): New macro.
	(ADDRESSOF_REGNO, REGNO, SUBREG_WORD): New XCUINT.
	(operand_subword, operand_subword_force): Word number is unsigned.
	(choose_hard_reg_mode): Operands are unsigned.
	(refers_to-regno_p, dead_or_set_regno_p): Regno arg is unsigned.
	(find_regno_note, find_regno_fusage, replace_regs): Likewise.
	(regno_use_in, combine_instructions, remove_death): Likewise.
	(reg_scan, reg_scan_update): Likewise.
	(extended_count): Return is unsigned.
	* rtlanal.c (refers_to_regno_p): Args REGNO and ENDREGNO and vars I,
	INNER_REGNO, and INNER_ENDREGNO now unsigned; new variable X_REGNO.
	(reg_overlap_mentioned_p): REGNO and ENDREGNO now unsigned.
	(reg_set_last_first_regno, reg_set_last_last_regno): Now unsigned.
	(reg_reg_last_1): FIRS and LAST now unsigned.
	(dead_or_set_p): REGNO, LAST_REGNO, and I now unsigned.
	(dead_or_set_regno_p): Arg TEST_REGNO and vars REGNO and ENDREGNO
	now unsigned.
	(find_regno_note, regno_use_in): Arg REGNO now unsigned.
	(find_regno_fusage): Likewise; also var REGNOTE now unsigned.
	(find_reg_fusage): Variables REGNO, END_REGNO, and I now unsigned.
	(replace_regs): Arg NREGS now unsigned.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Don't check REGNO < 0.
	* simplify-rtx.c (simplify_unary_operation): WIDTH now unsigned.
	(simplify_binary_operation): Likewise.
	(cselib_invalidate_regno): Arg REGNO and variables ENDREGNO, I, and
	THIS_LAST now unsigned.
	(cselib_record_set): Add cast.
	* ssa.c (ssa_max_reg_num): Now unsigned.
	(rename_block): REGNO now unsigned.
	* stmt.c (expand_return): Bit positions unsigned HOST_WIDE_INT;
	sizes now unsigned.
	(all_cases_count): Just return -1 not -2.
	COUNT, MINVAL, and LASTVAL now HOST_WIDE_INT.
	Rework tests to use trees whenever possible.
	Use host_integerp and tree_low_cst.
	(mark_seen_cases): COUNT arg now HOST_WIDE_INT;
	Likewise variable NEXT_NODE_OFFSET; XLO now unsigned.
	(check_for_full_enumeration_handing): BYTES_NEEDED, I to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size): SIZE arg now unsigned.
	(smallest_mode_for_size): Likewise.
	(layout_decl): Simplify handing of a specified DECL_SIZE_UNIT.
	KNOWN_ALIGN is now an alignment, so simplify code.
	Don't turn off DECL_BIT_FIELD if field is BLKmode, but not type.
	(start_record_layout): Renamed from new_record_layout_info.
	Update to new fields.
	(debug_rli, normalize_rli, rli_size_unit_so_far, rli_size_so_far):
	New functions.
	(place_union_field): Renamed from layout_union_field.
	Update to use new fields in rli.
	(place_field): Renamed from layout_field.
	Major rewrite to use new fields in rli; pass alignment to layout_decl.
	(finalize_record_size): Rework to use new fields in rli and handle
	union.
	(compute_record_mode): Rework to simplify and to use new DECL fields.
	(finalize_type_size): Make rounding more consistent.
	(finish_union_layout): Deleted.
	(layout_type, case VOID_TYPE): Don't set TYPE_SIZE_UNIT either.
	(layout_type, case RECORD_TYPE): Call new function names.
	(initialize_sizetypes): Set TYPE_IS_SIZETYPE.
	(set_sizetype): Set TYPE_IS_SIZETYPE earlier.
	(get_best_mode): UNIT is now unsigned; remove casts.
	* tree.c (bit_position): Compute from new fields.
	(byte_position, int_byte_position): New functions.
	(print_type_hash_statistics): Cast to remove warning.
	(build_range_type): Use host_integerp and tree_low_cst to try to hash.
	(build_index_type): Likewise; make subtype of sizetype.
	(build_index_2_type): Pass sizetype to build_range_type.
	(build_common_tree_nodes): Use size_int and bitsize_int to
	initialize nodes; add bitsize_{zero,one,unit}_node.
	* tree.h (DECL_FIELD_CONTEXT): Use FIELD_DECL_CHECK.
	(DECL_BIT_FIELD_TYPE, DECL_QUALIFIER, DECL_FCONTEXT): Likewise.
	(DECL_PACKED, DECL_BIT_FIELD): Likewise.
	(DECL_FIELD_BITPOS): Deleted.
	(DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): New fields.
	(DECL_RESULT, DECL_SAVED_INSNS): Use FUNCTION_DECL_CHECK.
	(DECL_FRAME_SIZE, DECL_FUNCTION_CODE, DECL_NO_STATIC_CHAIN): Likewise.
	(DECL_INLINE, DECL_BUILT_IN_NONANSI, DECL_IS_MALLOC): Likewise.
	(DECL_BUILT_IN_CLASS, DECL_STATIC_CONSTRUCTOR): Likewise.
	(DECL_STATIC_DESTRUCTOR, DECL_NO_CHECK_MEMORY_USAGE): Likewise.
	(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT, DECL_NO_LIMIT_STACK) Likewise.
	(DECL_ORIGINAL_TYPE, TYPE_DECL_SUPPRESS_DEBUG): Use TYPE_DECL_CHECK.
	(DECL_ARG_TYPE_AS_WRITEN, DECL_ARG_TYPE): Use PARM_DECL_CHECK.
	(DECL_INCOMING_RTL, DECL_TRANSPARENT_UNION): Likewise.
	(DECL_ALIGN): Adjust to new field in union.
	(DECL_OFFSET_ALIGN): New field.
	(DECL_ERROR_ISSUED, DECL_TOO_LATE): Use LABEL_DECL_CHECK.
	(DECL_IN_TEXT_SECTION): Use VAR_DECL_CHECK.
	(union tree_decl): Add struct for both aligns.
	(enum tree_index): Add TI_BITSIZE_{ZERO,ONE,UNIT}.
	(bitsize_zero_node, bitsize_one_node, bitsize_unit_node): Added.
	(struct record_layout_info): Rework fields to have offset
	alignment and byte and bit position.
	(start_record_layout, place_field): Renamed from old names.
	(rli_size_so_far, rli_size_unit_so_far, normalize_rli): New decls.
	(byte_position, int_byte_position): Likewise.
	(get_inner_reference): Change types of position and length.
	* unroll.c (unroll_loop): New variable R; use for some loops.
	MAX_LOCAL_REGNUM and MAXREGNUM now unsigned.
	(calculate_giv_inc): Arg REGNO now unsigned.
	(copy_loop_body): REGNO and SRC_REGNO now unsigned.
	* varasm.c (assemble_variable): Clean up handling of size using
	host_integerp and tree_low_cst.
	(decode_addr_const): Use byte, not bit, position.
	(output_constructor): bitpos and offsets are HOST_WIDE_INT;
	use tree_low_cst and int_bit_position.
	* objc/objc-act.c (build_ivar_list_initializer): Use byte_position.
	* ch/actions.c (check_missing_cases): BYTES_NEEDED is HOST_WIDE_INT.
	* ch/typeck.c (expand_constant_to_buffer): Use int_byte_position.
	(extract_constant_from_buffer): Likewise.
	* cp/class.c (build_vbase_pointer_fields): layout_field now
	place_field.
	(get_vfield_offset): Use byte_position.
	(set_rtti_entry): Set OFFSET to ssizetype zero.
	(get_binfo_offset_as_int): Deleted.
	(dfs_record_base_offsets): Use tree_low_cst.
	(dfs_search_base_offsets): Likewise.
	(layout_nonempty_base_or_field): Reflect changes in RLI format
	and call byte_position.
	(layout_empty_base): Convert offset to ssizetype.
	(build_base_field): use rli_size_unit_so_far.
	(dfs_propagate_binfo_offsets): Do computation in proper type.
	(layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
	(layout_class_type): Reflect changes in RLI names and fields.
	(finish_struct_1): Set DECL_FIELD_OFFSET.
	* cp/dump.c (dequeue_and_dump): Call bit_position.
	* cp/expr.c (cplus_expand_constant): Use byte_position.
	* cp/rtti.c (expand_class_desc): Use bitsize_one_node.
	* cp/typeck.c (build_component_addr): Use byte_position and don't
	special case for zero offset.
	* f/com.c (ffecom_tree_canonize_ptr_): Use bitsize_zero_node.
	(ffecom_tree_canonize_ref_): Likewise.
	* java/class.c (make_field_value): Use byte_position.
	* java/expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
	(java_array_data_offset): Likewise.
	* java/java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
	bzero call.

From-SVN: r32742
2000-03-25 13:34:13 -05:00
Theodore Papadopoulo
2f939d9406 builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros.
* builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros.
	* c-common.c (decl_attributes,check_format_info,truthvalue_conversion,
	  c_get_alias_set): Likewise.
	* c-decl.c (duplicate_decls): Likewise.
	* c-typeck.c (default_conversion,build_unary_op): Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* dwarf2out.c (decl_class_context,add_abstract_origin_attribute):
	Likewise.
	* dwarfout.c (decl_class_context,output_type): Likewise.
	* expr.c (get_inner_reference): Likewise.
	* fold-const.c (simple_operand_p,fold): Likewise.
	* function.c (aggregate_value_p): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* varasm.c (named_section): Likewise.

	* call.c (check_dtor_name,build_new_method_call): Likewise.
	* decl.c (push_class_binding,poplevel,pushtag,lookup_namespace_name,
	make_typename_type,check_initializer,cp_finish_decl,xref_tag): Likewise.
	* decl2.c (grokfield,build_expr_from_tree,build_expr_from_tree,
	decl_namespace,arg_assoc_template_arg,arg_assoc,
	validate_nonmember_using_decl,do_class_using_decl): Likewise.
	* error.c (dump_template_argument,dump_expr,cp_file_of,cp_line_of,
	args_to_string): Likewise.
	* friend.c (is_friend): Likewise.
	* lex.c (note_got_semicolon,note_list_got_semicolon,is_global): Likewise.
	* method.c (build_overload_nested_name,build_overload_value,
	build_qualified_name,build_qualified_name,hack_identifier): Likewise.
	* parse.y (typename_sub,typename_sub1): Likewise.
	* pt.c (push_inline_template_parms_recursive,check_template_shadow,
	process_partial_specialization,convert_template_argument,
	template_args_equal,add_pending_template,lookup_template_class,
	for_each_template_parm_r,maybe_fold_nontype_arg,
	tsubst,instantiate_template,type_unification_real,unify,
	instantiate_pending_templates,set_mangled_name_for_template_decl):
	Likewise.
	* repo.c (repo_get_id,repo_template_used): Likewise.
	* search.c (lookup_field_1): Likewise.
	* tree.c (walk_tree,get_type_decl,cp_tree_equal,member_p): Likewise.
	* xref.c (classname): Likewise.

From-SVN: r32698
2000-03-23 00:41:05 +00:00
Jason Merrill
2c84914526 Implement dwarf2 exception handling for the ARM.
* config/arm/arm.h (INCOMING_RETURN_ADDR_RTX): Define.
        (DWARF_FRAME_RETURN_COLUMN): Define.
        * config/arm/arm.c (emit_multi_reg_push): Return rtx.  Attach
        REG_FRAME_RELATED_EXPR note.
        (emit_sfm): Likewise.
        (arm_expand_prologue): Set RTX_FRAME_RELATED_P on everything.
        * dwarf2out.c (reg_save): Handle saving a register to itself.
        (dwarf2out_frame_debug_expr): Handle an intermediate cfa reg.
        * except.c (eh_regs): Don't use the static chain reg if it's
        callee-saved.
        * frame.h (frame_state): Add cfa_saved field.
        * frame.c (execute_cfa_insn): Set it.
        * libgcc2.c (throw_helper): Don't adjust sp if it's restored in
        the epilogue.
        * function.c (ARG_POINTER_CFA_OFFSET): Default to FIRST_PARM_OFFSET.
        Now takes a parm.
        (instantiate_virtual_regs): Adjust.
        * tm.texi: Adjust.
        * config/m68k/m68k.h (ARG_POINTER_CFA_OFFSET): Don't define.
        * config/ns32k/ns32k.h (ARG_POINTER_CFA_OFFSET): Don't define.
        * config/sparc/sparc.h (ARG_POINTER_CFA_OFFSET): Take a parm.

        * dwarf2out.c (reg_number): Refer to FIRST_PSEUDO_REGISTER.
        (initial_return_save): Use DWARF_FRAME_REGNUM, not reg_number.

From-SVN: r32696
2000-03-22 19:29:55 -05:00
Nathan Sidwell
d0f062fbb3 tree.h (COMPLETE_TYPE_P): New macro.
gcc
	* tree.h (COMPLETE_TYPE_P): New macro.
	(COMPLETE_OR_VOID_TYPE_P): New macro.
	(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
	* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
	* c-aux-info.c (gen_type): Use them.
	* c-common.c (c_expand_expr_stmt): Likewise.
	* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
	grokdeclarator, grokparms, finish_struct, start_function,
	store_parm_decls, combine_parm_decls): Likewise.
	* c-parse.y (cast_expr): Likewise.
	* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
	c_size_in_bytes, c_alignof, build_component_ref,
	build_indirect_ref, build_array_ref, convert_arguments,
	build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* convert.c (convert_to_integer): Likewise.
	* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
	* dwarfout.c (location_or_const_value_attribute,
	output_enumeration_type_die, output_structure_type_die,
	output_union_type_die, output_type): Likewise.
	* expr.c (safe_from_p, expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
	* tree.c (build_array_type, build_function_type,
	build_method_type, build_offset_type, build_complex_type): Likewise.
	* c-parse.c, c-parse.h: Regenerated.
gcc/cp
	* typeck.c (require_complete_type, complete_type,
	complete_type_or_else, c_sizeof, c_sizeof_nowarn,
	build_array_ref, convert_arguments, pointer_diff,
	build_x_unary_op, build_unary_op, build_c_cast,
	build_modify_expr): Use COMPLETE_TYPE_P etc.
	* call.c (is_complete, convert_like_real,
	build_new_method_call): Likewise.
	* class.c (build_vbase_pointer_fields, check_bases,
	build_base_field, finish_struct_1, pushclass): Likewise.
	* cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
	* decl.c (maybe_process_template_type_declaration, pushtag,
	pushdecl, redeclaration_error_message, start_decl, start_decl_1,
	layout_var_decl, check_initializer, cp_finish_decl,
	grokdeclarator, require_complete_types_for_parms,
	grok_op_properties, xref_tag, xref_basetypes,
	check_function_type): Likewise.
	* decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_offset_ref): Likewise.
	* parse.y (structsp): Likewise.
	* pt.c (maybe_process_partial_specialization,
	tsubst_friend_function, instantiate_class_template, tsubst,
	do_type_instantiation, instantiate_pending_templates): Likewise.
	* repo.c (repo_get_id): Likewise.
	* rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
	synthesize_tinfo_var, emit_support_tinfos): Likewise.
	* search.c (lookup_fnfields_1, lookup_conversions): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	* tree.c (build_cplus_method_type): Likewise.
	* typeck2.c (digest_init, build_functional_cast,
	add_exception_specifier): Likewise.
	* parse.h, parse.c: Regenerated.

From-SVN: r32671
2000-03-21 18:10:48 +00:00
Martin v. Löwis
c14f7160a1 emit-rtl.c (push_to_full_sequence, [...]): New functions.
* emit-rtl.c (push_to_full_sequence, end_full_sequence): New functions.
	* except.c (emit_cleanup_handler): Use them.
	(expand_end_all_catch): Likewise.
	* function.c (fixup_var_refs): Likewise.
	(expand_function_end): Clear catch_clauses_last.
	* rtl.h (push_to_full_sequence, end_full_sequence): Declare.
	* except.h (struct eh_status): New field x_catch_clauses_last.
	(catch_clauses_last): New define.

	* cp/except.c (expand_exception_blocks): Clear catch_clauses_last.

	* java/except.c (emit_handlers): Clear catch_clauses_last.

From-SVN: r32643
2000-03-19 18:25:27 +00:00
Mark Mitchell
116eebd674 emit-rtl.c (remove_unncessary_notes): Check that all NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes have an...
* emit-rtl.c (remove_unncessary_notes): Check that all
	NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes have an
	associated NOTE_BLOCK.
	* function.h (identify_blocks): Update comments.
	(reorder_blocks): Declare.
	* function.c (identify_blocks): Don't take paramters.
	(reorder_blocks): Don't take parameters.
	* loop.h (find_loop_tree_blocks): Remove.
	(unroll_block_trees): Likewise.
	* loop.c (loop_optimize): Don't call find_loop_tree_blocks.  Use
	reorder_blocks instead of unroll_block_trees.h
	* sibcall.c (optimize_sibling_and_tail_recursive_calls): Likewise.
	* stmt.c (find_loop_tree_blocks): Remove.
	(unroll_block_trees): Likewise.
	* toplev.c (rest_of_compilation): Don't call find_loop_tree_blocks
	in whole-function mode.
	* tree.h (reorder_blocks): Remove declaration.

From-SVN: r32632
2000-03-19 05:26:48 +00:00
Jeffrey A Law
0a1c58a25a Sibling call optimizations.
Co-Authored-By: Richard Henderson <rth@cygnus.com>

From-SVN: r32612
2000-03-17 14:40:45 -08:00
Richard Earnshaw
c487e48467 function.c (prepare_function_start): Correctly initialize cfun->stack_alignment_needed.
* function.c (prepare_function_start): Correctly initialize
cfun->stack_alignment_needed.

From-SVN: r32534
2000-03-14 17:48:48 +00:00
Jason Merrill
c3b247b445 function.c (put_var_into_stack): Use type_for_mode to calculate part_type.
* function.c (put_var_into_stack): Use type_for_mode to calculate
        part_type.  Use MEM_SET_IN_STRUCT_P.
        * expr.c (store_field): Handle CONCAT.
        (store_constructor): Use fields_length.
        * tree.c (fields_length): New fn.
        * tree.h: Declare it.

From-SVN: r32514
2000-03-13 17:54:03 -05:00
Jason Merrill
fb13d4d024 except.c (can_throw): See through a SEQUENCE.
* except.c (can_throw): See through a SEQUENCE.
        (nothrow_function_p): New fn.
        * except.h: Declare it.
        * function.c (current_function_nothrow): New var.
        (prepare_function_start): Initialize it.
        * output.h: Declare it.
        * toplev.c (rest_of_compilation): Set it.
        * dwarf2out.c (dwarf2out_begin_prologue): Use it.

From-SVN: r32449
2000-03-09 14:01:47 -05:00
Mark Mitchell
64dc53f34d function.c (free_temps_for_rtl_expr): Don't free slots that have been pushed into a higher level.
* function.c (free_temps_for_rtl_expr): Don't free slots
	that have been pushed into a higher level.

	* expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
	RTL_EXPR_HAS_NO_SCOPE after all.

From-SVN: r32355
2000-03-06 09:50:17 +00:00
Mark Mitchell
9f93702662 tree.def (RTL_EXPR): Update documentation.
* tree.def (RTL_EXPR): Update documentation.
	* tree.h (RTL_EXPR_HAS_NO_SCOPE): New macro.
	* expr.c (expand_expr): Handle RTL_EXPR_HAS_NO_SCOPE.
	* function.c (preserve_rtl_expr_temp): New function.
	(preserve_rtl_expr_temps): Likewise.
	(preserve_rtl_expr_result): Use it.

From-SVN: r32344
2000-03-05 20:43:44 +00:00
Mark Mitchell
591ccf92b3 Revert this patch:
2000-03-04  Mark Mitchell  <mark@codesourcery.com>

From-SVN: r32343
2000-03-05 19:34:29 +00:00
Mark Mitchell
7470e8d74c function.h (struct sequence_stack): Remove rtl_expr.
* function.h (struct sequence_stack): Remove rtl_expr.
	(struct emit_staus): Likewise.
	(seq_rtl_expr): Remove.
	* tree.h (free_temps_for_rtl_expr): Don't declare.
	(start_sequence_for_rtl_expr): Likewise.
	* rtl.h (preserve_rtl_expr_result): Likewise.
	* emit-rtl.c (start_sequence): Don't set sequence_rtl_expr.
	(start_sequence_for_rtl_expr): Remove.
	(push_topmost_sequence): Don't save sequence_rtl_expr.
	(pop_topmost_sequence): Remove comment about not restoring it.
	(end_sequence): Don't set seq_rtl_expr.
	(init_emit): Don't initialize it.
	(mark_sequence_stack): Don't mark it.
	(mark_emit_status): Likewise.
	* except.c (protect_with_terminate): Use
	start_sequence_for_rtl_expr, not start_sequence.
	* expr.c (expand_expr, case RTL_EXPR): Don't call
	preserve_rtl_expr_result or free_temps_for_rtl_expr.
	* function.c (assign_stack_temp_for_type): Don't set rtl_expr.
	(preserve_rtl_expr_result): Remove.
	(free_temps_for_rtl_expr): Likewise.
	(pop_temp_slots): Likewise.
	(mark_temp_slot): Don't mark the rtl_expr.
	* stmt.c (expand_start_stmt_expr): Use start_sequence, not
	start_sequence_for_rtl_expr.

From-SVN: r32335
2000-03-05 03:43:58 +00:00
Richard Kenner
b0e3a65853 function.c (number_blocks): Reset next_block_index based on what debugging format is used, not what is defined.
* function.c (number_blocks): Reset next_block_index based on
	what debugging format is used, not what is defined.

From-SVN: r32235
2000-02-28 07:41:36 -05:00
Mark Mitchell
18c038b9ca emit-rtl.c (remove_unncessary_notes): Remove notes for empty blocks.
* emit-rtl.c (remove_unncessary_notes): Remove notes for empty
	blocks.
	* final.c (next_block_index): Remove.
	(max_block_depth): Likewise.
	(pending_blocks): Likewise.
	(init_final): Don't initialize them.
	(final_start_function): Don't set next_block_index.  Set up
	BLOCK_NUMBER.
	(final_scan_insn): Use BLOCK_NUMBER, not next_block_index.
	* function.h (number_blocks): New function.
	* function.c (get_block_vector): New function.
	(identify_blocks): Use it.
	(reorder_blocks): Set NOTE_BLOCK.
	(number_blocks): New function.
	* tree.def (BLOCK): Add documentation for TREE_ASM_WRITTEN flag.
	* tree.h (BLOCK_NUMBER): New macro.
	(tree_block): Add block_num field.
	* dbxout.c (next_block_number): Remove.
	(dbxout_init): Don't set it.
	(dbxout_block): Only output blocks that have TREE_ASM_WRITTEN
	set.  Use BLOCK_NUMBER, rather than next_block_num, to determine
	block numbers.
	* toplev.c (rest_of_compilation): Always call
	find_loop_tree_blocks.  Fix indentation.
	* dwarf2out.c (next_block_number): Remove.
	(gen_lexical_block_die): Use BLOCK_NUMBER, not next_block_number,
	to determine block numbers.
	(gen_inlined_subroutine_die): Likewise.
	(gen_block_die): Only output blocks that have TREE_ASM_WRITTEN set.
	(decls_for_scope): Don't increment next_block_number.
	* dwarfout.c (next_block_number): Remove.
	(output_lexical_block_die): Use BLOCK_NUMBER, not next_block_number,
	to determine block numbers.
	(output_inlined_subroutine_die): Likewise.
	(output_block): Only output blocks that have TREE_ASM_WRITTEN set.
	(output_decls_for_scope): Don't increment next_block_number.
	* sdbout.c (next_block_number): Remove.
	(sdbout_block): Use BLOCK_NUMBER.
	(sdbout_begin_block): Simplify.
	* xcoffout.c (next_block_number): Remove.
	(xcoffout_block): Use BLOCK_NUMBER, not next_block_number.
	(xcoffout_begin_block): Don't set next_block_number.
	(xcoffout_begin_function): Likewise. Use BLOCK_NUMBER, not
	next_block_number.

From-SVN: r32228
2000-02-28 09:51:42 +00:00
Richard Kenner
fed3cef0db builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
	(expand_builtin_strcpy): Pass correct type to size_binop.
	(expand_builtin_strcmp): Likewise.
	Clean up conditional structure.
	* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
	(complete_array_type): Don't use size_binop for MAXINDEX.
	* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
	(c_sizeof_nowarn, c_size_in_bytes): Likewise.
	(c_alignof): Use size_one_node.
	(build_unary_op): Pass arg of proper type to size_binop.
	(really_start_incremental_init, push_init_level): Use sizetype for
	constructor{,_bit,_unfilled}_index.
	(pop_init_label, output_init_element): Likewise.
	(output_pending_init_elements, process_init_element): Likewise.
	* calls.c (compute_argument_block_size): Field VAR is ssizetype.
	* expr.c (store_expr): Use size_int.
	(store_constructor): Use proper types for size_binop args.
	(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
	(expand_expr_unaligned): Likewise.
	(string_contant): Return object of sizetype.
	* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
	(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
	(ARGS_SIZE_TREE): Pass proper types to size_binop.
	* fold-const.c (int_const_binop): Refine when size_int is called.
	(fold_convert): Likewise.
	(size_int_wide): Rework to take KIND as arg, only take low order
	bits, handle new sizetype_tab datatype, and chain entries in
	size_table.
	(size_int_type_wide): New function.
	(size_binop): Validate types of arguments.
	(ssize_binop): Deleted.
	(size_diffop): New function.
	(extract_muldiv): Only fold division into multiplication for sizetypes.
	* function.c (assign_parms): Use size_diffop and make sure
	VAR field is of ssizetype; also pass proper type to size_binop.
	(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
	(round_down): Deleted from here.
	* store-layout.c (sizetype_tab): Now an array.
	(sizetype_set, early_root_list): New variables.
	(variable_size): Use size_one_node.
	(round_up): Pass proper type to size_binop.
	(round_down): Moved to here and corrected as above.
	(layout_record): Pass proper arg types to size_binop.
	(layout_type): Likewise.
	If sizetype_set is zero, record the type just laid out.
	(make_unsigned_type): Don't call set_sizetype;
	(make_signed_type): Likewise; also, call fixup_signed_type.
	(initialize_sizetypes): New function.
	(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
	set name of bitsizetype to "bit_size_type".
	Fix up type of sizes of all types made before call.
	* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
	* tree.c (fix_sizetype): Deleted.
	(build_common_tree_nodes): Call initialize_sizetypes.
	(build_common_tree_nodes_2): Don't call fix_sizetype.
	* tree.h (TYPE_IS_SIZETYPE): New macro.
	(initialize_sizetype): New declaration.
	(enum size_type_kind): New type.
	(struct sizetype_tab): Deleted.
	(sizetype_tab): Now array; adjust sizetype macros.
	(size_diffop, size_int_type_wide): New functions.
	(size_int_wide): Change number of args and type; access macros changed.
	(ssize_int, sbitsize_int): New macros.
	* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
	(ROUND_TYPE_SIZE_UNIT): New macro.
	* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
	for things that aren't sizes.
	(expand_varying_length_assignment): Likewise.
	* ch/convert.c (digest_array_tuple, convert): Likewise.
	* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
	(build_chill_slice_with_range): Likewise.
	(build_chill_slice_with_length): Likewise.
	(build_array_from_set): Adjust types for size_binop.
	* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
	(build_chill_sizeof): Use TYPE_SIZE_UNIT.
	* ch/tree.c (build_string_type): Pass proper type to size_binop.
	* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
	size_binop on things that are not sizes; ssize_binop deleted.
	Call size_diffop when appropriate.
	(dfs_build_vcall_offset_vtbl_entries): Likewise.
	(build_primary_vtable, build_secondary_vtable): Likewise.
	(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
	Variable I is HOST_WIDE_INT.
	(get_vfield_offset): Pass proper types to size_binop.
	(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
	(finish_struct_1): Likewise.
	(skip_rtti_stuff): Arg N is now pointer to signed.
	(layout_class_type): Use size_zero_node.
	* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
	* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
	* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
	(xref_basetypes): BINFO_OFFSET is sizetype.
	* cp/error.c (dump_expr): Don't use size_binop non-sizes.
	* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
	* cp/init.c (construct_virtual_bases): Fix type error.
	(build_vec_delete_1): Pass proper type to size_binop and don't
	fold result.
	* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
	* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
	* cp/search.c (dfs_find_vbases): Fix type error.
	(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
	(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
	* cp/tree.c (debug_binfo): Variable N is signed.
	Use HOST_WIDE_INT_PRINT_DEC.
	* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
	(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
	size_one_node and size_zero_node.
	(c_alignof): Use size_one_node.
	(build_component_addr): Pass proper types to size_binop.
	(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
	* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
	type.
	(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
	(ffecom_tree_canonize_ref_): Likewise.
	(type_for_mode): Handle TImode.
	* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
	(ffeste_io_ciclist_): Likewise.
	* java/expr.c (build_java_ret): Pass proper type to size_binop.

From-SVN: r32225
2000-02-27 16:39:40 -05:00
Jeff Law
af841dbdcc Fix copyrights.
From-SVN: r32179
2000-02-26 07:26:24 -07:00
Richard Kenner
c8d8ed65a5 bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
* bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
	* cppinit.c (new_pending_define): Add cast to avoid warning.
	* expmed.c (extract_bit_field): Likewise.
	* flow.c (enum reorder_skip_type): New type.
	(skip_insns_between_blcok): New it.
	Rework to avoid warning about possibly undefined variable.
	* function.c (assign_parms): Make thisparm_boundary unsigned.
	* genrecog.c (write_switch): Cast XWINT result to int.
	* lcm.c: Many static fcns and vars now #ifdef OPTIMIZE_MODE_SWITCHING.
	* mips-tfile.c (init_file): Make two versions of FDR intializer:
	one for MIPS and one for Alpha.
	(get_tag, copy_object): Add casts to avoid warnings.
	* optabs.c (init_one_libfunc): Cast NAME to (char *).
	* reload.c (find_reloads): Make TYPE enum reload_type.
	* sbitmap.c (dump_sbitmap): J is unsigned; don't use "1L".
	* unroll.c (unroll_loop): Initialize UNROLL_NUMBER.
	* varasm.c (compare_constant_1): Add cast to avoid warning.
	* config/alpha/alpha.c (alpha_emit_xfloating_libcall): Cast FUNC
	to (char *).
	(alpha_expand_unaligned_load, alpha_expand_unaligned_store):
 	Cast switch operand of size to int.
	(alpha_expand_epilogue): Always initialize fp_offset and sa_reg.
	* config/alpha/alpha.h (INITIAL_ELIMINATION_OFFSET): Add abort
	in unhandled case.

From-SVN: r32060
2000-02-18 20:27:00 -05:00
Mark Mitchell
9185a8d526 function.c (thread_prologue_and_epilogue_insns): Put a line note after the prologue.
* function.c (thread_prologue_and_epilogue_insns): Put a line note
	after the prologue.

From-SVN: r32037
2000-02-17 20:15:50 +00:00
Geoff Keating
2dd8bc0166 function.c (thread_prologue_and_epilogue_insns): Don't insert a RETURN insn into a block which already ends with a jump.
* function.c (thread_prologue_and_epilogue_insns): Don't insert
	a RETURN insn into a block which already ends with a jump.

From-SVN: r31928
2000-02-11 19:31:55 +00:00
Jan Hubicka
44affdae26 function.c (assign_temp): Change zero-sized arrays to size 1.
* function.c (assign_temp): Change zero-sized arrays to size 1.
	* integrate.c (expand_inline_function): Do not update
	stack_alignment_needed
	* i386.c (compute_frame_size): Remove #ifdef PREFERRED_FRAME_BOUNDARY,
	add some sanity checking, remove optimization for function with
	zero frame size.

From-SVN: r31898
2000-02-10 17:43:55 +00:00
Clinton Popetz
98b7bb3848 function.c (thread_prologue_and_epilogue_insns): Uncomment last change.
* function.c (thread_prologue_and_epilogue_insns): Uncomment
	last change.

From-SVN: r31890
2000-02-10 09:16:33 -05:00
Clinton Popetz
3a75e42e81 function.c (thread_prologue_and_epilogue_insns): Don't delete the edge from a block that both jumps and falls through to the...
* function.c (thread_prologue_and_epilogue_insns): Don't delete
	the edge from a block that both jumps and falls through to the
	fallthru block.

From-SVN: r31878
2000-02-09 19:20:41 -05:00
Clinton Popetz
a617c13f06 function.c (thread_prologue_and_epilogue_insns): Don't replace jumps with returns unless they are jumps to the fallthru block.
* function.c (thread_prologue_and_epilogue_insns): Don't replace
        jumps with returns unless they are jumps to the fallthru block.

From-SVN: r31852
2000-02-08 11:32:20 -05:00
Hans-Peter Nilsson
73ef99fbd6 * function.c (emit_return_into_block): Wrap in #ifdef HAVE_return.
From-SVN: r31847
2000-02-08 06:09:17 +00:00
Jan Hubicka
c2f8b49149 calls.c (compute_argument_block_size): New argument preferred_stack_boundary.
* calls.c (compute_argument_block_size): New argument
	preferred_stack_boundary.
	(expand_call): update cfun->preferred_stack_boundary, update call of
	compute_argument_block_size
	(emit_library_call): Increate cfun->preferred_stack_boundary
	to PREFERRED_STACK_BOUNDARY
	(emit_library_call_value): Likewise.
	* explow.c (allocate_dynamic_stack_spave): Likewise.
	* function.c (prepare_function_start): Set
	cfun->preferred_stack_boundary
	* function.h (struct function): Add preferred_stack_boundary field.
	* integrate.c (expand_inline_function): Update
	cfun->preferred_stack_boundary and cfun->stack_alignment_needed.
	(copy_rtx_and_substitute): Align frame to stack_alignment_needed only.
	* i386.c (compute_frame_size): Use cfun->preferred_stack_boundary.

From-SVN: r31831
2000-02-07 17:39:40 +00:00
Richard Henderson
69732dcb9c flow.c (flow_delete_insn, [...]): Export.
* flow.c (flow_delete_insn, make_edge, remove_edge): Export.
        * basic-block.h: Declare them.
        * emit-rtl.h (active_insn_p): New.
        (next_active_insn, prev_active_insn): Use it.
        * rtl.h: Declare it.
        * function.c (emit_return_into_block): New.
        (thread_prologue_and_epilogue_insns): Insert return insns instead
        of epilogues when possible.
        * jump.c (jump_optimize_1): Remove code to insert a return insn
        on the fallthru to the exit block.

From-SVN: r31826
2000-02-06 05:01:03 -08:00
Richard Henderson
c13fde0599 function.c (diddle_return_value): Rework to use a callback function.
* function.c (diddle_return_value): Rework to use a callback function.
        Use current_function_return_rtx if it's been set up.
        (do_clobber_return_reg, clobber_return_register): New.
        (do_use_return_reg, use_return_register): New.
        (expand_function_end): Use them.
        * stmt.c (expand_null_return): Likewise.
        * function.h: Declare them.
        * flow.c (mark_regs_live_at_end): Use diddle_return_value.
        (mark_reg): Change arguments as appropriate for callback.
        * integrate.c (expand_inline_function): Revert 19 Jan change.

From-SVN: r31791
2000-02-04 13:30:22 -08:00
Richard Henderson
19d3c25c9a flow.c (find_basic_blocks): Remove do_cleanup argument.
* flow.c (find_basic_blocks): Remove do_cleanup argument.
        Break out that code ...
        (cleanup_cfg): ... here.
        (commit_one_edge_insertion): Detect a return instruction being
        emitted to an edge.  Emit a barrier following; clear fallthru.
        (commit_edge_insertions): Verify CFG consistency.
        * function.c (expand_function_start): Kill unused variable.
        (expand_function_end): Likewise.
        (thread_prologue_and_epilogue_insns): Use insert_insn_on_edge
        to insert the epilogue.

        * gcse.c (gcse_main): Adjust for find_basic_blocks change.
        (delete_null_pointer_checks): Likewise.
        * output.h: Likewise.
        * reg-stack.c (reg_to_stack): Likewise.
        * toplev.c (rest_of_compilation): Likewise.  Run
        thread_prologue_and_epilogue_insns after rebuilding the CFG.

From-SVN: r31676
2000-01-28 14:22:50 -08:00
Geoff Keating
d1b8177961 emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
Use unshare_all_rtl_1.
(unshare_all_rtl_again): New function.
(unshare_all_rtl_1): New function split out of unshare_all_rtl.

* function.c (purge_addressof_1): Use unshare_all_rtl_again
rather than resetting the 'used' flags ourself.

* toplev.c (rest_of_compilation): Add current_function_decl
to the unshare_all_rtl call.
* tree.h: Prototype unshare_all_rtl.
* rtl.h: Prototype unshare_all_rtl_again here.

From-SVN: r31651
2000-01-27 20:46:26 +00:00
Richard Henderson
d29c259b71 stupid.c: Die die die.
* stupid.c: Die die die.
	* Makefile.in (OBJS): Remove stupid.o.
	(stupid.o): Likewise.

	* except.c (emit_eh_context): Don't emit USEs for stupid.
	* explow.c (probe_stack_range): Likewise.
	* flags.h (obey_regdecls): Remove.
	* flow.c (find_basic_blocks): Don't run try_merge_blocks
	when not optimizing.
	(life_analysis): Limit data collection when not optimizing.
	(mark_regs_live_at_end): Always mark the return value registers.
	(mark_used_regs): Remove dummy RETURN case.
	(print_rtl_with_bb): Don't consult obey_regdecls.
	* function.c (use_variable, use_variable_after): Remove.
	(assign_parms): Consult optimize not obey_regdecls.
	(expand_function_start): Don't emit USEs for stupid.
	(expand_function_end): Likewise.
	* global.c (build_insn_chain): Export.
	* integrate.c (expand_inline_function): Kill return-value USE
	handling code.
	* jump.c (jump_optimize_1): Do simple jump optimizations and
	dead code elimination.
	(calculate_can_reach_end): Remove check_deleted argument.
	(delete_insn): Patch out insns even when not optimizing.
	* local-alloc.c (block_alloc): Don't do tying when not optimizing.
	* rtl.h (use_variable, use_variable_after): Remove declarations.
	(build_insn_chain): Declare.
	* stmt.c (expand_value_return): Don't emit USEs for stupid.
	(expand_end_bindings): Likewise.
	(expand_decl): Likewise.  Consult optimize not obey_regdecls.
	* toplev.c (obey_regdecls): Remove.
	(rest_of_compilation): Don't set it.  Kill stupid in favour of
	flow1, local-alloc, and reload.
	(main): Don't set obey_regdecls.

	* config/nextstep.c (handle_pragma): Likewise.

	* alpha/alpha.md (allocate_stack): Don't emit USEs for stupid.

	* arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't fix reg 0 for stupid.

From-SVN: r31499
2000-01-19 01:42:11 -08:00
Kaveh R. Ghazi
711d877c9e eh-common.h: PROTO -> PARAMS.
* eh-common.h: PROTO -> PARAMS.
	* emit-rtl.c: Likewise.
	* errors.c: Likewise.
	* errors.h: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* final.c: Likewise.
	* fix-header.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.

From-SVN: r31419
2000-01-14 17:14:43 +00:00
Kaveh R. Ghazi
57bed15271 calls.c (emit_call_1): Wrap varaible `struct_value_size_rtx' in macro conditionals guarding use.
* calls.c (emit_call_1): Wrap varaible `struct_value_size_rtx' in
        macro conditionals guarding use.

        * dwarf2out.c: Include "tm_p.h".

        * function.c (locate_and_pad_parm): Mark parameter with
        ATTRIBUTE_UNUSED.
        (expand_function_end): Likewise for variable `context'.

        * reorg.c (make_return_insns): Wrap prototype in macro HAVE_return.

cp:
        * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.

From-SVN: r31398
2000-01-13 23:43:55 +00:00
Kaveh R. Ghazi
0ce8a59c2b elfos.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around assignment used as truth value.
* elfos.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around
	assignment used as truth value.

	* function.c (assign_temp): Mark parameter `dont_promote' with
	ATTRIBUTE_UNUSED.  Wrap variable `unsignedp' with macro
	PROMOTE_FOR_CALL_ONLY.

	* genrecog.c (write_subroutine): Mark variable `operands' with
	ATTRIBUTE_UNUSED.

	* optabs.c (prepare_cmp_insn): Mark parameter `align' with
	ATTRIBUTE_UNUSED.

	* sdbout.c (sdbout_init): Likewise for parameter `asm_file'.
	(sdbout_begin_block, sdbout_end_block): Likewise for `file'.

	* toplev.c (note_deferral_of_defined_inline_function): Likewise
	for `decl'.

From-SVN: r31293
2000-01-09 14:23:35 +00:00
Kaveh R. Ghazi
a544cfd201 builtins.c (expand_builtin_strlen): Initialize variable `icode'.
* builtins.c (expand_builtin_strlen): Initialize variable `icode'.

	* calls.c (expand_call): Likewise for
	`old_stack_arg_under_construction'.

	* cpphash.c (macroexpand): Likewise for `args' and `rest_zero'.

	* function.c (pad_to_arg_alignment): Likewise for `save_var' and
	`save_constant'.

	* gcc.c (execute): Likewise for `ut' and `st'.

	* genattrtab.c (attr_rtx): Likewise for `rt_val'.

	* genopinit.c (gen_insn): Likewise for `m1', `m2' and `op'.

	* jump.c (jump_optimize_1): Likewise for `temp2'.

	* local-alloc.c (block_alloc): Likewise for `r1'.

	* loop.c (recombine_givs): Likewise for `life_start' and `life_end'.

	* reg-stack.c (check_asm_stack_operands): Likewise for `clobber_reg'.
	(subst_asm_stack_regs): Likewise for `clobber_reg' and `clobber_loc'.

	* regmove.c (fixup_match_1): Likewise for `insn_const', `dst_node'
	and `set2'.

	* reload.c (find_reloads): Likewise for `goal_alternative_number'
	and `goal_earlyclobber'.

	* scan-decls.c (scan_decls): Likewise for `prev_id_end'.

	* sdbout.c (sdbout_one_type): Likewise for `member_scl'.

	* stupid.c (stupid_life_analysis): Likewise for `chain'.

	* unroll.c (copy_loop_body): Likewise for `copy'.

	* varasm.c (output_constructor): Likewise for `byte'.

ch:
	* actions.c (update_else_range_for_int_const): Initialize
	variables `lowval' and `highval'.
	(update_else_range_for_range): Likewise for `low_range_val' and
	`high_range_val'.

cp:
	* class.c (warn_hidden): Initialize variable `fndecl'.

From-SVN: r31207
2000-01-04 16:29:41 +00:00
Richard Kenner
700f19f09f function.c (update_temp_slot_address): Handle case where sum of temporary address plus offset in register is a valid...
* function.c (update_temp_slot_address): Handle case where sum of
	temporary address plus offset in register is a valid address.

From-SVN: r31153
1999-12-31 19:07:54 -05:00
Christophe Jaillet
d4757e6a5d alias.c (nonlocal_reference_p): Add else for disjoint ifs.
* alias.c (nonlocal_reference_p): Add else for disjoint ifs.
        * flow.c (find_use_as_address): Likewise.
        * function.c (fixup_var_refs_1): Likewise.
        (walk_fixup_memory_subreg, fixup_stack_1): Likewise.
        * jump.c (invert_exp, redirect_exp): Likewise.
        * loop.c (replace_call_address): Likewise.
        (count_nonfixed_reads): Likewise.
        * rtlanal.c (modified_between_p): Likewise.
        (modified_in_p, volatile_insn_p, volatile_refs_p): Likewise.
        (side_effects_p, replace_regs, jmp_uses_reg_or_mem): Likewise.
        * unroll.c (remap_split_bivs): Likewise.

From-SVN: r31103
1999-12-27 15:01:12 -08:00
Bernd Schmidt
01d939e8fb current_function -> cfun
From-SVN: r31033
1999-12-20 13:18:17 +00:00
Mark Mitchell
a97901e608 Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
* Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
	* function.c (insert_block_after_note): Remove.
	(retrofit_block): Likewise.
	(identify_blocks): Fix indentation.
	(reorder_blocks): Don't NULL out NOTE_SOURCE_FILE for a
	NOTE_INSN_BLOCK_BEG or NOTE_INSN_BLOCK_END.
	* function.h (insert_block_after_note): Remove prototype.
	(retrofit_block): Likewise.
	* integrate.c (expand_inline_function): Don't call
	find_loop_tree_blocks.  Use expand_start_bindings_and_block, not
	just expand_start_bindings.  Use the block_map to remap old
	NOTE_BLOCKs to new ones.
	(integrate_decl_tree): Keep track of remapped blocks.
	* integrate.h (struct inline_remap): Add block_map.
	* stmt.c (expand_fixup): Don't try to retrofit_blocks.  Just set
	NOTE_BLOCK on the notes.
	(expand_start_bindings): Rename to ...
	(expand_start_bindings_and_block): Add parameter.  Set NOTE_BLOCK.
	(expand_end_bindings): Set NOTE_BLOCK.
	* toplev.c (rest_of_compilation): In function-at-a-time-mode,
	reconstruct the BLOCK tree.
	* tree.h (expand_start_bindings): Macroize.  Call ...
	(expand_start_bindings_and_block): New function.

	* optimize.c (struct inline_data): Remove scope_stmt.
	(remap_block): Don't use insert_block_after_note.  Don't update
	scope_stmt.
	(expand_call_inline): Don't update scope_stmt.
	(optimize_function): Don't initialize scope_stmt.
	* semantics.c (expand_stmt): Set NOTE_BLOCK for newly emitted
	NOTE_INSN_BLOCK_BEG/NOTE_INSN_BLOCK_END notes.

From-SVN: r30982
1999-12-16 17:50:29 +00:00
Jason Merrill
5afb79e7f8 function.c (retrofit_block): Abort if we don't find a suitable insn.
* function.c (retrofit_block): Abort if we don't find a suitable insn.
        (insert_block_after_note): Abort if we don't have a previous block.
        Remove FN parameter.
        * function.h: Adjust.

        * tree.c (walk_tree): Walk operand subtrees in forward order.
        * optimize.c (expand_call_inline): Likewise.
        (optimize_function): Initialize id->scope_stmt to something useful.
        (remap_block): Assume id->scope_stmt has a useful value.

From-SVN: r30965
1999-12-15 19:09:35 -05:00
Jan Hubicka
a087165623 function.c (PREFERRED_STACK_BOUDNARY): Provide default value.
* function.c (PREFERRED_STACK_BOUDNARY): Provide default value.
	(assign_stack_local_1): Limit alignment to PREFERRED_STACK_BOUNDARY,
	update stack_alignment_needed.
	(prepare_function_start): Initialize stack_alignment_needed
	* function.h (struct function): Add field stack_alignment_needed.

From-SVN: r30958
1999-12-15 15:34:03 +00:00
Mark Mitchell
4ce8936485 function.h (insert_block_after_note): Declare.
* function.h (insert_block_after_note): Declare.
	* function.c (insert_block_after_note): Split out from ...
	(retrofit_block): ... here.

From-SVN: r30776
1999-12-05 00:13:53 +00:00
Geoff Keating
a157febd0c c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
* c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
(init_attributes): Add A_NO_LIMIT_STACK.
(decl_attributes): Handle A_NO_LIMIT_STACK.
* c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK.
* explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]:
Handle stack bounds checking.
* flags.h (flag_stack_check): Use the word 'probe' rather than
'check', because the flag doesn't actually cause any checking to
be done.
* function.c (expand_function_start): Set
current_function_limit_stack.
* function.h (struct function): Add limit_stack.
(current_function_limit_stack): Define.
* invoke.texi (Code Gen Options): Document new options.
* rtl.h: Declare stack_limit_rtx.
* toplev.c (stack_limit_rtx): New variable.
(decode_f_option): Handle new options -fstack-limit-register=REG,
-fstack-limit-symbol=IDENT, -fno-stack-limit.
(main): Add stack_limit_rtx as GC root.
* tree.h (DECL_NO_LIMIT_STACK): New macro.
(struct tree_decl): New member no_limit_stack.

* config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle
stack_limit_rtx.
* config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx.
(conditional_trap+1): Get new mnemonic correct.
(conditional_trap+2): New pattern for DImode traps.

* config/m68k/m68k.c (output_function_prologue): Handle
stack_limit_rtx.
* config/m68k/m68k.md (trap): New insn.
(conditional_trap): New insn.
* md.texi (Standard Names): Document `trap' and
`conditional_trap'.
* optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
so a cc0 setter doesn't get emitted at some random place in the
function.

* config/i960/i960.md (trap): New insn.
(conditional_trap): New expander.
(conditional_trap+1, conditional_trap+2): New insns for signed
and unsigned cases.
* config/i960/i960.c (i960_function_prologue): Use
STARTING_FRAME_OFFSET.  Handle stack_limit_rtx.

Co-Authored-By: Greg McGary <gkm@gnu.org>

From-SVN: r30771
1999-12-04 03:00:04 +00:00
Mark Mitchell
1e4ceb6f9e except.h (struct eh_entry): Add goto_entry_p.
* except.h (struct eh_entry): Add goto_entry_p.
	(eh_region_from_symbol): Remove prototype.
	* except.c (find_func_region_from_symbol): New function.
	(emit_cleanup_handler): Likewise.
	(eh_region_from_symbol): Make it static.
	(add_new_handler): Verify the argument.
	(find_func_region): Update comment.
	(expand_eh_region_end): Expand handlers here, rater than waiting
	until expand_leftover_cleanups or start_all_catch.
	(expand_leftover_cleanups): Don't expand here.
	(expand_start_all_catch): Or here.
	(expand_rethrow): Check the return value from find_func_region.
	* function.c (expand_function_end): Emit the catch_clauses.

From-SVN: r30576
1999-11-18 17:50:56 +00:00
Jakub Jelinek
4dc07bd7c1 explow.c (hard_function_value): Add outgoing argument.
* explow.c (hard_function_value): Add outgoing argument.
        * expr.h (hard_function_value): Declare it.
        * calls.c (expand_call, emit_library_call_value): Update callers.
        * function.c (aggregate_value_p): Ditto.
        (diddle_return_value): Must look at the outgoing registers
        on archs with register windows.

From-SVN: r30550
1999-11-16 09:43:40 -08:00
Jeffrey A Law
2cfcc23e7f function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as needed.
* function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as
        needed.

From-SVN: r30519
1999-11-12 20:54:56 -07:00
Jeffrey A Law
cfb0346d03 function.c (diddle_return_value): Only clal hard_function_value when the return value is supposed to be in a register.
* function.c (diddle_return_value): Only clal hard_function_value
        when the return value is supposed to be in a register.

From-SVN: r30497
1999-11-12 00:38:32 -07:00
Jeffrey A Law
d3f2edaeb9 function.c (diddle_return_value): Use hard_function_value to get an rtx suitable for use in the USE/CLOBBER insn.
* function.c (diddle_return_value): Use hard_function_value to
        get an rtx suitable for use in the USE/CLOBBER insn.

From-SVN: r30494
1999-11-11 20:46:21 -07:00
Mark Mitchell
4da896b292 cse.c (delete_trivially_dead_insns): Replace alloca with xmalloc/xcalloc.
* cse.c (delete_trivially_dead_insns): Replace alloca with
	xmalloc/xcalloc.
	* except.c (update_rethrow_references): Likewise.
	(init_eh_nesting_info): Likewise.
	* function.c (identify_blocks): Likewise.
	* gcse.c (dump_hash_table): Likewise.
	* graph.c (print_rtl_graph_with_bb): Likewise.
	* loop.c (combine_movables): Likewise.
	(move_movables): Likewise.
	(count_loop_regs_set): Likewise.
	(strength_reduce): Likewise.
	* profile.c (compute_branch_probabilities): New function, split
	out from ...
	(branch_prob): Here.  Replace alloca with xmalloc/xcalloc.
	* regclass.c (regclass): Likewise.
	* regmove.c (regmove_optimize): Likewise.
	* toplev.c (compile_file): Likewise.
	(main): Don't mess with the stack rlimit.

From-SVN: r30445
1999-11-08 04:56:18 +00:00
Nick Clifton
aa608fe69c oops - add missing return values
From-SVN: r30416
1999-11-05 12:08:09 +00:00
Nick Clifton
8c36698e52 If purge_addressof_1 fails to remove addressofs in notes, remove the notes
instead.

From-SVN: r30414
1999-11-05 10:11:40 +00:00
Jeffrey A Law
9399d5c63f function.c (pad_to_arg_alignment): Only update argument_pad if the argument's alignment is greater than STACK_BOUNDARY.
* function.c (pad_to_arg_alignment): Only update argument_pad
        if the argument's alignment is greater than STACK_BOUNDARY.

From-SVN: r30405
1999-11-04 23:49:38 -07:00
Richard Henderson
bd695e1e9d function.c (diddle_return_value): New.
* function.c (diddle_return_value): New.
        (expand_function_end): Use it.
        * stmt.c (expand_null_return): Likewise.
        (expand_value_return): Likewise.

        * reg-stack.c (subst_stack_regs_pat): Handle clobbers at top-level.

        * reload1.c (reload): Don't remove return value clobbers.

From-SVN: r30401
1999-11-04 16:35:10 -08:00
Richard Kenner
14a774a9d2 [multiple changes]
Fri Oct 29 15:25:07 1999  Arnaud Charlet  <charlet@ACT-Europe.FR>

	* gcov.c (DIR_SEPARATOR): Provide default.
	(output_data): Add test for MS-DOS format absolute filename.
	(fancy_abort): Correct program name.
	(open_files): Open all files in binary mode.
	* libgcc2.c (__bb_exit_func): Likewise.

	* profile.c (init_branch_prob): Specify binary when opening files.

	* flags.h (flag_unwind_tables): New decl.
	* toplev.c (flag_unwind_table): New definition.
	(f_options): Add -funwind-tables.
	(decode_g_option): Clarify warning when unknown -g option is given.
	(rest_of_compilation): If inside an inlined external function,
	pretend we are just being declared.

	* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
	(dwarf2out_frame_finish): Likewise.

Fri Oct 29 06:32:44 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* flow.c (propagate_block): When the last reference to a label
 	before an ADDR_VEC is deleted because the reference is a dead
 	store, delete the ADDR_VEC.

Fri Oct 29 07:44:26 1999  Vasco Pedro  <vp@di.fct.unl.pt>

	* fold-const.c (merge_ranges): In not in0, but in1, handle
	upper bounds equal like subset case.

Thu Oct 28 19:22:24 1999  Douglas Rupp <rupp@gnat.com>

	* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
	passed in a register but moved to the stack.

Thu Oct 28 19:12:57 1999  Sam Tardieu  <tardieu@act-europe.fr>

	* gcc.c (pass_exit_codes, greatest_status): New variables.
	(struct option_map): Add entry for "--pass-exit-codes".
	(execute): Update greatest_status if error.
	(display_help): Add documentation for -pass-exit-codes.
	(process_command): Handle -pass-exit-codes.
	(main): Look at pass_exit_codes and greatest_status on call to exit.

Thu Oct 28 18:06:50 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (find_reloads): Refine test for no input reload
	case to not includes reloads emitted after insn.

	* function.c (find_temp_slots_from_address): Handle sum involving
	a register that points to a temp slot.
	(update_temp_slot_address): Make recursive call if both old and
	new are PLUS with a common operand.
	* calls.c (expand_call): Mark temp slot for result as having
	address taken.

	* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.

	* gcc.c (process_command): Add standard_exec_prefix with "GCC"
	component as well as "BINUTILS".

	* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
	All callers changed.
	* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.

	* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
	gdb extensions, write size of type; also be more consistent
	in using references when this is a subtype.

	* pa.md (extv, extzv, insv): Use define_expand to reject constant
	that is out of range.

	* loop.c (unknown_constant_address_altered): New variable.
	(prescan_loop): Initialize it.
	(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
	(invariant_p, case MEM): Remove handling for volatile and readony;
	check new variable if readonly.
	(check_dbra_loop): Chdeck unknown_constant_address_altered.

	* cse.c (canon_hash, case MEM): Do not record if BLKmode.
	(addr_affects_sp_p): Removed from note_mem_written and only
	define #ifdef AUTO_INC_DEC.

	* alpha.c (input_operand, case ADDRESSOF): Treat as REG.

	* regclass.c (record_reg_classes): Properly handle register move
	directions.

	* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
	Don't think valid if both operands are invalid.
	(struct constant_descriptor): New field RTL.
	(mark_const_hash_entry): Mark it.
	(record_constant{,_rtx}): Initialize it.
	(output_constant_def): Allocate RTL in permanent obstack and
	save in table.
	({record,compare}_constant_1): Modes must match for
	CONSTRUCTOR of ARRAY_TYPE.

	* c-common.h (initializer_constant_valid_p): Delete decl from here.
	* output.h (initializer_constant_valid_p): Move decl to here.
	* c-common.c (initializer_constant_valid_p): Delete function from here.
	* varasm.c (initializer_constant_valid_p): Move function to here.

	* tree.h (STRIP_SIGN_NOPS): New macro.
	* fold-const.c (optimize_minmax_comparison): New function.
	(invert_truthvalue, case WITH_RECORD_EXPR): New case.
	(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
	(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
	cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
	widening conversions.
	(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
	to look at size of mode, not precision of type; also add missing cases.
	(optimize_bit_field_compare, decode_field_reference): Don't try to
	optimize COMPONENT_REF of a PLACEHOLDER_EXPR.

	* dwarf2out.c (ctype.h): Include.
	(dwarf2out_set_demangle_name_func): New function.
	(size_of_line_info): Deleted.
	(output_line_info): Compute size of line info table from difference
	of labels.
	(base_type_die, add_name_attribute): Call demangle function, if any.
	(field_byte_offset): Use bits per word for variable length fields.
	(gen_array_type_die): Add array name.
	(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
	(dwarf2out_add_library_unit_info): New function.

	* explow.c (set_stack_check_libfunc): New function.
	(stack_check_libfunc): New static variable.
	(probe_stack_range): Allow front-end to set up a libfunc to call.

	* combine.c (simplify_comparison): When making comparison in wider
	mode, check for having commuted an AND and a SUBREG.
	(contains_muldiv): New function.
	(try_combine): Call it when dividing a PARALLEL.
	(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
	(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
	a PLUS.
	(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
	use one of the CLOBBERs instead.
	(if_then_else_cond): If comparing against zero, just return thing
	being compared.

	* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
	Don't generate shifts and subtract if have conditional arithmetic.

	* rtl.h (delete_barrier): New declaration.
	* jump.c (jump_optimize): Set up to handle conditional call.
	In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
	(delete_barrier): New function.

	* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.

	* recog.c (nonmemory_operand): Accept ADDRESSOF.

	* tree.c (build_type_attribute_variant): Push to obstack of
	ttype around type_hash_canon call.

	* expr.c (placeholder_list): Move decl to file scope.
	(expand_expr): Don't force access to volatile just because its
	address is taken.
	If ignoring reference operations, just expand the operands.
	(expand_expr, case COMPONENT_REF): Propagate
	EXPAND_CONST_ADDRESS to recursive call when expanding inner.
	Refine test for using bitfield operations vs pointer punning.
	(expand_expr, case CONVERT_EXPR): If converting to
	BLKmode UNION_TYPE from BLKmode, just return inner object.
	Use proper mode in store_field call.
	Properly set sizes of object to store and total size in store_field
	call for convert to union.
	(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
	memory (like for ADDR_EXPR).  Also, don't put constant in register if
	we'll want it in memory.
	(readonly_fields_p): New function.
	(expand_expr, case INDIRECT_REF): Call it if LHS.
	(expand_assignment): Handle a RESULT_DECL where
	DECL_RTL is a PARALLEL.
	(do_jump, case WITH_RECORD_EXPR): New case.
	(get_inner_reference): Always go inside a CONVERT_EXPR
	and NOP_EXPR if both modes are the same.
	(store_field): Use bitfield operations if size of bitsize is not same
	as size of RHS's type.
	Check for bitpos not a multiple of alignment in BLKmode case.
	Do block move in largest possible alignment.
	(store_constructor): Set BITSIZE to -1 for variable size and properly
 	in case of array of BLKmode.
	(expand_expr_unaligned): New function.
	(do_compare_and_jump): Call it.

	* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
	* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
	does not include 'o'.

	* function.c (instantiate_virtual_regs_1, case SET): Handle case where
	both SET_DEST and SET_SRC reference a virtual register.
	(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.

	* integrate.c (expand_inline_function): Handle case of setting
	virtual stack vars register (from built in setjmp); when parameter
	lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
	(subst_constant): Add new parm, MEMONLY.
	(expand_inline_function, integrate_parm_decls): Pass new parm.
	(integrate_decl_tree): Likewise.
	(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
	(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
	(copy_rtx_and_substitute, case SET): Add explicit calls to
	copy_rtx_and_substitute for both sides.

	* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
	constraints.
	(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
	within INDEX_TYPE, instead of before.
	(fixup_gotos): Use f->target_rtl, not the next insn,
	since latter may be from a later fixup.
	(expand_value_return): Correctly convert VAL when promoting function
	return; support RETURN_REG being a PARALLEL.
	(expand_return): When checking for result in regs and having
	cleanup, consider PARALLEL in DECL_RTL as being in regs.

From-SVN: r30299
1999-10-31 20:11:22 -05:00
Marc Lehmann
8fbe10354e toplev.c (rest_of_compilation): Seperate the setjmp/vfork clobber warning from -Wuninitialized and put it under -W.
Sun Oct 31 13:32:15 CET 1999  Marc Lehmann <pcg@goof.com>

	* toplev.c (rest_of_compilation): Seperate the setjmp/vfork clobber
        warning from -Wuninitialized and put it under -W.
        * function.c (uninitialized_vars_warning): Warn only when the
        corresponding flag is set.

From-SVN: r30294
1999-10-31 21:52:00 +00:00
Catherine Moore
fbb57b2a94 Fix up last patch.
From-SVN: r30265
1999-10-29 14:49:29 -04:00
Catherine Moore
7ed6230077 Remove stray comment.
From-SVN: r30260
1999-10-29 13:11:16 -04:00
Catherine Moore
4fc026cde9 expr.c (emit_push_insn): New argument alignment_pad.
* expr.c (emit_push_insn): New argument alignment_pad.
        Update all callers.  Adjust stack pointer based on alignment pad.
        * function.c (pad_to_arg_alignment):  New argument alignment_pad.
        Update all callers.  Track alignment_pad if boundary > PARM_BOUNDARY.
        (locate_and_pad_parm): New argument alignment_pad.  Update all
        callers.
        * expr.h (emit_push_insn): Update prototype.
        (locate_and_pad_parm): Update prototype.
        * calls.c (arg_data):  Add new field alignment_pad.
        (initialize_argument_information): Initialize alignment_pad.

From-SVN: r30257
1999-10-29 11:23:41 -04:00
Mark Mitchell
5faf03ae77 except.c (free_eh_nesting_info): Free the info itself.
* except.c (free_eh_nesting_info): Free the info itself.
	* function.c (free_after_compilation): Don't free NULL.
	* gcse.c (alloc_pre_mem): Free the temp_bitmap, too.
	(pre_edge_insert): Free inserted.
	* stmt.c (free_stmt_status): Don't free NULL.

From-SVN: r30255
1999-10-29 09:49:23 +00:00
Jan Hubicka
a05924f91b Reorg reg-stack to use the standard CFG.
Co-Authored-By: Richard Henderson <rth@cygnus.com>

From-SVN: r30201
1999-10-26 18:25:13 -07:00
Kaveh R. Ghazi
b1474bb79e calls.c: Include tm_p.h later, so everything we need is defined.
* calls.c: Include tm_p.h later, so everything we need is defined.
        * expr.c: Likewise.
        * function.c: Likewise.

        * except.c: Include tm_p.h.

        * sparc.c: Likewise.
        (dwarf2out_cfi_label): Don't prototype.
        (check_return_regs, epilogue_renumber,
        ultra_cmove_results_ready_p, ultra_fpmode_conflict_exists,
        ultra_find_type, ultra_build_types_avail, ultra_flush_pipeline,
        ultra_rescan_pipeline_state, set_extends, ultra_code_from_mask,
        ultra_schedule_insn): Add static prototype.
        (data_segment_operand, text_segment_operand): Call itself with the
        proper number of arguments.
        (sparc_flat_save_restore, sparc_v8plus_shift): Constify a char*.

        * sparc.h: Move all declarations to sparc-protos.h.
        (SELECT_RTX_SECTION):  Pass a missing MODE argument to
        symbolic_operand.

        * sparc/sysv4.h (SELECT_RTX_SECTION): Likewise.

        * config/svr4.h (text_section, ctors_section, dtors_section): Add
        Prototypes.
        (ASM_OUTPUT_SECTION_NAME, UNIQUE_SECTION,
        ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING,
        ASM_OUTPUT_ASCII): Constify a char*.

        * sparc-protos.h: New file for sparc prototypes.

cp:
        * expr.c: Include tm_p.h.

From-SVN: r30122
1999-10-21 16:58:33 +00:00
Kaveh R. Ghazi
ec97b83a1c function.c (record_insns, contains): Always declare and define.
* function.c (record_insns, contains): Always declare and define.
       (record_insns): Mark with ATTRIBUTE_UNUSED.

From-SVN: r30121
1999-10-21 16:26:42 +00:00
Kaveh R. Ghazi
ca3075bd73 cpplib.c (if_directive_nameo): Add static prototype.
* cpplib.c (if_directive_nameo): Add static prototype.

	* cse.c (cse_insn): Remove unused variable `p'.

	* except.c (create_rethrow_ref, push_entry,
	receive_exception_label, new_eh_region_entry, find_func_region,
	clear_function_eh_region, process_nestinfo): Add static prototypes.
	(get_reg_for_handler): Hide definition.
	(process_nestinfo): Initialize variable `extra_handlers'.

	* expr.h (expand_builtin_longjmp): Add extern prototype.

	* final.c (final_addr_vec_align, align_fuzz): Add static prototypes.

	* function.c (prepare_function_start): Likewise.
	(pop_function_context_from): Mark parameter `context' with
	ATTRIBUTE_UNUSED.
	(push_temp_slots_for_block, flush_addressof): Hide definition.

	* gcov.c (init_arc, reverse_arcs, create_program_flow_graph,
	solve_program_flow_graph, calculate_branch_probs,
	function_summary, main, fancy_abort): Add prototypes.

	* gen-protos.c (add_hash, parse_fn_proto, main): Likewise.
	(add_hash): Constify a char*.

	* ggc-common.c (ggc_mark_rtx_ptr, ggc_mark_tree_ptr,
	ggc_mark_tree_varray_ptr, ggc_mark_tree_hash_table_ptr,
	ggc_mark_string_ptr, ggc_mark_tree_hash_table_entry): Add prototypes.

	* integrate.c (expand_inline_function_eh_labelmap): Likewise.

	* lists.c (free_list, zap_lists): Likewise.

From-SVN: r29783
1999-10-03 16:28:33 +00:00
Bernd Schmidt
6baf1cc8f8 Make it possible to prototype port-specific functions (and convert i386 to use this)
From-SVN: r29514
1999-09-20 10:00:03 +00:00
Mark Mitchell
e6fd097efc functiion.h (struct function): Add x_whole_function_mode_p.
* functiion.h (struct function): Add x_whole_function_mode_p.
	(retrofit_block): Declare.
	* function.c (retrofit_block): New function.
	(identify_blocks): Add assertions.  Allow an incomplete set of
	block notes if we're still generating code for the function.
	* integrate.c: Include loop.h.
	(expand_inline_function): Call find_loop_tree_blocks to map block
	notes to blocks when in whole-function mode.  Use retrofit_block
	to insert new BLOCKs for the inlined function, rather than
	insert_block.
	* stmt.c (expand_fixup): Likewise.  Don't use pushlevel/polevel.
	* Makefile.in (integrate.o): Depend on loop.h.

From-SVN: r29487
1999-09-17 22:18:59 +00:00
Mark Mitchell
21204d3437 function.c (identify_blocks): Don't shadow a variable in an outer scope.
* function.c (identify_blocks): Don't shadow a variable in an
	outer scope.
	* integrate.c (integrate_decl_tree): Don't use pushlevel,
	pushdecl, or poplevel to build up the new BLOCK tree.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.

From-SVN: r29453
1999-09-16 04:39:52 +00:00
Richard Henderson
fa51b01b55 emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT.
* emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT.
        Free the struct.
        (mark_emit_status): Renamed from mark_emit_state.
        * except.c (mark_eh_status): Renamed from mark_eh_state.
        Check not null before marking.
        (free_eh_status): New.
        * expr.c (mark_expr_status, free_expr_status): New.
        * function.c (free_machine_status): New.
        (free_after_parsing): New.
        (free_after_compilation): Move bits to free_after_parsing; call
        free_eh_status, free_expr_status; zero the marked members of the
        function state.
        (prepare_function_start): No can_garbage_collect.
        Call init_eh_for_function.
        (expand_dummy_function_end): Free up current_function state.
        (mark_function_status): Renamed from mark_function_state.
        (mark_function_chain): No can_garbage_collect.  Call mark_expr_status.
        * function.h (struct function): No can_garbage_collect.
        (free_machine_status, free_after_parsing): Declare.
        (free_eh_status, free_expr_status): Declare.
        * ggc.h (mark_expr_status): Declare.
        * stmt.c (free_stmt_status): Free the struct.
        (mark_stmt_status): Renamed from mark_stmt_state.
        (init_stmt): Don't call init_eh.
        (init_stmt_for_function): Don't call init_eh_for_function.
        * toplev.c (compile_file): Call init_eh.
        (rest_of_compilation): Free basic block info before ggc_collect.
        Call free_after_parsing; conditionally call free_after_compilation.
        * varasm.c (mark_varasm_status): Renamed from mark_varasm_state.
        Check not null before marking.

From-SVN: r29448
1999-09-15 18:12:25 -07:00
Mark Mitchell
1a4450c78f rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
* rtl.h (NOTE_BLOCK_NUMBER): Replace with ...
	(NOTE_BLOCK): New macro.
	(NOTE_BLOCK_LIVE_RANGE_BLOCK): Remove.
	* function.h (identify_blocks): CHange prototype.
	* function.c (identify_blocks): Simplify.
	(reorder_blocks): Likewise.
	* ggc-common.c (ggc_mark_rtx): Mark the BLOCK associated with a
	NOTE_INSN_BLOCK_{BEG,END}.
	* haifa-sched.c (sched_analyze): Don't put NOTE_BLOCK_NUMBER on
	the list of saved notes if the note isn't a
	NOTE_INSN_BLOCK_{BEG,END}.
	(move_insn1): Use NOTE_EH_HANDLER in comment, rather than
	NOTE_BLOCK_NUMBER.
	(reemit_notes): Adjust recreation of notes to reflect new saved
	note structure.
	* print-rtl.c (print_rtx): Print the address of the BLOCK when
	printing a block note.
	* stmt.c (block_vector): Remove.
	(find_loop_tree_blocks): Simplify.
	(unroll_block_trees): Likewise.

From-SVN: r29441
1999-09-15 23:05:05 +00:00
Bernd Schmidt
0d1416c6a2 Remove second arg from assign_parms
From-SVN: r29431
1999-09-15 10:07:22 +00:00
Richard Henderson
a995e389c4 Replace insn_foo with insn_data.foo.
From-SVN: r29358
1999-09-12 05:46:08 -07:00
Richard Henderson
3b71623bf3 function.c (assign_stack_local_1): Allocate from function->x_frame_offset, not frame_offset.
* function.c (assign_stack_local_1): Allocate from
        function->x_frame_offset, not frame_offset.

From-SVN: r29248
1999-09-09 16:04:12 -07:00
Mark Mitchell
0a8a198ceb function.h (free_after_compilation): Remove decl parameter.
* function.h (free_after_compilation): Remove decl parameter.
	(free_varasm_status0: Likewise.
	(free_emit_status): Likewise.
	(free_stmt_status): Likewise.
	(free_after_compilation): Likewise.
	(init_lang_status): New variable.
	(free_lang_status): Likewise.
	* emit-rtl.c (free_emit_status): Make decl parameter implicit.
	* function.c (init_lang_status): New variable.
	(free_lang_status): Likewise.
	(push_function_context_to): Don't set function::decl here.
	(free_after_copmilation): Make decl parameter implicit.  Call
	free_lang_status if defined.
	(prepare_function_start): Call init_lang_status if defined.
	(init_function_start): Set function::decl here.
	* profile.c (output_func_start_profiler): Don't call pushdecl
	until we've actually started the function.
	* stmt.c (free_stmt_status): Make decl parameter implicit.
	* toplev.c (rest_of_compilation): Don't pass decl to
	free_after_compilation.
	* varasm.c (free_varasm_status): Likewise.

From-SVN: r29239
1999-09-09 18:55:37 +00:00
Richard Henderson
76095e2f54 combine.c (SUBST): Break out to a real function do_SUBST.
* combine.c (SUBST): Break out to a real function do_SUBST.
        (SUBST_INT): Likewise.
        * gcse.c (free_pre_mem): Free `temp_bitmap'.
        (pre_insert): Free `inserted'.
        * loop.c (basic_induction_var): Always set `location'.

        * function.c (expand_function_end): Add initial_trampoline as a root.
        * rtl.h (init_varasm_once): Declare.
        * toplev.c (compile_file): Call it.
        * ggc-simple.c (ggc_mark_string_ptr): New.
        (ggc_add_string_root): New.
        (ggc_collect): Disable collection avoidance temporarily.
        * ggc.h (ggc_add_string_root): Declare.
        * except.c (create_rethrow_ref): Use ggc_alloc_string.
        * optabs.c (init_libfuncs): Likewise.
        * varasm.c (named_section): Use ggc_alloc_string.
        (make_function_rtl): Likewise.
        (make_decl_rtl): Likewise.
        (assemble_static_space): Likewise.
        (assemble_trampoline_template): Likewise.
        (output_constant_def): Likewise.
        (force_const_mem): Likewise.
        (mark_const_hash_entry): New.
        (mark_pool_sym_hash_table): New.
        (mark_varasm_state): Use it.
        (init_varasm_once): New.

        * expr.h (init_one_libfunc): Declare.
        * optabs.c (init_one_libfunc): New.
        (init_optabs): Use it.
        * config/gofast.h: Likewise.
        * config/sparc/sol2.h (INIT_SUBTARGET_OPTABS): Likewise.
        * config/sparc/sparc.h (INIT_TARGET_OPTABS): Likewise.

From-SVN: r29226
1999-09-09 00:07:41 -07:00
Mark Mitchell
21cd906efe emit-rtl.c (free_emit_status): Take decl as a parameter.
* emit-rtl.c (free_emit_status): Take decl as a parameter.
	(init_emit_once): Add more GC roots.
	* except.c (mark_func_eh_entry): New function.
	(mark_eh_node): Mark false_label and rethrow_label.
	(init_eh): Add more GC roots.
	* function.c (free_after_compilation): Take decl as a paramter.
	Call free_stmt_status.
	(mark_function_state): Don't assume x_parm_reg_stack_loc is
	non-NULL.
	* function.h (free_after_compilation): Change prototype.
	(free_varasm_status): Likewise.
	(free_emit_status): Likewise.
	(free_stmt_status): New function.
	* ggc-simple.c (rtx, vecs, trees, strings, bytes_alloced_since_gc):
	Remove, replacing with ...
	(ggc_status): New structure.
	(ggc_chain): New variable.
	(init_gcc): Define.
	(ggc_push_context): New function.
	(ggc_pop_context): Likewise.
	(ggc_alloc_rtx): Adjust for use of ggc_chain.
	(ggc_alloc_rtvec): Likewise.
	(ggc_alloc_tree): Likewise.
	(ggc_alloc_string): Likewise.
	(ggc_mark_rtx): Mark NOTE_SOURCE_FILE and NOTE_RANGE_INFO.
	(ggc_mark_tree): Give language-dependent code a chance to mark
	`x' nodes.
	(ggc_mark_tree_varray): Handle empty arrays.
	(ggc_collect): Adjust for use of ggc_chain.  Clear
	bytes_alloced_since_last_gc.
	* ggc.h (ggc_pop_context): New function.
	(ggc_push_context): Likewise.
	* print-tree.c (print_node): Don't print obstacks when GC'ing.
	* stmt.c (free_stmt_status): New function.
	(init_stmt_for_function): Clear last_expr_value.
	* toplev.c (rest_of_compilation): Always call free_after_compilation.
	Conditionalize call to ggc_collect.
	(main): Call init_ggc.
	* tree.c (push_obstacks): Do the push, even when GC'ing.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Liekwise.
	* varasm.c (free_varasm_status): Take decl as a parameter.

From-SVN: r29170
1999-09-07 15:20:58 +00:00
Bernd Schmidt
afe3d09019 Commit parts that were missing in Mark's last commit
From-SVN: r29164
1999-09-07 10:10:01 +00:00
Jeff Law
c5c7673583 Merge in gcc2-ss-010999
From-SVN: r29150
1999-09-06 23:49:18 -06:00
Richard Henderson
a3770a8130 Makefile.in (ggc-simple.o): Depend on varray.h.
* Makefile.in (ggc-simple.o): Depend on varray.h.
	(rtl.o): Depend on ggc.h.
	(genattrtab.o): Depend on ggc.h.
	(print-tree.o): Likewise.
	(fold-const.o): Likewise.
	* emit-rtl.c (sequence_element_free_list): Remove, and all references.
	(make_insn_raw): Don't cache insns when GC'ing.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(start_sequence): Use xmalloc to allocate the sequence_stack.
	(end_sequence): Add free to free it.
	(gen_sequence): Don't cache insns when GC'ing.
	(clear_emit_caches): Don't use sequence_element_free_list.
	(init_emit): Use xcalloc, not xmalloc+bzero.
	* fold-const.c (size_int_wide): Kill the cache, when GC'ing.
	* function.c (pop_function_context_from): Use free to free the
	fixup_var_refs_queue.
	(put_reg_into_stack): Allocate it with xmalloc.
	* genattrtab.c: Include ggc.h.
	(operate_exp): Don't use obstack_free when GC'ing.
	(simplify_cond): Likewise.
	(simplify_text_exp): Likewise.
	(optimize_attrs): Likewise.
	* gengentrtl.c (gendef): Use ggc_alloc_rtx to allocate RTL, when
	GC'ing.
	(gencode): Generate a #include for ggc.h.
	* ggc-callbacks.c (ggc_p): Define it to zero.
	* ggc-none.c (ggc_p): Likewise.
	* ggc-simple.c: Include varray.h.
	(ggc_mark_tree_varray): New function.
	(ggc_add_tree_varray_root): Likewise.
	(ggc_mark_tree_varray_ptr): Likewise.
	* ggc.h (ggc_p): Declare.
	(varray_head_tag): Likewise.
	(ggc_add_tree_varray_root): Declare.
	* print-tree.c (print_node): Don't check for TREE_PERMANENT
	inconsistencies when GC'ing.
	* rtl.c: Include ggc.h.
	(rtvec_alloc): Use ggc_alloc_rtvec when GC'ing.
	(rtx_alloc): Use ggc_alloc_rtx when GC'ing.
	(rtx_free): Don't call obstack_free when GC'ing.
	* toplev.c (rest_of_compilation): Call ggc_collect after every
	pass, if GC'ing.
	* tree.c (push_obstacks): Do nothing, if GC'ing.
	(pop_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(make_node): Use ggc_alloc_tree when GC'ing.
	(copy_node): Likewise.
	(get_identifier): Use ggc_alloc_string when GC'ing.
	(build_string): Likewise.
	(make_tree_vec): Use ggc_alloc_tree when GC'ing.
	(tree_cons): Likewise.
	(build1): Likewise.
	(type_hash_canon): Don't call obstack_free when GC'ing.

Co-Authored-By: Bernd Schmidt <bernds@cygnus.co.uk>
Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r29125
1999-09-05 16:08:20 +00:00
Richard Henderson
87ff9c8e4b Makefile.in (tree.o): Depend on ggc.h.
* Makefile.in (tree.o): Depend on ggc.h.
	(varasm.o): Likewise.
	(function.o): Likewise.
	(stmt.o): Likewise.
	(except.o): Likewise.
	(optabs.o): Likewise.
	(emit-rtl.o): Likewise.
	* emit-rtl.c: Include ggc.h.
	(sequence_element_free_list): Remove, and all references.
	(mark_sequence): New functions.
	(mark_emit_state): New function.
	* except.c: Include ggc.h.
	(mark_eh_node, mark_eh_stack, mark_eh_queue): New functions.
	(mark_tree_label_node): New functions.
	(mark_eh_state): New function.
	* function.c: Include ggc.h.
	(mark_temp_slot, mark_function_chain): New functions.
	(mark_function_state): New function.
	(init_function_once): New function.
	* function.h (init_function_once): New function.
	* ggc-callbacks.c (lang_mark_false_label_stack): New function.
	* ggc.h (label_node): Declare.
	(eh_status, emit_status, stmt_status, varasm_status): Likewise.
	(lang_mark_false_label_stack): New function.
	(mark_temp_slot): Remove declaration.
	(mark_function_chain): Likewise.
	(mark_eh_state): Adjust prototype.
	(mark_stmt_state, mark_emit_state, mark_varasm_state, mark_optab):
	Likewise.
	* optabs.c: Include ggc.h.
	(mark_optab): New function.
	(init_optabs): Add gc roots.
	* stmt.c: Include ggc.h.
	(mark_cond_nesting, mark_loop_nesting): New functions.
	(mark_block_nesting, mark_case_nesting, mark_goto_fixup): Likewise.
	(mark_stmt_state): New function.
	* toplev.c (compile_file): Call init_function_once.
	* tree.c: Include ggc.h.
	(type_hash): Move declaration earlier in file.
	(TYPE_HASH_SIZE, type_hash_table): Likewise.
	(init_obstacks): Add gc roots.
	(mark_type_hash): New function.
	* varasm.c: Include ggc.h.
	(mark_pool_constant): New function.
	(mark_varasm_state): New function.

Co-Authored-By: Bernd Schmidt <bernds@cygnus.co.uk>
Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r29119
1999-09-05 02:41:35 +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
Bernd Schmidt
36edd3cc1b Change memory mangement and constant pool handling for nested functions to match that of normal functions; add init_machine_status mechanism.
From-SVN: r29101
1999-09-04 13:09:56 +00:00
Bernd Schmidt
8c5666b4c1 function.h (struct function): Add new element LANGUAGE.
* function.h (struct function): Add new element LANGUAGE.
 	(save_lang_status): Declare new variable.
	(restore_lang_status): Likewise.
	* function.c (save_lang_status): Define.
	(restore_lang_status): Likewise.
	(push_function_context_to): Call language-specific save function.
	(pop_function_context_from): Call language-specific restore function.

From-SVN: r29095
1999-09-04 02:16:58 +00:00
Zack Weinberg
ef178af3a4 rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and bounds- check RTL accesses if --enable-checking.
1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com>

	* rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and
	bounds- check RTL accesses if --enable-checking.
	(RTVEC_ELT): Bounds check if --enable-checking.
	(XWINT, XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE,
	XBBDEF): Use RTL_CHECK1/RTL_CHECK2 as appropriate.
	(XVECEXP, XVECLEN): Define in terms of XVEC, RTVEC_ELT, and
	GET_NUM_ELEM.
	(X0WINT, X0INT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
	X0BBDEF, X0ADVFLAGS):  New macros for accessing '0' slots of RTXes.

	(ADDR_DIFF_VEC_FLAGS): Use X0ADVFLAGS.
	(NOTE_SOURCE_FILE): Use X0STR.
	(NOTE_BLOCK_NUMBER, NOTE_EH_HANDLER, LABEL_NUSES,
	MEM_ALIAS_SET): Use X0INT.
	(NOTE_RANGE_INFO, NOTE_LIVE_INFO, NOTE_BASIC_BLOCK,
	JUMP_LABEL, LABEL_REFS, LABEL_NEXTREF, CONTAINING_INSN):
	Use X0EXP.
	* real.h (CONST_DOUBLE_CHAIN): Use X0EXP.
	* rtl.c (copy_rtx, copy_most_rtx): Copy '0' slots with X0WINT.
	(rtl_check_failed_bounds, rtl_check_failed_type1,
	rtl_check_failed_type2, rtvec_check_failed_bounds): New
	functions.
	(fancy_abort): Fix comment.

	* cse.c (canon_hash): Read CONST_DOUBLE data slots with XWINT.
	(cse_insn): Decrement LABEL_NUSES for jump target before
	deleting jump insn.
	* emit-rtl.c (gen_rtx_CONST_DOUBLE): Use X0EXP for slot 1.
	* final.c (alter_subreg): Compute regno before changing x to
	REG; set REGNO(x) after changing it.
	* flow.c (count_basic_blocks): Use XWINT to inspect EH_REGION
	notes containing CONST_INTs.
	(delete_eh_regions): Use NOTE_EH_HANDLER.
	* function.c (put_reg_into_stack): Make reg a MEM before
	initializing it.
	(fixup_var_refs_insns):  Save REG_NOTES (insn) in case we
	delete insn.
	(gen_mem_addressof): Make reg a MEM before initializing it.
	* integrate.c (copy_rtx_and_substitute): Copy '0' slots with
	X0WINT.
	* local-alloc.c (update_equiv_regs): Zap REG_NOTES before
	deleting an insn, not after.
	(block_alloc): Only look at PATTERN(insn) if we have to, and
	only if it's format class 'i'.
	* loop.c (check_dbra_loop): Check bl->biv->add_val is a
	CONST_INT before using its INTVAL.
	* print-rtl.c (print_rtx): Use X0STR.
	* regmove.c (fixup_match_1): Don't look at PATTERN of
	non-class-'i' insn chain elements.
	* reload.c (loc_mentioned_in_p): Take address of
	in->fld[1].rtx directly.
	* reload1.c (reload): Change reg to a MEM before initializing
	it.
	* varasm.c (mark_constant_pool): Skip CONST_DOUBLES, which
	have no names.
	* config/i386/i386.md (decrement_and_branch_if_zero): Fix typo.

From-SVN: r29008
1999-08-31 19:39:10 +00:00
Andreas Schwab
010529e58b function.c (assign_stack_temp_for_type): Fix change of Mar 5 for the fact that ALIGN is measured in bits, not bytes.
* function.c (assign_stack_temp_for_type): Fix change of Mar 5 for
	the fact that ALIGN is measured in bits, not bytes.

From-SVN: r28926
1999-08-27 07:53:33 +00:00
Bernd Schmidt
bf6bb899e1 Fix more problems from GC diffs
From-SVN: r28820
1999-08-24 12:05:09 +00:00
Kaveh R. Ghazi
6f7d635c0e rtl.h (rtx_format): Constify a char*.
* rtl.h (rtx_format): Constify a char*.

	* rtl.c (rtx_format): Likewise.
	(copy_rtx, copy_most_rtx, read_rtx): Likewise.
	(init_rtl): Use accessor macro, not `rtx_format'.

	* alias.c (rtx_equal_for_memref_p, find_symbolic_term): Constify a
	char*.

	* caller-save.c (mark_referenced_regs): Likewise.

	* combine.c (subst, make_compound_operation, known_cond,
	gen_rtx_combine, update_table_tick, get_last_value_validate,
	use_crosses_set_p, mark_used_regs_combine, move_deaths): Likewise.

	* cse.c (rtx_cost, mention_regs, canon_hash, exp_equiv_p,
	refers_to_p, canon_reg, fold_rtx, cse_process_notes,
	count_reg_usage): Likewise.

	* emit-rtl.c (gen_rtx, copy_rtx_if_shared, reset_used_flags):
	Likewise.

	* final.c (leaf_renumber_regs_insn): Likewise.

	* flow.c (mark_used_regs, find_use_as_address, dump_flow_info,
	dump_edge_info, count_reg_references): Likewise.

	* function.c (fixup_var_refs_1, walk_fixup_memory_subreg,
	fixup_stack_1, purge_addressof_1, instantiate_virtual_regs_1):
	Likewise.

	* gcse.c (oprs_unchanged_p, hash_expr_1, expr_equiv_p,
	oprs_not_set_p, expr_killed_p, compute_transp, find_used_regs,
	add_label_notes): Likewise.

	* genattrtab.c (attr_rtx, attr_copy_rtx, encode_units_mask,
	clear_struct_flag, count_sub_rtxs, count_alternatives,
	compares_alternatives_p, contained_in_p, walk_attr_value,
	write_expr_attr_cache): Likewise.

	* genconfig.c (walk_insn_part): Likewise.

	* genemit.c (max_operand_1, gen_exp): Likewise.

	* genextract.c (walk_rtx): Likewise.

	* genflags.c (num_operands): Likewise.

	* genoutput.c (scan_operands): Likewise.

	* genpeep.c (match_rtx): Likewise.

	* genrecog.c (add_to_sequence): Likewise.

	* haifa-sched.c (may_trap_exp, sched_analyze_2, attach_deaths):
	Likewise.

	* integrate.c (save_constants, copy_for_inline,
	copy_rtx_and_substitute, subst_constants, restore_constants):
	Likewise.

	* jump.c  (mark_jump_label, invert_exp, redirect_exp,
	rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise.

	* local-alloc.c (contains_replace_regs, memref_referenced_p):
	Likewise.

	* loop.c (record_excess_regs, rtx_equal_for_loop_p,
	add_label_notes, replace_call_address, count_nonfixed_reads,
	invariant_p, find_single_use_in_loop, find_mem_givs,
	find_life_end, maybe_eliminate_biv_1, update_reg_last_use):
	Likewise.

	* print-rtl.c (reg_names, print_rtx): Likewise.

	* recog.c (validate_replace_rtx_1, find_single_use_1): Likewise.

	* reg-stack.c (stack_regs_mentioned_p, record_label_references,
	record_reg_life_pat, swap_rtx_condition, goto_block_pat,
	print_blocks): Likewise.

	* regclass.c (fix_register, record_address_regs,
	reg_scan_mark_refs): Likewise.

	* regmove.c (stable_but_for_p): Likewise.

	* reload.c (loc_mentioned_in_p, operands_match_p,
	find_reloads_toplevsubst_reg_equivs, find_reloads_address_1,
	copy_replacements, refers_to_regno_for_reload_p,
	refers_to_mem_for_reload_p, find_inc_amount, regno_clobbered_p,
	reload_when_needed_name, reg_class_names, debug_reload_to_stream):
	Likewise.

	* reload1.c (eliminate_regs, scan_paradoxical_subregs,
	delete_address_reloads_1, count_occurrences,
	reload_cse_mem_conflict_p, reload_combine_note_use,
	add_auto_inc_notes): Likewise.

	* resource.c (mark_referenced_resources, mark_set_resources):
	Likewise.

	* rtlanal.c (rtx_unstable_p, rtx_varies_p, rtx_addr_varies_p,
	reg_mentioned_p, regs_set_between_p, modified_between_p,
	modified_in_p, refers_to_regno_p, reg_overlap_mentioned_p,
	rtx_equal_p, volatile_insn_p, volatile_refs_p, side_effects_p,
	may_trap_p, inequality_comparisons_p, replace_rtx, replace_regs,
	jmp_uses_reg_or_mem, for_each_rtx, regno_use_in): Likewise.

	* sched.c (sched_analyze_2, attach_deaths): Likewise.

	* stupid.c (stupid_mark_refs): Likewise.

	* unroll.c (remap_split_bivs): Likewise.

	* varasm.c (mark_constants): Likewise.

	* a29k/a29k.c (uses_local_reg_p): Likewise.

	* alpha/alpha.c (summarize_insn): Likewise.

	* arm/arm.c (symbol_mentioned_p, label_mentioned_p,
	eliminate_lr2ip): Likewise.

	* arm/thumb.c (symbol_mentioned_p, label_mentioned_p): Likewise.

	* i386/i386.c (symbolic_reference_mentioned_p, copy_all_rtx,
	reg_mentioned_in_mem): Likewise.

	* ns32k/ns32k.c (global_symbolic_reference_mentioned_p,
	symbolic_reference_mentioned_p): Likewise.

	* romp/romp.c (unsigned_comparisons_p, hash_rtx): Likewise.

	* sh/sh.c (regs_used, mark_use): Likewise.

	* vax/vax.c (vax_rtx_cost): Likewise.

From-SVN: r28784
1999-08-20 23:05:25 +00:00
Zack Weinberg
8f985ec4c7 rtl.def (NOTE): Change format to "iuu0n".
1999-08-19 14:44 -0700  Zack Weinberg  <zack@bitmover.com>

	* rtl.def (NOTE): Change format to "iuu0n".
	(ADDR_DIFF_VEC): Change format to "eEee0".
	(ADDRESSOF): Change format to "eit".

	* rtl.h (rtvec): Make "elem" an array of rtx, not rtunion.
	(RTVEC_ELT): Change to match.
	(XVECEXP): Use XVEC and RTVEC_ELT.
	(INSN_UID, INSN_CODE, CODE_LABEL_NUMBER, NOTE_LINE_NUMBER,
	ADDRESSOF_REGNO, REGNO, SUBREG_WORD): Use XINT.
	(PREV_INSN, NEXT_INSN, PATTERN, REG_NOTES,
	CALL_INSN_FUNCTION_USAGE, SUBREG_REG, SET_SRC, SET_DEST,
	TRAP_CONDITION, TRAP_CODE): Use XEXP.
	(INTVAL): Use XWINT.
	(ADDRESSOF_DECL): Use XTREE.
	(SET_ADDRESSOF_DECL): Delete.
	(NOTE_DECL_NAME, NOTE_DECL_CODE, NOTE_DECL_RTL,
	NOTE_DECL_IDENTIFIER, NOTE_DECL_TYPE): Kill.  These have been
	ifdefed out since 2.6 at least.
	(gen_rtvec_vv): Delete prototype.

	* rtl.h (rtvec_alloc): rt->elem is now an array of rtx,
	not rtunion.
	(copy_most_rtx): Handle 't' format letter.
	* emit-rtl.c (gen_rtvec_v): rt_val->elem is an array of rtx.
	(gen_rtvec_vv): Delete function.  All callers changed to use
	gen_rtvec_v instead.
	* print-rtl.c (print_rtx): Move special casing of NOTEs to
	the '0' format letter.

	* function.c (gen_mem_addressof): Don't use
	SET_ADDRESSOF_DECL; provide `decl' to gen_rtx_ADDRESSOF
	instead.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	Copy 't' slots with XTREE.
	(subst_constants): Treat 't' slots like '[swi]' slots.
	* cse.c (canon_hash, exp_equiv_p): Treat 't' slots like	'0' slots.
	* jump.c (rtx_equal_for_thread_p): Likewise.
	* rtlanal.c (rtx_equal_p): Likewise.
	* stmt.c (expand_end_case): gen_rtx_ADDR_DIFF_VEC now takes
	only four arguments.
	* gengenrtl.c (type_from_format): Provide correct types for
	'b' and 't' slots.


	* tree.h [ENABLE_CHECKING] (TREE_CHECK, TREE_CLASS_CHECK):
	If a recent gcc is in use (always in stage2 and beyond), use
	statement expressions, so we don't make a function call unless
	the check fails.  Evaluate arguments exactly once.
	(CHAIN_CHECK, DO_CHECK, DO_CHECK1, TREE_CHECK1,
	TREE_CLASS_CHECK1, TYPE_CHECK1, DECL_CHECK1, CST_CHECK1):
	Delete.
	(CST_OR_CONSTRUCTOR_CHECK, EXPR_CHECK): Redefine such that
	they evaluate their arguments exactly once, irrespective of
	the compiler in use.

	* tree.c [ENABLE_CHECKING]: Define whichever set of functions
	is used by the currently-enabled check macros.  This is:
	(tree_check_failed, tree_class_check_failed): For gcc.
	(tree_check, tree_class_check, cst_or_constructor_check,
	expr_check): For other compilers.

	* gencheck.c: Do not define any *_CHECK1 macros.

From-SVN: r28769
1999-08-19 22:33:38 +00:00
Bernd Schmidt
49ad7cfa7a Include function.h in most files.
Include function.h in most files.  Remove most of the global variables
duplicated in function.h.  Add accessor macros for them which access
current_function.  Delete INLINE_HEADER rtx and related code, replace
with code using struct function to store inlining related data.

From-SVN: r28626
1999-08-09 14:00:21 +00:00
Richard Henderson
5c7675e906 function.c (init_function_start): Clear prologue & epilogue.
* function.c (init_function_start): Clear prologue & epilogue.
        (prologue_epilogue_contains): New function.
        * alias.c (init_alias_analysis): Use it.
        * rtl.h (prologue_epilogue_contains): Declare it.

From-SVN: r28585
1999-08-07 11:39:03 -07:00
Bernd Schmidt
3f1d071b7b Backport of GC branch patches part 2: kill stmt status saving.
From-SVN: r28374
1999-08-01 12:07:41 +00:00
Bernd Schmidt
b384405b34 Backport of GC branch patches part 1: kill eh status saving.
From-SVN: r28357
1999-07-31 12:46:53 +00:00
Jeff Law
1474e30354 [multiple changes]
Thu May 20 10:00:42 1999   Stephen L Moshier  <moshier@world.std.com>
        * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
Thu May 20 09:58:57 1999  Jan Hubicka <hubicka@freesoft.cz>
        * function.c (assign_stack_local): Align stack slot propertly.
        (assign_outer_stack_local): Likewise.

From-SVN: r27073
1999-05-20 16:22:34 -06:00
Vladimir Makarov
8b04083bec function.c (purge_addressof_replacements): Rename into purge_bitfield_addressof_replacements.
Wed May  5 16:26:13 1999  Vladimir Makarov  <vmakarov@tofu.to.cygnus.com>
	* function.c (purge_addressof_replacements): Rename into
 	purge_bitfield_addressof_replacements.
	(purge_addressof_replacements): New variable.
	(purge_addressof_1): Add code for changing addressof in notes for
 	field values which are extracted by usage MEM with narrower mode.
	(purge_addressof): Initialize purge_bitfield_addressof_replacements.

From-SVN: r26784
1999-05-05 13:30:51 +00:00
Mumit Khan
6a9c4aed1a function.c (put_var_into_stack): Change ptr_mode to Pmode in setup for chkr_set_right_libfunc calls.
* function.c (put_var_into_stack): Change ptr_mode to Pmode
        in setup for chkr_set_right_libfunc calls.
        (assign_params): Likewise.
        * expr.c (emit_push_insn): Change ptr_mode to Pmode in
        setup for chkr_copy_bitmap_libfunc and chkr_set_right_libfunc calls.
        (expand_assignment): Change ptr_mode to Pmode in
        setup for chkr_add_libfunc and chkr_copy_bitmap_libfunc.
        (store_expr): Change ptr_mode to Pmode in
        setup for chkr_add_libfunc and chkr_copy_bitmap_libfunc.
        (expand_expr): Change ptr_mode to Pmode in
        setup for chkr_check_addr_libfunc.
        (expand_builtin): Change ptr_mode to Pmode in
        setup for chkr_check_str_libfunc, chkr_copy_bitmap_libfunc and
        chkr_check_addr_libfunc.
        * calls.c (rtx_for_function_call): Change ptr_mode to Pmode in
        setup for chkr_check_exec_libfunc.
        (expand_call): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.
        (expand_call): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.
        (store_one_arg): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.

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

From-SVN: r26664
1999-04-26 16:51:09 -06:00
Toshiyasu Morita
07444f1d90 fold-const.c (make_range): Always initialize arg0 and arg1.
* fold-const.c (make_range): Always initialize arg0 and arg1.
        (fold): Simlarly for alt0 and alt1.
        * function.c (fixup_var_refs_insns): Initialize insn_list.
        (instantiate_virtual_regs_1): Initialize offset.
        * optabs.c (expand_binop): Initialize carry_in, carry_out, op0_xhigh
        and op1_xhigh.
        * stmt.c (expand_end_case): Initialize minval and maxval.

From-SVN: r26632
1999-04-25 18:15:54 -06:00
Richard Henderson
4433e33948 function.c (assign_parms/STACK_BYTES): Revert last change, and that of 19 Nov.
* function.c (assign_parms/STACK_BYTES): Revert last change,
        and that of 19 Nov.

From-SVN: r26624
1999-04-25 06:09:33 -07:00
Richard Henderson
fb5eebb932 calls.c (emit_call_1): New arg rounded_stack_size; update callers.
* calls.c (emit_call_1): New arg rounded_stack_size; update callers.
        Update pending_stack_adjust based on this value.
        (compute_argument_block_size): Include pending_stack_adjust in
        PREFERRED_STACK_BOUNDARY alignment.
        * function.c (assign_parms): Don't round to PREFERRED_STACK_BOUNDARY.

From-SVN: r26623
1999-04-25 05:31:52 -07:00
John Wehle
54ff41b717 output.h (current_function_is_leaf, [...]): Declare.
* output.h (current_function_is_leaf,
	current_function_uses_only_leaf_regs): Declare.
	* function.c (current_function_is_leaf,
	current_function_uses_only_leaf_regs): Define.
	(init_function_start): Initialize current_function_is_leaf
	and current_function_uses_only_leaf_regs.
	* final.c (leaf_function): Don't define.
	(final_start_function): Replace uses of leaf_function with
	current_function_uses_only_leaf_regs.
	* toplev.c (rest_of_compilation): Set current_function_is_leaf
	prior to invoking local register allocation.
	(rest_of_compilation): Replace uses of leaf_function with
	current_function_uses_only_leaf_regs.
	* dbxout.c (dbxout_symbol, dbxout_parms): Likewise.
	* dwarf2out.c (add_location_or_const_vaule_attribute): Likewise.
	* dwarfout.c (add_location_or_const_value_attribute): Likewise.
	* sdbout.c (sdbout_symbol): Likewise.
	* sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Likewise.
	* sparc.c (eligible_for_epilogue_delay, output_return,
	sparc_return_peephole_ok): Likewise.
	* sparc.md (leaf_function attribute, untyped_return): Likewise.
	* i386.c (ix86_compute_frame_size): Don't align the stack
	for leaf functions which don't allocate any stack slots.
	* tm.texi: Update documentation.

From-SVN: r26538
1999-04-18 13:09:37 +00:00
Andreas Schwab
0f11903b49 function.c (assign_parms): Undo change of June 9.
* function.c (assign_parms): Undo change of June 9.
Brought over from the gcc2 tree.

From-SVN: r26027
1999-03-27 16:08:37 -07:00
Mark Mitchell
fe9b4957b5 function.c: Include hash.h.
* function.c: Include hash.h.
	(insns_for_mem_entry): New struct.
	(put_reg_into_stack): Take an optional hash-table mapping MEMs to
	the INSNs that use them.
	(fixup_var_refs): Likewise.
	(put_addressof_into_stack): Likewise.
	(purge_addressof_1): Likewise.  Keep the hash-table up to date if
	we add new instructions.
	(fixup_var_refs_insns): Use it to avoid searching the entire
	instruction chain.
	(insns_for_mem_newfunc): New function.
	(insns_for_mem_comp): Likewise.
	(insns_for_mem_walk): Likewise.
	(compute_insns_for_mem): Likewise.
	(pop_function_context_from): Pass NULL for the hash-table.
	(put_var_into_stack): Likewise.
	(gen_mem_addressof): Likewise.
	(flush_addressof): Likewise.
	(purge_addressof): Call compute_insns_for_mem to pre-compute the
	hash table.
	* Makefile.in (OBJS): Include hash.o.
	(function.o): Depend on hash.h.
	* Makefile.in (OBJS): Don't mention hash.o.
	(OBJDEPS): Likewise.

From-SVN: r25922
1999-03-23 07:51:12 +00:00
Kaveh R. Ghazi
54ea1de9f3 Warning fixes:
* c-lex.c (yylex): Remove unused variable `bytes'.
        * flow.c (print_rtl_with_bb): Cast the return value of alloca.
        * function.c (assign_parms): Wrap variable `varargs_setup' in
        macro SETUP_INCOMING_VARARGS.
        (thread_prologue_and_epilogue_insns): Mark parameter `f' with
        ATTRIBUTE_UNUSED.
        * local-alloc.c (no_equiv): Likewise for parameter `store'.
        * sched.c (schedule_insns): Remove unused variables `insn' and `next'.
        * tlink.c (symbol_hash_newfunc, symbol_hash_lookup,
        file_hash_newfunc, file_hash_lookup, demangled_hash_newfunc,
        demangled_hash_lookup, symbol_push, symbol_pop, file_push,
        file_pop, tlink_init, tlink_execute, frob_extension,
        obstack_fgets, tfgets, pfgets, freadsym, read_repo_file,
        maybe_tweak, recompile_files, read_repo_files,
        demangle_new_symbols, scan_linker_output): Add static prototype.
        (symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc):
        Make the third argument a `hash_table_key'.
        * toplev.c (debug_start_source_file): Mark parameter `filename'
        with ATTRIBUTE_UNUSED.

From-SVN: r25871
1999-03-20 19:21:31 +00:00
Kaveh R. Ghazi
91813b2835 Warning fixes:
* calls.c (initialize_argument_information): Mark parameters
        `num_actuals' and `n_named_args' with ATTRIBUTE_UNUSED.
        * dbxout.c (dbxout_start_new_source_file): Likewise for parameter
        `filename'.
        (dbxout_finish): Likewise for parameters `file' and `filename'.
        (dbxout_prepare_symbol): Likewise for parameter `decl'.
        (dbxout_begin_function): Likewise.
        * explow.c (hard_function_value): Likewise for parameter `func'.
        * function.c (locate_and_pad_parm): Likewise for parameter `fndecl'.
        * expmed.c (expand_divmod): Omit unused argument to `expand_abs'.
        * expr.c (expand_expr): Likewise.
        * expr.h (expand_abs): Delete unused argument from prototype.
        * optabs.c (expand_abs): Remove unused parameter `unsignedp'.
        * sdbout.c (sdbout_init): Mark parameter `syms' with ATTRIBUTE_UNUSED.
        (sdbout_end_block): Likewise for parameter `n'.
        * toplev.c (debug_define): Likewise for parameters `lineno' and
        `buffer'.
        (debug_undef): Likewise.
        * varasm.c (named_section): Likewise for parameter 'reloc'.
        (assemble_external): Likewise for parameter `decl'.
        (assemble_alias): Likewise for parameter `target'.

From-SVN: r25858
1999-03-19 08:50:14 +00:00
Richard Henderson
5f98f7c481 function.c (fixup_var_refs_1): First try moving the expression directly into a register.
* function.c (fixup_var_refs_1): First try moving the expression
        directly into a register.  Don't separate cc0 setter and user.

From-SVN: r25821
1999-03-17 04:17:02 -08:00
John Wehle
6f67a30d15 function.c (assign_stack_temp_for_type): Abort if mode == Blkmode and align is less than BIGGEST_ALIGNMENT / BITS_PER_UNIT.
* function.c (assign_stack_temp_for_type): Abort
        if mode == Blkmode and align is less than
        BIGGEST_ALIGNMENT / BITS_PER_UNIT.
        (assign_stack_temp_for_type): Round the size parameter
        passed to assign_stack_local instead of size itself.
Bootstrapped on the PA and x86.

From-SVN: r25593
1999-03-04 18:19:25 -07:00
Jeffrey A Law
202d316417 function.c (current_function_has_computed_jump): Remove duplicate definition.
* function.c (current_function_has_computed_jump): Remove duplicate
        definition.

From-SVN: r25571
1999-03-03 16:13:41 -07:00
Richard Henderson
e881bb1b1b Flow rewrite to use basic block structures and edge lists.
From-SVN: r25450
1999-02-25 15:45:42 -08:00
J"orn Rennecke
9ab70a9bd7 sh.h (PASS_IN_REG_P): For TARGET_HITACHI, don't pass structures in registers.
* sh.h (PASS_IN_REG_P):  For TARGET_HITACHI, don't pass structures
	in registers.
	* expr.h (PRETEND_OUTGOING_VARARGS_NAMED): Provide default definition.
	* function.c (assign_parms): Honour PRETEND_OUTGOING_VARARGS_NAMED.
	* calls.c (expand_call): Likewise.
	* sh.c (sh_expand_prologue): For TARGET_HITACHI, don't push varargs /
	stdarg arguments.
	* sh.h (CPP_SPEC): Add -D__HITACHI__ for -mhitachi.
	(FUNCTION_ARG):  For TARGET_HITACHI, don't pass unnamed
	arguments in registers.
	(PRETEND_OUTGOING_VARARGS_NAMED): Define.
	* va-sh.h (entire file): If __HITACHI__ is defined, use sh[123]
	flavour varargs.

From-SVN: r25440
1999-02-25 14:02:32 +00:00
Mark Mitchell
a4c6502a66 cse.c (dump_class): New function.
* cse.c (dump_class): New function.
	(invalidate_memory): Fix typo in comment.
	* function.c (temp_slot): Add an alias set field.
	(assign_stack_temp): Only reuse slots if they will have the
	same alias set as before.
	(combine_temp_slots): Don't combine if -fstrict-aliasing;
	that's unsafe.
	* rtl.c (copy_rtx): Copy all the flags (in particular,
	MEM_SCALAR_P).

From-SVN: r25372
1999-02-22 13:34:33 +00:00
Jeffrey A Law
c87a0a3994 function.c (assign_stack_temp_for_type): Round SIZE before calling assign_stack_local for BLKmode slots.
* function.c (assign_stack_temp_for_type): Round SIZE before calling
        assign_stack_local for BLKmode slots.

From-SVN: r25290
1999-02-18 10:51:58 -07:00
John Wehle
d16790f212 function.c (assign_stack_temp_for_type): Clear best_p when an exact match is found.
* function.c (assign_stack_temp_for_type): Clear best_p
        when an exact match is found.
        * i386.h (LOCAL_ALIGNMENT): Define.
        * function.c (assign_stack_local, assign_outer_stack_local): Use it.
        (assign_stack_temp_for_type): New function based on assign_stack_temp.
        (assign_stack_temp): Call it.
        (assign_temp): Use assign_stack_temp_for_type, not assign_stack_temp.
        * stmt.c: Use assign_temp, not assign_stack_temp.
        * tm.texi: Document LOCAL_ALIGNMENT.

From-SVN: r25143
1999-02-10 16:10:43 -07:00
Richard Henderson
acd693d10c output.h (current_function_has_computed_jump): Rename from current_function_addresses_labels.
* output.h (current_function_has_computed_jump): Rename from
        current_function_addresses_labels.
        * function.h (struct function): Likewise for addresses_labels member.
        * rtl.h (FUNCTION_FLAGS_HAS_COMPUTED_JUMP): Likewise.
        * function.c (current_function_has_computed_jump): Likewise.
        Update all references.
        * integrate.c (function_cannot_inline_p):
        Test current_function_has_computed_jump instead of addresses_labels.
        (initialize_for_inline): Likewise save.
        (output_inline_function): Likewise restore.
        * expr.c (expand_expr): Don't reference addresses_labels variables.
        * stmt.c (expand_computed_goto): Set has_computed_jump.

From-SVN: r25100
1999-02-08 13:39:33 -08:00
Dave Brolley
d33c2956a4 function.c (fixup_var_refs): Scan catch_clauses too.
Fri Feb  5 17:08:01 1999  Dave Brolley  <brolley@cygnus.com>
        * function.c (fixup_var_refs): Scan catch_clauses too.

From-SVN: r25049
1999-02-05 09:12:38 -05:00
Dave Brolley
89e99eea80 emit-rtl.c (remove_insn): New function.
Fri Jan 29 18:26:07 1999  Dave Brolley  <brolley@cygnus.com>
	* emit-rtl.c (remove_insn): New function.
	* rtl.h (remove_insn): Add prototype.
	* function.c (reposition_prologue_and_epilogue_notes): Call remove_insn.

From-SVN: r24908
1999-01-29 10:25:17 -05:00
J"orn Rennecke
d91dfff4d1 function.c (purge_addressof_1): Handle case when a register has been used in a wider mode.
* function.c (purge_addressof_1): Handle case when a register
	has been used in a wider mode.

From-SVN: r24887
1999-01-27 11:35:30 +00:00
Jeffrey A Law
ab87f8c8d1 Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details.

From-SVN: r24879
1999-01-26 18:43:17 -07:00
Jim Wilson
ea0f9a859f Fix i960 build failure with unrecognizable insn.
* function.c (expand_function_end): Pass arg_pointer_save_area to
	validize_mem before using it.  Emit code into a sequence.

From-SVN: r24872
1999-01-26 05:34:42 -08:00
Dave Brolley
efd8cba0c8 function.c (assign_parms): Save and restore setting of TREE_USED (parm).
Wed Jan 20 18:15:08 1999  Dave Brolley  <brolley@cygnus.com>
	* function.c (assign_parms): Save and restore setting of
 	TREE_USED (parm).

From-SVN: r24789
1999-01-20 10:26:31 -05:00
Mark Mitchell
c6df88cbec rtl.h (rtx_def): Update documentation.
* rtl.h (rtx_def): Update documentation.
	(MEM_IN_STRUCT_P): Likewise.
	(MEM_SCALAR_P): New macro.
	(MEM_COPY_ATTRIBUTES): Likewise.
	(MEM_SET_IN_STRUCT_P): Likewise.
	* rtl.texi (MEM_SCALAR_P): Document.
	* alias.c (canon_rtx): Use MEM_COPY_ATTRIBUTES.
	(fixed_scalar_and_varying_struct_p): New function.  Use
	MEM_SCALAR_P rather than !MEM_IN_STRUCT_P.
	(aliases_everything_p): Likewise.
	(true_dependence): Use them.
	(write_dependence_p): New function, containing code common to
	anti_dependence and output_dependence.
	(anti_dependence): Use it.
	(output_dependence): Likewise.
	* calls.c (save_fixed_argument_area): Don't clear
	MEM_IN_STRUCT_P.
	(expand_call): Use MEM_SET_IN_STRUCT_P.
	(emit_library_call): Don't clear MEM_IN_STRUCT_P.
	(emit_library_call_value): Likewise.
	(store_one_arg): Use MEM_SET_IN_STRUCT_P.
	* combine.c (simplify_rtx): Use MEM_COPY_ATTRIBUTES.
	(make_extraction): Likewise.
	(simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Use MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword): Likewise.
	(change_address): Likewise.
	* explow.c (stabilize): Use MEM_COPY_ATTRIBUTES.
	* expr.c (protect_from_queue): Use MEM_COPY_ATTRIBUTES.
	(emit_group_store): Use MEM_SET_IN_STRUCT_P.
	(copy_blkmode_from_reg): Likewise.
	(store_field): Likewise.
	(expand_expr): Remove bogus guesswork setting MEM_IN_STRUCT_P
	heuristically.  Use MEM_SET_IN_STRUCT_P.
	(get_memory_rtx): Likewise.
	* final.c (alter_subreg): Use MEM_COPY_ATTRIBUTES.
	* function.c (assign_stack_temp): Clear MEM_SCALAR_P and
	MEM_ALIAS_SET on newly returned MEMs.
	(assign_temp): Use MEM_SET_IN_STRUCT_P.
	(put_reg_into_stack): Likewise.
	(fixup_var_refs1): Use MEM_COPY_ATTRIBUTES.
	(gen_mem_addressof): Use MEM_SET_IN_STRUCT_P.
	(assign_parms): Likewise.
	(expand_function): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Use MEM_COPY_ATTRIBUTES.
	* loop.c (note_addr_stored): Remove check on MEM_IN_STRUCT_P.
	* optabs.c (gen_move_insn): Use MEM_COPY_ATTRIBUTES.
	* print-rtl.c (print_rtx): Print /f for frame_related.
	* recog.c (validate_replace_rtx_1): Use MEM_COPY_ATTRIBUTES.
	* reload1.c (reload): Copy MEM_SCALAR_P as well.
	* stmt.c (expand_decl): Use MEM_SET_IN_STRUCT_P.
	(expand_anon_union_decl): Use MEM_COPY_ATTRIBUTES.
	* varasm.c (make_decl_rtl): Use MEM_SET_IN_STRUCT_P.
	(output_constant_def): Likewise.
	* a29k.c (a29k_set_memflags_1): Take scalar_p.
	Set MEM_SCALAR_P.
	(a29k_set_memflags): Use it.
	* alpha.c (get_aligned_mem): Use MEM_COPY_ATTRIBUTES.
	* c4x.c (c4x_scan_for_ld): Likewise.
	* h8300.c (fix_bit_operand): Likewise.
	* m88k.c (legitimize_address): Likewise.
	(block_move_loop): Likewise.
	(block_move_no_loop): Likewise.
	(block_move_sequence): Likewise.
	(m88k_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* mips/abi64.h (SETUP_INCOMING_VARARGS): Likewise.
	* rs6000.c (expand_block_move_insn): Use MEM_COPY_ATTRIBUTES.
	* sh.c (sh_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* arm.h (arm_gen_load_multiple): Take scalar_p.
	(arm_store_load_multiple): Likewise.
	* arm.c (arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	(arm_gen_movstrqi): Treat MEM_SCALAR_P like MEM_IN_STRUCT_P.

From-SVN: r24759
1999-01-19 10:32:33 +00:00
Richard Henderson
fbdfe39cf2 function.c (purge_addressof_1): If the note accesses a mem+addressof in a wider mode than any replacement...
* function.c (purge_addressof_1): If the note accesses a mem+addressof
        in a wider mode than any replacement, adjust the cached replacement.
        Cache trivial substitutions as well.

From-SVN: r24629
1999-01-11 16:24:25 -08:00
Richard Henderson
a5cad80034 Update copyrights.
From-SVN: r24624
1999-01-11 15:15:28 -08:00
Richard Henderson
3b413743e0 basic-block.h (basic_block_head): Rename to x_basic_block_head.
* basic-block.h (basic_block_head): Rename to x_basic_block_head.
        (basic_block_end): Rename to x_basic_block_end.
        (BLOCK_HEAD, BLOCK_END): Update.
        * caller-save.c: Change basic_block_head/end references to
        BLOCK_HEAD/END.
        * combine.c, flow.c, function.c, gcse.c, global.c: Likewise.
        * graph.c, haifa-sched.c, local-alloc.c, regclass.c: Likewise.
        * regmove.c, reload1.c, reorg.c, sched.c: Likewise.

From-SVN: r24622
1999-01-11 14:37:20 -08:00
Bernd Schmidt
ba716ac925 function.c (nonlocal_goto_handler_slots): Renamed from nonlocal_goto_handler_slot; now an EXPR_LIST chain.
* function.c (nonlocal_goto_handler_slots): Renamed from
        nonlocal_goto_handler_slot; now an EXPR_LIST chain.
        (push_function_context_to): Adjust for this change.
        (pop_function_context_from): Likewise.
        (init_function_start): Likewise.
        (expand_function_end): Likewise.
        * function.h (struct function): Likewise.
        * calls.c (expand_call): Likewise.
        * explow.c (allocate_dynamic_stack_space): Likewise.
        * expr.h (nonlocal_goto_handler_slots): Rename its declaration.
        * stmt.c (declare_nonlocal_label): Make a new handler slot for each
        label.
        (expand_goto): When doing a nonlocal goto, find corresponding handler
        slot for it.  Don't put the label address in the static chain register.
        (expand_end_bindings): Break out nonlocal goto handling code into
        three new functions.
        (expand_nl_handler_label, expand_nl_goto_receiver,
        expand_nl_goto_receivers): New static functions, broken out of
        expand_end_bindings and adapted to create one handler per nonlocal
        label.
        * function.c (delete_handlers): Delete insn if it references any of
        the nonlocal goto handler slots.
        * i960.md (nonlocal_goto): Comment out code that modifies
        static_chain_rtx.
        * sparc.md (nonlocal_goto): Likewise.
        (goto_handler_and_restore_v9): Comment out.
        (goto_handler_and_restore_v9_sp64): Comment out.

From-SVN: r23732
1998-11-20 00:37:42 -07:00
Bernd Schmidt
c795bca923 expr.c (STACK_BYTES): Delete unused macro.
* expr.c (STACK_BYTES): Delete unused macro.
	* calls.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	(expand_call): Likewise.
	(emit_library_call): Likewise.
	(emit_library_call_value): Likewise.
	* function.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	* explow.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(round_push): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	(allocate_dynamic_stack_space): Likewise.
	* tm.texi (PREFERRED_STACK_BOUNDARY): Document new macro.
	(STACK_BOUNDARY): Update description to reflect the new situation.

From-SVN: r23730
1998-11-19 15:47:55 -07:00
J"orn Rennecke
de0dd9345e function.c (purge_addressof_1): Unshare rtl created by store_bit_field.
* function.c (purge_addressof_1): Unshare rtl created by
	store_bit_field.

From-SVN: r23670
1998-11-15 20:43:19 +00:00
Richard Henderson
da9b1f9ca0 function.c (purge_addressof): Clear purge_addressof_replacements only after processing the whole function.
* function.c (purge_addressof): Clear purge_addressof_replacements
        only after processing the whole function.

From-SVN: r23554
1998-11-06 18:51:21 -08:00
Andreas Schwab
b5bd3b3c46 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
        * function.c (purge_addressof_1): Instead of aborting when a
        bitfield insertion as a replacement for (MEM (ADDRESSOF)) does not
        work just put the ADDRESSOF on stack.  Otherwise remember all such
        successfull replacements, so that exactly the same replacements
        can be made on the REG_NOTEs.  Remove the special case for CALL
        insns again.
        (purge_addressof_replacements): New variable.
        (purge_addressof): Clear it at end.

From-SVN: r23405
1998-10-28 08:46:46 -08:00
Jeff Law
18e765cbda [multiple changes]
1998-10-18 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
        * reorg.c (steal_delay_list_from_target) Check for insns that
        modify the condition codes and effect the direction of the jump
        in the sequence.
Sat Oct 17 13:09:09 1998  Graham  <grahams@rcp.co.uk>
        * function.c (purge_addressof_1): Replace call to
        emit_insns_before() with emit_insn_before().

From-SVN: r23189
1998-10-19 14:23:44 -06:00
Jeffrey A Law
6acdd0fd75 function.c (uninitialized_vars_warning): Do not warn for a VAR_DECL if it has a nonzero DECL_INITIAL.
* function.c (uninitialized_vars_warning): Do not warn for a VAR_DECL
        if it has a nonzero DECL_INITIAL.

From-SVN: r23164
1998-10-18 10:34:41 -06:00
Kaveh R. Ghazi
79c9824ecb Warning fixes:
* Makefile.in (flow.o): Depend on recog.h.
        * cpplib.h (directive_table): Add missing initializiers.
        (finclude): Change type of variable `bsize' to size_t.
        * cse.c (rtx_cost): Mark parameter `outer_code' with ATTRIBUTE_UNUSED.
        * dwarfout.h (dwarfout_label): Wrap prototype in macro RTX_CODE.
        * fix-header.c (lookup_std_proto): Cast the result of `strlen' to
        `int' when comparing against one.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (cpp_fatal): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
        * flow.c: Include recog.h.
        (sbitmap_copy): Cast arguments 1 & 2 of `bcopy' to (PTR).
        * function.c (thread_prologue_and_epilogue_insns): Mark parameter
        `f' with ATTRIBUTE_UNUSED.
        (reposition_prologue_and_epilogue_notes): Likewise.
        * genopinit.c (gen_insn): Cast argument of ctype functions to
        `unsigned char'.
        * haifa-sched.c: Include recog.h.
        (blockage_range): Cast result of UNIT_BLOCKED macro to (int) when
        comparing against one.
        * libgcc2.a (__throw): Revert ATTRIBUTE_UNUSED change for now.
        * mips-tfile.c (parse_end): Cast the argument of ctype function to
        `unsigned char'.
        (parse_ent): Likewise.
        (parse_input): Likewise.
        * optabs.c (init_libfuncs): Likewise.
        * protoize.c (find_rightmost_formals_list): Likewise.
        * recog.h (const_double_operand): Fix typo in prototype.
        * tlink.c (scan_linker_output): Cast the argument of ctype
        function to `unsigned char'.
        * toplev.c (check_lang_option): Cast the result of `strlen' to
        `int' when comparing against one.

From-SVN: r23155
1998-10-17 20:26:29 +00:00
Andreas Schwab
2fdc44405f function.c (purge_addressof_1): Force the first argument of a CALL insn to memory.
�
        * function.c (purge_addressof_1): Force the first argument of a
        CALL insn to memory.

From-SVN: r23071
1998-10-13 17:58:34 -06:00
Richard Henderson
470032d72e function.c (purge_addressof_1): Fix typo in inequality: do bitfield optimization for equal mode sizes.
* function.c (purge_addressof_1): Fix typo in inequality: do
        bitfield optimization for equal mode sizes.
        * expmed.c (store_bit_field): Don't take subregs of subregs in
        the movstrict case.  Tidy a potential problem in the multi-word case.
        (extract_bit_field): Likewise.

From-SVN: r23066
1998-10-13 16:06:47 -07:00
John Wehle
fdb8a883a4 flow.c: Update comment.
* flow.c: Update comment.
        (notice_stack_pointer_modification): New static function.
        (record_volatile_insns): Use it.
        (mark_regs_live_at_end): Mark the stack pointer as alive
        at the end of the function if current_function_sp_is_unchanging
        is set.
        (life_analysis_1): Set current_function_sp_is_unchanging.
        * function.c: Define it.
        (init_function_start): Initialize it.
        * output.h: Declare it.
        * reorg.c (fill_simple_delay_slots, dbr_schedule): Mark
        the stack pointer as alive at the end of the function if
        current_function_sp_is_unchanging is set.
        * i386.c (ix86_epilogue): Optimize the restoring
        of the stack pointer.

From-SVN: r23009
1998-10-12 04:06:49 -06:00
Ken Raeburn
7d384cc0b3 Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage attribute.
Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage
attribute.  Misc minor bugfixes and tests for it too.

From-SVN: r22983
1998-10-11 02:21:54 +00:00
Richard Henderson
d006aa54ba expmed.c (store_bit_field): Pun non-integral str_rtx modes.
* expmed.c (store_bit_field): Pun non-integral str_rtx modes.
        Take extra care for op0 now possibly being a subreg.
        (extract_bit_field): Likewise.
        * function.c (purge_addressof_1): Revert Oct 4 change.  Drop
        the reg to memory if there is no equal sized integral mode.
        * stor-layout.c (int_mode_for_mode): New function.
        * machmode.h: Prototype it.

From-SVN: r22962
1998-10-09 08:50:25 -07:00
David S. Miller
ca2636edcd function.c (purge_addressof_1): If trying to take a sub-word integral piece of a floating point mode...
* function.c (purge_addressof_1): If trying to take a sub-word
	integral piece of a floating point mode, put it on the stack.

From-SVN: r22804
1998-10-03 18:29:21 -07:00
David S. Miller
47401c4d4b function.c (purge_addressof_1): Do not perform endianness corrections on bitpos, who we call will do it for us.
* function.c (purge_addressof_1): Do not perform endianness
	corrections on bitpos, who we call will do it for us.

From-SVN: r22766
1998-10-02 13:17:50 -07:00
Richard Henderson
b8c08e043a Typo in last commit.
From-SVN: r22687
1998-09-30 11:04:51 -07:00
Richard Henderson
f7b6d10479 function.c (purge_addressof_1): Use bitfield manipulation routines to handle mem mode < reg mode.
* function.c (purge_addressof_1): Use bitfield manipulation
        routines to handle mem mode < reg mode.

From-SVN: r22686
1998-09-30 11:03:48 -07:00
Mark Mitchell
95ca22f405 function.c (gen_mem_addressof): If the address REG is REG_USERVAR_P make the new REG be so also.
* function.c (gen_mem_addressof): If the address REG is
	REG_USERVAR_P make the new REG be so also.
	* loop.c (scan_loop): Apply DeMorgan's laws and add documentation
	in an attempt to clarify slightly.

From-SVN: r22667
1998-09-30 10:10:02 +00:00
Richard Henderson
c93b03c2d8 reload1.c (emit_reload_insns): Accept a new arg for the bb.
* reload1.c (emit_reload_insns): Accept a new arg for the bb.  Use
        it to update bb boundaries.  Update caller.
        * function.c (reposition_prologue_and_epilogue_notes): Update
        bb boundaries wrt the moved note.

From-SVN: r22507
1998-09-20 16:29:09 -07:00
Jeffrey A Law
0d8e55d8cd combine.c (make_extraction): If no mode is specified for an operand of insv...
* combine.c (make_extraction): If no mode is specified for
        an operand of insv, extv, or extzv, default it to word_mode.
        (simplify_comparison): Similarly.
        * expmed.c (store_bit_field): Similarly.
        (extract_bit_field): Similarly.
        * function.c (fixup_var_regs_1): Similarly.
        * recog.c (validate_replace_rtx_1): Similarly.
        * mips.md (extv, extzv, insv expanders): Default modes for most
        operands.  Handle TARGET_64BIT.
        (movdi_uld, movdi_usd): New patterns.

From-SVN: r22439
1998-09-15 16:47:10 -06:00
Richard Henderson
710384268d tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.
* tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.  Kill.
	(BUILT_IN_FP, BUILT_IN_SP, BUILT_IN_SET_RETURN_ADDR_REG): Kill.
	(BUILT_IN_EH_STUB_OLD, BUILT_IN_EH_STUB, BUILT_IN_SET_EH_REGS): Kill.
	(BUILT_IN_EH_RETURN, BUILT_IN_DWARF_CFA): New.
	* c-decl.c (init_decl_processing): Update accordingly.
	* expr.c (expand_builtin): Likewise.
	* cp/decl.c (init_decl_processing): Likewise.
	* rtl.h (global_rtl): Add cfa entry.
	(virtual_cfa_rtx, VIRTUAL_CFA_REGNUM): New.
	(LAST_VIRTUAL_REGISTER): Update.
	* emit-rtl.c (global_rtl): Add cfa entry.
	(init_emit): Initialize it.
	* function.c (cfa_offset): New.
	(instantiate_virtual_regs): Initialize it.
	(instantiate_virtual_regs_1): Instantiate virtual_cfa_rtx.
	(expand_function_end): Call expand_eh_return.
	* tm.texi (ARG_POINTER_CFA_OFFSET): New.
	* except.c (current_function_eh_stub_label): Kill.
	(current_function_eh_old_stub_label): Likwise; update all references.
	(expand_builtin_set_return_addr_reg): Kill.
	(expand_builtin_eh_stub_old, expand_builtin_eh_stub): Kill.
	(expand_builtin_set_eh_regs): Kill.
	(eh_regs): Produce a third reg for the actual handler address.
	(eh_return_context, eh_return_stack_adjust): New.
	(eh_return_handler, eh_return_stub_label): New.
	(init_eh_for_function): Initialize them.
	(expand_builtin_eh_return, expand_eh_return): New.
	* except.h: Update prototypes.
	* flow.c (find_basic_blocks_1): Update references to the stub label.
	* function.h (struct function): Kill stub label elements.
	* libgcc2.c (in_reg_window): For REG_SAVED_REG, check that the
	register number is one that would be in the previous window.
	Provide a dummy definition for non-windowed targets.
	(get_reg_addr): New function.
	(get_reg, put_reg, copy_reg): Use it.
	(__throw): Rely on in_reg_window, not INCOMING_REGNO.  Kill stub
	generating code and use __builtin_eh_return.  Use __builtin_dwarf_cfa.
	* alpha.c (alpha_eh_epilogue_sp_ofs): New.
	(alpha_init_expanders): Initialize it.
	(alpha_expand_epilogue): Use it.
	* alpha.h: Declare it.
	* alpha.md (eh_epilogue): New.
	* m68h.h (ARG_POINTER_CFA_OFFSET): New.
	* sparc.h (ARG_POINTER_CFA_OFFSET): New.

From-SVN: r22436
1998-09-15 12:19:12 -07:00
Ken Raeburn
07417085a1 Function entry/exit profiling instrumentation:
* expr.h (profile_function_entry_libfunc, profile_function_exit_libfunc):
Declare new variables.
* optabs.c: Define them here.
(init_optabs): Initialize them.
* tree.h (struct tree_decl): New flag no_instrument_function_entry_exit.
(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT): New accessor macro.
* c-decl.c (duplicate_decls): Merge it.
* c-common.c (enum attrs): New value A_NO_INSTRUMENT_FUNCTION.
(init_attributes): Use it for "no_instrument_function".
(decl_attributes): Handle it, for functions that have not yet been compiled.
Set decl flag.
* flags.h (flag_instrument_function_entry_exit): Declare new variable.
* toplev.c (flag_instrument_function_entry_exit): Define it here.
(f_options): New option "instrument-functions".
* function.h (struct function): New field instrument_entry_exit.
* function.c (current_function_instrument_entry_exit): New variable.
(push_function_context_to, pop_function_context_from): Save and restore.
(expand_function_start): Set current_ variable, maybe emit return label and
entry profile call.
(expand_function_end): Maybe emit exit profile call.
Testsuite:
* gcc.c-torture/special/eeprof-1.c: New test, for -finstrument-functions.
* gcc.c-torture/special/special.exp: Run it.

From-SVN: r21495
1998-07-30 10:38:22 +00:00
Jim Wilson
07362cb321 Fix some sparc complex testsuite failures.
* function.c (fixup_var_refs_insns): Handle CLOBBER of a CONCAT.

From-SVN: r21251
1998-07-17 04:22:40 -07:00
Richard Henderson
aac5cc1620 expr.c (emit_group_load, [...]): Rewrite considering the size and alignment of the structure being manipulated.
* expr.c (emit_group_load, emit_group_store): Rewrite considering
        the size and alignment of the structure being manipulated.
        * expr.c, calls.c, function.c: Update all callers.
        * expr.h: Update prototypes.
        * cse.c (invalidate): Cope with parallels.

From-SVN: r20867
1998-06-30 22:10:51 -07:00
Jeff Law
9ec36da574 * Merge from gcc2 June 9, 1998 snapshot. See ChangeLog.13 for
details.

From-SVN: r20808
1998-06-29 15:40:49 -06:00
Mark Mitchell
41472af877 invoke.texi (-fstrict-aliasing): Document.
* invoke.texi (-fstrict-aliasing): Document.
	* rtl.texi (MEM_ALIAS_SET): Document.
	* flags.h (flag_strict_aliasing): Declare.
	* toplev.c (flag_strict_aliasing): Define.
	(f_options): Add -strict-aliasing.
	(main): Set flag_strict_aliasing if -O2 or higher.
	* tree.h (tree_type): Add alias_set field.
	(TYPE_ALIAS_SET): New macro.
	(TYPE_ALIAS_SET_KNOWN_P): Likewise.
	(get_alias_set): Declare.
	* tree.c (lang_get_alias_set): Define.
	(make_node): Initialize TYPE_ALIAS_SET.
	(get_alias_set): New function.
	* print-tree.c (print_node): Dump the alias set for a type.
	* c-tree.h (c_get_alias_set): Declare.
	* c-common.c (c_get_alias_set): New function.
	* c-decl.c (init_decl_processing): Set lang_get_alias_set.
	* expr.c (protect_from_queue): Propogage alias sets.
	(expand_assignment): Calculate alias set for new MEMs.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(put_reg_into_stack): Likewise.
	(gen_mem_addressof): Likewise.
	(assign_parms): Likewise.
	* stmt.c (expand_decl): Likewise.
	* varasm.c (make_decl_rtl): Eliminate redundant clearing of
	DECL_RTL.  Calculate alias set for new MEMs.
	* rtl.def (REG): Add dummy operand.
	(MEM): Add extra operand to store the MEM_ALIAS_SET.
	* rtl.h (MEM_ALIAS_SET): New macro.
	(gen_rtx_MEM): Declare.
	* emit-rtl.c (gen_rtx_MEM): New function.
	* gengenrtl.c (sepcial_rtx): Make MEMs special.
	* alias.c (CHECK_ALIAS_SETS_FOR_CONSISTENCY): New macro.
	(DIFFERENT_ALIAS_SETS_P): Likewise.
	(canon_rtx): Propogate the alias set to the new MEM.
	(true_dependence): Check the alias sets.
	(anti_dependence): Likewise.
	(output_dependence): Likewise.
	* explow.c (stabilize): Progoate alias sets.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* final.c (alter_subreg): Make sure not to leave MEM_IN_STRUCT_P
	in an unpredictable state.  Propogate alias sets.
	* reload1.c (reload): Clear MEM_ALIAS_SET for new MEMs about which
	we have no alias information.

From-SVN: r20719
1998-06-25 15:14:41 +00:00
Jason Merrill
aeb302bbec function.c: Define current_function_cannot_inline.
* function.c: Define current_function_cannot_inline.
	(push_function_context_to): Save it.
	(pop_function_context_from): Restore it.
	* function.h (struct function): Provide it a home.
	* output.h: Declare it.
	* integrate.c (function_cannot_inline_p): Check it.
	* decl.c (cp_finish_decl): Disable inlining of extern inlines
	with static variables.

From-SVN: r20332
1998-06-08 06:52:37 -04:00
Andreas Schwab
7a87758dfb m68k.h: Declare more functions used in macros.
* m68k.h: Declare more functions used in macros.
        (REG_CLASS_CONTENTS): Completely embrace initializer.
        * m68k.md (adddi3, subdi3): Add abort call to avoid warning
        about returning no value.
        * cse.c (find_best_addr): Declare p and found_better only if
        needed.
        * dbxout.c (dbxout_continue): Define only if DBX_CONTIN_LENGTH > 0.
        * dwarfout.c (string_length_attribute): #if 0 away.
        * function.c (expand_function_end): Define varible blktramp only
        if needed.
        * jump.c (find_insert_position): Define only if !HAVE_cc0.
        * loop.c (combine_givs_p): Define variable tem only if needed.
        * real.c: Comment out unused functions eabs, eround,
        e{24,53,64,113}toasc and eiinfin.

From-SVN: r19998
1998-05-23 17:14:57 -06:00
Per Bothner
b274104c47 function.c (init_function_start): Don't call emit_line_note if lineno is 0.
8
	* function.c (init_function_start):  Don't call emit_line_note if
	lineno is 0.  (Can happen when compiling Java .class files.)

From-SVN: r19930
1998-05-21 05:23:59 -07:00
Kaveh R. Ghazi
487a6e06ce Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
        (dbxout.o): Depend on toplev.h.
        ($(SCHED_PREFIX)sched.o): Likewise.
        ($(out_object_file)): Likewise for system.h and toplev.h.
        (cppmain.o): Depend on gansidecl.h.
        (cpplib.o): Likewise.
        (cpperror.o): Likewise.
        (cppexp.o): Likewise.
        (cpphash.o): Likewise.
        (cppalloc.o): Likewise.
        (fix-header.o): Depend on cpplib.h and cpphash.h.
        (scan-decls.o): Depend on gansidecl.h.
        * basic-block.h (free_regset_vector): Add prototype.
        * cccp.c (check_precompiled): Mark parameter `fname' with
        ATTRIBUTE_UNUSED.
        (do_assert): Likewise for `op' and `keyword'.
        (do_unassert): Likewise.
        (do_line): Likewise for `keyword'.
        (do_error): Likewise for `op' and `keyword'.
        (do_warning): Likewise.
        (do_ident): Likewise for `keyword'.
        (do_pragma): Likewise for `limit', `op' and `keyword'.
        (do_sccs): Likewise.
        (do_if): Likewise for `keyword'.
        (do_elif): Likewise.
        (do_else): Likewise.
        (do_endif): Likewise.
        * collect2.c (getenv): Remove redundant prototype.
        (collect_exit, collect_execute, dump_file): Likewise.
        (dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
        (dump_prefix_list): Hide prototype and definition.
        * sparc.c: Include toplev.h.
        (intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
        (symbolic_memory_operand): Likewise.
        (sp64_medium_pic_operand): Likewise.
        (data_segment_operand): Likewise.
        (text_segment_operand): Likewise.
        (splittable_symbolic_memory_operand): Likewise.
        (splittable_immediate_memory_operand): Likewise.
        (eq_or_neq): Likewise.
        (normal_comp_operator): Likewise.
        (noov_compare_op): Likewise.
        (v9_regcmp_op): Likewise.
        (v8plus_regcmp_op): Likewise.
        (extend_op): Likewise.
        (cc_arithop): Likewise.
        (cc_arithopn): Likewise.
        (small_int): Likewise.
        (uns_small_int): Likewise.
        (clobbered_register): Likewise.
        (legitimize_pic_address): Likewise.
        (delay_operand): Likewise.
        (sparc_builtin_saveregs): Remove unused variable `stdarg'.
        * sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
        sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
        * sparc.md (cmpdi_v8plus): Add abort for default case in switch.
        * cppalloc.c: Include gansidecl.h.
        * cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (v_cpp_message): New function.
        (cpp_message): Use it.  Also convert to variable arguments.
        (cpp_fatal): Likewise.
        (cpp_pfatal_with_name): Constify parameter `name'.
        * cppexp.c: Move gansidecl.h before cpplib.h.
        * cpphash.c: Likewise.
        * cpphash.h (hashf, delete_macro): Add prototypes.
        * cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
        cpplib.h.  Don't include errno.h.
        (update_path): Add arguments to prototype.
        (cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
        cpp_print_containing_files): Remove redundant prototypes.
        (cpp_hash_cleanup, add_import, append_include_chain,
        make_assertion, path_include, initialize_builtins,
        initialize_char_syntax, finclude, validate_else, comp_def_part,
        lookup_import, redundant_include_p, is_system_include,
        read_name_map, read_filename_string, open_include_file,
        check_macro_name, compare_defs, compare_token_lists,
        eval_if_expression, change_newlines): Add prototype arguments.
        (hashf): Remove redundant prototype.
        (read_token_list, free_token_list, safe_read, xcalloc, savestring,
        conditional_skip, skip_if_group): Add prototype arguments.
        (fdopen): Remove redundant prototype.
        (do_define, do_line, do_include, do_undef, do_error, do_pragma,
        do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
        do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
        (struct directive): Add prototype arguments to function pointer
        member `func'.
        (handle_directive): Add missing arguments to call to `do_line'.
        (do_include): Mark parameters `unused1' and `unused2' with
        ATTRIBUTE_UNUSED.
        (do_line): Likewise for `keyword' and new parameters `unused1' and
        `unused2'.
        (do_error): Likewise for `keyword'.
        (do_warning): Likewise.  Also add missing argument `pfile' in call
        to cpp_pedwarn.
        (do_once): Mark parameter `keyword', `unused1' and `unused2' with
        ATTRIBUTE_UNUSED.
        (do_ident): Likewise for `keyword', `buf' and `limit'.
        (do_pragma): Likewise.  Also add missing arguments in call to do_once.
        (do_sccs): Mark parameter `keyword', `buf' and `limit' with
        ATTRIBUTE_UNUSED.
        (do_if): Likewise for `keyword'.
        (do_elif): Likewise.
        (eval_if_expression): Likewise for `buf' and `length'.
        (do_xifdef): Likewise for `unused1' and `unused2'.
        (do_else): Likewise for `keyword', `buf' and `limit'.
        (do_endif): Likewise.
        (parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
        (cpp_handle_options): Remove superfluous NULL argument in call to
        cpp_fatal.
        (cpp_handle_options): Likewise.
        (do_assert): Mark parameter `keyword', `buf' and `limit' with
        ATTRIBUTE_UNUSED.
        (do_unassert): Likewise.
        (cpp_print_file_and_line): Add missing argument `pfile' in call to
        cpp_file_line_for_message.
        (v_cpp_error): New function.
        (cpp_error): Use it. Also accept variable arguments.
        (v_cpp_warning): New function.
        (cpp_warning): Use it. Also accept variable arguments.
        (cpp_pedwarn): Accept variable arguments.
        (v_cpp_error_with_line): New function
        (cpp_error_with_line): Use it.  Accept variable arguments.
        (v_cpp_warning_with_line): New function.
        (cpp_warning_with_line): Use it.  Accept variable arguments.  Hide
        definition.
        (cpp_pedwarn_with_line): Accept variable arguments.
        (cpp_pedwarn_with_file_and_line): Likewise.
        (cpp_error_from_errno): Constify parameter `name'.  Add missing
        argument `pfile' in call to cpp_file_line_for_message.
        (cpp_perror_with_name): Constify parameter `name'.
        * cpplib.h: Define PARAMS() in terms of PROTO().
        (fatal): Remove redundant prototype.
        (cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
        cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
        cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
        cpp_fatal, cpp_message, cpp_pfatal_with_name,
        cpp_file_line_for_message, cpp_print_containing_files): Add
        arguments to prototypes.
        (scan_decls, cpp_finish): Add prototypes.
        * cppmain.c: Include gansidecl.h.
        (main): Remove unused variable `i'.
        * dbxout.c: Include toplev.h.
        * demangle.h (do_tlink, collect_execute, collect_exit,
        collect_wait, dump_file, file_exists): Add prototype.
        * dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
        prototype and definition.
        (gen_unspecified_parameters_die): Don't assign results of call to
        function new_die() to unused variable `parm_die'.
        (dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
        (dwarf2out_define): Likewise for `lineno' and `buffer'.
        * dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
        prototype and definition.
        (output_die): Add prototype arguments to function pointer arg.
        (output_unspecified_parameters_die): Mark parameter `arg' with
        ATTRIBUTE_UNUSED.
        * except.c (output_exception_table_entry): Remove unused variable
        `eh_entry'.
        * except.h (expand_fixup_region_start, expand_fixup_region_end):
        Add prototypes.
        * expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
        * expr.h (do_jump_by_parts_equality_rtx): Add prototype.
        * fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
        before cpplib.h, include cpphash.h, remove redundant prototype of
        cpp_fatal, don't define `const', add a prototype for `fatal'.
        (cpp_file_line_for_message): Add missing arguments `pfile'.
        (v_cpp_message): New function.
        (cpp_message): Use it.
        (v_fatal): New function.
        (fatal, cpp_fatal): Use it.
        (cpp_pfatal_with_name): Constify parameter `name'.
        * flow.c (free_regset_vector): Remove redundant prototype.
        * function.c (round_down): Wrap prototype and definition with
        macro ARGS_GROW_DOWNWARD.
        (record_insns): Wrap prototype and definition with
        defined (HAVE_prologue) || defined (HAVE_epilogue).
        * gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
        * gen-protos.c: Include gansidecl.h.
        (hashf): Don't make it static, constify parameter `name'.
        * genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
        specifier %s in calls to function `fatal'.
        * haifa-sched.c: Include toplev.h.
        (find_rgns): Remove unused variable `j'.
        * integrate.c (note_modified_parmregs): Mark parameter `x' with
        ATTRIBUTE_UNUSED.
        (mark_stores): Likewise.
        * jump.c (mark_modified_reg): Likewise.
        * output.h (insn_current_reference_address): Add prototype.
        (eh_frame_section): Likewise.
        * print-rtl.c: Include bitmap.h.
        * reload1.c (reload): Wrap variables `note' and `next' in macro
        PRESERVE_DEATH_INFO_REGNO_P.
        (forget_old_reloads_1): Mark parameter `ignored' with
        ATTRIBUTE_UNUSED.
        (choose_reload_regs): Remove unused variable `in'.
        (reload_cse_invalidate_mem): Mark parameter `ignore' with
        ATTRIBUTE_UNUSED.
        (reload_cse_check_clobber): Likewise.
        * rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
        (mark_elimination): Fix typo in prototype.
        * scan-decls.c: Include gansidecl.h.
        * tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.

From-SVN: r19867
1998-05-19 08:42:48 +00:00
Jeffrey A Law
c7fdfd49ac function.c (identify_blocks): Fix thinko when setting the block number for NOTE_INSN_BLOCK_END.
* function.c (identify_blocks): Fix thinko when setting the
        block number for NOTE_INSN_BLOCK_END.

From-SVN: r19857
1998-05-18 15:39:43 -06:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
Robert Lipe
10f0ad3d49 toplev.h: New file.
Wed May  6 06:35:38 1998  Robert Lipe  <robertl@dgii.com>
        * toplev.h: New file.   Protypes for functions in toplev.c.
        * tree.h, rtl.h: Deleted protos for functions in toplev.c.
        * c-common.c, c-convert.c, c-decl.c, c-iterate.c, c-lex.c,
        c-parse.in, c-parse.y, c-pragma.c, c-typeck.c, calls.c,
        convert.c, dwarf2out.c, except.c, expr.c, final.c, fold-const.c,
        function.c, hash.c, profile.c, real.c, reg-stack.c, regclass.c,
        reload.c, reload1.c, stmt.c, stor-layout.c, tlink.c, tree.c,
        varasm.c: include it.

From-SVN: r19564
1998-05-06 04:54:01 +00: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
Jeffrey A Law
1ac4f79956 * function.c (assign_outer_stack_local): Make static and add prototype.
From-SVN: r19245
1998-04-16 16:08:49 -06:00
John Carr
7940255dd6 function.c (assign_parms): Initialize unsignedp before passing its pointer to promote_mode.
* function.c (assign_parms): Initialize unsignedp before passing
        its pointer to promote_mode.

From-SVN: r19215
1998-04-14 17:10:49 -06:00
Jeff Law
c86c3e99c4 Reinstall this patch from Jason.
8
        Reinstall this patch from Jason.
        * function.c (push_function_context_to): Don't call init_emit.

From-SVN: r19098
1998-04-10 15:30:30 -06:00
Jeff Law
e5e809f419 * Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12
for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18984
1998-04-04 06:32:39 -07:00
Jeffrey A Law
4e86caed7d fold-const.c (optimze_bit_field_compare): Initialize rnbitpos, rnbitsize, rnmode and rinner.
* fold-const.c optimze_bit_field_compare): Initialize rnbitpos,
        rnbitsize, rnmode and rinner.
        (make_range): Initialize type.
        (fold): Initialize arg0, arg1 and varop.
        * function.c (instantiate_virtual_regs_1): Initialize offset, regnoi
        and regnor.
        (expand_function_start): Initialize last_ptr.
        * stor-layout.c (layout_record): Initialize desired_align.
        (get_best_mode): Initialize unit.
        * tree.c (copy_node): Initialize length.

From-SVN: r18943
1998-04-01 16:35:51 -07:00