Gerald Pfeifer [Thu, 14 Oct 1999 16:41:27 +0000 (16:41 +0000)]
invoke.texi: Label -Wbad-function-cast...
* invoke.texi: Label -Wbad-function-cast, -Wmissing-prototypes,
-Wnested-externs, -Wstrict-prototypes, and -Wtraditional as C only
options. Also add a new item "C-only Warning Options" to the
option summary.
Stephane Carrez [Thu, 14 Oct 1999 10:21:27 +0000 (12:21 +0200)]
stor-layout.c (layout_union): Use HOST_WIDE_INT for const_size...
* stor-layout.c (layout_union): Use HOST_WIDE_INT for const_size;
check for member bit-size overflow and use var_size if it occurs.
(layout_record): Use bitsize_int() to define the type size in bits.
Likewise for computation and assignment to DECL_FIELD_BITPOS.
(layout_decl): Likewise when assigning to DECL_SIZE.
* genrecog.c (special_mode_pred_table): New.
(NUM_SPECIAL_MODE_PREDS): New.
(find_operand): New.
(validate_pattern): New argument `insn'. Warn for assignment to
any predicate accepting non-lvalues. Conditionaly warn for
match_operand without a mode. Try much harder to match source
and destination modes on a set.
* tm.texi (SPECIAL_MODE_PREDICATES): Document.
genrecog.c (maybe_both_true_2): Don't compare modes of two DT_pred tests.
* genrecog.c (maybe_both_true_2): Don't compare modes of
two DT_pred tests.
(process_tree): Elide peephole2_insns. Invoke simplify_tests
after find_afterward.
(debug_decision_1): Dump next and afterward codes.
Co-Authored-By: Jim Wilson <wilson@cygnus.com>
From-SVN: r29958
* genrecog.c (decision_test.u.insn): Add `lineno'.
(pattern_lineno, error_count): New variables.
(message_with_line): New.
(add_to_sequence): Break out checking code to ...
(validate_pattern): ... here. Detect SET_DEST matching CONST_INT.
(merge_insn): Use message_with_line.
(make_insn_sequence): Use validate_pattern. Record insn lineno.
(main): Set read_rtx_filename, pattern_lineno. Exit early on error.
Jim Wilson [Wed, 13 Oct 1999 22:23:51 +0000 (22:23 +0000)]
Fix errors from Jan 19 change, found by comparing Cygnus sources with FSF sources.
Fix errors from Jan 19 change, found by comparing Cygnus sources with FSF
sources.
* config/rs6000/sysv4.h (CC1_SPEC): Fix errors from Jan 19 change.
Add !endian checks. Change %{...} to %(...).
* i386.md (*addsi3_cc): Renamed from addcsi3.
(*addsi3_carry): Renamed from addxsi3.
(*subsi3_cc): Renamed from subcsi3.
(*subsi3_carry): Renamed from subxsi3.
(*xorqi_cc_1): Renamed from xorcqi_1.
(xorqi_cc_ext_1): Renamed from xorcqi_ext_1.
* i386.c (ix86_expand_fp_compare): Update for xorqi_cc_ext_1.
* jcf-write.c: (RELOCATION_VALUE_0): New macro.
(RELOCATION_VALUE_1): Likewise.
(emit_iinc, emit_reloc, push_constant1, push_constant2,
push_in_const, push_long_const): Prototyped.
(push_constant1): Argument `index' is of type HOST_WIDE_INT.
(push_constant2): Likewise.
(push_int_const): Cast find_constant1's integer arguments to `jword'.
(find_constant_wide): Cast find_constant2's integer arguments to
`jword'.
(find_constant_index): Cast find_constant2's and find_constant2's
integer arguments to `jword'.
(emit_pop): Argument `value' is of type HOST_WIDE_INT.
(emit_switch_reloc): Use RELOCATION_VALUE_0.
(emit_if): Use RELOCATION_VALUE_1.
(emit_goto): Likewise.
(emit_jsr): Likewise.
(generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
argument to push_long_const to HOST_WIDE_INT.
Jonathan Larmour [Tue, 12 Oct 1999 16:47:08 +0000 (16:47 +0000)]
eabi-ctors.c (__do_global_ctors): Run through __CTOR_LIST__ in opposite order...
* config/rs6000/eabi-ctors.c (__do_global_ctors): Run through
__CTOR_LIST__ in opposite order, which is the correct order for sorted
constructors.
(__do_global_dtors): similarly for __DTOR_LIST__.
Geoff Keating [Mon, 11 Oct 1999 03:35:14 +0000 (03:35 +0000)]
mips.c (mips_build_va_list): Correct TREE_CHAIN setting when hard-float.
* config/mips/mips.c (mips_build_va_list): Correct
TREE_CHAIN setting when hard-float.
(mips_va_start): Use corrected setting.
(mips_va_arg): Likewise. Also pass a tree to build of
POSTINCREMENT_EXPR rather than a naked 'int'.
Kaveh R. Ghazi [Sun, 10 Oct 1999 13:02:41 +0000 (13:02 +0000)]
ansidecl.h (HAVE_GCC_VERSION): New macro.
include:
* ansidecl.h (HAVE_GCC_VERSION): New macro. Use instead of
explicitly testing __GNUC__ and __GNUC_MINOR__.
(ATTRIBUTE_PRINTF): Use `__format__', not `format'.
gcc:
* cppinit.c: Use HAVE_GCC_VERSION instead of explicitly testing
__GNUC__ and __GNUC_MINOR__.
* gansidecl.h: Likewise.
* rtl.c: Likewise.
* rtl.h: Likewise.
* toplev.h: Likewise.
* tree.c: Likewise.
* tree.h: Likewise.
* varray.c: Likewise.
* varray.h: Likewise.
cp:
* cp-tree.h: Use HAVE_GCC_VERSION instead of explicitly testing
__GNUC__ and __GNUC_MINOR__.
f:
* proj.h: Use HAVE_GCC_VERSION instead of explicitly testing
__GNUC__ and __GNUC_MINOR__. Don't define BUILT_WITH_270.
Define macro UNUSED in terms of ATTRIBUTE_UNUSED.
Jeffrey A Law [Sun, 10 Oct 1999 05:30:28 +0000 (05:30 +0000)]
gcse.c (gcse_main): Avoid global optimizations if we have a large number of basic blocks and the...
* gcse.c (gcse_main): Avoid global optimizations if we have a
large number of basic blocks and the ratio of edges to blocks
is high.
(delete_null_pointer_checks): Likewise.
Mark Mitchell [Sat, 9 Oct 1999 21:06:03 +0000 (21:06 +0000)]
cp-tree.h (make_rtl_for_local_static): New function.
* cp-tree.h (make_rtl_for_local_static): New function.
* decl.c (make_rtl_for_nonlocal_decl): Move code to create RTL for
local statics ...
(make_rtl_for_local_static): Here.
* semantics.c (expand_stmt): Use make_rtl_for_local_static.
* Makefile.in (flow.o): Depend on TREE_H.
* basic-block.h (REG_SET_EQUAL_P): New.
(XOR_REG_SET): New.
(n_edges): Declare.
(free_regset_vector): Remove declaration.
(flow_delete_insn_chain): Declare.
(enum update_life_extent): New.
(update_life_info, count_or_remove_death_notes): Declare.
* combine.c (distribute_notes) [REG_DEAD]: Stop search at bb->head.
Verify register live at bb->global_live_at_start before adding USE.
* flow.c (HAVE_epilogue, HAVE_prologue): Provide default.
(CLEAN_ALLOCA): New.
(n_edges): New.
(PROP_*): New flags.
(find_basic_blocks_1): Use alloc_EXPR_LIST.
(clear_edges): Zero n_edges.
(make_edge): Increment n_edges.
(split_edge): Don't allocate bb->local_set. Increment n_edges.
(flow_delete_insn_chain): Export.
(delete_block): Decrement n_edges.
(merge_blocks_nomove): Likewise.
(life_analysis): Give life_analysis_1 PROP flags.
(verify_wide_reg_1, verify_wide_reg): New.
(verify_local_live_at_start): New.
(update_life_info): Rewrite to call into propogate_block.
(mark_reg): New.
(mark_regs_live_at_end): After reload, if epilogue as rtl,
always mark stack pointer. Conditionally mark PIC register.
After reload, mark call-saved registers, return regsiters.
(life_analysis_1): Accept PROP flags not remove_dead_code.
Call mark_regs_live_at_end before zeroing regs_ever_live.
Use calculate_global_regs_live. Copy global_live_at_end before
calling final propagate_block. Zero reg_next_use on exit.
(calculate_global_regs_live): New.
(allocate_bb_life_data): Don't allocate bb->local_set.
(init_regset_vector, free_regset_vector): Remove.
(propagate_block): Accept FLAGS not FINAL or REMOVE_DEAD_CODE.
Test flags before every operation. Warn if prologue/epilogue insn
would have been deleted.
(mark_set_regs, mark_set_1): Accept and use FLAGS.
Use alloc_EXPR_LIST.
(mark_used_regs): Accept and use FLAGS, not FINAL.
Remove special handling for RETURN.
(try_pre_increment): Use alloc_EXPR_LIST.
(dump_flow_info): Dump n_edges.
(unlink_insn_chain, split_hard_reg_notes): Remove.
(maybe_add_dead_note, maybe_add_dead_note_use): Remove.
(find_insn_with_note, new_insn_dead_notes): Remove.
(update_n_sets, sets_reg_or_subreg_1, sets_reg_or_subreg): Remove.
(maybe_remove_dead_notes, prepend_reg_notes): Remove.
(replace_insns): Remove.
(count_or_remove_death_notes): New.
(verify_flow_info): Abort on error after all checks.
(remove_edge): Decrement n_edges.
(remove_fake_edges): Tweek format.
* haifa-sched.c (schedule_insns): Use split_all_insns.
* output.h (update_life_info): Remove declaration.
* recog.c (split_all_insns): From the corpse of split_block_insns,
do the whole function block by block. Use update_life_info.
(recog_last_allowed_insn): New.
(recog_next_insn): Mind it.
(peephole2_optimize): Set it. Walk backwards through blocks.
Use update_life_info.
* rtl.h (update_flow_info, replace_insns): Remove declarations.
(split_all_insns): Declare.
* toplev.c (rest_of_compilation): Thread prologue before flow2.
Use split_all_insns.