blob: 7c4d66d97bf165950230a85c91744b64b2457d02 [file] [log] [blame]
2008-12-31 Uros Bizjak <>
* sched-deps.c (sched_analyze_2) [UNSPEC_VOLATILE]: Flush pending
memory loads and stores.
2008-12-31 Jakub Jelinek <>
PR middle-end/38505
* tree-ssa-ccp.c (may_propagate_address_into_dereference): Return
false if ADDR's operand has incomplete type.
2008-12-15 Jakub Jelinek <>
PR middle-end/38505
* tree-ssa.c (useless_type_conversion_p_1): Return
false if inner_type is incomplete and outer_type is complete.
2008-12-31 Jakub Jelinek <>
PR middle-end/38676
* gimplify.c (gimple_regimplify_operands): For GIMPLE_SWITCH
only regimplify switch index.
2008-12-30 Richard Guenther <>
PR tree-optimization/38645
* tree-ssa-ccp.c (fold_gimple_assign): Use the correct pointer
* tree-ssa-dom.c (cprop_operand): Simplify. Do not propagate
volatileness changing operands.
2008-12-30 Steven Bosscher <>
* tree-cfg.c (verify_eh_throw_stmt_node): Return nonzero,
to visit all EH statement and fix EH checking.
2008-12-31 Seongbae Park <>
2008-12-29 Seongbae Park <>
* tree-profile.c (tree_init_ic_make_global_vars): Make static
variables TLS.
2008-12-30 Andrew Pinski <>
PR middle-end/38661
* tree-switch-conversion.c (build_constructors): Test for wrapping of
pos case.
2008-12-30 Steven Bosscher <>
PR middle-end/38584
* ipa-inline.c (compute_inline_parameters): When not optimizing,
don't compute the inline parameters, just set them to 0 instead.
2008-12-30 Paolo Bonzini <>
PR tree-optimization/38572
* tree-vrp.c (vrp_visit_phi_node): Look out for invalid ranges
and change them to VARYING.
2008-12-30 Richard Guenther <>
PR middle-end/38564
* fold-const.c (fold_comparison): Use the correct result type.
2008-12-30 Dorit Nuzman <>
Ira Rosen <>
PR tree-optimization/38529
* tree-vect-transform (vect_transform_stmt): Handle inner-loop stmts
whose DEF is used in the loop-nest that is being vectorized, but
outside the immediately enclosing loop.
2008-12-29 Seongbae Park <>
* tree-profile.c (tree_init_ic_make_global_vars): Make static
variables TLS.
2008-12-29 Jakub Jelinek <>
PR c++/36191
* tree-complex.c (expand_complex_libcall): Call
maybe_clean_or_replace_eh_stmt and gimple_purge_dead_eh_edges
instead of passing true as 3rd argument to gsi_replace.
2008-12-28 Uros Bizjak <>
PR middle-end/38652
* dse.c: Include target.h.
* (dse.o): Depend on $(TARGET_H).
2008-12-29 Jakub Jelinek <>
PR driver/38381
* gcc.c (process_command): Accept also -b with configuration name
in the next argument.
* doc/invoke.texi (-b): Document that no hyphen is required if
configuration name is in the next argument after -b.
2008-12-27 Jakub Jelinek <>
PR middle-end/38641
* gimple-pretty-print.c (dump_binary_rhs): Print
PR middle-end/38633
* tree-cfg.c (replace_block_vars_by_duplicates): Only call
replace_by_duplicate_decl for VAR_DECLs or CONST_DECLs.
2008-12-24 Kazu Hirata <>
* (GTFILES): Add $(srcdir)/expr.h.
* expr.h: Fix the declaration of block_clear_fn.
2008-12-23 Andrew Pinski <>
PR middle-end/38590
* fold-const.c (fold_binary): Call fold_convert on arguments to
fold_build2 for negative divide optimization.
2008-12-23 Jakub Jelinek <>
PR middle-end/31150
* dse.c (struct store_info): Add const_rhs field.
(clear_rhs_from_active_local_stores): Clear also const_rhs.
(record_store): Try also cselib_expand_value_rtx to get a constant.
(find_shift_sequence, get_stored_val): Use const_rhs instead of
rhs if worthwhile.
* cselib.c (cselib_record_sets): If !cselib_record_memory and
there is just one set from read-only MEM, look at REG_EQUAL or
* dse.c (struct store_info): Add redundant_reason field.
(record_store): When storing the same constant as has been stored by
an earlier store, set redundant_reason field to the earlier store's
insn_info_t. Don't delete cannot_delete insns.
(find_shift_sequence): Remove read_info argument, add read_mode
and require_cst arguments. Return early if require_cst and
constant wouldn't be returned.
(get_stored_val): New function.
(replace_read): Use it.
(scan_insn): Put even cannot_delete insns with exactly 1 store
into active_local_stores.
(dse_step1): Don't delete cannot_delete insns. Remove redundant
constant stores if contains_cselib_groups and earlier store storing
the same value hasn't been eliminated.
(dse_step6): Renamed to dse_step7. New function.
(dse_step7): Renamed from dse_step6.
(rest_of_handle_dse): Call dse_step6 and dse_step7 at the end.
* cselib.c (cselib_expand_value_rtx): Don't wrap CONST_INTs
into CONST unless really necessary. Handle SUBREG, unary,
ternary, bitfield and compares specially, to be able to simplify
operations on constants.
(expand_loc): Try to optimize LO_SUM.
* dse.c (get_call_args): New function.
(scan_insn): Don't handle BUILT_IN_BZERO. For memset, attempt
to get call arguments and if successful and both len and val are
constants, handle the call as (mem:BLK) (const_int) store.
* dse.c (struct store_info): Add is_large bool field, change
positions_needed into a union of a bitmask and bitmap + count.
(free_store_info): Free bitmap if is_large.
(set_usage_bits): Don't look at stores where
offset + width >= MAX_OFFSET.
(set_position_unneeded, set_all_positions_unneeded,
any_positions_needed_p, all_positions_needed_p): New static inline
(record_store): Handle BLKmode stores of CONST_INT, if
MEM_SIZE is set on the MEM. Use the new positions_needed
accessor inlines.
(replace_read): Handle reads from BLKmode CONST_INT stores.
(check_mem_read_rtx): Use all_positions_needed_p function.
(dse_step1): Free large positions_needed bitmaps and clear is_large.
* dse.c (struct store_info): Change begin and end types to
* dse.c (record_store): Fix check for unused store.
* expr.c (block_clear_fn): No longer static.
* expr.h (block_clear_fn): Declare.
* dse.c (scan_insn): Memset and bzero can just read their arguments.
* config/i386/i386.c (expand_setmem_via_rep_stos): Add ORIG_VALUE
argument. If ORIG_VALUE is const0_rtx and COUNT is constant,
(ix86_expand_setmem): Adjust callers.
PR target/38488
* expr.h (get_mem_align_offset): New prototype.
* emit-rtl.c (get_mem_align_offset): New function.
* config/i386/i386.c (expand_movmem_via_rep_mov): Set MEM_SIZE
(expand_constant_movmem_prologue, expand_constant_setmem_prologue):
New functions.
(ix86_expand_movmem): Optimize if COUNT_EXP
is constant, desired_align > align and dst & (desired_align - 1)
is computable at compile time.
(ix86_expand_setmem): Likewise.
* builtins.c (get_memory_rtx): Try to derive MEM_ATTRS from not yet
2008-12-22 Uros Bizjak <>
* config/alpha/elf.h (ASM_OUTPUT_EXTERNAL): New macro.
PR target/34571
* config/alpha/ (symbolic_operand): Return 1 for a
label_ref with an offset.
2008-12-21 Andrew Pinski <>
PR target/38300
* configure: Regenerate.
2008-12-21 Richard Sandiford <>
* config/mips/ (mips_lbux): Turn into a define_expand,
changing operand 1 to a pmode_register_operand.
(mips_lhx, mips_lwx): Likewise.
(mips_lbux_<mode>, mips_lhx_<mode>, mips_lwx_<mode>): New patterns.
* config/mips/mips.c (mips_prepare_builtin_arg): Get the mode of
the value from the argument expression.
2008-12-21 Jan Hubicka <>
Kai Tietz <>
* (UNSPEC_MS_TO_SYSV_CALL): New constant.
(call_1_rex64_ms_sysv, call_value_0_rex64_ms_sysv,
call_value_1_rex64_ms_sysv): New patterns.
* i386.c (function_arg_ms_64): Pass magical value of -2 as callarg.
(ix86_expand_call): Emit extra clobbers for ms->sysv ABI calls.
2008-12-21 Uros Bizjak <>
* config/alpha/alpha.c (alpha_pad_noreturn): New static function.
(alpha_reorg): Call alpha_pad_noreturn.
2008-12-21 Denis Chertykov <>
* config/avr/ ("andsi3"): Fix wrong cc attribute.
2008-12-20 Eric Botcazou <>
PR target/37610
* (gcc_cv_as_cfi_advance_working): Fall back to 'no'
if readelf is nowhere to be found.
* configure: Regenerate.
2008-12-19 Andrew Haley <>
* builtins.c, tree-ssa-loop-ivopts.c, fixed-value.c:
Fix comments.
2008-12-19 Richard Earnshaw <>
PR target/38548
* arm/t-linux (LIB1ASMFUNCS): Add _arm_addsubdf3 and _arm_addsubsf3.
* arm/lib1funcs.asm (clzsi2): Use RET macro for return instruction.
2008-12-19 Richard Earnshaw <>
PR bootstrap/38578
* arm.c (load_multiple_sequence): Initialize ORDER array.
(store_multiple_sequence): Likewise.
(output_move_double): Make reg0 unsigned.
(arm_output_epilogue): Make amount unsigned.
(arm_expand_prologue): Move declaration of dwarf before block
2008-12-19 Steve Ellcey <>
* df-scan.c (df_hard_reg_init): Move declaration of i.
2008-12-19 Jakub Jelinek <>
PR bootstrap/37739
* For powerpc*-*-linux* host with 32-bit GCC,
use rs6000/x-linux-relax snippet if ld is new enough,
otherwise use rs6000/x-linux-O1.
* config/rs6000/x-linux-relax: New file.
* config/x-cflags-O1: New file.
2008-12-18 Joseph Myers <>
* config/rs6000/rs6000.c (rs6000_generate_compare): Condition
choice of e500 comparison instructions on flag_finite_math_only &&
!flag_trapping_math, not flag_unsafe_math_optimizations.
* config/rs6000/ (abstf2): Condition choice of e500
instructions on flag_finite_math_only && !flag_trapping_math, not
(bltgt, sltgt): Disable for TARGET_HARD_FLOAT && !TARGET_FPRS.
* config/rs6000/ (cmpsfeq_gpr, tstsfeq_gpr, cmpsfgt_gpr,
tstsfgt_gpr, cmpsflt_gpr, tstsflt_gpr, cmpdfeq_gpr, tstdfeq_gpr,
cmpdfgt_gpr, tstdfgt_gpr, cmpdflt_gpr, tstdflt_gpr, cmptfeq_gpr,
tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
Condition choice of comparison instructions on
flag_finite_math_only && !flag_trapping_math, not
2008-12-18 Ralf Wildenhues <>
* configure: Regenerate.
2008-12-18 Jan Hubicka <>
Kai Tietz <>
* df-scan.c (persistent_obstack, df_invalidated_by_call): Remove.
(df_scan_start_dump, df_get_call_refs, df_hard_reg_init): Rename
df_invalidated_by_call to invalidated_by_call_regset.
* df.h (df_invalidated_by_call): Remove.
* regclass.c (regs_invalidated_by_call_regset, persistent_obstack):
New variables.
(init_reg_sets_1): Initialize regs_invalidated_by_call_regset.
(globalize_reg): Likewise.
* df-problems.c (df_rd_local_compute, df_lr_confluence_n,
df_byte_lr_alloc): Rename df_invalidated_by_call to
* basic-block.h (regs_invalidated_by_call_regset): Declare.
2008-12-18 Jan Hubicka <>
Kai Tietz <>
* ira-cost.c (copy_cost): Lazilly initialize move_cost if needed.
2008-12-18 Jan Hubicka <>
Kai Tietz <>
* i386.h (CONDITIONAL_REGISTER_USAGE): Initialize for current
function ABI.
* i386.c (ix86_call_abi_override): Do not trigger target re-init and
do not try to modify call used regs.
(ix86_maybe_switch_abi): New function.
2008-12-18 Kenneth Zadeck <>
PR rtl-optimization/37922
* dse.c (bb_info): Added regs_live field.
(look_for_hardregs): New function.
(replace_read): Added regs_live parameter and code to check that
shift sequence does not clobber live hardregs.
(check_mem_read_rtx): Added parameter to replace_read.
(dse_step1): Added regs_live bitmap and initialize it.
(rest_of_handle_dse): Added DF_NOTES problem and earlier call to
* df-problems.c Renamed to df_simulate_initialize_backwards.
(df_simulate_one_insn): Renamed to df_simulate_one_insn_backwards.
(df_simulate_artificial_refs_at_top): Renamed to
(df_simulate_initialized_forwards, df_simulate_one_insn_forwards,
df_simulate_finalize_backwards): New functions.
* df.h (df_simulate_artificial_refs_at_end): Renamed to
(df_simulate_one_insn): Renamed to df_simulate_one_insn_backwards.
(df_simulate_artificial_refs_at_top): Renamed to
(df_simulate_initialized_forwards, df_simulate_one_insn_forwards,
df_simulate_finalize_backwards): New functions.
* ra-conflict.c (global_conflicts): Renamed
df_simulate_artificial_refs_at_end to
* sel-sched.c (propagate_lv_set): Renamed df_simulate_one_insn to
* ifcvt.c (dead_or_predicable): Renamed
df_simulate_artificial_refs_at_end to
df_simulate_initialize_backwards. Renamed df_simulate_one_insn to
* recog.c (peephole2_optimize): Ditto.
* rtl-factoring (collect_pattern_seqs, clear_regs_live_in_seq): Ditto.
2008-12-18 Jakub Jelinek <>
PR middle-end/38533
* tree-ssa-reassoc.c (remove_visited_stmt_chain): New function.
(rewrite_expr_tree): Add moved argument, move stmts together if
needed. Call remove_visited_stmt_chain.
(linearize_expr_tree): Don't move stmts here.
(reassociate_bb): Call remove_visited_stmt_chain if num ops is 1.
Adjust rewrite_expr_tree caller.
PR middle-end/38505
* tree-ssa.c (useless_type_conversion_p_1): Return
false if inner_type is incomplete and outer_type is complete.
2008-12-17 Sebastian Pop <>
* doc/install.texi (Prerequisites): Document PPL and CLooG-PPL
dependences and the configure options.
(Configuration): Document --with-cloog, --with-ppl, --with-cloog-lib,
--with-ppl-lib, --with-cloog-incude, --with-ppl-include.
2008-12-17 H.J. Lu <>
PR middle-end/38556
* calls.c (expand_call): Check outgoing_reg_parm_stack_space
only if REG_PARM_STACK_SPACE is defined.
2008-12-17 Jan Hubicka <>
Kai Tietz <>
* calls.c (expand_call): Do not sibcall if
outgoing_reg_parm_stack_space does not match.
2008-12-16 Anatoly Sokolov <>
* config/avr/avr.c (avr_mcu_t): Add attiny87, attiny327, at90pwm81,
atmega16m1, at90scr100, atmega128rfa1, m3000f, m3000s and m3001b
* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2008-12-16 Hariharan Sandanagobalane <>
PR target/38842
* config/picochip/picochip.opt (mae): Squeezed the comments onto one
2008-12-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* (gcc_cv_ld_hidden): Sun ld on Solaris 9 and up
supports hidden.
* configure: Regenerate.
2008-12-16 Richard Earnshaw <>
PR target/37436
* arm.c (arm_legitimate_index): Only accept addresses that are in
canonical form.
* (arm_reg_or_extendqisi_mem_op): New predicate.
* (extendqihi2): Use arm_reg_or_extendqisi_mem_op predicate
for operand1.
(extendqisi2): Likewise.
(arm_extendqisi, arm_extendqisi_v6): Use arm_extendqisi_mem_op
predicate for operand1.
2008-12-15 Adam Nemet <>
* config/mips/mips.c (mips_output_conditional_branch): Assert that
openrands[1] is a CODE_LABEL.
2008-12-15 Richard Sandiford <>
* config/mips/mips.c (mips_expand_builtin_direct): Set TARGET to
the result of mips_prepare_builtin_target.
2008-12-15 Richard Sandiford <>
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_abicalls
2008-12-15 Richard Sandiford <>
* config/mips/ (move_doubleword_fpr<mode>): Use
TARGET_FLOAT64 && !TARGET_64BIT to detect the mxhc1 case.
2008-12-15 Hariharan Sandanagobalane <>
* config/picochip/picochip.c (picochip_override_options): Disable CFI
asm and change the signature of brev and byteSwap functions to use
unsigned values.
* config/picochip/ (commsTestPort): This is a complex
instruction and should not be vliwed. Don't set insn type.
2008-12-15 Wolfgang Gellerich <>
* config/s390/s390.c (s390_swap_cmp): New function.
(s390_non_addr_reg_read_p): New function.
(s390_z10_optimize_cmp): New function.
(s390_reorg): Added call to s390_optimize_cmp.
* config/s390/ (nop1): New insn.
2008-12-12 Rainer Emrich <>
PR bootstrap/38383
* pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Don't hardcode search path
for the milli.a library.
2008-12-12 Andrew Pinski <>
Peter Bergner <>
PR target/24779
* config/rs6000/ (call_indirect_aix32): Move the load of the
TOC into the call pattern.
(call_indirect_aix64): Likewise.
(call_value_indirect_aix32): Likewise.
(call_value_indirect_aix64): Likewise.
(call_indirect_nonlocal_aix32_internal): New insn and split patterns
to split off the load of the TOC.
(call_indirect_nonlocal_aix32): Enable only after reload.
(call_indirect_nonlocal_aix64_internal): New insn and split patterns
to split off the load of the TOC.
(call_indirect_nonlocal_aix64): Enable only after reload.
(call_value_indirect_nonlocal_aix32_internal): New insn and split
patterns to split off the load of the TOC.
(call_value_indirect_nonlocal_aix32): Enable only after reload.
(call_value_indirect_nonlocal_aix64_internal): New insn and split
patterns to split off the load of the TOC.
(call_value_indirect_nonlocal_aix64): Enable only after reload.
2008-12-12 Andreas Schwab <>
2008-12-12 Andreas Schwab <>
* cfgrtl.c (rtl_verify_flow_info_1): Don't apply BLOCK_FOR_INSN on
a BARRIER insn.
2008-12-12 Zdenek Dvorak <>
PR tree-optimization/32044
* tree-scalar-evolution.h (expression_expensive_p): Declare.
* tree-scalar-evolution.c (expression_expensive_p): New function.
(scev_const_prop): Avoid introducing expensive expressions.
* tree-ssa-loop-ivopts.c (may_eliminate_iv): Ditto.
2008-12-12 Sebastian Pop <>
PR middle-end/38409
* graphite.c (nb_reductions_in_loop): Use simple_iv.
2008-12-12 Dwarakanath Rajagopal <>
* config/i386/x86intrin.h: New header file to support all x86
* config.gcc (extra_headers): For x86 and x86-64, add x86intrin.h
2008-12-12 H.J. Lu <>
PR target/38402
* gcc/doc/md.texi: Remove Y and document Yz, Y2, Yi and Ym
constraints for x86.
2008-12-12 Andreas Schwab <>
* cfgrtl.c (rtl_verify_flow_info_1): Don't apply BLOCK_FOR_INSN on
a BARRIER insn.
2008-12-12 Uros Bizjak <>
* config/alpha/ (memory_barrier): Remove mem:BLK from operands.
Use Pmode for scratch reg.
(*mb_internal): Use (match_dup 0) for unspec operand.
2008-12-12 Alexandre Oliva <>
* tree-vrp.c (extract_range_from_binary_expr): Don't shift by
floor_log2 of zero. Negate widened zero.
2008-12-12 Ben Elliston <>
* config/fp-bit.c (nan): Rename from this ...
(makenan): ... to this.
2008-12-11 Adam Nemet <>
* config/mips/ (*branch_bit<bbv><mode>,
*branch_bit<bbv><mode>_inverted): Renumber operands so that the
label becomes operands[1].
2008-12-11 Harsha Jagasia <>
PR tree-optimization/38446
* graphite.c (register_bb_in_sese): New.
(bb_in_sese_p): Check if bb belongs to sese region by explicitly
looking at the bbs in the region.
* graphite.h (sese): Add region_basic_blocks pointer set to
structure and initialize at the time of defining new scop.
2008-12-11 Tobias Grosser <>
* graphite.c (new_graphite_bb): Initialize GBB_STATIC_SCHEDULE.
(find_params_in_bb): Do not free data refs.
(free_graphite_bb): Add FIXME on disabled free_data_refs.
2008-12-11 Sebastian Pop <>
* graphite.c (struct ivtype_map_elt): New.
(debug_ivtype_elt, debug_ivtype_map_1, debug_ivtype_map,
new_ivtype_map_elt, ivtype_map_elt_info, eq_ivtype_map_elts,
gcc_type_for_cloog_iv): New.
(loop_iv_stack_patch_for_consts): Use the type of the induction
variable from the original loop, except for the automatically
generated loops, i.e., in the case of a strip-mined loop, in
which case there is no original loop: in that case just use
(new_graphite_bb): Initialize GBB_CLOOG_IV_TYPES.
(free_graphite_bb): Free GBB_CLOOG_IV_TYPES.
(clast_name_to_gcc): Accept params to be NULL.
(clast_to_gcc_expression): Take an extra parameter for the type.
Convert to that type all the expressions built by this function.
(gcc_type_for_clast_expr, gcc_type_for_clast_eq): New.
(graphite_translate_clast_equation): Compute the type of the
clast_equation before translating its LHS and RHS.
(clast_get_body_of_loop, gcc_type_for_iv_of_clast_loop): New.
(graphite_create_new_loop): Compute the type of the induction
variable before translating the lower and upper bounds and before
creating the induction variable.
(rename_variables_from_edge, rename_phis_end_scop): New.
(copy_bb_and_scalar_dependences): Call rename_phis_end_scop.
(sese_add_exit_phis_edge): Do not use integer_zero_node.
(find_cloog_iv_in_expr, compute_cloog_iv_types_1,
compute_cloog_iv_types): New.
(gloog): Call compute_cloog_iv_types before starting the
translation of the clast.
* graphite.h (struct graphite_bb): New field cloog_iv_types.
(debug_ivtype_map): Declared.
(oldiv_for_loop): New.
2008-12-10 Tobias Grosser <>
PR middle-end/38459
* graphite.c (new_scop): Initialize SCOP_ADD_PARAMS.
(param_index): Assert if parameter is not know after parameter
(find_params_in_bb): Detect params directly in GBB_CONDITIONS.
(find_scop_parameters): Mark, that we have finished parameter
(graphite_transform_loops): Move condition detection before parameter
* graphite.h (struct scop): Add SCOP_ADD_PARAMS.
2008-12-11 John David Anglin <>
PR testsuite/35677
* emutls.c (__emutls_get_address): Make sure offset is really zero
before initializing the object's offset.
2008-12-11 Jakub Jelinek <>
PR c++/38253
* gimplify.c (gimplify_init_constructor): Don't force constructor
into memory if there is just one nonzero element.
2008-12-11 Sebastian Pop <>
Fix testsuite/gfortran.dg/graphite/id-4.f90.
* graphite.c (scan_tree_for_params): Do not compute the multiplicand
when not needed.
2008-12-11 Sebastian Pop <>
* graphite.c (build_scops_1): Initialize open_scop.exit
and sinfo.last.
2008-12-11 Sebastian Pop <>
Jan Sjodin <>
Harsha Jagasia <>
PR middle-end/37852
PR middle-end/37883
PR middle-end/37928
PR middle-end/37980
PR middle-end/38038
PR middle-end/38039
PR middle-end/38073
PR middle-end/38083
PR middle-end/38125
* tree-phinodes.c (remove_phi_nodes): New, extracted from...
* tree-cfg.c (remove_phi_nodes_and_edges_for_unreachable_block):
... here.
* tree-flow.h (remove_phi_nodes, canonicalize_loop_ivs): Declared.
* (graphite.o): Depend on value-prof.h.
(graphite.o-warn): Removed -Wno-error.
* tree-parloops.c (canonicalize_loop_ivs): Allow reduction_list
to be a NULL pointer. Call update_stmt. Return the newly created
cannonical induction variable.
* graphite.h (debug_rename_map): Declared. Fix some comments.
* graphite.c: Reimplement the code generation from graphite to gimple.
Include value-prof.h.
(loop_iv_stack_get_iv): Do not return NULL for constant substitutions.
(get_old_iv_from_ssa_name): Removed.
(graphite_stmt_p): New.
(new_graphite_bb): Test for useful statements before building a
graphite statement for the basic block.
(free_graphite_bb): Do not free GBB_DATA_REFS: this is a bug
in free_data_ref that calls BITMAP_FREE (DR_VOPS (dr)) without reason.
(recompute_all_dominators, graphite_verify,
nb_reductions_in_loop, graphite_loop_normal_form): New.
(scop_record_loop): Call graphite_loop_normal_form.
(build_scop_loop_nests): Iterate over all the blocks of the
function instead of relying on the incomplete information from
SCOP_BBS. Return the success of the operation.
(find_params_in_bb): Use the data from GBB_DATA_REFS.
(add_bb_domains): Removed.
(build_loop_iteration_domains): Don't call add_bb_domains.
Add the iteration domain only to the basic blocks that have been
translated to graphite.
(build_scop_conditions_1): Add constraints only if the basic
block have been translated to graphite.
(build_scop_data_accesses): Completely disabled until data
dependence is correctly implemented.
(debug_rename_elt, debug_rename_map_1, debug_rename_map): New.
(remove_all_edges_1, remove_all_edges): Removed.
(get_new_name_from_old_name): New.
(graphite_rename_variables_in_stmt): Renamed.
rename_variables_in_stmt. Call get_new_name_from_old_name.
Use replace_exp and update_stmt.
(is_old_iv): Renamed is_iv.
(expand_scalar_variables_stmt): Extra parameter for renaming map.
Use replace_exp and update_stmt.
(expand_scalar_variables_expr): Same. Use the map to get the
new names for the renaming of induction variables and for the
renaming of variables after a basic block has been copied.
(expand_scalar_variables): Same.
(graphite_rename_variables): Renamed rename_variables.
(move_phi_nodes): Removed.
(get_false_edge_from_guard_bb): New.
(build_iv_mapping): Do not insert the induction variable of a
loop in the renaming iv map if the basic block does not belong
to that loop.
(register_old_new_names, graphite_copy_stmts_from_block,
copy_bb_and_scalar_dependences): New.
(translate_clast): Heavily reimplemented: copy basic blocks,
do not move them. Finally, in call cleanup_tree_cfg in gloog.
At each translation step call graphite_verify ensuring the
consistency of the SSA, loops and dominators information.
(collect_virtual_phis, find_vdef_for_var_in_bb,
find_vdef_for_var_1, find_vdef_for_var,
patch_phis_for_virtual_defs): Removed huge hack.
(mark_old_loops, remove_dead_loops, skip_phi_defs,
collect_scop_exit_phi_args, patch_scop_exit_phi_args,
gbb_can_be_ignored, scop_remove_ignoreable_gbbs): Removed.
(remove_sese_region, ifsese, if_region_entry, if_region_exit,
if_region_get_condition_block, if_region_set_false_region,
create_if_region_on_edge, move_sese_in_condition, bb_in_sese_p,
sese_find_uses_to_rename_use, sese_find_uses_to_rename_bb,
sese_add_exit_phis_edge, sese_add_exit_phis_var,
rewrite_into_sese_closed_ssa): New.
(gloog): Remove dead code. Early return if code cannot be
generated. Call cleanup_tree_cfg once the scop has been code
(graphite_trans_scop_block, graphite_trans_loop_block): Do not
block loops with less than two loops.
(graphite_apply_transformations): Remove the call to
(limit_scops): When build_scop_loop_nests fails, continue on next
scop. Fix open_scop.entry.
(graphite_transform_loops): Call recompute_all_dominators: force the
recomputation of correct CDI_DOMINATORS and CDI_POST_DOMINATORS.
Call initialize_original_copy_tables and free_original_copy_tables
to be able to copy basic blocks during code generation.
When build_scop_loop_nests fails, continue on next scop.
(value_clast): New union.
(clast_to_gcc_expression): Fix type cast warning.
2008-12-10 Richard Guenther <>
PR tree-optimization/36792
* tree-ssa-pre.c (compute_avail): Handle tcc_comparison like
2008-12-10 Daniel Berlin <>
PR tree-optimization/36792
* tree-ssa-pre.c (compute_avail): Don't insert defs into maximal set.
2008-12-10 Alexandre Oliva <>
PR target/37033
* dwarf2out.c (saved_do_cfi_asm): New.
(dwarf2out_do_frame): Take it into account.
(dwarf2out_d_cfi_asm): Likewise. Set it when appropriate.
2008-12-10 Alexandre Oliva <>
PR middle-end/38271
* tree-sra.c (sra_build_bf_assignment): Avoid warnings for
variables initialized from SRAed bit fields.
2008-12-10 Martin Guy <>
PR target/37668
* arm.c (arm_size_rtx_costs, case NEG): Don't fall through if the
result will be in an FPU register.
2008-12-10 Eric Botcazou <>
PR target/37170
PR target/38448
* final.c (output_addr_const) <SYMBOL_REF>: Call assemble_external
on the associated SYMBOL_REF_DECL node, if any.
2008-12-09 David Daney <>
* config/mips/ (sync_<optab>_12): Replace
(sync_old_<optab>_12): Remove third paramater to
(sync_new_<optab>_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOP
(sync_nand_12): Replace MIPS_SYNC_OP_12_NOT_NOT with
MIPS_SYNC_OP_12_XOR, reduce length attribute to 40.
(sync_old_nand_12): Remove third paramater to MIPS_SYNC_OLD_OP_12
macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOT with
MIPS_SYNC_OLD_OP_12_XOR and reduce length attribute to 40.
(sync_new_nand_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOT with
* config/mips/mips.h (MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
to implement new __sync_nand semantics.
(MIPS_SYNC_OLD_OP_12): Implement new __sync_nand semantics, and
remove third parameter.
2008-12-09 Tobias Grosser <>
* graphite.c (graphite_transform_loops): Always call find_transform ()
in ENABLE_CHECKING. So we test these code paths, even if we do not
generate code.
2008-12-09 Tobias Grosser <>
* graphite.c (print_graphite_bb): Fix printing to file != dump_file.
2008-12-09 Jakub Jelinek <>
PR middle-end/38454
* function.h (struct function): Add always_inline_functions_inlined.
* ipa-inline.c (cgraph_early_inlining): Set it to true.
* tree-optimize.c (execute_fixup_cfg): Likewise.
* builtins.c (avoid_folding_inline_builtin): New function.
(fold_call_expr): Don't optimize always_inline builtins before
(fold_call_stmt): Likewise.
(fold_builtin_call_array): Likewise. Don't call
fold_builtin_varargs for BUILT_IN_MD builtins.
PR tree-optimization/37416
* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR.
2008-12-09 Janis Johnson <>
* doc/sourcebuild.texi (Test Directives): Fix formatting.
2008-12-09 Vladimir Makarov <>
* doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
* doc/invoke.texi (-fira-region): Describe new option.
(-fira-algorithm): Change the values.
* ira-conflicts.c (build_conflict_bit_table,
build_allocno_conflicts): Use ira_reg_classes_intersect_p.
(ira_build_conflicts): Use flag flag_ira_region instead of
flag_ira_algorithm. Prohibit usage of callee-saved likely spilled
base registers for allocnos crossing calls.
* flags.h (enum ira_algorithm): Redefine.
(enum ira_region): New.
(flag_ira_region): New.
* cfgloopanal.c (estimate_reg_pressure_cost): Use flag_ira_region
instead of flag_ira_algorithm.
* toplev.c (flag_ira_algorithm): Change the initial value.
(flag_ira_region): New.
* ira-int.h (ira_reg_classes_intersect_p,
ira_reg_class_super_classes): New.
* ira-color.c (update_copy_costs): Use
ira_reg_classes_intersect_p. Use right class to find hard reg index.
(update_conflict_hard_regno_costs): Ditto. Add a new parameter.
(assign_hard_reg): Ditto. Pass additional argument to
update_conflict_hard_regno_costs. Do not uncoalesce for priority
(allocno_priorities, setup_allocno_priorities,
allocno_priority_compare_func): Move before color_allocnos.
(color_allocnos): Add priority coloring. Use flag flag_ira_region
instead of flag_ira_algorithm.
(move_spill_restore): Check classes of the same reg allocno from
different regions.
(update_curr_costs): Use ira_reg_classes_intersect_p.
(ira_reassign_conflict_allocnos): Ditto.
* opts.c (decode_options): Always set up flag_ira. Set up
flag_ira_algorithm. Warn CB can not be used for architecture.
(common_handle_option): Modify code for -fira-algorithm. Add code
to process -fira-region.
* ira-lives.c (update_allocno_pressure_excess_length): Process
superclasses too.
(set_allocno_live, clear_allocno_live, mark_reg_live,
mark_reg_dead, process_bb_node_lives): Ditto.
* ira-emit.c (ira_emit): Fix insn codes.
* ira-build.c (propagate_allocno_info): Use flag flag_ira_region
instead of flag_ira_algorithm.
(allocno_range_compare_func): Ignore classes for priority coloring.
(setup_min_max_conflict_allocno_ids): Ditto.
(ira_flattening): Use ira_reg_classes_intersect_p.
* genpreds.c (write_enum_constraint_num): Output CONSTRAINT__LIMIT.
* common.opt (fira-algorithm): Modify.
(fira-region): New.
* ira.c (setup_class_hard_regs): Initialize.
(setup_cover_and_important_classes): Modify code setting class
related info for priority coloring.
(setup_class_translate): Ditto.
(ira_reg_classes_intersect_p, ira_reg_class_super_classes): New.
(setup_reg_class_intersect_union): Rename to
setup_reg_class_relations. Add code for setting up new variables.
(find_reg_class_closure): Do not check targetm.ira_cover_classes.
(ira): Use flag flag_ira_region instead of flag_ira_algorithm.
* ira-costs.c (common_classes): New.
(print_costs): Use flag flag_ira_region instead of flag_ira_algorithm.
(find_allocno_class_costs): Ditto. Use common_classes. Translate
(ira_costs): Allocate/deallocate common_classes.
* config/m32c/m32.h (REG_ALLOC_ORDER): Add reg 19.
(REG_CLASS_CONTENTS, reg_class, REG_CLASS_NAMES): New entries for
* reload1.c (choose_reload_regs): Use MODE_INT for partial ints in
2008-12-10 Ben Elliston <>
* config/rs6000/linux-unwind.h (get_regs): Constify casts.
2008-12-09 Jan Hubicka <>
* predict.c (estimate_bb_frequencies): Fix test if profile is present.
2008-12-09 Jakub Jelinek <>
PR tree-optimization/35468
* tree-ssa-ccp.c (fold_stmt_r): Don't fold reads from constant
string on LHS.
2008-12-09 Richard Guenther <>
PR tree-optimization/38445
* tree-ssa-structalias.c (emit_pointer_definition): Only visit
names once.
(emit_alias_warning): Adjust.
2008-12-09 Andrew Haley <>
* fixed-value.c (do_fixed_add): Add comment.
* tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
* builtins.c (fold_builtin_sqrt): Likewise.
2008-12-09 Kai Tietz <>
* function.c (aggregate_value_p): Get fntype from CALL_EXPR in any
* calls.c (nitialize_argument_information): Add fntype argument
and use it for calls.promote_function_args.
(expand_call): Pass fntype to aggregate_value_p if no fndecl
available and pass additional fntype to
* config/i386/i386.c (ix86_reg_parm_stack_space): Remove cfun part
to get function abi type.
(init_cumulative_args): Use for abi kind detection fntype, when no
fndecl is available.
2008-12-09 Andreas Krebbel <>
* config/s390/ (movti, movdi_64, movdi_31,
*movsi_zarch, *movhi, *movqi, *mov<mode>_64, *mov<mode>_31,
*mov<mode>_64dfp, *mov<mode>_64, *mov<mode>_31, mov<mode>): Remove
Q->Q alternative.
(Integer->BLKmode splitter): Removed.
2008-12-08 Uros Bizjak <>
* config/alpha/alpha.c (alpha_set_memflags): Process memory
references in full insn sequence.
2008-12-09 Jason Merrill <>
* gimplify.c (gimplify_init_constructor): Revert to using < rather
than <= for sparseness test.
PR c++/38410
* gimplify.c (gimplify_init_constructor): Don't write out a static
copy of the CONSTRUCTOR for TREE_ADDRESSABLE types or small sparse
2008-12-09 Tobias Grosser <>
PR middle-end/38084
Fix testsuite/gfortran.dg/graphite/id-3.f90.
* graphite.c (scopdet_basic_block_info): Fix bug that found some
regions more than once.
2008-12-09 Ben Elliston <>
* emutls.c (__emutls_get_address): Prototype.
(__emutls_register_common): Likewise.
* config/dfp-bit.c (DFP_TO_INT): Remove unnecessary cast.
2008-12-09 Ben Elliston <>
* config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.
2008-12-08 Steve Ellcey <>
* config/ia64/ (UNSPECV_GOTO_RECEIVER): New constant.
(nonlocal_goto_receiver): New instruction.
2008-12-08 Jakub Jelinek <>
PR c/35443
* c-pretty-print.c (pp_c_expression): Handle BIND_EXPR.
PR c/35442
* c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
2008-12-08 Richard Henderson <>
PR 38240
* tree.h (TYPE_MODE): Invoke vector_type_mode when needed.
* c-decl.c (parser_xref_tag): Use it.
(finish_enum): Likewise.
* tree.c (build_pointer_type_for_mode): Likewise.
(build_reference_type_for_mode, build_index_type): Likewise.
(build_range_type, make_vector_type): Likewise.
(build_common_tree_nodes_2): Likewise.
* stor-layout.c (compute_record_mode): Likewise.
(finalize_type_size, layout_type, make_fract_type): Likewise.
(make_accum_type, initialize_sizetypes): Likewise.
(vector_type_mode): New.
* function.c (allocate_struct_function): Call
invoke_set_current_function_hook before querying anything else.
* config/i386/i386.c (ix86_valid_target_attribute_inner_p): Add avx.
2008-12-08 Luis Machado <>
* alias.c (find_base_term): Synch LO_SUM handling with what
find_base_value does.
2008-12-08 Andrew Haley <>
Kamaraju Kusumanchi <>
* gimple.h (gimple_build_try): Fix declaration.
* builtins.c (fold_builtin_sqrt): Don't use a conditional operator.
* fixed-value.c (do_fixed_add): Likewise.
* tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
2008-12-08 Jakub Jelinek <>
PR middle-end/36802
* omp-low.c (use_pointer_for_field): Only call maybe_lookup_decl
on parallel and task contexts.
2008-12-07 Eric Botcazou <>
* gimple.c (recalculate_side_effects) <tcc_constant>: New case.
2008-12-07 Richard Guenther <>
PR tree-optimization/38405
* tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
not sign-extend truth values.
2008-12-07 Eric Botcazou <>
* tree-sra.c (scalarize_use): Create another temporary with the proper
type for signed types in the use_all && !is_output bitfield case.
2008-12-06 Steven Bosscher <>
PR rtl-optimization/36365
* df-core.c (df_worklist_dataflow_overeager): Remove.
(df_worklist_dataflow): Don't call it, use double-queue only.
2008-12-06 Jakub Jelinek <>
PR middle-end/38428
* tree-ssa-operands.c (get_expr_operands) <case BIT_FIELD_REF>: Set
gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile.
2008-12-07 Ben Elliston <>
* gthr-single.h (__gthread_once): Adjust prototype to match all
other gthreads models.
2008-12-06 Jakub Jelinek <>
* config/i386/i386.c (override_options): Use CPU_AMDFAM10
instead of PROCESSOR_AMDFAM10 for barcelona's schedule.
PR middle-end/38422
* fold-const.c (fold_unary) <CASE_CONVERT>: Don't convert MULT_EXPR
operands to mult_type if it isn't narrower than op0's type.
2008-12-06 Jan Hubicka <>
Jakub Jelinek <>
PR tree-optimization/38074
* cgraphbuild.c (compute_call_stmt_bb_frequency): Fix handling of 0
entry frequency.
* predict.c (combine_predictions_for_bb): Ignore predictor predicting
in both dirrection for first match heuristics.
(tree_bb_level_predictions): Disable noreturn heuristic when there
is no returning path.
2008-12-05 Bernd Schmidt <>
PR rtl-optimization/38272
* reload1.c (choose_reload_regs): Keep reload_spill_index correct
in all cases.
2008-12-05 Jakub Jelinek <>
PR c++/35336
* c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
(pp_c_expression): Likewise.
2008-12-05 Michael Meissner <>
PR c/38416
* c-parser.c (struct c_token): Make pragma_kind 8 bits.
2008-12-05 Jakub Jelinek <>
PR middle-end/37248
* fold-const.c (make_bit_field_ref): Change bitpos and bitsize
arguments to HOST_WIDE_INT. If type has different signedness
than unsignedp or different precision from bitsize, create
the right type for BIT_FIELD_REF and cast to type.
(fold_truthop): Change first_bit and end_bit to HOST_WIDE_INT.
2008-03-05 Richard Guenther <>
PR c++/35336
* fold-const.c (fold_truthop): Remove code generating
BIT_FIELD_REFs of structure bases.
(fold_binary): Likewise.
(make_bit_field_ref): Remove.
(optimize_bit_field_compare): Remove.
(all_ones_mask_p): Remove.
2008-12-05 Jakub Jelinek <>
* tree-sra.c (sra_explode_bitfield_assignment): Always
call unsigned_type_for, if the precision is higher than
needed, call build_nonstandard_integer_type.
PR debug/38367
* function.c (assign_parm_find_stack_rtl): If promoted_mode
is wider than DECL_MODE, adjust MEM_OFFSET (stack_parm) for
big endian.
PR middle-end/38338
* builtins.c (expand_builtin_apply_args): Put before parm_birth_insn
only if internal_arg_pointer is a non-virtual pseudo.
2008-12-05 Joseph Myers <>
* config/rs6000/ (move_from_CR_gt_bit): Enable for
* config/rs6000/ (e500_cr_ior_compare): Likewise.
2008-12-05 Jakub Jelinek <>
PR tree-optimization/37716
* gimplify.c (gimplify_expr): Allow COND_EXPR if
2008-12-05 Uros Bizjak <>
* config/alpha/alpha.c (alpha_fold_vector_minmax): Create
VIEW_CONVERT_EXPR to convert output to long_integer_type_node.
(alpha_emit_conditional_branch): Do not generate direct branch
for UNORDERED comparisons.
2008-12-05 Andreas Schwab <>
* config/rs6000/linux-unwind.h (frob_update_context): Check for
NULL lr.
2008-12-05 Jakub Jelinek <>
PR c/38408
* fold-const.c (fold_checksum_tree): Change buf type to union
2008-12-05 Sebastian Pop <>
PR bootstrap/38262
(cc1-dummy, cc1): Add BACKENDLIBS, remove GMPLIBS.
2008-12-05 Ben Elliston <>
* c-parser.c (c_parser_enum_specifier): Initialise ident_loc and
(c_parser_initelt): Initialise des_loc and ellipsis_loc.
2008-12-04 Eric Botcazou <>
Gary Funck <>
* cse.c (lookup_as_function): Delete mode frobbing code.
(equiv_constant): Re-implement it there for SUBREGs.
2008-12-04 Richard Guenther <>
PR middle-end/36509
* (tree-ssa-alias-warnings.o): Remove.
(tree-ssa-structalias.o): Remove errors.h dependency.
(tree-ssa-reassoc.o): Likewise.
* tree-ssa-reassoc.c: Do not include errors.h.
* tree-ssa-alias-warnings.c: Remove.
* tree-ssa-alias.c (compute_may_aliases): Remove call to
* tree-ssa-structalias.c (emit_pointer_definition): New function.
(emit_alias_warning): Likewise.
(set_uids_in_ptset): Warn for clear cases of type-punning.
* tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
2008-12-04 Eric Botcazou <>
* cse.c (equiv_constant): Fix pasto.
2008-12-04 Nick Clifton <>
* config/stormy16/ Remove extraneous spaces and quotes.
* config/stormy16/stormy16.c: Remove extraneous spaces and fix up
formatting of quotes.
2008-12-04 Jakub Jelinek <>
PR middle-end/38371
* fold-const.c (fold_checksum_tree): Allow modification of
2008-12-03 Jakub Jelinek <>
PR middle-end/38360
* tree-ssa-ccp.c (ccp_fold_builtin): Bail out if the builtin doesn't
have the right number of arguments.
2008-12-03 Richard Guenther <>
PR middle-end/36326
* gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
non-BLKmode types.
2008-12-03 Tomas Bily <>
PR middle-end/38250
* tree-loop-distribution.c (build_size_arg): New function.
(generate_memset_zero): Checks if dr_analyze_innermost succeed.
Reorganized generating of stmts.
* testsuite/gcc.dg/tree-ssa/pr38250.c: New file.
* tree-data-ref.c (dr_analyze_innermost): Returns bool.
Indicate if analysis succeed.
* tree-data-ref.h (dr_analyze_innermost): Returns bool.
* tree-predcom.c (valid_initializer_p, find_looparound_phi):
Uses new definition of dr_analyze_innermost.
2008-12-03 Ben Elliston <>
* tree-ssa-pre.c (do_regular_insertion): Initialise edoubleprime.
2008-12-03 Jakub Jelinek <>
PR tree-optimization/37716
* tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
all the needed operations as trees and gimplify_assign it to dst.
PR target/37610
* (gcc_cv_readelf): Look for readelf.
(gcc_cv_as_cfi_advance_working): Check for working
cfi advances with code alignment factor > 1.
(HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
don't work properly.
* configure: Regenerated.
2008-12-03 Eric Botcazou <>
Jakub Jelinek <>
Andrew Pinski <>
PR rtl-optimization/38281
* combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
set it to NULL_RTX afterwards.
* emit-rtl.c (set_insn_deleted): Fix formatting.
2008-12-02 Richard Sandiford <>
* config/mips/mips.c (mips_expand_builtin): Fix the mode of the
error return value.
* config/mips/ (IMOVE32): New mode iterator.
(movsi): Generalize with IMOVE32.
(*movsi_internal): Likewise.
(*mov<mode>_mips16): Likewise.
(*lwxs): Likewise.
2008-12-02 Nathan Sidwell <>
Maxim Kuvyrkov <>
* config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
PC-relative addressing when compiling for uclinux PIC.
(__cmpdf_internal, __cmpsf_internal): Hide.
(__cmpdf, __cmpsf): Use PIC call sequence.
2008-12-02 Andreas Tobler <>
Jack Howarth <>
* config/i386/t-darwin64: Add m32 multilib support.
2008-12-02 Jack Howarth <>
* testsuite/gcc.dg/darwin-comm.c: Expand to darwin10 and later.
2008-12-02 Jakub Jelinek <>
PR middle-end/38343
* builtins.c (fold_builtin_memory_op): Convert len to sizetype
before using it in POINTER_PLUS_EXPR.
2008-12-02 Richard Guenther <>
PR tree-optimization/38359
* fold-const.c (fold_binary): Fold -1 >> x to -1 only for
non-negative x.
2008-12-02 Martin Jambor <>
PR middle-end/37861
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
(forward_propagate_addr_into_variable_array_index): Check that the
offset is not computed from a MULT_EXPR, use is_gimple_assign rather
than the gimple code directly.
2008-12-02 Ben Elliston <>
* config/spu/float_disf.c (__floatdisf): Prototype.
* config/spu/float_unsdisf.c (__float_undisf): Likewise.
* config/spu/float_unssidf.c (__float_unssidf): Constify cast.
* config/spu/float_unsdidf.c (__float_unsdidf): Likewise.
2008-12-02 DJ Delorie <>
* config/stormy16/stormy16.h (INCOMING_FRAME_SP_OFFSET): Negate.
* config/stormy16/stormy16.c (xstormy16_compute_stack_layout):
Invert add/sub for INCOMING_FRAME_SP_OFFSET.
(xstormy16_expand_prologue): Likewise.
(xstormy16_expand_builtin_va_start): Likewise.
(xstormy16_gimplify_va_arg_expr): Likewise.
2008-12-02 Jakub Jelinek <>
PR middle-end/38343
* builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
potentially returned from folding memcpy.
(expand_builtin_stpcpy_args): Similarly for folding strcpy.
(fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
2008-12-02 Danny Smith <>
PR target/38054
* config/i386/winnt.c (i386_pe_encode_section_info): Condition stdcall
decoration of function RTL names here on Ada language.
2008-12-01 Vladimir Makarov <>
PR rtl-optimization/38280
* ira-build.c (loop_is_inside_p, regno_allocno_order_compare_func,
ira_rebuild_regno_allocno_list): New functions.
(regno_allocnos): New static variable.
(remove_unnecessary_allocnos): Allocate/deallocate regno_allocnos.
Call ira_rebuild_regno_allocno_list.
2008-12-01 David Daney <>
Adam Nemet <>
* config/mips/linux64.h (DRIVER_SELF_SPECS): Add
2008-12-01 Vladimir Makarov <>
PR rtl-optimization/37514
* reload1.c (reload_as_needed): Invalidate reg_last_reload
from previous insns.
2008-12-01 Jakub Jelinek <>
PR c++/38348
* c-omp.c (c_finish_omp_for): Only transform pointer
++ or -- into MODIFY_EXPR if second argument is non-NULL.
PR rtl-optimization/38245
* tree-vrp.c (abs_extent_range): New function.
(extract_range_from_binary_expr): Compute range
for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
or includes zero or if vr1 is VR_RANGE and op0 has some
other range.
2008-12-01 Uros Bizjak <>
PR middle-end/37908
* config/alpha/alpha.c (alpha_split_atomic_op): Properly handle NAND
case by calculating ~(new_reg & val) instead of (~new_reg & val).
* config/alpha/ (sync_nand<mode>): Change insn RTX
to (not:I48MODE (and:I48MODE (...))).
(sync_old_nand<mode>): Ditto.
(sync_new_nand<mode>): Ditto.
2008-12-01 Nick Clifton <>
* config/stormy16/ (CARRY_REG): New constant.
Replace uses of the "y" register class with direct references to
the CARRY_REG register.
* config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
register with clobbers of the carry register.
(xstormy16_secondary_reload_class): Do not return CARRY_REGS.
(xstormy16_split_cbranch): Remove redundant carry parameter.
(xstormy16_expand_arith): Likewise.
* config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
* config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
Update prototype.
(xstormy16_expand_arith): Likewise.
2008-12-01 Chen Liqin <>
* config/score/score.h (IRA_COVER_CLASSES): Define.
2008-11-30 Eric Botcazou <>
PR target/38287
* config/sparc/ (divsi3 expander): Remove constraints.
(divsi3_sp32): Add new alternative with 'K' for operand #2.
(cmp_sdiv_cc_set): Factor common string.
(udivsi3_sp32): Add new alternative with 'K' for operand #2.
Add TARGET_V9 case.
(cmp_udiv_cc_set): Factor common string.
2008-11-30 John David Anglin <>
PR middle-end/38283
* varasm.c (emutls_finish): Fix common registration.
2008-11-29 Jakub Jelinek <>
PR target/29987
* config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
2008-11-29 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for
operand wrapped in NOT. Emit NAND as (ior (not X) (not Y)).
(rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)).
* config/rs6000/ (sync_nand<mode>): Represent NAND in RTL.
Call rs6000_emit_sync with CODE=NOT and unmodified operands.
Ignore sub-word case for now.
(sync_nand<mode>_internal): Represent NAND in RTL.
(sync_old_nand<mode): Same.
(sync_old_name<mode>_internal): Same.
(sync_new_nand<mode>): Same.
(sync_new_nand<mode>_internal): Same.
(sync_boolcshort_internal): Expect NAND.
2008-11-28 Richard Guenther <>
PR tree-optimization/37955
PR tree-optimization/37742
* tree-vect-transform.c (vectorizable_store): Remove assert for
compatible aliases.
(vectorizable_load): Likewise.
2008-11-27 Richard Guenther <>
* tree-ssa-structalias.c (intra_create_variable_infos): Make
a constraint for the static chain parameter.
2008-11-27 Bernd Schmidt <>
* config/bfin/bfin.opt (micplb): New option.
* config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
* config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
* config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
all 54x CPUs.
(indirect_call_p): New function.
(workaround_speculation): Handle anomaly 05-00-0426 when
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
* doc/invoke.texi (Blackfin Options): Document -micplb.
2008-11-26 DJ Delorie <>
* config/m32c/ ("extendhipsi2"): New.
* config/m32c/ (bset_qi): Add memsym_operand predicate.
* config/m32c/ (andhi3_24, iorhi3_24): Don't prefer HL class.
* config/m32c/ (zero_extendqihi2): Likewise.
2008-11-26 Adam Nemet <>
* config/mips/ (clear_hazard): Rename to
clear_hazard_<mode>. Use mode-specific addition.
(clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
or gen_clear_hazard_di depending on the size of Pmode.
2008-11-26 DJ Delorie <>
* Test m32c-elf-gas for .loc.
* configure: Likewise.
2008-11-26 Janis Johnson <>
PR testsuite/28870
* doc/sourcebuild.texi (Test Directives): Add dg-timeout and
2008-11-26 Uros Bizjak <>
* config/i386/ (memory_barrier_nosse): Disable also for
TARGET_64BIT. Remove special asm template for TARGET_64BIT case.
(memory_barrier): Do not generate memory_barrier_nosse instruction
* config/i386/ (*sse2_mfence): Also enable for TARGET_64BIT.
2008-11-26 Fredrik Unger <>
* config/soft-fp/floatuntisf.c (__floatuntisf): Correct
function name from __floatundisf.
* config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
2008-11-25 Daniel Berlin <>
Richard Guenther <>
PR tree-optimization/37869
* tree-ssa-structalias.c (struct constraint_graph): Remove
pt_used and number_incoming members.
(build_pred_graph): Do not allocate them.
(condense_visit): Do not use them.
(label_visit): Likewise.
(free_var_substitution_info): Do not free them.
2008-11-25 Vladimir Makarov <>
* doc/invoke.texi (ira-max-loops-num): Change semantics.
* ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
* ira-color.c (allocno_spill_priority): New function.
(remove_allocno_from_bucket_and_push, push_allocno_to_spill):
Print more info about the spilled allocno.
(push_allocnos_to_stack): Use allocno_spill_priority. Add more
checks on bad spill.
* ira-build.c (loop_node_to_be_removed_p): Remove.
(loop_compare_func, mark_loops_for_removal): New functions.
(remove_uneccesary_loop_nodes_from_loop_t): Use member
(remove_unnecessary_allocnos): Call mark_loops_for_removal.
* ira.c (ira): Don't change flag_ira_algorithm.
* params.def (ira-max-loops-num): Change the value.
2008-11-25 Maxim Kuvyrkov <>
* config/m68k/ (extendsidi2, extendsidi2_mem): Merge, clean up.
Disable unsupported alternative for ColdFire,
add new alternative that ColdFire can handle.
2008-11-25 Eric Botcazou <>
* regrename.c (merge_overlapping_regs): Add registers artificially
defined at the top of the basic block to the set of live ones just
before the first insn.
2008-11-25 H.J. Lu <>
Joey Ye <>
PR middle-end/37843
* config/i386/i386.c (ix86_function_ok_for_sibcall): Return
false if we need to align the outgoing stack.
(ix86_update_stack_boundary): Check parm_stack_boundary.
2008-11-25 Richard Guenther <>
PR middle-end/38151
PR middle-end/38236
* tree-ssa-alias.c (struct alias_info): Remove written_vars.
Remove dereferenced_ptrs_store and dereferenced_ptrs_load
in favor of dereferenced_ptrs.
(init_alias_info): Adjust.
(delete_alias_info): Likewise.
(compute_flow_insensitive_aliasing): Properly
include all aliased variables.
(update_alias_info_1): Use dereferenced_ptrs.
(setup_pointers_and_addressables): Likewise.
(get_smt_for): Honor ref-all pointers and pointers with known alias
set properly.
* config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
2008-11-25 Uros Bizjak <>
PR target/38254
* config/i386/ (memory_barrier_nosse): New insn pattern.
(memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
2008-11-24 Maxim Kuvyrkov <>
* config/m68k/ (cmpdi): Use (scratch) instead of pseudo.
2008-11-24 Richard Sandiford <>
* config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
2008-11-24 Maxim Kuvyrkov <>
PR target/35018
* config/m68k/ (ok_for_coldfire, enabled): New attributes.
(addsi_lshrsi_31): Add ColdFire-friendly alternatives.
2008-11-24 Uros Bizjak <>
* config/i386/ (UNSPECV_CMPXCHG): Rename from
* config/i386/ Use UNSPECV_CMPXCHG instead of
PR target/36793
* config/i386/ (memory_barrier): New expander.
2008-11-24 Jakub Jelinek <>
PR middle-end/37135
* dse.c (find_shift_sequence): Optimize extraction from a constant.
2008-11-23 John David Anglin <>
* pa.c (function_arg): Revert 2008-10-26 change.
2008-11-23 Helge Deller <>
* pa/linux-atomic.c (EBUSY): Define if not _LP64.
(__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
succeeded and lws_ret is not equal to oldval.
2008-11-23 Kaz Kojima <>
* config/sh/ (consttable_4): Call mark_symbol_refs_as_used.
2008-11-22 Andreas Schwab <>
* varasm.c (default_file_start): Suppress ASM_APP_OFF also with
-dA and -dP.
2008-11-22 Adam Nemet <>
* config/mips/ (rdhwr): Rename to rdhwr_synci_step_<mode>.
Use constant 1 as the operand.
* config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
Rename gen_rdhwr to gen_rdhwr_synci_step_si or
gen_rdhwr_synci_step_di depending on the size of Pmode.
2008-11-22 Uros Bizjak <>
PR target/38222
* config/i386/ (SWI248): New mode iterator.
(SWI32): Remove mode iterator.
(popcount<mode>2): Rename from popcounthi2, popcountsi2 and
popcounthi2 insn patterns. Macroize pattern using SWI248 mode
iterator. Generate popcnt mnemonic without mode extensions
for Darwin x86 targets.
(*popcount<mode>2_cmp): Ditto.
(*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
extensions for Darwin x86 targets.
2008-11-22 Eric Botcazou <>
* config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
only if HAVE_AS_SPARC_UA_PCREL is defined.
2008-11-22 Richard Sandiford <>
* ira-costs.c (find_allocno_class_costs): Work out the maximum
allocno_costs value of the classees with the lowest total_costs
value. Use this to set ALLOCNO_COVER_CLASS_COST here...
(setup_allocno_cover_class_and_costs): ...rather than here.
Use the ALLOCNO_COVER_CLASS_COST for all registers in the
preferred class.
2008-11-22 Jakub Jelinek <>
PR middle-end/37323
* builtins.c (expand_builtin_apply_args): Emit sequence before
parm_birth_insn instead of after entry_of_function's first insn.
PR middle-end/37316
* function.c (assign_parm_remove_parallels): Pass
data->passed_type as third argument to emit_group_store.
PR target/37170
* final.c (mark_symbol_refs_as_used): New function.
* output.h (mark_symbol_refs_as_used): New prototype.
* config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
(s390_output_pool_entry): Use mark_symbol_refs_as_used.
* config/arm/ (consttable_4): Likewise.
PR target/37880
* doc/invoke.texi: Adjust wording of -mcmodel=medium description.
2008-11-21 Jakub Jelinek <>
PR middle-end/38200
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
propagate x = &a into *x = b if conversion from b to a's type is
2008-11-21 Eric Botcazou <>
* caller-save.c (insert_one_insn): Take into account REG_INC notes
for the liveness computation of the new insn.
2008-11-21 DJ Delorie <>
* config/stormy16/ (movqi_internal, movhi_internal):
Moves to/from below100 space (W) can only use r0-r7.
2008-11-21 Paolo Carlini <>
PR other/38214
* doc/invoke.texi (Optimization Options): Fix typo.
2008-11-21 H.J. Lu <>
Xuepeng Guo <>
* config.gcc (extra_headers): For x86 and x86-64, remove
gmmintrin.h, add immintrin.h and avxintrin.h.
* config/i386/gmmintrin.h: Renamed to ...
* config/i386/avxintrin.h: This. Issue an error if
* config/i386/immintrin.h: New.
2008-11-21 Jakub Jelinek <>
PR target/38208
* reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
mode of PLUS, not mode of the eliminated register.
2008-11-21 Uros Bizjak <>
* config/i386/ (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
* config/i386/ (avx_nand<mode>3): Rename to avx_andnot<mode>3.
(<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
(sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
(*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
(*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
(*nand<mode>3): Rename to *andnot<mode>3.
(*nandtf3): rename to *andnottf3.
* config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
Use CODE_FOR_mmx_andnotv2si3.
[IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
[IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
[IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
[IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
[IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
2008-11-21 Uros Bizjak <>
PR middle-end/37908
* config/ia64/ia64.c (ia64_expand_atomic_op): Properly handle NAND
case by calculating ~(new_reg & val) instead of (~new_reg & val).
* config/ia64/ (sync_nand<mode>): Change insn RTX
to (not:IMODE (and:IMODE (...))).
(sync_old_nand<mode>): Ditto.
(sync_new_nand<mode>): Ditto.
2008-11-20 Joseph Myers <>
* config/arm/ (thumb2_casesi_internal,
thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
2008-11-20 Andreas Krebbel <>
* gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
nand to the changed 4.4 semantic.
2008-11-20 Jakub Jelinek <>
PR middle-end/29215
* builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
(fold_builtin_memory_op): Handle even the case where just one
of src and dest is an address of a var decl component, using
TYPE_REF_CAN_ALIAS_ALL pointers. Remove is_gimple_min_invariant
and readonly_data_expr src check.
* tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
up warnings.
PR rtl-optimization/36998
* dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
arguments. Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
(compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
stack_adjust_offset callers.
(dwarf2out_stack_adjust): Likewise. Handle insns in annulled
branches properly.
(compute_barrier_args_size): Handle insns in annulled branches
2008-11-20 Uros Bizjak <>
PR target/38151
* config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
Handle cases when integer argument crosses argument register boundary.
2008-11-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
PR bootstrap/33100
* config.gcc (i[34567]86-*-solaris2*): Don't include
i386/t-crtstuff here.
Move extra_parts, i386/t-sol2 in tmake_file to libgcc/
* config/i386/t-sol2: Move to libgcc/config/i386.
2008-11-20 Samuel Thibault <>
PR driver/21706
* tlink.c: Include "libiberty.h".
(initial_cwd): Change type into char *.
(tlink_init): Call getpwd instead of getcwd.
2008-11-19 Zdenek Dvorak <>
PR rtl-optimization/32283
* tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
of the induction variable to decide whether it may wrap.
* tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
initialization of the bound before the loop.
* simplify-rtx.c (simplify_binary_operation_1): Add two
simplifications regarding AND.
(simplify_plus_minus): Only fail if no simplification is possible.
* loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
2008-11-20 Jakub Jelinek <>
PR c++/36631
* gimplify.c (gimplify_call_expr): Defer most of the cannot inline
checking until GIMPLE lowering.
* gimple-low.c (check_call_args): New function.
(lower_stmt) <case GIMPLE_CALL>: Call it.
2008-11-19 Adam Nemet <>
* config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
with the same type as the first operand of the AND expression.
2008-11-19 Vladimir Makarov <>
PR bootstrap/37859
* ira-int.h (struct ira_loop_tree_node): New member
* ira-color.c (print_loop_title): Print loop bbs.
* ira-emit.c (entered_from_non_parent_p,
setup_entered_from_non_parent_p): New functions.
(not_modified_p): Rename to store_can_be_removed_p. Check there
is no side entries.
(generate_edge_moves): Use store_can_be_removed_p instead of
(ira_emit): Call setup_entered_from_non_parent_p.
* ira-build.c (copy_info_to_removed_store_destinations):
(ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
update all accumulated attributes.
2008-11-19 Vladimir Makarov <>
PR bootstrap/37790
* ira-int.h (ira_copy_allocno_live_range_list,
ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
ira_finish_allocno_live_range_list): New prototypes.
ira_pseudo_live_ranges_intersect_p): Remove.
* ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
ira_pseudo_live_ranges_intersect_p): Rename to
allocnos_have_intersected_live_ranges_p and
pseudos_have_intersected_live_ranges_p. Move them from here to ...
* ira-color.c: ... here
(coalesced_allocno_conflict_p): Use
set_coalesced_allocnos_live_points): Remove.
setup_slot_coalesced_allocno_live_ranges): New.
(coalesce_spill_slots): Use ranges of coalesced allocnos.
(ira_sort_regnos_for_alter_reg): Use
(ira_reuse_stack_slot): Use
* global.c (pseudo_for_reload_consideration_p): Check
flag_ira_share_spill_slots too.
* ira-build.c (copy_allocno_live_range_list): Rename to
ira_copy_allocno_live_range_list. Make it external.
(merge_ranges): Rename to ira_merge_allocno_live_ranges. Make it
(ira_allocno_live_ranges_intersect_p): New.
(ira_finish_allocno_live_range_list): New.
(finish_allocno): Use it.
(remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
(copy_info_to_removed_store_destinations): Ditto. Use
(ira_flattening): Use ira_merge_allocno_live_ranges.
* ira.c (too_high_register_pressure_p): New function.
(ira): Switch off sharing spill slots if the pressure is too high.
2008-11-19 Richard Guenther <>
* tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
non-sizetype offsets if their precision matches that of the pointer.
* expr.c (expand_expr_real_1): Always sign-extend the offset
operand of a POINTER_PLUS_EXPR.
2008-11-19 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config.gcc: Unobsolete mips-sgi-irix[56]*.
(mips-sgi-irix[56]*): No need to use fixproto.
2008-11-19 Maxim Kuvyrkov <>
Paul Brook <>
* config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
executable stack.
2008-11-19 Maxim Kuvyrkov <>
* config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
2008-11-19 Razya Ladelsky <>
PR target/38156
* tree-parloops.c (loop_parallel_p): NULL vect_dump.
(separate_decls_in_region): Create shared struct even when there
are only reductions.
2008-11-19 Hariharan Sandanagobalane <>
* config/picochip/picochip.c (headers): Remove an unnecessary
header file.
2008-11-19 Andrew Stubbs <>
PR target/36133
* config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
* config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
shift instructions.
* config/m68k/ Adjust all conditional branches that use the
carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
2008-11-18 Uros Bizjak <>
PR target/37362
* config/mips/ (move_doubleword_fpr<mode>): Check that "high"
is a register or zero operand in the correct mode before generating
mtch1 insn or a register operand in the correct mode before generating
mfch1 insn.
(mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
2008-11-18 Adam Nemet <>
* config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
(mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
mipsisa*-*-elf*. Handle mipsisa64r2*.
* config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
* config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
(MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
(MULTILIB_EXCLUSIONS): Add mips64r2/mfp64. Add mips64r2/mips16.
Fix mips16 if mips64 or mips64r2 are multilib defaults.
* config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
2008-11-18 Jakub Jelinek <>
PR target/38130
* config/i386/ (allocate_stack_worker_32,
allocate_stack_worker_64): Don't use match_dup between input and
output operand.
(allocate_stack): Adjust gen_stack_worker_{32,64} caller.
* config/i386/i386.c (ix86_expand_prologue): Likewise.
2008-11-18 Kai Tietz <>
* config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
is forced when trying to do a symbol link for it.
2008-11-17 Adam Nemet <>
* expmed.c (extract_bit_field_1): Also use a temporary and
convert_extracted_bit_field when the conversion from ext_mode to
the target mode requires explicit truncation.
2008-11-17 Richard Sandiford <>
* config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
Tweak formatting.
* config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
registers when not optimizing.
2008-11-17 Richard Sandiford <>
* config/mips/ (*mul_acc_si): Remove middle alternative
and its associated define_split. Expose the all-d alternative
to the register allocator, but mark it with "?". Mark the first
alternative with "*?*?".
(*mul_sub_si): Likewise.
(*mul_acc_si_r3900): New pattern.
2008-11-17 Jakub Jelinek <>
PR middle-end/38140
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
propagating x = &a into *x = b, add a cast if not useless
type conversion or don't optimize if another stmt would be
2008-11-17 Uros Bizjak <>
PR middle-end/37908
* optabs.c (expand_sync_operation): Properly handle NAND case
by calculating ~(t1 & val) instead of (~t1 & val).
* builtins.c (expand_builtin_sync_operation): Warn for changed
semantics in NAND builtins.
* c.opt (Wsync-nand): New warning option. Describe -Wsync-nand.
* doc/invoke.texi (Warning options): Add Wsync-nand.
* doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
__sync_fetch_and_nand builtin operation in the example. Add a note
about changed semantics in GCC 4.4.
[__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
operation in the example. Add a note about changed semantics in
GCC 4.4.
2008-11-16 Jan Hubicka <>
* cgraph.c (cgraph_function_body_availability): Fix test of externally
2008-11-16 Joshua Kinard <>
* config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
to -mips4.
2008-11-16 Richard Sandiford <>
PR target/38052
* config/mips/mips.c (mips_cfun_call_saved_reg_p)
(mips_cfun_might_clobber_call_saved_reg_p): New functions,
split out from...
(mips_save_reg_p): Always consult TARGET_CALL_SAVED_GP
rather than call_really_used_regs when handling $gp.
2008-11-16 Richard Sandiford <>
PR target/38052
* config/mips/mips.c (machine_function): Update the comment
above global_pointer.
(mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
that a function doesn't need a global pointer.
(mips_current_loadgp_style): Update accordingly.
(mips_restore_gp): Likewise.
(mips_output_cplocal): Likewise.
(mips_expand_prologue): Likewise.
2008-11-16 Eric Botcazou <>
* config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
parameter. Use DImode for computing the number of registers.
(function_arg): Adjust for above change.
(function_value): Likewise.
2008-11-15 Zdenek Dvorak <>
PR tree-optimization/37950
* tree-flow-inline.h (memory_partition): Return NULL when aliases were
not computed for the current function.
2008-11-15 Jakub Jelinek <>
PR target/38123
* config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
gpr and other COMPONENT_REFs.
2008-11-15 Richard Guenther <>
PR tree-optimization/38051
* tree-ssa-alias.c (update_alias_info_1): Manually find
written variables.
2008-11-15 Joshua Kinard <>
* doc/invoke.texi (-mfix-r10000): Document.
* config/mips/mips.opt (mfix-r10000): New option.
* config/mips/mips-protos.h (mips_output_sync_loop): Declare.
* config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
(MIPS_SYNC_OP): Likewise.
(MIPS_SYNC_OP_12): Likewise.
(MIPS_SYNC_OLD_OP_12): Likewise.
(MIPS_SYNC_NEW_OP_12): Likewise.
(MIPS_SYNC_OLD_OP): Likewise.
(MIPS_SYNC_NAND): Likewise.
(MIPS_SYNC_EXCHANGE_12): Likewise.
(MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
delay slots.
* config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
(mips_init_print_operand_punct): Treat '~' as a punctuation character.
(mips_output_sync_loop): New function.
(mips_override_options): Make -march=r10000 imply -mfix-r10000.
Make -mfix-r10000 require branch-likely instructions.
* config/mips/ (sync_compare_and_swap<mode>): Use
(compare_and_swap_12): Likewise.
(sync_add<mode>): Likewise.
(sync_<optab>_12): Likewise.
(sync_old_<optab>_12): Likewise.
(sync_new_<optab>_12): Likewise.
(sync_nand_12): Likewise.
(sync_old_nand_12): Likewise.
(sync_new_nand_12): Likewise.
(sync_sub<mode>): Likewise.
(sync_old_add<mode>): Likewise.
(sync_old_sub<mode>): Likewise.
(sync_new_add<mode>): Likewise.
(sync_new_sub<mode>): Likewise.
(sync_<optab><mode>): Likewise.
(sync_old_<optab><mode>): Likewise.
(sync_new_<optab><mode>): Likewise.
(sync_nand<mode>): Likewise.
(sync_old_nand<mode>): Likewise.
(sync_new_nand<mode>): Likewise.
(sync_lock_test_and_set<mode>): Likewise.
(test_and_set_12): Likewise.
2008-11-15 Eric Botcazou <>
* gcc.c (cc1_options): Fix comment.
2008-11-15 Jakub Jelinek <>
PR c++/37561
* c-typeck.c (build_unary_op): Don't call get_unwidened. Use
argtype instead of result_type.
2008-11-14 Adam Nemet <>
* ira-int.h (struct ira_loop_tree_node): Improve comments for
subloop_next/next and subloops/childen fields.
2008-11-14 Ulrich Weigand <>
* config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
(STANDARD_INCLUDE_DIR): Redefine to "/include".
* config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
2008-11-14 Vladimir Makarov <>
PR rtl-optimization/37397
* ira-int.h (struct ira_allocno): New member bad_spill_p.
* ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
* ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
(create_cap_allocno, propagate_allocno_info,
remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
(update_bad_spill_attribute): New function.
(ira_build): Call it.
* ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
2008-11-14 Jakub Jelinek <>
PR tree-optimization/38104
* gimplify.c (gimple_regimplify_operands): Add referenced vars
before calling mark_symbols_for_renaming, not after it.
2008-11-14 Kaz Kojima <>
* config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
2008-11-14 Maxim Kuvyrkov <>
Andrew Stubbs <>
Gunnar Von Boehn <>
PR target/36134
* config/m68k/ (addsi3_5200): Add a new alternative preferring
the shorter LEA insn over ADD.L where possible.
2008-11-14 Thomas Schwinge <>
* (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
systems, which are assumend to always provide SSP-support in glibc.
Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
* configure: Regenerate.
2008-11-14 Jakub Jelinek <>
PR middle-end/36125
* function.c (gimplify_parameters): For callee copies parameters,
move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
2008-11-13 Thomas Schwinge <>
PR target/28102
* config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
x86 parts into the `i[34567]86-*-linux*' and parts that are
independent of the processor architecture into the `*-*-linux*' cases.
(*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
* config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
* config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
(HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
2008-11-13 Ruan Beihong <>
* config/mips/ (<u>div<mode>3, <u>mod<mode>3): New patterns.
* config/mips/ (ls2_imult): Handle imul3nc.
(ls2_idiv): Likewise idiv3.
(ls2_prefetch): New reservation.
* config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
* config/mips/ (type): Add imul3nc and idiv3.
(length): Handle idiv3.
(any_mod): New code_iterator.
(u): Handle MOD and UMOD.
(mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
(prefetch): Handle TARGET_LOONGSON_2EF.
2008-11-13 Jakub Jelinek <>
PR c++/27017
* dwarf2out.c (prune_unused_types_walk_local_classes): New function.
(prune_unused_types_walk): Call it for non-perennial local classes.
Set die_mark to 2 if recursing on children. If die_mark is 1 on
entry, just set it to 2 and recurse on children, don't walk attributes
2008-11-13 Martin Michlmayr <>
* c-common.c (warn_about_parentheses): Add missing whitespace
in warning.
2008-11-13 Paul Brook <>
* doc/invoke.texi: Document --fix-cortex-m3.
* config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
Cortex-M3 cpu is selected.
(output_move_double): Avoid overlapping base register and first
destination register when fix_cm3_ldrd.
* config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
2008-11-13 Jakub Jelinek <>
PR bootstrap/38100
* gimple.h (gimple_range_check_failed): Remove prototype.
* gimple.c (gimple_check_failed): Don't check GCC_VERSION
in guarding #if.
(gimple_range_check_failed): Removed.
2008-11-13 Andrew Haley <>
PR bootstrap/38088
* mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
2008-11-12 Jakub Jelinek <>
PR c++/36478
2007-05-07 Mike Stump <>
* doc/invoke.texi (Warning Options): Document that -Wempty-body
also checks for and while statements in C++.
2008-11-12 Dodji Seketeli <>
PR debug/27574
* cgraph.h: New abstract_and_needed member to struct cgraph_node.
* cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
- which clones are reachable - as "abstract and needed".
* cgraph.c (cgraph_release_function_body): If a node is
"abstract and needed", do not release its DECL_INITIAL() content
that will be needed to emit debug info.
2008-11-12 Steve Ellcey <>
PR target/27880
* aclocal.m4: Include ../config/unwind_ipinfo.m4.
* configure: Regenerate.
* Regenerate.
2008-11-12 Jack Howarth <>
PR bootstrap/38010
* gcc/config.gcc: Use darwin9.h on darwin10 as well.
2008-11-12 Jakub Jelinek <>
2008-10-21 Jakub Jelinek <>
* gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
2008-11-12 Jason Merrill <>
PR c++/38007
* c-common.c (c_common_signed_or_unsigned_type): Remove C++
special casing.
2008-11-12 Anatoly Sokolov <>
* config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
atmega32u6 devices.
* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2008-11-12 Ulrich Weigand <>
* gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
packed-stack special handling.
(FRAME_ADDR_RTX): Add definition.
2008-11-12 Jakub Jelinek <>
PR target/35366
* fold-const.c (native_encode_string): New function.
(native_encode_expr): Use it for STRING_CST.
2008-11-12 DJ Delorie <>
* config/m32c/ (cond_to_int peephole2): Don't eliminate the
insns if the intermediate value will be used later.
2008-11-12 Andreas Schwab <>
* config/m68k/m68k.c (print_operand): Mask off extra extension
bits when writing out the representation of real values.
2008-11-12 Ira Rosen <>
PR tree-optimization/38079
* tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
with vect_dump.
2008-11-12 Jakub Jelinek <>
PR c++/35334
* c-pretty-print.c (pp_c_complex_expr): New function.
(pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
PR target/35366
* expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
than INNER and INNER is a constant, forcibly align INNER as much
as needed.
2008-11-11 Richard Sandiford <>
* cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
2008-11-11 Richard Sandiford <>
PR rtl-optimization/37363
* simplify-rtx.c (simplify_plus_minus): Don't create
(const (minus ...)) expresisons.
2008-11-11 Eric Botcazou <>
* ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
2008-11-10 Catherine Moore <>
* config.gcc (mips64vrel-*-elf*): Include the tm_file
prior to vr.h.
* config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
(DRIVER_SELF_SPECS): New definition.
* config/mips/elfoabi.h (DRIVER_SELF_SPECS): Include
* config/mips/sde.h: Likewise.
* config/mips/iris6.h: Likewise.
* config/mips/vr.h: Likewise.
* config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New.
2008-11-10 Vladimir Makarov <>
PR rtl-optimizations/37948
* ira-int.h (struct ira_allocno_copy): New member constraint_p.
(ira_create_copy, ira_add_allocno_copy): New parameter.
* ira-conflicts.c (process_regs_for_copy): New parameter. Pass it
to ira_add_allocno_copy.
(process_reg_shuffles, add_insn_allocno_copies): Pass a new
parameter to process_regs_for_copy.
(propagate_copies): Pass a new parameter to ira_add_allocno_copy.
Fix typo in passing second allocno to ira_add_allocno_copy.
* ira-color.c (update_conflict_hard_regno_costs): Use head of
coalesced allocnos list.
(assign_hard_reg): Ditto. Check that assigned allocnos are not in
the graph.
(add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
(add_ira_allocno_to_ordered_bucket): Rename to
(push_ira_allocno_to_stack): Rename to push_allocno_to_stack. Use
head of coalesced allocnos list.
(push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
Check that it is aready calculated.
(push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
(setup_allocno_left_conflicts_num): Use head of coalesced allocnos
(coalesce_allocnos): Do extended coalescing too.
* ira-emit.c (add_range_and_copies_from_move_list): Pass a new
parameter to ira_add_allocno_copy.
* ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
(print_copy): Print copy origination too.
* ira-costs.c (scan_one_insn): Use alloc_pref for load from
equivalent memory.
2008-11-10 Kaz Kojima <>
PR rtl-optimization/37514
* config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
flag_ira_share_spill_slots to 2 if it's already non-zero.
(OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
flag_ira_share_spill_slots is 2.
2008-11-10 Kevin Buettner <>
* config/m32c/ (prologue_enter_16): Set FB to SP - 2.
(prologue_enter_32): Set FB to SP - 4.
2008-11-10 DJ Delorie <>
* config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
constraint for single-bit-clear in lower byte of HI constant, vs
Imb which just ignores the upper byte.
* config/m32c/ (m32c_1mask8_operand): Use it.
* config/m32c/ (andhi3_16, andhi3_24): Use it.
(iorhi3_16): Check for single bit set, not single bit clear.
2008-11-10 Janis Johnson <>
* doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
* doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
2008-11-10 Eric Botcazou <>
* calls.c (store_unaligned_arguments_into_pseudos): Deal only with
values living in memory and use more precise alignment information.
2008-11-10 Jakub Jelinek <>
PR middle-end/35314
* tree-mudflap.c (mf_build_check_statement_for): Split then_block
after __mf_check call if the call must end a bb.
2008-11-10 Ralph Loader <>
PR middle-end/37807
PR middle-end/37809
* combine.c (force_to_mode): Do not process vector types.
* rtlanal.c (nonzero_bits1): Do not process vector types.
(num_sign_bit_copies1): Likewise.
2008-11-09 Thomas Schwinge <>
* config/i386/gnu.h: Add copyright and licensing header.
* config/gnu.h: Likewise.
2008-11-07 Andrew Pinski <>
* fwprop.c (fwprop_done): Call df_remove_problem.
2008-11-07 Sebastian Pop <>
PR middle-end/37379
* tree-scalar-evolution.c (instantiate_scev_1): Return
chrec_dont_know for VL_EXP_CLASS_P.
2008-11-06 Uros Bizjak <>
* reg-stack.c (reg_to_stack): Add missing braces in memset
size calculation.
2008-11-06 Andrew Stubbs <>
* config/arm/bpabi.h (PROFILE_HOOK): New undef.
2008-11-06 David Edelsohn <>
PR target/26397
* config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
2008-11-06 Kazu Hirata <>
PR target/35574
* config/sparc/ (D): New.
* config/sparc/ (const_double_or_vector_operand): New.
* config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
'D' constraint.
* config/sparc/ (*movdf_insn_sp32_v9, *movdf_insn_sp64):
Use the 'D' constraint in addition to 'F' in some alternatives.
(DF splitter): Generalize for V64mode.
* doc/md.texi (SPARC): Document the 'D' constraint.
2008-11-06 Uros Bizjak <>
* reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
2008-11-06 Ben Elliston <>
* gcc.c: Remove ancient comment about a bug in Sun cc.
2008-11-05 Janis Johnson <>
* doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
2008-11-06 Ben Elliston <>
* config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
2008-11-06 Ben Elliston <>
* config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
2008-11-05 Hans-Peter Nilsson <>
PR target/38016
* config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
just MEM_P.
2008-11-05 Martin Jambor <>
PR middle-end/37861
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
pointer arithmetics into array_ref if the array is accessed
through an indirect_ref.
2008-11-05 Richard Guenther <>
PR middle-end/37742
* tree-ssa.c (useless_type_conversion_p_1): Check different restrict
qualified pointer conversion before stripping qualifiers.
* gimplify.c (create_tmp_from_val): Use correctly qualified type.
* tree-flow.h (may_propagate_address_into_dereference): Declare.
* tree-ssa-ccp.c (may_propagate_address_into_dereference): New
(ccp_fold): Use it.
* tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
properly canonicalize binary ops.
(forward_propagate_addr_expr_1): Use
2008-11-05 Uros Bizjak <>
PR middle-end/37286
* reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
Initialize uninitialized input registers with a NaN.
2008-11-05 Tobias Grosser <>
PR middle-end/37833
* graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
2008-11-05 Tobias Grosser <>
PR middle-end/37943
* graphite.c (scopdet_basic_block_info): Fix loops with multiple
exits and conditions.
* testsuite/gcc.dg/graphite/pr37943.c: New.
2008-11-04 Jakub Jelinek <>
Andrew Pinski <>
PR c/35430
* c-common.c (warn_for_sign_compare): For complex result_type
use component's type.
2008-11-04 Jakub Jelinek <>
* print-tree.c (print_node): Use code instead of TREE_CODE (node).
* print-tree.c (print_node): Don't print DECL_INITIAL
PR c/37106
* c-common.c (parse_optimize_options): Save and restore
flag_strict_aliasing around decode_options call.
2008-11-04 Uros Bizjak <>
* config/i386/driver-i386.c (enum vendor_signatures): New enum.
(host_detect_local_cpu): Use it instead of casted strings to
compare vendor signatures.
2008-11-03 Mikael Pettersson <>
PR target/37989
* config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
2008-11-03 Catherine Moore <>
* config/mips.c (mips_conditional_register_usage): Handle the
DSP control register.
* doc/extend.texi: Document the DSP control register.
2008-11-03 Steve Ellcey <>
Jakub Jelinek <>
* omp-low.c (expand_omp_for_generic): If iter_type has different
precision than type and type is a pointer type, cast n1 and n2
first to an integer type with the same precision as pointers
and only afterwards to iter_type.
2008-11-03 Richard Sandiford <>
* config/arm/ (UNSPEC_PIC_BASE): Update documentation.
(UNSPEC_GOTSYM_OFF): New unspec.
(pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
(pic_add_dot_plus_eight): Likewise.
(tls_load_dot_plus_eight): Likewise. Update peephole2.
* config/arm/ (pic_load_dot_plus_four): Simplify the
* config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
(arm_output_addr_const_extra): Handle it.
2008-11-03 Eric Botcazou <>
* config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
integer class to full integer class if the offset is not word-aligned.
2008-11-03 Andrew Pinski <>
PR rtl-opt/37782
* loop-doloop.c (doloop_modify): Add from_mode argument that says what
mode count is in.
(doloop_optimize): Update call to doloop_modify.
2008-11-03 Eric Botcazou <>
* tree-sra.c (bitfield_overlaps_p): Fix oversight.
2008-11-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
PR other/37463
* (gcc_cv_ld_ro_rw_mix): Move before
(gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
merging read-only and read-write sections or assembler emits
read-write .eh_frame sections.
* configure: Regenerate.
2008-11-03 Nathan Froyd <>
2008-10-31 Nathan Froyd <>
* config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
(rs6000_emit_prologue): Invert logic.
* config/rs6000/ (*save_gpregs_<mode>): Use explicit
(reg:P 11) instead of match_operand.
(*save_fpregs_<mode>): Likewise.
(*restore_gpregs_<mode>): Likewise.
(*return_and_restore_gpregs_<mode>): Likewise.
(*return_and_restore_fpregs_<mode>): Likewise.
* config/rs6000/ (*save_gpregs_spe): Use explicit
(reg:P 11) insted of match_operand.
(*restore_gpregs_spe): Likewise.
(*return_and_restore_gpregs_spe): Likewise.
2008-11-03 Harsha Jagasia <>
PR tree-optimization/37684
* gcc.dg/graphite/pr37684.c: New.
* graphite.c (exclude_component_ref): New.
(is_simple_operand): Call exclude_component_ref.
2008-11-03 Sebastian Pop <>
PR tree-optimization/36908
* testsuite/gcc.dg/tree-ssa/pr36908.c: New.
* tree-loop-distribution.c (number_of_rw_in_rdg): New.
(number_of_rw_in_partition): New.
(partition_contains_all_rw): New.
(ldist_gen): Do not distribute when one of the partitions
contains all the memory operations.
2008-11-03 Sebastian Pop <>
* cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
2008-11-03 Bernd Schmidt <>
* config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
where we have one entry point in the loop which isn't the head.
2008-11-03 Richard Guenther <>
PR middle-end/37573
* tree-data-ref.c (split_constant_offset_1): Fix tuplification.
2008-11-03 Jakub Jelinek <>
PR middle-end/37858
* passes.c (execute_one_pass): Don't look at cfun->curr_properties
for ipa and simple ipa passes.
2008-11-02 Richard Guenther <>
PR tree-optimization/37542
* tree-ssa-pre.c (fully_constant_expression): Handle more cases.
* tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
(vn_nary_op_lookup_stmt): Adjust for unary reference trees.
(vn_nary_op_insert_stmt): Likewise.
(visit_use): Likewise.
2008-11-02 Anatoly Sokolov <>
* config/avr/ (UNSPEC_SWAP): Remove constants.
(*swap): Remove.
(rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
(ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
peephole2's): Replace unspec with rotate.
* config/avr/avr.c (avr_rtx_costs): Add ROTATE.
2008-11-02 Richard Guenther <>
PR tree-optimization/37991
* tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
* tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
(set_ssa_val_to): Print if the value changed.
(simplify_binary_expression): Strip useless conversions.
2008-11-01 Hans-Peter Nilsson <>
PR target/37939
* config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
2008-11-01 Richard Guenther <>
PR middle-end/37976
* builtins.c (fold_builtin_strspn): Return a size_t.
(fold_builtin_strcspn): Likewise.
2008-10-31 Nathan Froyd <>
* config/rs6000/rs6000.c (rs6000_file_start): Output gnu
attribute for struct return convention.
2008-10-31 Nathan Froyd <>
* config/rs6000/crtsavres.asm: Really, really delete.
2008-10-31 Nathan Froyd <>
* config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
(rs6000_emit_prologue): Invert logic.
* config/rs6000/ (*save_gpregs_<mode>): Use explicit
(reg:P 11) instead of match_operand.
(*save_fpregs_<mode>): Likewise.
(*restore_gpregs_<mode>): Likewise.
(*return_and_restore_gpregs_<mode>): Likewise.
(*return_and_restore_fpregs_<mode>): Likewise.
* config/rs6000/ (*save_gpregs_spe): Use explicit
(reg:P 11) insted of match_operand.
(*restore_gpregs_spe): Likewise.
(*return_and_restore_gpregs_spe): Likewise.
2008-10-28 Luis Machado <>
* gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
list of word switches that take args.
2008-10-30 Jakub Jelinek <>
* config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
(s390_output_pool_entry): Call it through for_each_rtx.
PR middle-end/37730
* expr.c (store_constructor): For vectors, if target is a MEM, use
target's MEM_ALIAS_SET instead of elttype alias set.
2008-10-29 Kaz Kojima <>
PR target/37909
* config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
no address.
2008-10-29 David Edelsohn <>
PR target/37878
* config/rs6000/ (word_offset_memref_operand):
Restructure code and look inside auto-inc/dec addresses.
2008-10-29 Steve Ellcey <>
PR target/32277
* libgcov.c (__gcov_indirect_call_profiler): Check
2008-10-29 Stefan Schulze Frielinghaus <>
* config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
* config/spu/spu.c (spu_initial_elimination_offset): Calculate new
offset if eliminating soft frame pointer.
* config/spu/ (stack_protect_set, stack_protect_test)
(stack_protect_test_si): Add initial machine description
for Stack Smashing Protector
2008-10-29 Manuel Lopez-Ibanez <>
PR 11492
* c-common.c (min_precision): Move to...
* tree.c (tree_int_cst_min_precision): ... to here. Renamed.
* tree.h (tree_int_cst_min_precision): Declare.
* c-common.h (min_precision): Delete declaration.
* fold-const.c (tree_binary_nonnegative_warnv_p): Handle
multiplication of non-negative integer constants.
* c-decl.c (check_bitfield_type_and_width): Rename min_precision to
(finish_enum): Likewise.
2008-10-29 Joseph Myers <>
PR middle-end/36578
* convert.c (convert_to_real): Do not optimize conversions of
binary arithmetic operations between binary and decimal
floating-point types. Consider mode of target type in determining
decimal type for arithmetic. Unless
flag_unsafe_math_optimizations, do not optimize binary conversions
where this may change rounding behavior.
* real.c (real_can_shorten_arithmetic): New.
* real.h (real_can_shorten_arithmetic): Declare.
2008-10-29 Bernd Schmidt <>
* config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
* config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
(must_save_p): For some workarounds, interrupts need to clobber a
P register.
(expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
and LC1 for WA_05000257.
(expand_interrupt_handler_prologue): Add dummy read of CHIPID for
WA_05000283 and WA_05000315.
* config/bfin/ (UNSPEC_VOLATILE_DUMMY): New constant.
(movbi): Add alternative to set CC to 1; improve code for setting
CC to 0.
(dummy_load): New pattern.
2008-10-29 Jakub Jelinek <>
PR middle-end/37870
* expmed.c (extract_bit_field_1): If int_mode_for_mode returns
BLKmode for non-memory, convert using a wider MODE_INT mode
or through memory.
PR middle-end/37913
* tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
that haven't been removed yet.
2008-10-29 Bernd Schmidt <>
* config/bfin/bfin.c (struct machine_function): New member
(bfin_expand_movmem): Set it when generating memcpy insns.
(n_regs_saved_by_prologue, expand_prologue_reg_save,
expand_epilogue_reg_restore): If we have hardware loops,
memcpy insns (indicated by has_loopreg_clobber) or function
calls, we need to save the loop registers.
2008-10-28 H.J. Lu <>
* config/i386/i386.c (core2_cost): Fix typos in comments.
2008-10-28 Jakub Jelinek <>
PR c/37924
* combine.c (make_compound_operation): Don't call make_extraction with
non-positive length.
(simplify_shift_const_1): Canonicalize count even if complement_p.
2008-10-28 Joseph Myers <>
* convert.c (strip_float_extensions): Do not remove or introduce
conversions between binary and decimal floating-point types.
2008-10-28 Jakub Jelinek <>
PR middle-end/37931
* fold-const.c (distribute_bit_expr): Convert common, left and
right arguments to type.
2008-10-28 Nick Clifton <>
* config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
* config/mn10300/mn10300.c (fp_regs_to_save): Test the
call_really_used_regs array rather than the call_used_regs array.
(mn10300_get_live_callee_saved_regs, expand_prologue,
expand_epilogue, output_tst): Likewise.
2008-10-27 Jakub Jelinek <>
PR target/37378
* df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
(df_get_entry_block_def_set): Neither here.
(df_get_regular_block_artificial_uses): Add EH_USES registers.
PR tree-optimization/37879
* predict.c (tree_estimate_probability): Check if last_stmt is
non-NULL before dereferencing it.
2008-10-27 Vladimir Makarov <>
* ira-int.h (ira_allocno): Add member updated_cover_class_cost.
(ira_fast_allocation): Remove the prototype.
* ira-color.c (update_copy_costs, allocno_cost_compare_func,
assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
(color_pass): Modify the updated costs.
(ira_color): Rename to color. Make it static.
(ira_fast_allocation): Rename to fast_allocation. Make it static.
(ira_color): New function.
* ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
* ira-lives.c (last_call_num, allocno_saved_at_call): New
(set_allocno_live, clear_allocno_live, mark_ref_live,
mark_ref_dead): Invalidate corresponding element of
(process_bb_node_lives): Increment last_call_num. Setup
allocno_saved_at_call. Don't increase ALLOCNO_CALL_FREQ if the
allocno was already saved.
(ira_create_allocno_live_ranges): Initiate last_call_num and
* ira-build.c (ira_create_allocno): Initiate
(create_cap_allocno, propagate_allocno_info,
remove_unnecessary_allocnos): Remove setting updated costs.
(ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
* ira.c (ira): Don't call ira_fast_allocation.
* ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
updated costs.
2008-10-27 Vladimir Makarov <>
PR middle-end/37813
* ira-conflicts.c (process_regs_for_copy): Remove class subset check.
* ira-int.h (ira_hard_regno_cover_class): New.
* ira-lives.c (mark_reg_live, mark_reg_dead,
process_bb_node_lives): Use ira_hard_regno_cover_class.
* ira.c (reg_class ira_hard_regno_cover_class): New global variable.
(setup_hard_regno_cover_class): New function.
(ira_init): Call setup_hard_regno_cover_class.
* ira-costs.c (cost_class_nums): Add comment.
(find_allocno_class_costs): Initiate cost_class_nums.
(setup_allocno_cover_class_and_costs): Check cost_class_nums.
2008-10-27 Vladimir Makarov <>
PR middle-end/37884
* ira-build.c (copy_live_ranges_to_removed_store_destinations):
Rename to copy_info_to_removed_store_destinations. Propagate
conflict hard regs and register stack attribute.
2008-10-26 John David Anglin <>
PR middle-end/37316
* pa.c (function_arg_padding): Pad complex and vector types
upward in 64-bit runtime.
(function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
2008-10-26 Matthias Klose <>
* doc/install.texi: Document requirements on antlr.
2008-10-25 Richard Sandiford <>
* config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
2008-10-24 Michael Meissner <>
PR target/37841
* function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
is defined, use it to modify the constant offset.
* doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
* config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
and short arguments to the correct location as mandated by the ABI.
2008-10-24 Kaz Kojima <>
PR rtl-optimization/37769
* regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
2008-10-24 Kaz Kojima <>
* config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
2008-10-24 Joseph Myers <>
* c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
(convert_for_assignment): Remove ic_argpass_nonproto cases.
2008-10-24 Jakub Jelinek <>
PR tree-optimization/36038
* tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
add sizetype IV with initial value zero instead of pointer type.
2008-10-24 Manuel López-Ibáñez <>
PR c/7543
* value-prof.c (gimple_stringop_fixed_value): Use parentheses
around bit operation.
* profile.c (is_edge_inconsistent): Likewise.
* fold-const.c (truth_value_p): Move from here...
* tree.h (truth_value_p): ... to here.
* c-tree.h (c_expr): Update description of original_code.
* c-typeck.c (parser_build_unary_op): Set original_code.
(parser_build_binary_op): Update call to warn_about_parentheses.
* c-common.c (warn_about_parentheses): Take two additional
arguments of the operands. Use a switch. Quote operators
appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
Add warning about !x | y and !x & y.
* c-common.h (warn_about_parentheses): Update declaration.
2008-10-24 Jakub Jelinek <>
* (lang_checks_parallelized, check_gcc_parallelize,
check_p_tool, check_p_vars, check_p_subno, check_p_comma,
check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
New variables.
(check-subtargets, check-%-subtargets, check-parallel-%): New targets.
(check-%): For test targets listed in lang_checks_parallelized
if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
run the testing in multiple make goals, possibly parallel, and
afterwards run to merge the sum and log files.
2008-10-24 Richard Sandiford <>
* config/mips/mips.c (mips_canonicalize_move_class): New function.
(mips_move_to_gpr_cost): Likewise.
(mips_move_from_gpr_cost): Likewise.
(mips_register_move_cost): Make more fine-grained.
2008-10-23 Tobias Grosser <>
* graphite.c (graphite_apply_transformations): Check for
* toplev.c (process_options): Add graphite_identity.
* tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
2008-10-23 Bernd Schmidt <>
* config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
mulhisihl and mulhisihh builtins.
From Jie Zhang <>
* config/bfin/ (composev2hi): Put operands into vector
with correct order.
2008-10-22 Chao-ying Fu <>
* config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
2008-10-22 Bernd Schmidt <>
From Mike Frysinger <>
* config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
* config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
and bf518. Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
Add 0.6 for bf533, bf532, and bf531. Add 0.5 for bf538 and bf539.
Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518. Define
__ADSPBF51x__ for all of them.
* config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
-mcpu bf512, bf514, bf516, and bf518.
* config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
bf512-none, bf514-none, bf516-none, and bf518-none.
* config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
* config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
* doc/invoke.texi (Blackfin Options): Document that
-mcpu now accepts bf512, bf514, bf516, and bf518.
2008-10-22 Jakub Jelinek <>
PR middle-end/37882
* fold-const.c (build_range_type): For 1 .. signed_max
range call build_nonstandard_inter_type if signed_type_for
returned a type with bigger precision.
2008-10-22 Richard Guenther <>
* tree.def (COMPLEX_TYPE): Constrain element type.
* tree.c (build_complex_type): Assert that.
* tree-ssa-structalias.c (could_have_pointers): Complex types
cannot have pointers.
2008-10-22 Manuel López-Ibáñez <>
PR c/30949
* c-typeck.c (convert_for_assignment): Do not give declaration's
location for builtins. Spell out which type was expected and which
was given.
2008-10-22 Nick Clifton <>
* config/frv/frv.h (HARD_REGNO_RENAME_OK): Define. Do not allow
the fdpic register to be a target when running in fdpic mode.
2008-10-22 Rafael Espindola <>
* ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
newly created statements.
2008-10-22 Kaz Kojima <>
PR target/37633
* config/sh/sh.c (sh_hard_regno_mode_ok): New function.
* config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
* config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
2008-10-22 Jakub Jelinek <>
PR target/37880
* doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
Adjust -mcmodel=medium description for 2005-07-31 changes.
2008-10-22 Jan Hubicka <>
Jakub Jelinek <>
PR middle-end/35853
* doc/invoke.texi: Remove references to obsoleted -d dumps.
2008-10-21 Richard Henderson <>
PR 37815
* emit-rtl.c (get_spill_slot_decl): Export.
* emit-rtl.h (get_spill_slot_decl): Declare.
* var-tracking.c (vt_add_function_parameters): Relax assertion
on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
2008-10-21 Bob Wilson <>
* var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
of from insn.
2008-10-21 Adam Nemet <>
PR middle-end/37669
* tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
processed by get_maxval_strlen.
2008-10-21 David Edelsohn <>
PR target/35485
* tree.c (get_file_function_name): Copy first_global_object_name.
Centralize call to clean_symbol_name.
2008-10-21 Sandra Loosemore <>
* config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
* config/svr4.h (SVR4_ASM_SPEC): New.
(ASM_SPEC): Inherit from SVR4_ASM_SPEC.
* config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
* doc/invoke.texi (Option Summary): Add -T to linker options.
(Link Options): Document -T.
2008-10-21 Jakub Jelinek <>
* tree-inline.c (tree_inlinable_function_p): Remove tuples
debugging hack.
* gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
PR debug/37020
* c-decl.c (merge_decls): Don't call outlining_inline_function hook.
2008-10-20 Daniel Berlin <>
* tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
part of expression.
2008-10-20 Tobias Schlüter <>
* doc/install.texi: Fix typos in previous patch.
2008-10-19 Tobias Schlüter <>
* doc/install.texi: Document in-tree building of gcc and mpfr.
2008-10-19 Richard Guenther <>
* tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
2008-10-19 Manuel López-Ibáñez <>
PR c/30260
* c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
(build_enumerator): Convert enumerators that fit in integer to
integer type.
2008-10-18 Uros Bizjak <>
* config/i386/ (unnamed peephole2): Do not force memory
operands of arith or logical instructions into registers for
(ffs_cmove): Change operand 0 predicate to register_operand.
Change operand 1 predicate to nonimmediate_operand.
(ffsdi2): Ditto.
(*ffs_no_cmove): Change operand 0 predicate to register_operand.
2008-10-18 Richard Guenther <>
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
VIEW_CONVERT_EXPR case against invalid gimple.
2008-10-17 Andreas Krebbel <>
* c-parser.c (c_parser_binary_expression): Silence the
uninitialized variable warning emitted for binary_loc.
2008-10-16 Daniel Berlin <>
* tree-ssa-pre.c (phi_translate_set): Add constants to phi
translation cache.
2008-10-16 Joseph Myers <>
PR c/33192
* c-typeck.c (build_unary_op): Use omit_one_operand for
IMAGPART_EXPR of real argument.
2008-10-16 Jakub Jelinek <>
PR tree-optimization/37664
* fold-const.c (fold_binary): When optimizing comparison with
highest or lowest type's value, don't consider TREE_OVERFLOW.
2008-10-16 David Edelsohn <>
PR target/35483
* (coverage.o): Depend on $(TM_P_H).
* coverage.c: Include tm_p.h.
* config/rs6000/x-aix (jc1): Override LDFLAGS.
* config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
dollar signs from PREFIX.
* config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
instead of manual strip_name_encoding.
2008-10-16 Richard Guenther <>
PR middle-end/37418
* tree-ssa.c (useless_type_conversion_p_1): Do not treat
volatile qualified functions or methods as relevant.
2008-10-16 Jakub Jelinek <>
PR tree-optimization/37525
* tree.c (int_fits_type_p): Rewrite using double_int. Zero extend
sizetype unsigned constants, both in the case of C and bounds.
2008-10-15 Jan Hubicka <>
* ira-emit.c (change_regs): Return false when replacing reg by itself.
2008-10-14 Vladimir Makarov <>
PR target/37633
* ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
2008-10-15 Vladimir Makarov <>
PR middle-end/37535
* ira-lives.c (mark_early_clobbers): Remove.
(make_pseudo_conflict, check_and_make_def_use_conflicts,
mark_hard_reg_early_clobbers): New functions.
(process_bb_node_lives): Call
make_early_clobber_and_input_conflicts and
mark_hard_reg_early_clobbers. Make hard register inputs live again.
* doc/rtl.texi (clobber): Change descriotion of RA behaviour for
early clobbers of pseudo-registers.
2008-10-15 Vladimir Makarov <>
PR middle-end/37674
* ira-build.c (ira_flattening): Recalculate
from the scratch instead of the propagation.
2008-10-15 Richard Sandiford <>
* doc/rtl.texi (const_double): Remove the "addr" operand.
Describe CONST_DOUBLE_* macros under const_double rather
than const_vector.
(const_fixed): Fix the operand description.
(const): Add an @findex directive.
(CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
after the constant rtl table.
(fix): Combine floating-point and fixed-point descriptions.
Fix hyphenation.
* sched-deps.c (sched_analyze_2): Remove reference to
2008-10-15 Richard Sandiford <>
* config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
* config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
* config/mn10300/ (UNSPEC_GOTSYM_OFF): New unspec.
(add_GOT_to_pic_reg): Use it.
* config/mn10300/ (S): Allow UNSPEC_GOTSYM_OFF.
2008-10-15 Jan Sjodin <>
Harsha Jagasia <>
PR tree-optimization/37485
* graphite.c (gmp_cst_to_tree): Moved.
(iv_stack_entry_is_constant): New.
(iv_stack_entry_is_iv): New.
(loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
(loop_iv_stack_insert_constant): New.
(loop_iv_stack_pop): Use new datatpype.
(loop_iv_stack_get_iv): Same.
(loop_iv_stack_get_iv_from_name): Same.
(loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
(loop_iv_stack_patch_for_consts): New.
(loop_iv_stack_remove_constants): New.
(graphite_create_new_loop): Use loop_iv_stack_push_iv.
(translate_clast): Call loop_iv_stack_patch_for_consts and
(gloog): Use new datatype. Redirect construction edge to end
block to avoid accidental deletion.
* graphite.h (enum iv_stack_entry_kind): New. Tag for data in
iv stack entry.
(union iv_stack_entry_data): New. Data in iv stack entry.
(struct iv_stack_entry): New. Datatype for iv stack entries.
2008-10-15 Sebastian Pop <>
* tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
* graphite.c (free_scop): Same.
(build_scops): Same.
(free_scattering): New.
(build_cloog_prog): Call free_scattering.
(patch_phis_for_virtual_defs): Fix memleak.
(graphite_trans_bb_strip_mine): Same.
(limit_scops): Same.
2008-10-15 Sebastian Pop <>
Harsha Jagasia <>
PR tree-optimization/37828
* graphite.c (graphite_trans_loop_block): Do not loop block
single nested loops.
2008-10-15 Sebastian Pop <>
PR tree-optimization/37686
* tree-loop-linear.c (linear_transform_loops): Build a
loop nest vector. Pass it to lambda_compute_access_matrices.
* tree-data-ref.h (struct access_matrix): Store the loop nest
relative to which it encodes the information.
(am_vector_index_for_loop): Reimplemented: iterate over the
loop nest for finding the loop index in the access matrix.
(lambda_compute_access_matrices): Update declaration.
* lambda-code.c (build_access_matrix): Pass the loop nest and
record it.
(lambda_compute_access_matrices): Same.
2008-10-15 Andreas Krebbel <>
* config/s390/s390.h (TARGET_DFP): This requires TARGET_HARD_FLOAT.
* config/s390/ Replace "TARGET_HARD_FLOAT &&
TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
already implies hard float. Also fix several insn condition
with TARGET_DFP which shall require TARGET_HARD_DFP instead.
2008-10-15 David Edelsohn <>
PR target/35483
Based on patches by Laurent Vivier.
* xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
* config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
dollar sign to underscore.
* config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
* config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
* config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
* config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
* config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
2008-10-15 Jakub Jelinek <>
PR tree-optimization/36881
* tree-switch-conversion.c (check_final_bb): For flag_pic, check
that each value doesn't need runtime relocations, for !flag_pic
check that each value is just a valid initializer constant.
2008-10-14 Richard Sandiford <>
* config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
(REG_CLASS_NAMES): Update accordingly.
(REG_CLASS_CONTENTS): Likewise. Use the class name in the comments,
rather than an unpredictable descriptive string.
* config/mips/mips.c (mips_register_move_cost): Remove comment.
(mips_register_move_cost): Check for specific COP*_REGS classes,
instead of ALL_COP_AND_GR_REGS.
(mips_ira_cover_classes): New function.
(mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
2008-10-14 Douglas Gregor <>
PR c++/37553
* tree.c (build_type_attribute_qual_variant): Hash on the
unqualified type, and don't overwrite an existing
(type_hash_eq): Make the TYPE_NAME of the types significant, to
allow distinguishing between wchar_t and its underlying type. This
also means that we'll retain a little more typedef information.
2008-10-14 Andrey Belevantsev <>
Dmitry Melnik <>
Dmitry Zhurikhin <>
Alexander Monakov <>
Maxim Kuvyrkov <>
* target.h (struct gcc_target): Update prototypes of needs_block_p
and gen_spec_check.
* haifa-sched.c (create_check_block_twin): Update calls to the above.
* sel-sched.c (create_speculation_check): Likewise.
* doc/tm.texi: Provide documentation for new target hooks.
* config/ia64/ia64.c: Include sel-sched.h. Rewrite speculation hooks.
(ia64_gen_spec_insn): Removed.
(get_spec_check_gen_function, insn_can_be_in_speculative_p,
ia64_gen_spec_check): New static functions.
(ia64_alloc_sched_context, ia64_init_sched_context,
ia64_set_sched_context, ia64_clear_sched_context,
ia64_free_sched_context, ia64_get_insn_spec_ds,
ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
(ia64_needs_block_p): Change prototype.
(ia64_gen_check): Rename to ia64_gen_spec_check.
(ia64_adjust_cost): Rename to ia64_adjust_cost_2. Add new parameter
into declaration, add special memory dependencies handling.
Define new target hooks.
(ia64_optimization_options): Turn on selective scheduling with -O3,
disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
default with selective scheduling.
(ia64_override_options): Initialize align_loops and align_functions
to 32 and 64, respectively. Set global selective scheduling flags
according to target-dependent flags.
(rtx_needs_barrier): Support UNSPEC_LDS_A.
(group_barrier_needed): Use new mstop-bit-before-check flag.
Add heuristic.
(dfa_state_size): Make global.
(spec_check_no, max_uid): Remove.
(mem_ops_in_group, current_cycle): New variables.
(ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
Initialize new variables.
(is_load_p, record_memory_reference): New functions.
(ia64_dfa_sched_reorder): Lower priority of loads when limit is
(ia64_variable_issue): Change use of current_sched_info to
sched_deps_info. Update comment. Note if a load or a store is issued.
(ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
advance if maximal number of loads or stores was issued on current
(scheduled_good_insn): New static helper function.
(ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
a group barrier is needed. Fix vertical spacing. Guard the code
doing state transition with last_scheduled_insn check.
Mark that a stop bit should be before current insn if there was a
cycle advance. Update current_cycle and mem_ops_in_group.
(ia64_h_i_d_extended): Change use of current_sched_info to
sched_deps_info. Reallocate stops_p by larger chunks.
(struct _ia64_sched_context): New structure.
(ia64_sched_context_t): New typedef.
(ia64_alloc_sched_context, ia64_init_sched_context,
ia64_set_sched_context, ia64_clear_sched_context,
ia64_free_sched_context): New static functions.
(gen_func_t): New typedef.
(get_spec_load_gen_function): New function.
(ia64_set_sched_flags): Check common_sched_info instead of *flags.
(get_mode_no_for_insn): Change the condition that prevents use of
special hardware registers so it can now handle pseudos.
(get_spec_unspec_code): New function.
(ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
(ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
during selective scheduling.
(ia64_speculate_insn): Use ds_get_speculation_types when
determining whether we need to change the pattern.
(ia64_spec_check_src_p): Support new speculation/check codes.
(struct bundle_state): New field.
(issue_nops_and_insn): Initialize it.
(insert_bundle_state): Minimize mid-bundle stop bits.
(important_for_bundling_p): New function.
(get_next_important_insn): Use important_for_bundling_p.
(bundling): When shifting TImode from unimportant insns, ignore
also group barriers. Assert that best state is found before
the backward bundling pass. Print number of mid-bundle stop bits.
Minimize mid-bundle stop bits. Check correct calculation of
mid-bundle stop bits.
(ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
(final_emit_insn_group_barriers): Emit stop bits before insns starting
a new cycle.
(sel2_run): New variable.
(ia64_reorg): When flag_selective_scheduling2 is set, run the
selective scheduling pass instead of schedule_ebbs.
* config/ia64/ (speculable1, speculable2): New attributes.
(movqi_internal, movhi_internal, movsi_internal, movdi_internal,
movti_internal, movsf_internal, movdf_internal,
movxf_internal): Make visible. Add speculable* attributes.
(output_c_nc): New mode attribute.
(mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
mov<mode>_nc, zero_extend<mode>di2_nc,
advanced_load_check_nc_<mode>): New insns.
(zero_extend*): Add speculable* attributes.
* config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
(msched-stop-bits-after-every-cycle): Likewise.
(msched-max-memory-insns, msched-max-memory-insns-hard-limit):
(msched-spec-verbose): Remove.
msel-sched-dont-check-control-spec): Use Target Report Var
instead of Common Report Var.
* config/ia64/ Remove incorrect bypass.
* config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
2008-10-14 Jakub Jelinek <>
PR middle-end/37805
* opts.c (common_handle_option): Don't ICE on -fhelp=joined
and -fhelp=separate.
2008-10-14 Ben Elliston <>
* config/rs6000/ (cell_micro): Fix formatting.
2008-10-13 Joseph Myers <>
* combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
non-integer modes.
2008-10-13 Matthias Klose <>
* config/pa/linux-atomic.c: Work around missing header file
for hppa64-linux-gnu targets.
2008-10-13 Andrew Pinski <>
Kaushal Kantawala <>
Trevor Smigiel <>
Grace Cao <>
* doc/invoke.texi (-mgen-cell-microcode): Document.
(-mwarn-cell-microcode): Document.
* cfglayout.c (locator_location): Export.
* rtl.h (locator_location): Define prototype.
* config/rs6000/ (cc_reg_not_micro_cr0_operand):
New predicate.
* rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
* config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
(mwarn-cell-microcode): New option.
* rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
(rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
cell and not already set.
Turn off string instructions if not generating cell microcode.
(rs6000_final_prescan_insn): New function that warns about microcoded
* config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
* config/rs6000/
Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
the instruction would have been microcoded on the Cell. Set
cell_micro to always on unnamed patterns for the string instructions.
(cell_micro): Update definition, remove load/store conditional
(sign_extend:DI): Define new pattern for non microcoded version.
(sign_extend:SI): Likewise.
(compare (div:P)): Set cell_micro to not.
(andsi3): Define as an expand.
(andsi3_mc): New pattern.
(andsi3_nomc): New pattern.
(andsi3_internal0_nomc): New pattern.
(andsi3_internal2): Rename to ...
(andsi3_internal2_mc): this and enable iff generating microcode.
(andsi3_internal3): Rename to ...
(andsi3_internal3_mc): this and enable iff generating microcode.
(andsi3_internal4): Enable iif generating microcode.
(andsi3_internal5): Rename to ..
(andsi3_internal5_mc): this and enable iff generating microcode.
(andsi3_internal5_nomc): New pattern.
(extzvdi_internal1): Enable iff generating microcode.
(extzvdi_internal2): Likewise.
(rotlsi3_internal7): Set cell_micro to always if non immediate form.
(anddi3): Change to expand.
(anddi3_mc): Rename from anddi3.
(anddi3_no_mc): New pattern.
(anddi3_internal2): Rename to ..
(anddi3_internal2_mc): this and enable iff generating microcode.
(anddi3_internal2_nomc): New pattern.
(anddi3_internal3): Rename to ..
(anddi3_internal3_mc): this and enable iff generating microcode.
(anddi3_internal3_nomc): New pattern.
(movti_string): Set cell_micro to always if TARGET_STRING.
(stmsi8): Set cell_micro to always.
(stmsi7): Likewise.
(stmsi6): Likewise.
(stmsi5): Likewise.
(stmsi4): Likewise.
(stmsi3): Likewise.
(stmsi8_power): Likewise.
(stmsi7_power): Likewise.
(stmsi6_power): Likewise.
(stmsi5_power): Likewise.
(stmsi4_power): Likewise.
(stmsi3_power): Likewise.
(movsi_update2): Enable iff generating microcode.
(movhi_update3): Likewise.
(lmw): Set cell_micro to always.
2008-10-13 Richard Sandiford <>
* config/s390/ (UNSPEC_POOL_OFFSET): New constant.
* config/s390/s390.c (machine_function): Remove
(s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
the difference of two labels.
(s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
(s390_pool_offset): New function.
(s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
(s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
2008-10-13 Nathan Froyd <>
* doc/install.texi (powerpc-*-*): Require binutils 2.15.
(powerpc*-*-linux-gnu*): Describe.
* config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
* config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
config/rs6000/e500crtsavg64gprctr.asm: Use it.
* config/rs6000/crtsavres.asm: Really remove.
2008-10-13 Kai Tietz <>
Fix PR/25502
* c-format.c (convert_format_name_to_system_name): Use
* config.gcc (extra_options): Add for mingw targets mingw.opt.
* config/i386/mingw.opt: New.
* config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
* config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
(ms_printf_length_specs): Removed const specifier.
* doc/invoke.texi (Wno-pedantic-ms-format): New.
2008-10-13 Kaveh R. Ghazi <>
* builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
* doc/install.texi: Bump recommended MPFR to 2.3.2.
2008-10-12 Kenneth Zadeck <>
PR middle-end/37808
* df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
sure that ref has valid bb.
2008-10-12 Richard Henderson <>
PR middle-end/37447
* (reload1.o): Depend on EMIT_RTL_H.
* alias.c (value_addr_p, stack_addr_p): Remove.
(nonoverlapping_memrefs_p): Remove IRA special case.
* emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
* emit-rtl.h (set_mem_attrs_for_spill): Declare.
* reload1.c (alter_reg): Use it.
2008-10-12 Uros Bizjak <>
* config/i386/driver-i386.c (detect_caches_cpuid2): Use array
of registers instead of eax, ebx, ecx and edx. Use for loop
and check register for non-zero value before the call
to decode_caches_intel.
2008-10-11 Kenneth Zadeck <>
PR rtl-optimization/37448
* df.h (df_ref_class): New enum.
(DF_REF_TYPE_NAMES, df_ref_extract): Removed.
(struct df_ref): Replaced with union df_ref_d.
(df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
New members of df_ref_d union.
DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
(df_scan_bb_info, df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_find_use,
df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
df_ref_create, df_ref_remove, df_compute_accessed_bytes,
df_get_artificial_defs, df_get_artificial_uses, union_defs)
Replaced struct df_ref * with df_ref.
* df-scan.c (df_collection_rec, df_null_ref_rec,
df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
df_sort_and_compress_refs, df_install_ref, df_install_refs,
df_ref_record, df_get_conditional_uses, df_get_call_refs,
df_bb_refs_record, df_exit_block_uses_collect,
df_record_exit_block_uses, df_reg_chain_mark,
df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
df_ref * with df_ref.
(df_ref_record, df_uses_record, df_ref_create_structure): Added
df_ref_class parameter.
(df_scan_problem_data): Added new pools for different types of refs.
(df_scan_free_internal, df_scan_alloc, df_free_ref,
df_ref_create_structure): Processed new ref pools.
(df_scan_start_dump): Added counts of refs and insns.
(df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
df_entry_block_defs_collect, df_exit_block_uses_collect): Added
code to pass df_ref_class down to ref creation functions.
(df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
df_reg_chain_mark): Use macros to hide references to df_refs.
(df_ref_chain_change_bb): Removed.
(df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
(df_ref_equal_p, df_ref_compare, df_ref_create_structure):
Enhanced to understand df_ref union structure.
* fwprop.c (local_ref_killed_between_p, use_killed_between,
all_uses_available_at, update_df, try_fwprop_subst,
forward_propagate_subreg, forward_propagate_and_simplify,
forward_propagate_into, fwprop, fwprop_addr): Replaced struct
df_ref * with df_ref.
(use_killed_between, all_uses_available_at): Use macros to hide
references to df_refs.
* regstat.c (regstat_bb_compute_ri,
regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
* see.c (see_handle_relevant_defs, see_handle_relevant_uses,
see_handle_relevant_refs, see_analyze_one_def,
see_update_relevancy, see_propagate_extensions_to_uses): Replaced
struct df_ref * with df_ref.
* ra-conflict.c (record_one_conflict, clear_reg_in_live,
global_conflicts): Replaced struct df_ref * with df_ref.
* ddg.c (create_ddg_dep_from_intra_loop_link,
add_cross_iteration_register_deps, build_inter_loop_deps):
Replaced struct df_ref * with df_ref.
add_cross_iteration_register_deps): Use macros to hide references
to df_refs.
* auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
df_ref * with df_ref.
* df-core.c (df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_find_use,
df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
debug_df_ref): Replaced struct df_ref * with df_ref.
(df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
* cse.c (cse_extended_basic_block): Replaced struct df_ref * with
* web.c (union_defs, entry_register, replace_ref, web_main):
Replaced struct df_ref * with df_ref.
(union_defs, replace_ref): Use macros to hide references to df_refs.
* global.c (compute_regs_asm_clobbered, build_insn_chain):
Replaced struct df_ref * with df_ref.
* ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
* sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets):
Replaced struct df_ref * with df_ref.
* ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
with df_ref.
* local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
* df-byte-scan.c (df_compute_accessed_bytes_extract,
df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
Replaced struct df_ref * with df_ref.
(df_compute_accessed_bytes): Use macros to hide references to df_refs.
* init-regs.c (initialize_uninitialized_regs): Replaced struct
df_ref * with df_ref.
* loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
check_dependency, check_dependencies, record_uses): Replaced
struct df_ref * with df_ref.
(invariant_for_use, check_dependency): Use macros to hide
references to df_refs.
* loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
(iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
references to df_refs.
* ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
with df_ref.
* combine.c (create_log_links): Replaced struct df_ref * with df_ref.
* df-problems.c (df_rd_bb_local_compute_process_def,
df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
df_chain_unlink_1, df_chain_unlink, df_chain_copy,
df_chain_remove_problem, df_chain_create_bb_process_use,
df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
df_note_bb_compute, df_note_add_problem, df_simulate_defs,
df_simulate_uses, df_simulate_artificial_refs_at_end,
df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
(df_chain_dump): Use macros to hide references to df_refs.
* config/mips/mips.c (r10k_simplify_address): Replaced struct
df_ref * with df_ref.
* dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
mark_artificial_uses, mark_reg_dependencies,
byte_dce_process_block): Replaced struct df_ref * with df_ref.
2008-10-11 Eric Botcazou <>
* tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
head comment.
(array_ref_element_size): Likewise.
(array_ref_low_bound): Likewise.
(array_ref_up_bound): Likewise.
* expr.c (contains_packed_reference): Likewise.
(array_ref_element_size): Likewise.
(array_ref_low_bound): Likewise.
(array_ref_up_bound): Likewise.
* tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
(idx_find_step): Likewise.
(idx_record_use): Likewise.
(strip_offset_1): Likewise.
(idx_remove_ssa_names): Likewise.
2008-10-11 Uros Bizjak <>
Andi Kleen <>
* config/i386/cpuid.h (__cpuid_count): New defines.
* config/i386/driver-i386.c (struct cache_desc): New structure.
(describe_cache): Use struct cache_desc to pass cache descriptions.
(detect_l2_cache): Ditto. Rename from decode_l2_cache.
(detect_caches_amd): Use struct cache_desc to describe caches.
(decode_caches_intel): Use struct cache_desc to pass cache
descriptions. Update descriptions to match latest (rev -032,
December 2007) CPUID documentation. Do not check valid bit here.
Check for Xeon MP value 0x49 problems.
(detect_caches_cpuid2): New function, split from detect_caches_intel.
Check valid bit before calling decode_caches_intel. Detect number
of times to repeat CPUID instruction.
(detect_caches_cpuid4): New function.
(detect_caches_intel): Depending on max_level, call
detect_caches_cpuid2 or detect_caches_cpuid4. Call detect_l2_cache
only when other methods fail to provide valid L2 cache description.
2008-10-11 John David Anglin <>
PR middle-end/37608
* (call, call_value): Generate an rtx for register r4 and pass
it to PIC call patterns.
(call_symref_pic): Revise pattern to expose PIC register save. Remove
code generation and attributes from pattern. Change peephole2 to
split for noreturn case. Revise split pattern for non noreturn case.
(call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
* pa.c (attr_length_call): Simplify extraction of call rtx. Add some
2008-10-11 David Edelsohn <>
* config/rs6000/ (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
(addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
and fp_type.
(divdf3): Reformat long line.
2008-10-11 Michael J. Eager <>
* config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
-mfpu options.
(rs6000_handle_option): Process -mfpu options.
* config/rs6000/rs6000.h (TARGET_XILINX_FPU): New.
(enum fpu_type_t): New.
* config/rs6000/ (attr fp_type): New. Include
(addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
(floatsisf2): Remove TARGET_SINGLE_FPU condition.
(floatdidf2): Add TARGET_SINGLE_FPU condition.
* config/rs6000/rs6000.opt (-mfpu): New.
(-mxilinx-fpu): New.
* config/rs6000/sysv4.h (DRIVER_SELF_SPECS): New.
* config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
* config/rs6000/ New. Define Xilinx pipeline.
* gcc/config.gcc: powerpc-xilinx-eabi target: New.
* gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
2008-10-11 Jakub Jelinek <>
PR target/35760
* config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
LO_SUM on Darwin if mode has just one unit.
2008-10-10 H.J. Lu <>
PR debug/37002
* dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
has been optimized out.
2008-10-10 Richard Sandiford <>
* config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
instead of PIC_DIRECT_ADDR_P.
(PIC_OFFSET_P): Rename to...
(PCREL_SYMOFF_P): ...this.
(OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
single argument. Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
* config/sh/sh.c (print_operand): Remove CONST handling.
(unspec_caller_rtx_p): Rewrite to use split_const and check
the operands of UNSPEC bases.
(fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
with (unspec [A B] UNSPEC_SYMOFF).
(nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
(sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
* config/sh/ (UNSPEC_EXTRACT_S16): New unspec.
(UNSPEC_EXTRACT_U16): Likewise.
(UNSPEC_SYMOFF): Likewise.
(movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
of constants.
(movsi_const_16bit): Likewise.
(movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
(GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
with (unspec [A B] UNSPEC_PCREL_SYMOFF).
(sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
with (unspec [A B] UNSPEC_SYMOFF).
(symPLT_label2reg): Replace (minus A (minus B pc)) with
* config/sh/ (Css): Check for an UNSPEC_EXTRACT_S16.
(Csu): Likewise UNSPEC_EXTRACT_U16.
(Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
(Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
2008-10-10 Stepan Kasal <>
* gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
for loop strip mining and loop blocking.
2008-10-10 Alexandre Oliva <>
* fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
vary types depending on debug info.
2008-10-10 Alexandre Oliva <>
* c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
before ensuring it's already computed.
2008-10-09 Jakub Jelinek <>
* rtl.h (locator_eq): New decl.
* cfglayout.c (locator_scope): New function.
(insn_scope): Use it.
(locator_eq): New function.
(fixup_reorder_chain): Search for last insn in src bb
that has locator set or first insn in dest bb. Use
locator_eq instead of == to compare locators.
* cfgrtl.c (cfg_layout_merge_blocks): Likewise.
* cfgcleanup.c (try_forward_edges): Use locator_eq instead of
== to compare locators.
* tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
as used.
* gimple-low.c (lower_function_body, lower_gimple_return,
lower_builtin_setjmp): Set gimple_block on the newly created stmts.
* tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
goto_block on edges if goto_locus is known.
PR middle-end/37774
* tree.h (get_object_alignment): Declare.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Call
get_object_alignment if needed.
* builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
handling to ...
(get_object_alignment): ... here. New function. Try harder to
determine alignment from get_inner_reference returned offset.
2008-10-08 Jakub Jelinek <>
* graphite.c (gloog): Don't call find_unreachable_blocks
before delte_unreachable_blocks.
* cfgexpand.c (expand_gimple_cond): Convert also goto_block and
goto_locus of true_edge into RTL locator.
2008-10-08 Uros Bizjak <>
* config/i386/ (*jcc_btdi_rex64): Clobber FLAGS_REG.
(*jcc_btdi_mask_rex64): Ditto.
(*jcc_btsi): Ditto.
(*jcc_btsi_mask): Ditto.
(*jcc_btsi_1): Ditto.
(*jcc_btsi_mask_1): Ditto.
2008-10-08 Paul Brook <>
* config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
compatible profiler (__gnu_mcount_nc).
2008-10-08 H.J. Lu <>
* config/i386/i386.c (initial_ix86_tune_features): Add
* config/i386/i386.h (ix86_tune_indices): Likewise.
for FP to FP splitters.
2008-10-08 H.J. Lu <>
* config/i386/ Add missing gen_sse2_cvtdq2p to convert
2008-10-08 Jakub Jelinek <>
PR target/36635
PR target/37290
PR rtl-optimization/37341
* cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
to ORIG_BB, pass through ORIG_BB recursively.
(cse_condition_code_reg): Adjust caller.
2008-10-08 Kai Tietz <>
* sdbout.c (sdbout_one_type): Treat the value type
CONST_DECL for enumerals.
2008-10-07 H.J. Lu <>
* config/i386/ Remove trailing white spaces.
2008-10-07 Kenneth Zadeck <>
PR rtl-optimization/37448
* alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
(stuct alloc_pool_descriptor) [created, allocated, current, peak]:
Make unsigned long.
(struct output_info) [count]: Renamed total_created and made
unsigned long.
(struct output_info) [size]: Renamed total_allocated and made
unsigned long.
(create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
Properly keep track of desc->size.
(print_statistics, dump_alloc_pool_statistics): Enhance the
printing of statistics to print the number of elements and to use
unsigned longs.
2008-10-07 Jakub Jelinek <>
PR middle-end/37576
* opts.h (CL_SAVE): Move up to flags range.
CL_COMMON): Renumber.
* opts.c (common_handle_option): Revert last change.
2008-10-07 H.J. Lu <>
* config/i386/i386-protos.h (ix86_schedule): New.
* config/i386/i386.c (ix86_schedule): New.
(override_options): Add schedule to processor_alias_table. Set
ix86_schedule from the schedule field in processor_alias_table.
(ix86_function_specific_save): Save ix86_schedule.
(ix86_function_specific_restore): Restore ix86_schedule.
* config/i386/ (cpu): Map to ix86_schedule instead of
ix86_tune. Add none and remove i386, i486, pentium4, nocona
and generic32.
* config/i386/i386.opt: Add schedule.
* config/i386/ Remove generic32.
2008-10-07 Simon Martin <>
PR c/35437
* expr.c (count_type_elements): Handle ERROR_MARK.
2008-10-07 Jakub Jelinek <>
PR debug/29609
PR debug/36690
PR debug/37616
* basic-block.h (struct edge_def): Add goto_block field.
* cfglayout.c (fixup_reorder_chain): Ensure that there is at least
one insn with locus corresponding to edge's goto_locus if !optimize.
* profile.c (branch_prob): Copy edge's goto_block.
* cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
emitted jumps.
(cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
locator in between the merged basic blocks if !optimize and needed.
* cfgexpand.c (expand_gimple_cond): Convert goto_block and
goto_locus into RTL locator. For unconditional jump use that
locator for the jump insn.
(expand_gimple_cond): Convert goto_block and goto_locus into
RTL locator for all remaining edges. For unconditional jump
use that locator for the jump insn.
* cfgcleanup.c (try_forward_edges): Avoid the optimization if
there is more than one edge or insn locator along the forwarding
edges and !optimize. If there is just one, set e->goto_locus.
* tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
edge's goto_block.
(move_block_to_fn): Adjust edge's goto_block.
2008-10-07 H.J. Lu <>
PR middle-end/37731
* expmed.c (expand_mult): Properly check DImode constant in
2008-10-07 Jakub Jelinek <>