Jim Wilson [Sat, 14 Apr 2001 03:49:46 +0000 (03:49 +0000)]
Fix linux kernel -foptimize-sibling-calls miscompilation
Fix linux kernel -foptimize-sibling-calls miscompilation
* config/ia64/ia64.c (ia64_expand_epilogue): Emit alloc if sibcall_p.
(first_instruction): New static variable.
(rtx_needs_barrier): Return 1 for alloc.
(init_insn_group_barriers): Set first_instruction.
(rws_sum): Delete duplicate definition.
(group_barrier_needed_p): Return 0 when first_instruction true.
(safe_group_barrier_needed_p): Save and restore first_instruction
around group_barrier_needed_p call.
Mark Mitchell [Fri, 13 Apr 2001 21:16:42 +0000 (21:16 +0000)]
cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
* cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
(expand_ptremfunc_cst): Change prototype.
(delta2_from_ptrmemfunc): Remove.
* expr.c (cplus_expand_constant): Adjust call to
expand_ptrmemfunc_cst.
* typeck.c (build_ptrmemfunc1): Simplify.
(build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
results in a constant.
(expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
(delta2_from_ptrmemfunc): Remove.
(pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
Alan Modra [Fri, 13 Apr 2001 05:48:20 +0000 (05:48 +0000)]
pa.c (uint32_operand): Don't use long constant >= 2^32.
* pa.c (uint32_operand): Don't use long constant >= 2^32.
(emit_move_sequence): Use HOST_WIDE_INT constants. Don't worry
about 32->64 bit sign extension if 32 bit HOST_WIDE_INTs.
(compute_movstrsi_length): Make `align' unsigned to avoid warning.
(output_64bit_and): Use plain `int's for shift counts.
(output_64bit_ior): Likewise.
(function_arg_partial_nregs): Use unsigned vars to avoid warnings.
* pa.h (CONST_OK_FOR_LETTER_P): Use HOST_WIDE_INT constants for case
`N', and simplify.
Alan Modra [Fri, 13 Apr 2001 05:41:45 +0000 (05:41 +0000)]
config.guess: Add hppa64-linux support.
* config.guess: Add hppa64-linux support. Note for next import that
this is already in the master file.
* configure.in: Likewise. Accept `parisc' alias for `hppa'.
Alan Modra [Fri, 13 Apr 2001 05:27:47 +0000 (05:27 +0000)]
pa-gas.h: Delete file.
* pa-gas.h: Delete file.
* config.gcc: Match `parisc' as well as `hppa' for cpu_type=pa.
Add new targets hppa*64*-*-linux* and parisc*64*-*-linux*. Update
hppa*-*-linux*. For all pa targets, remove pa/gas.h from tm_file,
instead setting MASK_GAS | MASK_JUMP_IN_DELAY in target_cpu_default2.
Stan Shebs [Fri, 13 Apr 2001 01:42:39 +0000 (01:42 +0000)]
objc-act.c: Remove all code ifdefed with the never-used macro OBJC_INT_SELECTORS.
* objc/objc-act.c: Remove all code ifdefed with the never-used
macro OBJC_INT_SELECTORS.
* config/d30v/d30v.h: Remove commented-out ref to OBJC_INT_SELECTORS.
* tm.texi: Remove doc for OBJC_INT_SELECTORS.
Jason Merrill [Fri, 13 Apr 2001 00:49:43 +0000 (20:49 -0400)]
cp-tree.h (decl_namespace_list): New macro.
* cp-tree.h (decl_namespace_list): New macro.
(struct saved_scope): Add decl_ns_list.
* decl.c (mark_saved_scope): Mark it.
* decl2.c: Lose static decl_namespace_list.
(init_decl2): Don't save it.
libffi:
* Makefile.am: Make a libtool convenience library.
* Makefile.in: Rebuilt.
libjava:
* java/io/File.java (normalizePath): New private method.
(File (String)): Use normalizePath().
(File (String, String)): Likewise.
* Makefile.am (libffi_files): Removed.
(libgcj.la): Link libffi as a convenience library instead of
refering to its object files directly.
* Makefile.in: Rebuilt.
* 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.