* expmed.c (store_bit_field): Truncate CONST_INTs.
(expand_mult_highpart, expand_divmod): Likewise.
* expr.c (convert_modes, store_field): Likewise.
* integrate.c (expand_inline_function): Use promote_mode() to
determine whether to convert_modes() an argument as signed
or unsigned.
* optabs.c (expand_binop): Get CONST_INT operands
sign-extended for their appropriate modes.
* stmt.c (emit_case_nodes): Convert node values to the
appropriate mode.
(expand_end_case): Convert minval and range to the appropriate
mode.
* unroll.c (loop_iterations): Truncate abs_diff to the mode of
the iteration variable.
* varasm.c (immed_double_const): Don't require words to be
narrower than host wide ints to properly sign-extend
CONST_INTs.
rs6000.c (rs6000_emit_move): Do not special-case HOST_BITS_PER_WIDE_INT != 32.
* config/rs6000/rs6000.c (rs6000_emit_move): Do not
special-case HOST_BITS_PER_WIDE_INT != 32. Use same criteria
for generating CONST_INT and CONST_DOUBLE.
* config/rs6000/rs6000.c (logical_operand): CONST_INTs are
already sign-extended.
(rs6000_emit_prologue): Make register iterator signed.
(rs6000_emit_epilogue): Likewise.
* config/rs6000/rs6000.md (addsi3, adddi3): Sign-extend high
and low.
(movsf split, movdf split): Sign-extend CONST_INTs.
(movdi splits): Likewise.
Mark Mitchell [Thu, 12 Apr 2001 01:44:21 +0000 (01:44 +0000)]
dwarf2out.c (modified_type_die): Don't create new types here.
* dwarf2out.c (modified_type_die): Don't create new types here.
* tree.h (get_qualified_type): New function.
(build_qualified_type): Adjust comment.
* tree.c (get_qualified_type): New function.
(build_qualified_type): Use it.
Mark Mitchell [Wed, 11 Apr 2001 18:22:46 +0000 (18:22 +0000)]
Makefile.in (gcse.o): Depend on params.h.
* Makefile.in (gcse.o): Depend on params.h.
* gcse.c: Include params.h.
(gcse_main): Don't do GCSE if doing so will take inordinate
amounts of memory.
* params.def (PARAM_MAX_GCSE_MEMORY): New parameter.
* params.h (MAX_GCSE_MEMORY): New macro.
method.c (implicitly_declare_fn): Commonize code for copy ctor and assignment op.
cp:
* method.c (implicitly_declare_fn): Commonize code for copy ctor
and assignment op. Set TREE_USED for parameter.
testsuite:
* g++.old-deja/g++.other/warn6.C: New test.
ltcf-cxx.sh: Support creation of C++ shared libraries on recent versions of FreeBSD (release...
2001-04-10 Loren J. Rittle <ljrittle@acm.org>
* ltcf-cxx.sh: Support creation of C++ shared libraries on
recent versions of FreeBSD (release 3 or later).
* ltconfig: On FreeBSD, -lc must not be provided when building
a shared library or else the standard -pthread gcc option is
rendered worthless to later users of the built library.
c-typeck.c (convert_arguments): -Wtraditional now activates -Wconversion warnings...
* c-typeck.c (convert_arguments): -Wtraditional now activates
-Wconversion warnings, except for changes in signed-ness.
Detect complex<->int & int<->complex conversions as well.
* invoke.texi (-Wtraditional): Document it.
testsuite:
* gcc.dg/wtr-conversion-1.c: New testcase.
Richard Kenner [Tue, 10 Apr 2001 21:45:12 +0000 (21:45 +0000)]
gcse.c (update_ld_motion_stores): Don't use variable I for an insn.
* gcse.c (update_ld_motion_stores): Don't use variable I for an insn.
* flow.c (set_block_for_new_insns): Remove needless cast and
properly check for unset block number.
Franz Sirl [Mon, 9 Apr 2001 23:43:06 +0000 (23:43 +0000)]
Makefile.in (LIB2FUNCS_STATIC_EXTRA): New macro.
2001-04-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* Makefile.in (LIB2FUNCS_STATIC_EXTRA): New macro.
(LIB2ADD_ST): New macro, pass it to mklibgcc.
* mklibgcc.in (libgcc2_st_objs): New variable, set it from LIB2ADD_ST.
(libgcc_st_objs): New, set from libgcc2_st_objs. Use it for libgcc.a.
* config/rs6000/t-ppccomm (LIB2FUNCS_STATIC_EXTRA): New macro.
Andrew MacLeod [Mon, 9 Apr 2001 15:20:26 +0000 (15:20 +0000)]
gcse.c (oprs_unchanged_p): Pass basic_block to load_killed_in_block_p.
2001-04-09 Andrew MacLeod <amacleod@redhat.com>
* gcse.c (oprs_unchanged_p): Pass basic_block to load_killed_in_block_p.
(load_killed_in_block_p): Change bb parameter from int to basic_block.
(oprs_not_set_p): Pass basic_blocks instead of ints as parameters.
(handle_rd_kill_set): Change bb parameter from int to basic_block.
(compute_kill_rd): Pass basic_blocks instead of ints as parameters.
(expr_killed_p): Change bb parameter from int to basic_block, pass
basic_blocks instead of ints as parameters.
(compute_ae_kill): Pass basic_blocks instead of ints as parameters.
(expr_reaches_here_p_work, expr_reaches_here_p): Change bb parameter
from int to basic_block, pass basic_blocks instead of ints as parms.
(pre_expr_reaches_here_p_work, pre_expr_reaches_here_p): Change bb
parameter from int to basic_block, pass basic_blocks instead of ints.
(process_insert_insn): Pass basic_blocks instead of ints as parameters.
(insert_insn_end_bb): Change bb parameter from int to basic_block,
pass basic_blocks instead of ints.
(pre_edge_insert, pre_insert_copy_insn, pre_insert_copies): Pass
basic_blocks instead of ints as parameters.
(pre_delete): Pass basic_blocks instead of ints as parameters.
(hoist_expr_reaches_here_p): Change bb parameter from int to
basic_block, pass basic_blocks instead of ints.
(hoist_code): Pass basic_blocks instead of ints as parameters.
(reg_set_info, store_ops_ok, store_killed_after, store_killed_before):
Change bb parameter from int to basic_block.
(build_store_vectors): Pass basic_blocks instead of ints as parameters.
(insert_insn_start_bb): Change bb parameter from int to basic_block,
pass basic_blocks instead of ints.
(insert_store): Pass basic_blocks instead of ints as parameters.
(replace_store_insn, delete_store): Change bb parameter from int to
basic_block, pass basic_blocks instead of ints.
(store_motion): Pass basic_blocks instead of ints as parameters.
Andrew MacLeod [Mon, 9 Apr 2001 15:17:08 +0000 (15:17 +0000)]
basic-block.h (set_new_block_for_insns): New Prototype.
2001-04-09 Andrew MacLeod <amacleod@redhat.com>
* basic-block.h (set_new_block_for_insns): New Prototype.
(set_block_num): Delete prototype.
* flow.c (set_block_num): Remove obsolete function.
(set_block_for_new_insns): Set BB for single or multiple insns.
* gcse.c (handle_avail_expr): Use set_block_for_new_insns.
(process_insn_end_bb): Use set_block_for_new_insns or
set_block_for_insn instead of set_block_num.
(pre_insert_copy_insn): Use set_block_for_new_insns.
(update_ld_motion_stores): Use set_block_for_new_insns.
(insert_insn_start_bb): Use set_block_for_new_insns.
(replace_store_insn): Use set_block_for_new_insns.
Andrew MacLeod [Mon, 9 Apr 2001 14:27:05 +0000 (14:27 +0000)]
alias.c (get_addr): Externalize.
2001-04-09 Andrew MacLeod <amacleod@redhat.com>
Jeff Law <law@cygnus.com>
* alias.c (get_addr): Externalize.
(canon_true_dependence): New function. Behaves like true_dependance
except it already assumes a MEM has been canonicalized.
* flags.h (flag_gcse_lm, flag_gcse_sm): New optimization flags.
* gcse.c (struct ls_expr): Add load/store expressions structure.
(modify_mem_list, canon_modify_mem_list): New variable.
(gcse_main): Initialize & finalize alias analysis. Use enhanced
load motion and store motion if requested.
(alloc_gcse_mem): Allocate space for modify_mem_list array.
(free_gcse_mem): Free the modify_mem_list array.
(oprs_unchanged_p): Use load_killed_in_block_p.
(gcse_mems_conflict_p, gcse_mem_operand): New variables.
(mems_conflict_for_gcse_p): New function. Don't kill loads
with stores to themselves if its in the load/store expression list.
(load_killed_in_block_p): New function.
(canon_list_insert): New Function.
(record_last_mem_set_info): Keep a list of all instructions which
can modify memory for each basic block.
(compute_hash_table, reset_opr_set_tables): Clear modify_mem_list.
(oprs_not_set_p): Use load_killed_in_block_p.
(mark_call, mark_set, mark_clobber): Use record_last_mem_set_info.
(expr_killed_p): Use load_killed_in_block_p.
(compute_transp): Do not pessimize memory references.
(pre_edge_insert): Update stores for a load motion expression.
(one_pre_gcse_pass): Check loads/stores for extra load motion.
(ldst_entry): Find or create a ldst_expr structure.
(free_ldst_entry): Free memory for an individual item.
(free_ldst_mems): Free entire load/store expression list.
(print_ldst_list): Print debug info.
(find_rtx_in_ldst): Try to find an rtx expression in the ldst list.
(enumerate_ldsts): Assign integer values to each entry in list.
(first_ls_expr): First expression in the list.
(next_ls_expr): Next expression in the list.
(simple_mem): Check if expression qualifies for ld/st expression list.
(invalidate_any_buried_refs): Remove from expression list if its
used in some other way we dont understand.
(compute_ld_motion_mems): Find all potential enhanced load motion
expression.
(trim_ld_motion_mems): Remove any expressions which are invalid.
(update_ld_motion_stores): Copy store values to registers for loads
which have been moved.
(regvec, st_antloc, num_store): New global statics.
(reg_set_info): Marks registers as set.
(store_ops_ok): Verfies registers expressions are valid in a block.
(find_moveable_store): Look for moveable stores in a pattern.
(compute_store_table): Find stores in a function worth moving, maybe.
(load_kills_store): Check dependance of a load and store.
(find_loads): Find any loads in a pattern.
(store_killed_in_insn): Check if a store is killed in an insn.
(store_killed_after): Check is store killed after an insn in a block.
(store_killed_before): Check is store killed before an insn in a block.
(build_store_vectors): Generate the antic and avail vectors.
(insert_insn_start_bb): Insert at the start of a BB, update BLOCK_HEAD.
(insert_store): Add a store to an edge.
(replace_store_insn): Replace a store with a SET insn.
(delete_store): Delete a store insn.
(free_store_memory): Free memory.
(store_motion): Perform store motion.
* invoke.texi: Add documentation for -fcse-lm and -fgcse-sm.
* rtl.h (get_addr, canon_true_dependence): Add prototypes.
* toplev.c (flag_gcse_lm, flag_gcse_sm): New Variables.
(f_options): Add gcse-lm and gcse-sm.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r41207
(oops. only checked in ChangeLog previously)
* config/i386/xm-cygwin.h (GET_ENV_PATH_LIST): Eliminate obsolete function.
Remove include of sys/cygwin.h.
* i386.md (truncdfsf2_*): Add i387->int/sse reg alternatives;
Do not require source to match destination anymore;
Add abort to the nontrivial cases that should be handled by split.
(fix_trunc?fdi): Add SSE case for x86_64.
(floatdi?f): Likewise.
(floatdi?f_sse): New.
(fix_trunc?fdi_sse): New.
dwarfout.c (DEBUG_ARANGES_BEGIN_LABEL): New label.
* dwarfout.c (DEBUG_ARANGES_BEGIN_LABEL): New label.
(DEBUG_ARANGES_END_LABEL): Ditto.
(dwarfout_init): Generate length and version fields at the start
of the .debug_aranges info. Insert DEBUG_ARANGES_BEGIN_LABEL
after the length field.
(dwarfout_finish): Insert DEBUG_ARANGED_END_LABEL at the end of
the .debug_aranges info.
Neil Booth [Sun, 8 Apr 2001 10:01:18 +0000 (10:01 +0000)]
cpperror.c (print_location): Don't special case <stdin>.
* cpperror.c (print_location): Don't special case <stdin>.
(_cpp_begin_message): Handle WARNING_SYSHDR the same as
WARNING, but we don't check if we're in system headers.
* cpplib.h (enum error_type): WARNING_SYSHDR: New.
* cpplib.c (do_warning): Warn in system headers.
config.gcc: Set default for xmake_file at top, not bottom.
* config.gcc: Set default for xmake_file at top, not bottom.
Change places that set xmake_file to "none" to set to the
empty string instead, or remove them entirely if there is no
default xmake_file for this cpu_type. Remove references to
deleted files.
* config/a29k/x-unix, config/i386/x-aix, config/i386/x-osf1elf,
config/i386/x-osfrose, config/m68k/x-dpx2, config/mips/x-iris3,
config/mips/x-mips, config/mips/x-osfrose, config/mips/x-sony,
config/mips/x-sysv, config/rs6000/x-aix31:
Just set CLIB to -lld or -lmld, as appropriate.
* config/arm/x-riscix, config/i370/x-oe, config/i386/x-dgux,
config/i386/x-sco4, config/i386/x-sco5, config/m68k/x-hp320,
config/m68k/x-hp320g, config/m68k/x-next, config/m88k/x-dgux,
config/mips/x-iris, config/pa/x-pa:
Just set (some of) FIXPROTO_DEFINES, STMP_FIXPROTO,
OTHER_FIXINCLUDES_DIRS.
* config/i386/x-djgpp: Don't set LN or LN_S.
* config/m88k/x-dolph: Don't define __m88k__.
* config/m88k/x-tekXD88: Don't set AR_FLAGS.
* config/pa/x-pa-mpeix: Just set up quadlib.asm.
* config/i860/fx2800.h: No need to #undef SVR4.
Tom Tromey [Sat, 7 Apr 2001 19:54:52 +0000 (19:54 +0000)]
Fix for PR gcj/1404 and PR gcj/2332:
2001-04-06 Tom Tromey <tromey@redhat.com>
Alexandre Petit-Bianco <apbianco@redhat.com>
Fix for PR gcj/1404 and PR gcj/2332:
* parse.y (build_array_from_name): If we use the type_wfl then
accumulate dimensions from the original type as well.
(build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
Neil Booth [Fri, 6 Apr 2001 05:21:36 +0000 (05:21 +0000)]
cppfiles.c (open_file): Fail directories silently, but with an errno of NOENT set.
* cppfiles.c (open_file): Fail directories silently, but
with an errno of NOENT set.
(read_include_file): Move the common exit code to the sole
caller. Return an int indicating success or failure. Let
open_file handle directories.
(stack_include_file): If read_include_file fails,
push a "null" buffer.
* java-tree.h (struct lang_decl): New macro
`DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
* parse.y (build_instance_initializer): New function.
(add_instance_initializer): Use it.
(java_fix_constructors): Set `current_class' before fix pass.
(fix_constructors): Just return if already fixed. Move `super()'
invokation ahead. Use `build_instance_initializer.'
Fixes PR java/1315.