Daniel Berlin [Sat, 5 Apr 2003 20:13:20 +0000 (20:13 +0000)]
Makefile.in (df.o): Depend on alloc-pool.h, not obstack.h.
2003-04-05 Daniel Berlin <dberlin@dberlin.org>
* Makefile.in (df.o): Depend on alloc-pool.h, not obstack.h.
* df.c: Include alloc-pool.h, not obstack.h.
(df_ref_obstack): Remove.
(df_ref_pool, df_link_pool): Add pools.
(df_alloc): Init the new pools.
(df_free): And free them.
(df_link_create): Use the pools.
(df_ref_create): Ditto.
Joel Brobecker [Fri, 4 Apr 2003 22:34:52 +0000 (22:34 +0000)]
dbxout.c (dbxout_type): When printing type index of range type whose bounds are printed in octal format...
* dbxout.c (dbxout_type): When printing type index of range type
whose bounds are printed in octal format, print type of parent type if
it exists so enumerated type descriptions are not transformed
into unsigned types.
h8300-protos.h: Add a prototype for compute_a_shift_cc.
* config/h8300/h8300-protos.h: Add a prototype for
compute_a_shift_cc.
* config/h8300/h8300.c (shift_one): Update the CC status.
(shift_two): Likewise.
(output_a_shift_cc): Set cc_inline and cc_special.
(compute_a_shift_cc): New.
* config/h8300/h8300.md (shift insns): Use compute_a_shift_cc.
contrib.texi (Contributors): Add entries for Wolfgang Bangerth...
* doc/contrib.texi (Contributors): Add entries for Wolfgang
Bangerth, DJ Delorie, Christian Ehrhardt, Christopher Faylor,
Nathanael Nerode, Diego Novillo, Hartmut Penner, Volker Reichelt,
Danny Smith, and Ulrich Weigand.
Update Kriang Lerdsuwanakij and fix a typo in Janis Johnson's
entry.
Nick Clifton [Fri, 4 Apr 2003 10:38:50 +0000 (10:38 +0000)]
(expand_prologue): Only use register save helper functions if long calls are not being used.
(expand_prologue): Only use register save helper functions if long calls are
not being used.
Add a clobber of r11 id using long calls.
(prolog pattern): Do not use this pattern for v850e's.
Matt Austern [Thu, 3 Apr 2003 21:00:56 +0000 (21:00 +0000)]
cpppch.c (reset_ht): Remove.
* cpppch.c (reset_ht): Remove.
(cpp_read_state): Remove loop to reset hashtable identifiers.
* ggc-common.c (gt_pch_save): Add call to gt_pch_fixup_stringpool
after pch file is written.
* ggc.h (gt_pch_fixup_stringpool): Declare.
* stringpool.c (ht_copy_and_clear): Define. Callback. Copy
hashnode's value to another hashtable, then clear the original.
(saved_ident_hash): Define.
(gt_pch_save_stringpool): Create saved_ident_hash, use it to
store definitions in ident_hash, and clear ident_hash.
(gt_pch_fixup_stringpool): Define. Restore definitions from
saved_ident_hash to ident_hash, then destroy saved_ident_hash.
Eric Botcazou [Thu, 3 Apr 2003 19:20:06 +0000 (21:20 +0200)]
re PR rtl-optimization/10157 ([Sparc] internal compiler error: in extract_insn, at recog.c:2188)
PR optimization/10157
* gcse.c (can_copy_p): Rename it to can_copy.
(can_copy_init_p): Remove.
(compute_can_copy): Use can_copy instead of can_copy_p.
(can_copy_p): New exported function. Call compute_can_copy.
(hash_scan_set): Use it.
(gcse_main): Don't call compute_can_copy.
(bypass_jumps): Don't call compute_can_copy.
* rtl.h (can_copy_p): Declare.
* loop.c (scan_loop): Don't move the source and add a reg-to-reg
copy if the mode doesn't support copy operations.
Jason Merrill [Thu, 3 Apr 2003 18:23:04 +0000 (13:23 -0500)]
stor-layout.c (do_type_align): New fn, split out from...
* stor-layout.c (do_type_align): New fn, split out from...
(layout_decl): ...here. Do all alignment calculations for
FIELD_DECLs here.
(update_alignment_for_field): Not here.
(start_record_layout, debug_rli): Remove unpadded_align.
* tree.h (struct record_layout_info_s): Remove unpadded_align.
* c-decl.c (finish_enum): Don't set DECL_SIZE, DECL_ALIGN
or DECL_MODE on the CONST_DECLs.
(finish_struct): Don't mess with DECL_ALIGN.
* cp/class.c (build_vtable): Set DECL_ALIGN here.
(get_vtable_decl): Not here.
(layout_vtable_decl): Or here.
(create_vtable_ptr): Or here.
(layout_class_type): Or here.
(check_bitfield_decl): Don't mess with field alignment.
* ada/misc.c (gnat_adjust_rli): #if 0.
* mangle.c: Include gt-cp-mangle.h.
(subst_identifiers): Mark with GTY.
* config-lang.in (gtfiles): Add cp/mangle.c.
* Make-lang.in: (gt-cp-mangle.h): New rule.
(cp/mangle.o): Depends on gt-cp-mangle.h.
h8300-protos.h: Add a prototype for gtle_operator.
* config/h8300/h8300-protos.h: Add a prototype for
gtle_operator.
* config/h8300/h8300.c (gtle_operator): New.
* config/h8300/h8300.h (PREDICATE_CODES): Add an entry for
gtle_operator.
* config/h8300/h8300.md (a peephole2): Generalize to accept GT
and LE.
Jan Hubicka [Wed, 2 Apr 2003 22:19:30 +0000 (22:19 +0000)]
i386.c (override_options): Disable red zone by default on i386.
* i386.c (override_options): Disable red zone by default on i386.
(compute_frame_layout, ix86_force_to_memory, ix86_free_from_memory):
Do not test TARGET_64BIT together with TARGET_RED_ZONE
* config/rs6000/rs6000.c
(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Redefine the
macros.
(rs6000_issue_rate): Add case for 8540.
(rs6000_use_sched_lookahead): New function.
* config/rs6000/8540.md: Rename SIU units into SU ones and MIU
units into MU ones.
(ppc8540_branch, ppc8540_cr_logical): Add one cycle in the
reservation before retirement.
(ppc8540_multiply, ppc8540_load, ppc8540_store,
ppc8540_simple_float, ppc8540_vector_load, ppc8540_vector_store):
Remove additional cycle in the reservation before retirement.
(ppc8540_mfcr, ppc8540_mtcrf, ppc8540_mtjmpr): Add missed
reservation of ppc8540_issue.
except.c (convert_from_eh_region_ranges_1): Smash REG_EH_REGION notes for nothrow calls if flag_forced_unwind_exceptions.
* except.c (convert_from_eh_region_ranges_1): Smash REG_EH_REGION
notes for nothrow calls if flag_forced_unwind_exceptions.
(build_post_landing_pads): Mind flag_forced_unwind_exceptions.
(sjlj_find_directly_reachable_regions): Likewise.
(reachable_handlers): Likewise.
(can_throw_external): Likewise.
(collect_one_action_chain): Record cleanups after catch-all and
must-not-throw if flag_forced_unwind_exceptions.
* flags.h (flag_forced_unwind_exceptions): Declare.
* toplev.c (flag_forced_unwind_exceptions): New.
(lang_independent_options): Add it.
* doc/invoke.text: Add it.
David Mosberger [Tue, 1 Apr 2003 23:29:35 +0000 (23:29 +0000)]
crti.asm: Clean up trailing whitespace.
* config/ia64/crti.asm: Clean up trailing whitespace.
Remove trailing hashes (#) from identifiers.
* config/ia64/crtn.asm: Ditto.
* config/ia64/crtend.asm: Remove trailing hashes (#) from
identifiers.
(__do_global_ctors_aux): Align to 32-byte boundary. Add unwind
directives. Drop explicit bundling---it just makes the code
harder to read. Don't save/restore gp needlessly.
* config/ia64/crtbegin.asm: Remove trailing hashes (#) from
identifiers (they're only needed if the identifier would clash
with a register name otherwise).
(__do_global_dtors_aux): Align to 32-byte boundary. Add unwind
directives. Drop explicit bundling---it just makes the code
harder to read.
(__do_jv_register_classes): Ditto.
(.fini_array): Remove "progbits" (newer
assemblers don't like wrong section-types).
(.init_array): Ditto.
Roger Sayle [Tue, 1 Apr 2003 22:32:37 +0000 (22:32 +0000)]
re PR fortran/9974 (Test g77.f-torture/noncompile/check0.f fails)
PR fortran/9974
* gcse.c (reg_killed_on_egde): New function to test whether the
given reg is overwritten by any instruction queued on an edge.
(bypass_block): Ignore substitutions killed on incoming edges.
Don't bypass outgoing edges that have queued instructions.
* gcc.c-torture/execute/20030401-1.c: New test case.
* real.h (EXP_BITS): Make room for...
(struct real_value): ... added canonical bit.
(struct real_format): Added pnan.
(mips_single_format, mips_double_format, mips_extended_format,
mips_quad_format): New.
* real.c: Copy p to pnan in all formats.
(get_canonical_qnan, get_canonical_snan): Set canonical bit.
(real_nan): Use pnan to compute significand's shift.
(real_identical): Disregard significand in canonical
NaNs.
(real_hash): Likewise. Take signalling into account.
(encode_ieee_single, encode_ieee_double, encode_ieee_quad):
Disregard significand bits in canonical NaNs. Set all bits of
canonical NaN if !qnan_msb_set.
(encode_ibm_extended, decode_ibm_extended): Likewise. Use
qnan_msb_set to tell the base double format.
(ibm_extended_format): Use 53 as pnan.
(mips_single_format, mips_double_format, mips_extended_format,
mips_quad_format): Copied from the corresponding ieee/ibm
formats, with qnan_msb_set false.
* config/mips/iris6.h (MIPS_TFMODE_FORMAT): Use mips_extended_format.
* config/mips/linux64.h (MIPS_TFMODE_FORMAT): Use mips_quad_format.
* config/mips/mips.c (override_options): Use mips_single_format
and mips_double_format. Default TFmode to mips_quad_format.
* config/mips/t-linux64 (tp-bit.c): Define QUIET_NAN_NEGATED.
* config/mips/t-irix6: Likewise.
* config/mips/t-mips (fp-bit.c, dp-bit.c): Likewise.
* config/fp-bit.c (pack_d, unpack_d): Obey it.
Andrew Pinski [Tue, 1 Apr 2003 20:37:00 +0000 (20:37 +0000)]
config-lang.in (gtfiles): add \$(srcdir)/cp/name-lookup.c after \$(srcdir)/cp/name-lookup.h.
2003-04-01 Andrew Pinski <pinskia@physics.uc.edu>
* config-lang.in (gtfiles): add \$(srcdir)/cp/name-lookup.c
after \$(srcdir)/cp/name-lookup.h.
* name-lookup.c: (cxx_binding_make): Use ggc_alloc_clearedinstead
of ggc_alloc. Include gt-cp-name-lookup.h at the end of the file.
* Make-lang.in: (gt-cp-name-lookup.h): is generated by the gtype.
(cp/name-lookup.o): depends on gt-cp-name-lookup.h.
* gcse.c (struct ls_expr): Added pattern_regs field.
(ldst_entry): Initialize it.
(extract_mentioned_regs, extract_mentioned_regs_helper): New.
(store_ops_ok): Use regs precomputed by them.
(find_loads, store_killed_in_insn, load_kills_store): Change return
type to bool.
(store_killed_before, store_killed_after): Take position of register
set in account.
(reg_set_info): Store position of the setter.
(gcse_main): Enable store motion.
(mems_conflict_for_gcse_p): Enable load motion of non-symbol mems.
(pre_insert_copy_insn, update_ld_motion_stores, insert_store): Prevent rtl
sharing.
(simple_mem): Enable store motion of non-symbol mems.
(regvec): Type changed.
(LAST_AVAIL_CHECK_FAILURE): New.
(compute_store_table_current_insn): New.
(build_store_vectors): Computation of availability and anticipatability
moved ...
(compute_store_table, find_moveable_store): ... here.
(delete_store): Remove senseless comment.
(store_motion): Reorganize.
David Edelsohn [Tue, 1 Apr 2003 18:05:46 +0000 (18:05 +0000)]
{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md, [...]: Change mult_compare to imul_compare.
* config/rs6000/{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md,
power4.md,rios1.md,rios2.md,rs64.md}: Change mult_compare to
imul_compare. Add lmul_compare.
* config/rs6000/power4.md: Bump some latencies. Model extra cycle
in second pair of dispatch slots. Model stores more accurately.
Tweak multiply model. Add bypasses for CR instructions dependent
on complicated compares.
* config/rs6000/rs6000.md (mulsi3): Name imul_compare patterns.
(muldi3): Add lmul_compare patterns.
* config/rs6000/rs6000.c (rs6000_variable_issue): Move FPLOAD_UX
and FPSTORE_UX to split instructions and add COMPARE,
DELAYED_COMPARE, IMUL_COMPARE, LMUL_COMPARE, IDIV, LDIV.
(rs6000_adjust_cost): Add IMUL_COMPARE and LMUL_COMPARE.
(rs6000_rtx_costs): Separate POWER4 multiply case.
* config/rs6000/rs6000-protos.h: Add prototype for
easy_vector_constant, emit_easy_vector_insn.
* config/rs6000/altivec.md (xorv8hi3): New.
(xorv16qi3): New.
Remove all _const0 patterns.
(movv4si_internal): Rewrite to use code. Add vector constant to
vector alternative. Add splitter.
(movv8hi_internal): Same.
(movv16qi_internal): Same.
(movv4sf_internal): Same.
Change the unspecs for vspltis* to use constants.
* config/rs6000/spe.md ("xorv4hi3"): New.
("spe_evxor"): Rename to xorv2si3.
("xorv1di3"): New.
Remove all _const0 patterns.
(movv2si_internal): Rewrite to use code. Add vector constant to
alternatives. Add splitter.
(movv4hi_internal): Add vector constant to alternatives.
(movv1di_internal): Same.
(movv2sf_internal): Same.
Mark Mitchell [Tue, 1 Apr 2003 07:35:11 +0000 (07:35 +0000)]
re PR middle-end/9936 (ICE with local function and variable-length 2d array)
PR c/9936
* c-decl.c (grokdeclarator): Clear SAVE_EXPR_CONTEXT for
variably-sized arrays in parameters.
(set_save_expr_context): New function.
(c_expand_body): Use it, via walk_tree.
Stephane Carrez [Mon, 31 Mar 2003 20:28:40 +0000 (22:28 +0200)]
m68hc11.c (expand_prologue): For an interrupt handler save the soft registers after the frame pointer so...
* config/m68hc11/m68hc11.c (expand_prologue): For an interrupt handler
save the soft registers after the frame pointer so that gdb can unwind
the frame more easily.
(expand_epilogue): Likewise in opposite order; allow to use X register
as scratch if the return value is by reference.
Matt Austern [Mon, 31 Mar 2003 20:02:40 +0000 (20:02 +0000)]
cpppch.c (struct cpp_savedstate): Add defs and n_defs members.
* cpppch.c (struct cpp_savedstate): Add defs and n_defs members.
(count_defs): Keep track of number of defs as well as total size.
(write_defs): Put every definition in cpp_savedstate's defs array.
(comp_hashnode): Define. Comparison function for qsort.
(cpp_write_pch_deps): Sort definitions before writing them.
(struct ht_node_list): Define. Like cpp_savedstate but simpler.
(collect_ht_nodes): Define.
(cpp_valid_state): When verifying that undefined identifiers in
the pch file are still undefined, read a sorted list of undefined
identifiers, collect all defined identifiers into a sorted list,
and walk through both lists to make sure there's no match.