* vec.h: Remove all #if IN_GENGTYPE blocks.
Add comment saying that changes may require adjustments to gengtype.
* gengtype.c: Don't include coretypes.h or tm.h.
Add comment to inclusion of errors.h.
(note_def_vec, note_def_vec_alloc): New functions.
* gengtype.h: Declare new functions.
* gengtype-lex.l: Don't include coretypes.h.
(YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
Delete.
(update_lineno): Remove unnecessary prototype.
(DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
(VEC rule): Just return VEC_TOKEN.
* gengtype-yacc.y (VEC_TOKEN): New token type.
(type): Add a production for VEC(a,b).
* Makefile.in: Update dependencies.
From-SVN: r123229
* ifcvt.c (noce_try_store_flag_constants): Don't check
no_new_pseudos here.
(noce_try_store_flag_constants): Don't check no_new_pseudos.
(noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
noce_try_sign_mask): Likewise.
(if_convert): Check no_new_pseudos here.
(cond_exec_process_if_block, noce_process_if_block, find_if_block):
Remove prototypes.
(struct noce_if_info): Add then_bb, else_bb, join_bb members.
(noce_get_condition): Handle new then_else_reversed argument.
(noce_init_if_info): Remove, fold into noce_find_if_block.
(noce_process_if_block): Take a struct noce_if_info as the
argument. Don't set up one based on ce_if_info. Update pointer
references accordingly.
(cond_move_process_if_block): Likewise.
(process_if_block): Removed.
(find_if_block): Removed. Move functionality two new functions,
noce_find_if_block and cond_exec_find_if_block.
(noce_find_if_block): New function. Be aware of IF-THEN-JOIN
blocks and the symmetric IF-ELSE-JOIN case.
(cond_exec_find_if_block): Also new function mostly based on old
find_if_block and process_if_block.
(find_if_header): Replace find_if_block call with separately
guarded calls to noce_find_if_block and cond_exec_find_if_block.
(find_cond_trap): Update noce_get_condition call.
(dead_or_predicable): Likewise.
From-SVN: r123223
* config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
in SImode for save_world.
* config/rs6000/altivec.md (save_world, restore_world): Convert to
LR hard reg.
From-SVN: r123198
* tracer.c (tracer): Don't take FLAGS argument. Assert we are
in cfglayout mode. Don't go into and out of cfglayout mode.
Link the blocks in the order of the constructed traces.
(rest_of_handle_tracer): Adjust call to tracer.
* loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
Don't go into cfglayout mode.
(rtl_loop_done): Don't go out of cfglayout mode.
* cfglayout.c (relink_block_chain): New function, split out from...
(fixup_reorder_chain): ...here. Remove redundant checking.
(cfg_layout_finalize): Don't clear the header, footer, and aux
fields here, move the code to do so to relink_block_chain. Likewise
for free_original_copy_tables.
* rtl.h (tracer): Update prototype.
* bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
Assert we are in cfglayout mode. Don't go into and out of cfglayout
mode. Use relink_block_chain to serialize the CFG according to the
new basic block order. Move targetm.cannot_modify_jumps_p check from
here...
(gate_handle_reorder_blocks): ...to here.
(duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
from here...
(gate_duplicate_computed_gotos): ...to here.
(rest_of_handle_reorder_blocks): Don't see if anything has changed,
something always changes when going into and out of cfglayout mode.
Perform an expensive cfg cleanup while going into cfglayout mode.
Always update liveness information on HAVE_conditional_execution
targets. Reserialize the basic blocks and go out of cfglayout mode.
* reg-stack.c: Include cfglayout.h.
(rest_of_handle_stack_regs): Go into and out of cfglayout mode around
the call to reorder_basic_blocks.
* basic-block.h (reorder_basic_blocks): Update prototype.
(relink_block_chain): New prototype.
* passes.c (pass_outof_cfg_layout_mode): Move after cse2.
From-SVN: r123167
* config/mips/mips.md (type, hazard, *movdi_32bit,
*movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
*movhi_internal, *movqi_internal, *movsf_hardfloat,
*movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
applicable.
(movcc): Change first xfer to multi.
* config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
config/mips/generic.md: Change reservations using "xfer" to use
"mfc,mtc".
* config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
using match_operand.
(ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
* config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
examining mode.
(ir_sr70_xfer_to): Use "mtc" instead of examining mode.
From-SVN: r123164
* config/i386/i386.c: Remove unnecessary function declarations.
Move targetm definition, and all related macros, to the end of
the file. Resort some functions to put definitions before uses.
(ix86_attribute_table): Make static. Move to end of file.
(ix86_gimplify_va_arg): Make static.
From-SVN: r123159
* config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
don't increase local_regparm with force_align_arg_pointer check.
(ix86_function_sseregparm): Assert 32-bit.
(type_has_variadic_args_p): New.
(ix86_return_pops_args): Early exit for 64-bit. Reindent; use
type_has_variadic_args_p.
(ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
(init_cumulative_args): Remove TARGET_DEBUG_ARG. Remove zero_cum;
use memset instead. Do maybe_vaarg check first; skip attribute
tests if true; skip attribute tests for 64-bit.
(construct_container): Remove TARGET_DEBUG_ARG.
(function_arg_advance_32, function_arg_advance_64): Split out ...
(function_arg_advance): ... from here.
(function_arg_32, function_arg_64): Split out ...
(function_arg): ... from here.
(ix86_pass_by_reference): Tidy.
(ix86_function_value_regno_p): Rearrange w/ switch on regno.
(function_value_32): New, from parts of ix86_function_value
and ix86_value_regno.
(function_value_64): New, from parts of ix86_function_value
and ix86_libcall_value.
(ix86_function_value_1): New.
(ix86_function_value, ix86_libcall_value): Use it.
(return_in_memory_32, return_in_memory_64): Split out ...
(ix86_return_in_memory): ... from here.
(ix86_struct_value_rtx): Skip for 64-bit.
(ix86_libcall_value, ix86_value_regno): Remove.
(setup_incoming_varargs_64): Split out ...
(ix86_setup_incoming_varargs): ... from here.
(ix86_va_start): Remove TARGET_DEBUG_ARG.
(legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
* config/i386/i386-protos.h (ix86_function_value): Remove.
* config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
From-SVN: r123146
* c-incpath.c (add_sysroot_to_chain): New.
(merge_include_chains): Add sysroot argument. Call
add_sysroot_to_chain if sysrooted.
(register_include_chains): Update call to merge_include_chains.
* doc/cppopts.texi: Document use of '=' in include directory
arguments.
From-SVN: r123134
* config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
Macroize expander using SSEMODEF mode macro. Use SSE_FLOAT_MODE_P.
(*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
insn pattern using X87MODEF12 mode macro.
From-SVN: r123128
2007-03-21 Seongbae Park <seongbae.park@gmail.com>
* regmove.c (regmove_optimize): Use reg_mentioned_p
instead of reg_overlap_mentioned_p for DST.
From-SVN: r123124
* config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
* config/arm/arm.c (arm_elf_asm_cdtor): New function.
(arm_elf_asm_constructor): Use it.
(arm_elf_asm_destructor): New function.
From-SVN: r123103
2007-03-19 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/30907
* fwprop.c (forward_propagate_into): Never propagate inside a loop.
(fwprop_init): Always call loop_optimizer_initialize.
(fwprop_done): Always call loop_optimizer_finalize.
(fwprop): We always have loop info now.
(gate_fwprop_addr): Remove.
(pass_fwprop_addr): Use gate_fwprop as gate.
PR rtl-optimization/30841
* df-problems.c (df_ru_local_compute, df_rd_local_compute,
df_chain_alloc): Call df_reorganize_refs unconditionally.
* df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
refs_organized to refs_organized_size.
(df_ref_create_structure): Use refs_organized_size instead of
bitmap_size if refs had been organized, and keep refs_organized_size
up-to-date.
* df.h (struct df_ref_info): Change refs_organized to
refs_organized_size.
(DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
bitmap_size.
From-SVN: r123084
* except.c (output_function_exception_table): Do not reference the
EH personality routine for functions that do not require an
exception table.
From-SVN: r123082
* builtins.c (expand_builtin_sync_operation,
expand_builtin_compare_and_swap,
expand_builtin_lock_test_and_set): Care for extending CONST_INTs
correctly.
* config/i386/sync.md (sync_double_compare_and_swapdi_pic,
sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
for operand 3.
From-SVN: r123064
2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
Richard Guenther <rguenther@suse.de>
PR tree-optimization/31254
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
Use handled_component_p () where appropriate. Continue
propagating into the rhs if we propagated into an INDIRECT_REF
on the lhs.
* gcc.dg/torture/pr31254.c: New testcase.
Co-Authored-By: Richard Guenther <rguenther@suse.de>
From-SVN: r123060
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md: Only non-functional changes. Renamed
FPR mode macro to BFP all over the file.
From-SVN: r123057
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
(op_type attribute): RRF instruction type added.
(fT0): New mode attribute.
("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
"*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
* config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
no secondary memory is needed when moving DFmode values between GPRs
and FPRs.
From-SVN: r123056
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
inverted and documentation adjusted.
("mhard-dfp", "msoft-dfp"): New options.
* config/s390/s390.c (s390_handle_arch_option): New architecture
switch: z9-ec.
(override_options): Sanity checks for the new options added.
* config.gcc: New architecture switch: z9-ec.
* config/s390/s390.h (processor_flags): PF_DFP added.
(TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
(TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
when the bit is NOT set so remove it from the defaults.
From-SVN: r123055
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* genemit.c (main): Print include statement for dfp.h.
* dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
is not available.
From-SVN: r123054