blob: 1d3702ebaf302f1f238a12b7278e9c1e69258df2 [file] [log] [blame]
2009-12-31 Jakub Jelinek <>
* tree-dump.c (dump_options): Don't set TDF_NOUID for all.
2009-12-31 Dave Korn <>
Iain Sandoe <>
PR target/41605
* config/darwin.h (LINK_COMMAND_SPEC): Resolve fopenmp specifically
for target.
(LINK_SPEC): Replace dynamic libraries by static equivalents where
* config/darwin9.h (LINK_COMMAND_SPEC): Resolve fopenmp specifically
for target.
2009-12-30 Dave Korn <>
PR lto/42531
* lto-streamer-out.c (produce_asm): Skip any leading asterisk when
using DECL_ASSEMBLER_NAME to generate a section name.
(copy_function): Likewise.
2009-12-30 Andreas Schwab <>
PR target/42516
* config/m68k/ (rotlsi_16): New insn.
2009-12-30 Joseph Myers <>
PR c/42439
* c-decl.c (check_bitfield_type_and_width): Only pedwarn if
pedantic for bit-field width not an integer constant expression
but folding to one.
2009-12-30 Ira Rosen <>
PR tree-optimization/41956
* tree-vect-slp.c (vect_supported_load_permutation_p): Add check that
the load indices differ.
2009-12-30 Uros Bizjak <>
PR target/42549
* config/i386/ (*mmx_subv2sf3): Fix insn operand number for
alternative 1.
2009-12-30 Robert Millan <>
PR other/42537
* errors.c: Fix typo in comment.
* graphite-sese-to-poly.c: Likewise.
* profile.c (is_inconsistent): Fix typo in string.
2009-12-29 Ian Lance Taylor <>
PR middle-end/42099
* expmed.c (expand_divmod): Don't shift HOST_WIDE_INT value more
2009-12-29 H.J. Lu <>
* config/i386/i386.c (ix86_expand_int_vcond): Reformat.
2009-12-29 Dave Korn <>
Iain Sandoe <>
PR objective-c++/41595
* config/darwin.c (darwin_label_is_anonymous_local_objc_name):
New function to recognize objective c/c++ internal symbols,
including mangled ones.
* config/darwin.h (ASM_OUTPUT_LABELREF): Use
darwin_label_is_anonymous_local_objc_name to detect both
mangled and clear ObjC internal symbols.
2009-12-28 H.J. Lu <>
PR middle-end/41344
* omp-low.c (diagnose_sb_2): Handle GIMPLE_COND.
2009-12-24 Andy Hutchinson <>
PR target/42457
* config/avr/avr.c (avr_extra_arch_macro): Remove static.
(avr_cpu_cpp_builtins): Remove.
* config/avr/avr.h (avr_extra_arch_macro): Add prototype.
* config/avr/avr-c.c: New File.
(avr_cpu_cpp_builtins) : Add.
* config/avr/t-avr: Add make information for avr-c.
* config.gcc (avr-*-*): Include avr-c.o as c and cpp object.
2009-12-24 Andy Hutchinson <>
PR target/35013, 27192
* config/avr/avr.c (print_operand_address): Print correct program
memory address.
Add warning for large device offset addresses.
(avr_assemble_integer): Ditto.
(print_operand): Add warnings for incorrect addressing.
(out_movqi_r_mr): Tag assembler with new address codes.
(out_movhi_r_mr): Ditto.
(out_movsi_r_mr): Ditto.
(out_movqi_mr_r): Ditto.
(out_movhi_mr_r): Ditto.
(out_movsi_mr_r): Ditto.
* config/avr/ (text_segment_operand): New predicate.
* config/avr/ (jump): Tag assembler with new address codes.
(call_insn): Ditto.
(call_value_insn): Ditto.
(*tablejump_lib): Ditto.
(*cbi): Ditto.
(*sbi): Ditto.
(indirect_jump): New define_expand.
(jcindirect_jump): New pattern for constant expression jump.
(njcindirect_jump): Renamed old indirect_jump.
2009-12-24 Steven Bosscher <>
* store-motion.c (build_store_vectors): Clear regs_set_in_block at
the start of a loop over basic blocks.
2009-12-24 Julian Brown <>
Ramana Radhakrishnan <>
PR target/40887
* config/arm/arm.c (output_call_mem): Remove armv5 support.
* config/arm/ (*call_mem): Disable for armv5. Add note.
(*call_value_mem): Likewise.
2009-12-23 Jakub Jelinek <>
PR rtl-optimization/42475
* combine.c (make_compound_operation) <case SUBREG>: Use mode of
SUBREG_REG (x) instead of tem's mode.
2009-12-23 Jakub Jelinek <>
Cary Coutant <>
PR debug/42454
* dwarf2out.c (add_ranges_by_labels): Conditionally Add DW_AT_ranges
(dwarf2out_finish): Change calls to add_ranges_by_labels.
2009-12-23 Ramana Radhakrishnan <>
PR target/42093
* config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Fix macro usage
(CASE_VECTOR_SHORTEN_MODE): Allow signed offsets
only for TARGET_THUMB1.
2009-12-23 Ramana Radhakrishnan <>
PR target/40670
* config/arm/ Split for Thumb1 as well.
2009-12-22 Cary Coutant <>
PR debug/42454
* dwarf2out.c (dwarf2out_finish): Don't output range for .text
section unless .text section was used. Likewise for cold.
2009-12-22 Brian Hackett <>
* doc/plugins.texi: Rename pre-genericize event.
2009-12-22 Paolo Carlini <>
PR driver/42463
* params.def ([PARAM_PREDICTABLE_BRANCH_OUTCOME]): Fix typo in
help string.
* doc/invoke.texi: Fix typo.
2009-12-22 Paul Brook <>
* doc/tm.texi (ARG_POINTER_CFA_OFFSET): Document new default.
* defaults.h (ARG_POINTER_CFA_OFFSET): Add pretend_args_size.
* config/spu/spu.h (ARG_POINTER_CFA_OFFSET): Add pretend_args_size.
2009-12-21 Brian Hackett <>
* plugin.def: Rename pre-genericize event.
* plugin.c (register_callback, invoke_plugin_callbacks): Same.
* c-decl.c (finish_function): Invoke callbacks on above event.
2009-12-21 Jakub Jelinek <>
PR rtl-optimization/42429
* reload.c (find_reloads_subreg_address): When adjusting mode of
MEM, update also MEM_SIZE if it is set.
2009-12-21 H.J. Lu <>
PR bootstrap/42345
* acinclude.m4 (gcc_GAS_FLAGS): New.
* configure: Regenerated.
2009-12-20 Michael Matz <>
PR tree-optimization/42027
* cfgexpand.c (expand_gimple_cond): Use jumpy sequence for &, &&, |
and || if jumps are cheap.
2009-12-19 Richard Guenther <>
PR lto/42401
* lto-streamer-out.c (tree_is_indexable): Local statics are indexable.
(lto_output_tree_ref): Adjust assert.
2009-12-19 Richard Guenther <>
PR tree-optimization/42108
* tree-ssa-sccvn.c (last_vuse_ptr): New variable.
(vn_reference_lookup_2): Update last seen VUSE.
(vn_reference_lookup_3): Avoid updating last seen VUSE after
(visit_reference_op_load): Use last seen VUSE from the first
lookup when entering into the table.
2009-12-19 Joern Rennecke <>
* (PLUGIN_HEADERS): Add more headers.
* tree-pass.h (GCC_PASS_LISTS): Define.
(PASS_LIST_NO_all_lowering_passes): New enumeration value.
(PASS_LIST_NO_all_small_ipa_passes): Likewise.
(PASS_LIST_NO_all_regular_ipa_passes): Likewise.
(PASS_LIST_NO_all_lto_gen_passes): Likewise.
(PASS_LIST_NO_all_passes): Likewise.
(PASS_LIST_NUM): Likewise.
(gcc_pass_lists): Declare.
* passes.c (gcc_pass_lists): Define.
2009-12-18 Richard Guenther <>
* tree-ssa-sccvn.c (copy_nary): New function.
(copy_phis): Likewise.
(copy_references): Likewise.
(process_scc): Avoid last iteration by copying the
optimistic table to the valid table.
2009-12-17 Jakub Jelinek <>
* dwarf2out.c (loc_descriptor): For SYMBOL_REFs and LABEL_REFs
use DW_OP_addr+DW_OP_stack_value instead of DW_OP_implicit_value.
(add_const_value_attribute): For CONST_STRING, SYMBOL_REFs and
LABEL_REFs use DW_OP_addr+DW_OP_stack_value DW_AT_location instead of
2009-12-17 Alexandre Oliva <>
PR debug/41679
* var-tracking.c (count_uses): Count MO_VAL_USE of original
(add_stores): Handle conditional stores.
PR debug/41679
* var-tracking.c (use_type): Remove indirection from loc.
(count_uses): Dereference incoming loc early.
(add_uses): Dereference incoming loc early.
PR debug/41679
* var-tracking.c (add_stores): Avoid value mode mismatch for
promoted declarations.
2009-12-17 Jakub Jelinek <>
PR c++/42386
* ipa.c (function_and_variable_visibility): Clear same_comdat_group
links of DECL_EXTERNAL nodes.
2009-12-17 Sandra Loosemore <>
* doc/rtl.texi (Vector Operations): Clarify vec_select result mode.
2009-12-17 Julian Brown <>
* config/arm/bpabi-v6m.S (test_div_by_zero): New macro.
(aeabi_ldivmod, aeabi_uldivmod): Use above macro.
* config/arm/bpabi.S (test_div_by_zero): New macro.
(aeabi_ldivmod, aeabi_uldivmod): Use above macro.
* config/arm/lib1funcs.asm (ARM_LDIV0): Tail-call int div-by-zero
handler for EABI. Add signed/unsigned argument, pass correct value
to that handler.
(THUMB_LDIV0): Same, for Thumb.
(DIV_FUNC_END): Add signed argument.
(WEAK): New macro (for EABI).
(__udivsi3, __umodsi3): Add unsigned argument to DIV_FUNC_END. For
__udivsi3, add entry point which skips division-by-zero test.
(__divsi3, __modsi3): Add signed argument to DIV_FUNC_END.
(__aeabi_uidivmod, __aeabi_idivmod): Check for division by zero.
Call __udivsi3 or __divsi3 via entry points which skip
division-by-zero tests.
(__div0): Rename to __aeabi_idiv0, __aeabi_ldiv0 for EABI, and
declare those names weak.
2009-12-17 Richard Guenther <>
PR middle-end/42397
* builtins.c (get_object_alignment): Properly deal with
a CONST_DECL base.
* expr.c (emit_block_move_hints): Assert the alignment makes sense.
2009-12-17 Uros Bizjak <>
PR target/32280
* config/i386/i386-modes.def (V1TI): New vector mode.
* config/i386/i386.h (VALID_SSE_REG_MODE): Add V1TImode.
(SSE_REG_MODE_P): Ditto.
* config/i386/ (SSEMODE16): New mode iterator.
(AVXMODE16): Ditto.
(avxvecmode): Handle V1TI mode.
(*avx_mov<mode>_internal): Use AVXMODE16 instead of AVXMODE.
(mov<mode>): Use SSEMODE16 instead of SSEMODE.
(*mov<mode>_internal): Ditto.
(push<mode>1): Ditto.
(movmisalign<mode>): Ditto.
(sse2_ashlv1ti): Rename from sse2_ashlti.
(sse2_lshrv1ti): Rename from sse2_lshrti.
(*avx_ashlv1ti): Rename from *avx_ashlti and move from
(*avx_lshrv1ti): Rename from *avx_lshrti and move from
(vec_shl_<mode>): Convert operands to V1TImode and use V1TI shift.
(vec_shr_<mode>): Ditto.
(*sse2_mulv4si3): Update for renamed sse2_ashlv1ti3.
(udot_prodv4si): Ditto.
* config/i386/i386.c (classify_argument): Handle V1TImode.
(function_arg_advance_32): Ditto.
(function_arg_32): Ditto.
(ix86_expand_sse4_unpack): Convert operands to V1TImode and update
for renamed gen_sse2_lshrv1ti3.
(ix86_expand_args_builtin) <V2DI_FTYPE_V2DI_INT_CONVERT>: Set rmode
to V1TImode.
(struct builtin_description) <__builtin_ia32_pslldqi128>: Update
for renamed sse2_ashlv1ti3.
<__builtin_ia32_psrldqi128>: Update for renamed sse2_lshrv1ti3.
2007-06-11 Uros Bizjak <>
PR target/32280
* config/i386/ ("sse2_ashlti", "sse2_lshrti3"): Move ...
* config/i386/ ("sse2_ashlti", "sse2_lshrti3"): ... to here.
2009-12-17 Richard Earnshaw <>
PR target/42372
* (pic_add_dot_plus_eight): Change output constraint from
update to write.
2009-12-17 Shujing Zhao <>
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Update build_indirect_ref calls.
2009-12-17 Uros Bizjak <>
* config/i386/ (IMODE): Remove mode iterator.
(modesuffix): Remove mode attribute.
(modeconstraint): Ditto.
(immconstraint): Ditto.
(*sync_compare_and_swap<mode>): Use SWI mode iterator instead of
IMODE mode iterator, imodesuffix mode attribute instead of modesuffix,
<r> mode attribute instead of modeconstraint and <i> mode attribute
instead of immconstraint.
(sync_double_compare_and_swap<mode>): Ditto.
(sync_old_add<mode>): Ditto.
(sync_lock_test_and_set<mode>): Ditto.
(sync_add<mode>): Ditto.
(sync_sub<mode>): Ditto.
(sync_and<mode>): Ditto.
(sync_ior<mode>): Ditto.
(sync_xor<mode>): Ditto.
(sync_<code><mode>): Macroize insn pattern from
sync_{and,ior,xor}<mode> using any_logic code iterator.
2009-12-17 Shujing Zhao <>
PR c/40885
* c-common.h (ref_operator): New type.
(build_indirect_ref): Adjust prototype with new argument.
* c-typeck.c (build_indirect_ref): Accept ref_operator as argument and
emit the diagnostics for easy translation.
(build_array_ref): Update calls to build_indirect_ref.
* c-omp.c (c_finish_omp_atomic): Likewise.
* c-parser.c (c_parser_unary_expression,
c_parser_postfix_expression_after_primary): Likewise.
2009-12-16 Richard Guenther <>
PR lto/42392
* langhooks.c (lhd_begin_section): Make sure to switch back
to the text section, not some random one.
2009-12-16 Jakub Jelinek <>
* tree-chrec.c (chrec_convert_1): Only fold (T2)(t +- x) to
(T2)t +- (T2)x if only integer types are involved.
2009-12-16 Ben Elliston <>
* tree-data-ref.h (dot_rdg): Remove prototype.
* tree-data-ref.c (dog_rdg_1, dot_rdg): Remove.
2009-12-16 Kazu Hirata <>
* doc/invoke.texi, doc/options.texi, doc/plugins.texi,
doc/tm.texi: Fix typos.
2009-12-15 Ralf Wildenhues <>
* doc/extend.texi (Function Attributes, Extended Asm):
Replace TABs with spaces.
* doc/md.texi (Standard Names): Likewise.
* doc/plugins.texi (Plugins): Likewise.
* doc/c-tree.texi (Expression trees): Use @itemx for all but
the first item for merged items.
* doc/extend.texi (Variable Attributes): Likewise.
* doc/install.texi (Configuration): Likewise.
* doc/invoke.texi (RS/6000 and PowerPC Options, RX Options):
2009-12-15 Richard Guenther <>
* tree.c (free_lang_data_in_binfo): Do not free BINFO_OFFSET
(free_lang_data_in_type): Do not free TYPE_STUB_DECL if we
generate debug information.
(free_lang_data_in_decl): Do not free DECL_SIZE_UNIT,
(free_lang_data): Do not disable debuginfo.
* lto-streamer-out.c (write_symbol_vec): Deal with
non-constant DECL_SIZE.
(pack_ts_base_value_fields): Write types with false
(lto_output_ts_type_tree_pointers): Stream TYPE_STUB_DECL.
* lto-streamer-in.c (lto_input_ts_type_tree_pointers): Stream
* dwarf2out.c (add_pure_or_virtual_attribute): Check for
(gen_type_die_for_member): Test for TYPE_STUB_DECL.
* opts.c (decode_options): Do not disable var-tracking for lto.
* doc/invoke.texi (-flto): Document -flto vs. -g experimental
(-fwhopr): Document experimental status.
2009-12-15 Aldy Hernandez <>
PR graphite/42185
* graphite-sese-to-poly.c (is_reduction_operation_p): Assert that
we are a GIMPLE_ASSIGN. Do not calculate rhs code twice.
(follow_ssa_with_commutative_ops): Return NULL on non assignment.
2009-12-15 Eric Botcazou <>
* config/rs6000/ (probe_stack): Use an enclosing SET.
2009-12-15 Richard Guenther <>
* gimple.h (compare_field_offset): Declare.
* gimple.c (compare_field_offset): Export.
* lto-streamer-in.c (input_gimple_stmt): Use compare_field_offset.
2009-12-15 Richard Guenther <>
* lto-cgraph.c (lto_output_node): Also stream the alias
for regular aliases.
(input_node): Likewise.
2009-12-15 Paolo Bonzini <>
Shujing Zhao <>
* intl.c (get_spaces): New.
* intl.h (get_spaces): New.
2009-12-14 Mark Mitchell <>
* (--with-specs): New option.
* configure: Regenerated.
* gcc.c (driver_self_specs): Include CONFIGURE_SPECS.
2009-12-14 Jakub Jelinek <>
PR bootstrap/42369
* config/i386/i386.c (ix86_expand_special_args_builtin): Avoid
using switch with CODE_FOR_lwp_lwp* cases.
* config/i386/i386-builtin-types.def (PVOID_FTYPE_VOID): Use
2009-12-14 Eric Botcazou <>
* cfgexpand.c (expand_debug_expr) <INDIRECT_REF>: Remove overzealous
assertion and useless code.
<TARGET_MEM_REF>: Likewise.
2009-12-14 Alexandre Oliva <>
PR debug/41473
* dwarf2out.c (AT_loc_list_ptr): New.
(resolve_addr): Remove unresolved attributes and loc_list entries.
PR debug/41473
* dwarf2out.c (add_var_loc_to_decl): Don't drop initial empty
(new_loc_list): Drop gensym arg. Move generation of ll_symbol...
(gen_llsym): ... here. New function.
(add_loc_descr_to_loc_list): Removed.
(loc_descriptor): Infer mode from CONST_DOUBLEs and CONST_VECTORs.
(single_element_loc_list): Removed.
(dw_loc_list): Don't create entries without a location. Don't
special-case the first node of the list, only single nodes.
(single_element_loc_list_p): Simplify.
(loc_list_from_tree): Don't use DECL_RTL if loc_list is nonempty.
(add_location_or_const_value_attribute): Test var loc for NULL.
(convert_cfa_to_fb_loc_list): Adjust calls to new new_loc_list,
call gen_llsym if needed.
2009-12-14 Jakub Jelinek <>
* cgraph.h (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
* cgraph.c (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
* except.h (set_nothrow_function_flags): Remove prototype.
* except.c (set_nothrow_function_flags): Use cgraph_set_nothrow_flag.
Make static.
* ipa-pure-const.c (propagate): Use cgraph_set_nothrow_flag,
cgraph_set_readonly_flag, cgraph_set_pure_flag
and cgraph_set_looping_const_or_pure_flag.
(local_pure_const): Likewise.
2009-12-14 Jakub Jelinek <>
Sebastian Pop <>
* config/i386/i386-builtin-types.def (PVOID): Declared.
* config/i386/i386.c (IX86_BUILTIN_LLWPCB16, IX86_BUILTIN_LLWPCB32,
(bdesc_special_args): Adjust declaration of __builtin_ia32_llwpcb,
__builtin_ia32_slwpcb, __builtin_ia32_lwpval32,
__builtin_ia32_lwpval64, __builtin_ia32_lwpins32, and
(ix86_expand_special_args_builtin): Handle VOID_FTYPE_PVOID.
UCHAR_FTYPE_USHORT_UINT_USHORT. Warn when the third operand is
not an immediate. Also handle builtin functions with 3 arguments.
(ix86_expand_builtin): Handle IX86_BUILTIN_LLWPCB and
(memory attribute): Handle lwp.
(lwp*): Rewrite all the insn patterns for LWP.
* config/i386/lwpintrin.h (__llwpcb16, __llwpcb32, __llwpcb64,
__slwpcb16, __slwpcb32, __slwpcb64, __lwpval16, __lwpins16): Removed.
(__llwpcb, __slwpcb): New.
2009-12-14 Dmitry Gorbachev <>
* dominance.c (set_immediate_dominator): Don't mark as inline.
2009-12-14 Eric Botcazou <>
* doc/tm.texi (STACK_CHECK_PROTECT): Document alternate default.
* doc/md.texi (check_stack): Clarify.
(probe_stack): Likewise.
* config/rs6000/ (UNSPEC_PROBE_STACK): New constant.
(probe_stack): New insn.
2009-12-14 Ben Elliston <>
* lto-streamer-in.c (lto_get_builtin_tree): fclass can only be a
2009-12-13 Eric Botcazou <>
* doc/tm.texi (STACK_CHECK_PROBE_LOAD): Delete.
* expr.h (STACK_CHECK_PROBE_LOAD): Likewise.
* explow.c (emit_stack_probe): Do not test STACK_CHECK_PROBE_LOAD.
* system.h (STACK_CHECK_PROBE_LOAD): Poison.
2009-12-13 Michael Matz <>
PR tree-optimization/42027
* dojump.c (do_jump <TRUTH_AND_EXPR, TRUTH_OR_EXPR>): Go to
TRUTH_ANDIF_EXPR resp. TRUTH_ORIF_EXPR expander, instead of
falling through.
2009-12-13 Andy Hutchinson <>
PR target/23726
* config/avr/ (pseudo_register_operand): New predicate
for pseudos.
* config/avr/ (divmodqi4): Replace with define_insn_and_split
to allow div/mod optimization.
(udivmodqi4): Ditto.
(divmodhi4): Ditto.
(udivmodhi4): Ditto.
(divmodsi4): Ditto.
(udivmodsi4): Ditto.
2009-12-13 Richard Guenther <>
PR tree-optimization/42357
* tree-sra.c (sra_modify_assign): Do not tear apart struct copies.
2009-12-12 Richard Guenther <>
* tree.c (need_assembler_name_p): Abstract decls do not need
an assembler name.
* dwarf2out.c (dwarf2out_abstract_function): Preserve
2009-12-11 Richard Guenther <>
* lto-streamer-in.c (lto_input_tree_ref): Do not register
DEBUG_EXPR_DECLs with the varpool.
2009-12-11 Eric Botcazou <>
* config/sparc/linux-unwind.h (MD_FROB_UPDATE_CONTEXT, 64-bit): Define.
(sparc64_frob_update_context): New function.
2009-12-11 Richard Guenther <>
PR lto/41658
PR lto/41657
* lto-streamer-out.c (write_global_stream): Do not make decls
weak but resort to TREE_ASM_WRITTEN to avoid multiple definitions.
Make sure to mark all decls that we have written.
2009-12-11 Sebastian Andrzej Siewior <>
PR target/36047
* config/m68k/linux.h: Remove LABELNO from the mcount statement. It is
not used by glibc/uclibc and does not work with large binaries.
2009-12-11 Richard Guenther <>
PR lto/41662
* lto-streamer-in.c (lto_init_eh): Move eh_initialized_p
handling here.
(input_eh_regions): Adjust.
(lto_input_ts_function_decl_tree_pointers): Initialize EH
2009-12-11 Duncan Sands <>
* passes.c (make_pass_instance): Allocate and copy the right amount of
memory for ipa passes, which are not the same size as other passes.
2009-12-11 Joern Rennecke <>
* plugin.c (get_named_event_id): Fix hash table rebuild to include
dynamically allocated events.
2009-12-11 Richard Guenther <>
PR lto/42320
* lto-symtab.c (lto_symtab_resolve_can_prevail_p): Properly
detect non-prevailing decls.
2009-12-10 Jakub Jelinek <>
PR c++/42317
* cgraph.h (struct cgraph_node): Add same_comdat_group field.
* cgraph.c (cgraph_remove_node): Unchain node from same_comdat_group
circular list.
(cgraph_node_can_be_local_p): Return false for DECL_COMDAT with
* ipa.c (cgraph_remove_unreachable_nodes): For any reachable node
mark all its same_comdat_group nodes as also reachable.
(cgraph_externally_visible_p): Return true even if any of
same_comdat_group nodes has address taken.
* lto-cgraph.c (lto_output_node): Stream out same_comdat_group.
(output_cgraph): Ensure other same_comdat_group nodes are also
(input_node): Stream in same_comdat_group.
(input_cgraph_1): Fix up same_comdat_group fields from references
to pointers.
* cgraphunit.c (cgraph_analyze_functions): Mark all other
same_comdat_group nodes as reachable.
(cgraph_mark_functions_to_output): For each node->process process
also other same_comdat_group nodes.
* ipa-inline.c (cgraph_clone_inlined_nodes): Don't reuse nodes
with same_comdat_group non-NULL.
(cgraph_mark_inline_edge): Likewise.
2009-12-10 Jan Hubicka <>
PR middle-end/42228
PR middle-end/42110
* cgraph.c (cgraph_create_edge_including_clones): Add old_stmt
parameter; update edge if it already exists.
(cgraph_remove_node): Handle correctly cases where we are removing
node having clones.
* cgraph.h (cgraph_create_edge_including_clones): Declare.
(verify_cgraph_node): Add missing error_found = true code.
(cgraph_materialize_all_clones): Remove call edges of dead nodes.
* ipa.c (cgraph_remove_unreachable_nodes): Correctly look for master
clone; fix double linked list removal.
* tree-inline.c (copy_bb): Update cgraph_create_edge_including_clones
call; fix frequency of newly created edge.
2009-12-10 Bernd Schmidt <>
PR rtl-opt/42216
* regrename.c: Error out if MAX_RECOG_OPERANDS is larger than
(verify_reg_in_set): New function, broken out of verify_reg_tracked.
(verify_reg_tracked): Use it.
(scan_rtx_reg): When seeing a use involving a superset of the
registers in an existing chain, enlarge that chain. Otherwise,
allow subsets and set fail_current_block for all other kinds of
(hide_operands): New argument UNTRACKED_OPERANDS; callers changed.
Do not modify operands when the bit with the corresponding number
is set in that bitmap.
(build_def_use): When we see matching operands with different
modes, don't set fail_current_block, but keep track of such
operands in a bitmap if their registers aren't already tracked
in an open chain. Pass this bitmap to all hide_operands calls.
2009-12-10 Richard Guenther <>
PR tree-optimization/42337
* tree-ssa-pre.c (seen_during_translate): Remove.
(phi_translate_1): Collapse into ...
(phi_translate): ... this. Remove seen parameter and
adjust recursive calls.
2009-12-10 Richard Guenther <>
Allan Sandfeld Jensen <>
* tree-vectorizer.c (vectorize_loops): Properly guard
vectorizer verboseness.
2009-12-10 Ben Elliston <>
* fwprop.c (free_load_extend): Initialise `use'.
2009-12-09 David Edelsohn <>
* builtins.c (do_mpc_ckconv): Pass the component type to
2009-12-09 Xinliang David Li <>
PR tree-optimization/42337
* tree-ssa-pre.c (phi_translate_1): Push and Pop SEEN set.
2009-12-09 Nathan Froyd <>
* config/rs6000/ (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
mulv2sf3, divv2sf3): New expanders.
* config/rs6000/ (spe_evabs, spe_evand, spe_evaddw, spe_evsubfw,
spe_evdivws): Rename to use standard GCC names.
* config/rs6000/ (negv2sf, absv2sf2, addv2sf3, subv2sf3,
mulv2sf3, divv2sf3): Rename to avoid conflict with the new expanders.
* config/rs6000/rs6000.c (bdesc_2arg, bdesc_1arg): Use new CODE_FOR_
names for renamed patterns.
2009-12-09 Andreas Krebbel <>
* config/s390/ ("copysign<mode>3"): Pattern removed.
2009-12-09 Jakub Jelinek <>
* Compute ld_ver, ld_vers, ld_date, ld_vers_major,
ld_vers_minor and ld_vers_path always, not just when gcc_cv_ld_hidden
isn't cached.
* configure: Regenerated.
2009-12-08 Richard Henderson <>
* combine.c (setup_incoming_promotions): Fix sign-extend of
zero-extend case; tidy conditions.
2009-12-08 Michael Matz <>
PR middle-end/38474
* function.c (free_temp_slots): Only walk the temp slot
addresses and combine slots if we actually changes something.
(pop_temp_slots): Ditto.
2009-12-08 Olga Golovanevsky <>
PR middle-end/41843
* ipa-struct-reorg.c (compare_fields): New function.
(find_field_in_struct_1): Use compare_fields function.
(is_equal_types): Likewise.
2009-12-07 DJ Delorie <>
PR c/42312
* config/mep/mep.c (mep_expand_prologue): Set
really_need_stack_frame after frame_size is set.
2009-12-07 Richard Henderson <>
PR rtl-opt/42269
* combine.c (setup_incoming_promotions): Improve the conditions
under which we respect the promotions applied.
2009-12-07 Eric Botcazou <>
* config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
* config/sparc/linux64.h (ASM_SPEC): Likewise.
2009-12-07 Richard Henderson <>
PR debug/42299
PR debug/42166
* tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
for ssa names already registered for update.
2009-12-07 Jakub Jelinek <>
PR debug/42244
* ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
2009-12-07 Sebastian Pop <>
* config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the
options when bit_LWP is set.
2009-12-07 Sebastian Pop <>
* config/i386/cpuid.h (bit_ABM): New.
* config/i386/driver-i386.c (host_detect_local_cpu): Add -mabm to the
options when bit_ABM is set.
2009-12-07 Jakub Jelinek <>
* config/i386/i386.c (bdesc_special_args): Move __builtin_clzs from
this array ...
(bdesc_args): ... here.
* config.gcc (i[34567]86-*-*): Include abmintrin.h.
(x86_64-*-*): Likewise.
2009-12-07 Sebastian Pop <>
* config.gcc (i[34567]86-*-*, x86_64-*-*): Add popcntintrin.h.
* config/i386/abmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
* config/i386/i386-c.c (__POPCNT__): Defined.
* config/i386/popcntintrin.h: New file.
* config/i386/smmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
Include popcntintrin.h.
* config/i386/x86intrin.h: Include popcntintrin.h when __POPCNT__
is defined.
2009-12-07 Sebastian Pop <>
* config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
* config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
* config/i386/ Remove all XOP splitters.
Allow the second and fourth operands of XOP multiply-add insns
to be nonimmediate.
2009-12-07 Sebastian Pop <>
* config/i386/ Remove all FMA4 splitters.
Allow the second operand of FMA4 insns to be a nonimmediate.
Fix comments punctuation.
2009-12-07 Julian Brown <>
* config/arm/ (Ps, Pt): New constraint letters.
* config/arm/ (*thumb2_addsi_short): Tighten constraints.
2009-12-07 Kaveh R. Ghazi <>
PR other/40302
* (HAVE_mpc): Don't define.
*, configure: Regenerate.
PR other/40302
* builtins.c: Remove HAVE_mpc* checks throughout.
* fold-const.c: Likewise.
* real.h: Likewise.
* toplev.c: Likewise.
2009-12-07 Edmar Wienskoski <>
* config.gcc (cpu_is_64bit): Add new core e500mc64.
(powerpc*-*-*): Add new core e500mc64.
* config/rs6000/ New file.
* config/rs6000/rs6000.c (processor_costs): Add new costs for
(rs6000_override_options): Add e500mc64 case to
processor_target_table. Altivec and Spe options not allowed with
e500mc64. Disable string instructions for e500mc64. Enable branch
targets alignment for both e500mc and e500mc64. Initialize
rs6000_cost for e500mc64.
(rs6000_emit_sISEL): New function.
(rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
(rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
(rs6000_issue_rate): Set issue rate for e500mc64.
(rs6000_rtx_costs): Set more accurate cost for mfcr instruction
on architectures with isel.
* config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
* config/rs6000/rs6000.h (processor_type): Add
(ASM_CPU_SPEC): Add e500mc64.
* config/rs6000/ (define_attr "cpu"): Add ppce500mc64.
(abssi2_isel): Expand pattern to handle DImode.
(nabs<mode>2_isel): New pattern.
(absdi2): Change pattern to handle 64 bit isel targets.
(absdi2_internal): Exclude ISEL targets.
(nabsdi2): Exclude ISEL targets.
* doc/invoke.texi: Add e500mc64 to list of cpus.
2009-12-07 Uros Bizjak <>
* config/i386/ (any_or): New code iterator.
(any_logic): Rename from plogic code iterator.
(logicprefix): Rename from plogicprefix code attribute.
(<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
any_or code iterator.
(*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
any_or code iterator.
(*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
(*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
(ior and xor splitters): Ditto.
* config/i386/ Updated for rename.
* config/i386/ Ditto.
2009-12-07 Uros Bizjak <>
* config/i386/ (float<SSEMODEI24:mode><X87MODEF:mode>2):
Remove quotes around condition logic code.
2009-12-06 Richard Henderson <>
PR debug/42234
* tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
argument earlier.
2009-12-06 Kaveh R. Ghazi <>
* doc/install.texi: Document MPC is required.
2009-12-06 Uros Bizjak <>
* config/i386/ (g): Add HImode and QImode.
(general_szext_operand): New mode attribute.
(*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
SWI124 mode iterator.
(and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
SWIM mode iterator.
(*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
SWI124 mode iterator.
(ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
SWIM mode iterator.
(*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
SWI248 mode iterator.
(*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
SWI mode iterator.
(*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
SWI mode iterator.
(xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
SWIM mode iterator.
(*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
SWI248 mode iterator.
(*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
SWI mode iterator.
(*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
SWI mode iterator.
2009-12-05 Sebastian Pop <>
* config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
* config/i386/i386.h (CC1_CPU_SPEC_1): Remove
"'-mfused-madd' was removed".
* config/i386/i386.opt (mfused-madd): New.
* config/i386/ Add TARGET_FUSED_MADD to FMA4 insns.
* doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.
2009-12-05 John David Anglin <>
* pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
* pa-hpux10.h (LIB_SPEC): Likewise.
* pa-hpux11.h (LIB_SPEC): Likewise.
PR ada/41912
* pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
for signal frames.
* pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.
2009-12-05 Ralf Wildenhues <>
* configure: Regenerate.
2009-12-05 Richard Earnshaw <>
* arm/ (thumb2_mulsi_short_compare0): Use a low-register
for the scratch.
2009-12-04 David Daney <>
PR rtl-optimization/42164
* combine.c (combine_simplify_rtx): Handle truncation of integer
2009-12-04 Richard Guenther <>
* lto-streamer-out.c (pack_ts_decl_common_value_fields):
Revert previous change.
(lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
* lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
2009-12-04 Richard Guenther <>
* tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
(call_may_clobber_ref_p_1): Likewise.
2009-12-04 Matthias Klose <>
John David Anglin <>
PR target/40134
* config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
* config/pa/pa-linux.h (LIB_SPEC): Remove.
2009-12-03 Sebastian Pop <>
Richard Henderson <>
* config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
* config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
* config/i386/ Do not use ix86_fma4_valid_op_p.
* config/i386/ (fma4_*): Remove alternative with operand 1
matching a memory access. Do not use ix86_fma4_valid_op_p.
(xop_*): Same.
Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.
2009-12-03 Richard Henderson <>
* config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
all operands into registers.
2009-12-03 Sebastian Pop <>
* config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
* config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
* config/i386/ Same.
2009-12-03 Richard Guenther <>
* cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
instead of DECL_NAME for the entry point.
2009-12-03 Richard Earnshaw <>
* arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
before the lock release.
2009-12-03 Michael Matz <>
PR middle-end/38474
* cfgexpand.c (struct stack_var): Add conflicts member.
(stack_vars_conflict, stack_vars_conflict_alloc,
n_stack_vars_conflict): Remove.
(add_stack_var): Initialize conflicts member.
(triangular_index, resize_stack_vars_conflict): Remove.
(add_stack_var_conflict, stack_var_conflict_p): Rewrite in
terms of new member.
(union_stack_vars): Only run over the conflicts.
(partition_stack_vars): Remove special case.
(expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
don't create self-conflicts.
(account_used_vars_for_block): Don't create any conflicts.
(fini_vars_expansion): Free bitmaps, don't free or clear removed
2009-12-03 Bernd Schmidt <>
PR middle-end/42202
* regrename.c (live_in_chains): New variable.
(verify_reg_tracked): New static function.
(scan_rtx_reg): Update live_in_chains.
(scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
we're already tracking the reg.
(build_def_use): Likewise. Initialize live_in_chains.
2009-12-03 Ken Werner <>
* config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
startup files.
* config/spu/spu-protos.h (spu_function_profiler): Add prototype.
* config/spu/spu.c (spu_function_profiler): New function.
* config/spu/spu.h (FUNCTION_PROFILER): Invoke
2009-12-03 Dave Korn <>
* ggc-page.c (struct free_object): Pull definition out ...
(struct globals): .. from here.
2009-12-02 Richard Guenther <>
* fold-const.c (div_if_zero_remainder): Honor that sizetypes
are sign-extending. Simplify.
2009-12-02 Richard Henderson <>
PR tree-opt/42215
* tree-loop-distribution.c (build_size_arg_loc): Tidy.
(generate_memset_zero): Convert to sizetype properly. Tidy.
2009-12-02 Richard Guenther <>
* lto-streamer-out.c (pack_ts_decl_common_value_fields):
Do not pretend we have value exprs.
2009-12-02 Richard Guenther <>
PR middle-end/41491
* fold-const.c (try_move_mult_to_index): Do not leak
domain types into the IL.
2009-12-02 Richard Guenther <>
PR middle-end/42088
* tree.c (free_lang_data): Disable if not using LTO.
2009-12-02 Richard Guenther <>
PR middle-end/42229
* cfgloopmanip.c (remove_path): Avoid cancelling loops twice.
2009-12-02 Ulrich Weigand <>
PR middle-end/42224
* tree.h (int_or_pointer_precision): Remove.
* tree.c (int_or_pointer_precision): Remove.
(integer_pow2p): Use TYPE_PRECISION instead.
(tree_log2): Likewise.
(tree_floor_log2): Likewise.
(signed_or_unsigned_type_for): Likewise.
* fold-const.c (fit_double_type): Likewise.
* varasm.c (initializer_constant_valid_p): Likewise.
2009-12-02 Ira Rosen <>
* doc/invoke.texi (-fdump-tree-slp): Document.
(-ftree-vectorizer-verbose): Update.
(-ftree-slp-vectorize): Document.
2009-12-02 Nick Clifton <>
* config/rx/rx.c (rx_conditional_register_usage): Do not warn if
no fixed registers are available for interrupt handlers. Do not
fix normal registers.
(rx_get_stack_layout): Create a stack frame for fast interrupt
handlers, if necessary. Push extra registers if needed in order
to save the accumulator.
(rx_expand_prologue): Create a stack frame for fast interrupt
handlers, if necessary.
(rx_expand_builtin_mvfc): Handle the case where there is no target.
2009-12-01 Sebastian Pop <>
* config/i386/abmintrin.h (__lzcnt16): New.
(__lzcnt): New.
(__lzcnt64): New.
* config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
* config/i386/i386.c (IX86_BUILTIN_CLZS): New.
(bdesc_special_args): Add __builtin_clzs.
(ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
2009-12-01 Sebastian Pop <>
* config/i386/abmintrin.h (_mm_popcnt_u32): New.
(_mm_popcnt_u64): New.
2009-12-01 Sebastian Pop <>
* config/i386/abmintrin.h: New.
* config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
* config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
2009-12-01 Uros Bizjak <>
* config/i386/ (SWI124): Rename from CRC32MODE.
(crc32modesuffix): Remove.
(crc32modeconstraint): Ditto.
(sse4_2_crc32<mode>): Update for renamed mode iterator. Use
imodesuffix instead of crc32modesuffix and <r>m instead of
2009-12-01 Jakub Jelinek <>
PR c++/42234
* tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
contains no statements.
2009-12-01 Grigori Fursin <>
Joern Rennecke <>
* cgraphunit.c (plugin.h): Include.
(ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
* gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
(enum plugin_event): Define by including plugin.def.
Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
(plugin_event_name): Change type to const char **.
(get_event_last, get_named_event_id, unregister_callback): Declare.
(register_callback): Change type of event argument to int.
(highlev-plugin-common.h): New file.
* (GCC_PLUGIN_H): Add highlev-plugin-common.h and
(tree-optimize.o passes.o): Depend on $(PLUGIN_H).
(PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
(s-header-vars): New rule.
(install-plugin): Depend on s-header-vars. Install b-header-vars.
* params.c (get_num_compiler_params): New function.
* params.h (get_num_compiler_params): Declare.
* passes.c (plugin.h): Include.
(make_pass_instance): Invoke PLUGIN_NEW_PASS.
(do_per_function_toporder, pass_init_dump_file): No longer static.
(pass_fini_dump_file): Likewise.
(execute_one_pass): Likewise. Invoke PLUGIN_OVERRIDE_GATE and
(execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
* plugin.c (plugin_event_name_init): New array, defined by
including plugin.def.
(plugin_event_name): Change type to const char ** and initialize
to plugin_event_name_init.
(event_tab, event_last, event_horizon): New variable.
(get_event_last): New function.
(plugin_callbacks_init): New array.
(plugin_callbacks: Change type to struct callback_info **.
Initialize to plugin_callbacks_init.
(htab_event_eq, get_named_event_id, unregister_callback): New function.
(invoke_plugin_va_callbacks): Likewise.
(register_callback): Change type of event argument to int.
Handle new events. Allow dynamic events.
(invoke_plugin_callbacks): Likewise. Return success status.
(plugins_active_p): Allow dynamic callbacks.
* plugin.def: New file.
* plugin.h (invoke_plugin_callbacks): Update prototype.
(invoke_plugin_va_callbacks): Declare.
* tree-optimize.c (plugin.h): Include.
(tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
* tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
(pass_fini_dump_file, do_per_function_toporder): Likewise.
* doc/plugin.texi: Document new event types.
2009-12-01 Martin Jambor <>
PR tree-optimization/42237
* tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
in between references into two.
2009-12-01 Richard Guenther <>
* tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
to the block of the call when remapping a type.
2009-12-01 Martin Jambor <>
* cgraph.h (struct cgraph_edge): Reorder fields. Make loop_nest
unsigned short int.
* ipa-prop.h (struct ipa_param_call_note): Likewise.
* ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
2009-12-01 Richard Guenther <>
* final.c (rest_of_clean_state): If -fcompare-debug is
given dump final insns without UIDs.
* tree-ssa-live.c (remove_unused_scope_block_p): Remove
after_inlining checks.
2009-11-30 Chao-ying Fu <>
* config/mips/ (mips_lhx_<mode>): Use sign_extend.
2009-11-30 Dave Korn <>
status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
* configure: Regenerate.
* Regenerate.
* config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
options for Cygwin DLL libstdc++ support wrappers.
(CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
(CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
* gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
(i386_find_on_wrapper_list): Check if a function is found on the list
of libstdc++ wrapper options.
(i386_pe_file_end): If we are importing a wrapped function, also emit
an external declaration for the real version.
* config/i386/cygming.opt (muse-libstdc-wrappers): New option for
Cygwin targets. Update copyright year.
2009-11-30 Steve Ellcey <>
Jakub Jelinek <>
* function.c (instantiate_virtual_regs_in_insn): Copy to new reg
before forcing mode.
2009-11-30 Anatoly Sokolov <>
* config/sh/sh.c (sh_promote_prototypes): Make static.
(sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
* config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
* config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
(sh_promote_prototypes) : Remove.
2009-11-30 Julian Brown <>
* config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
reloads to LO_REGS.
2009-11-30 Richard Henderson <>
* config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
(bdesc_special_args): Update insn codes.
(avx_vpermilp_parallel): Correct range check.
(ix86_rtx_costs): Handle vector permutation rtx codes.
(struct expand_vec_perm_d): Move earlier.
(get_mode_wider_vector): New.
(expand_vec_perm_broadcast_1): New.
(ix86_expand_vector_init_duplicate): Use it. Tidy AVX modes.
(expand_vec_perm_broadcast): New.
(ix86_expand_vec_perm_builtin_1): Use it.
* config/i386/i386-protos.h: Update.
* config/i386/ (avx_vbroadcast_operand): New.
* config/i386/ (AVX256MODE24P): New.
(ssescalarmodesuffix2s): New.
(avxhalfvecmode, avxscalarmode): Fill out to all modes.
(avxmodesuffixf2c): Add V8SI, V4DI.
(vec_dupv4sf): New expander.
(*vec_dupv4sf_avx): Add vbroadcastss alternative.
(*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
V4SF and V4SI. Move C alternatives to front. Add insertps and
pinsrd alternatives.
(*vec_set<mode>_0_sse2): Split out from ...
(vec_set<mode>_0): Macro-ize for V4SF and V4SI.
(vec_interleave_highv2df, vec_interleave_lowv2df): Require register
destination; use ix86_vec_interleave_v2df_operator_ok, instead of
(*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
(*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
(*avx_movddup, *sse3_movddup): Remove. New splitter from
vec_select form to vec_duplicate form.
(*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
(avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
(*avx_unpcklpd256): ... here.
(*vec_dupv4si_avx): New.
(*vec_dupv2di_avx): Add movddup alternative.
(*vec_dupv2di_sse3): New.
(vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
avx_vbroadcastss256; represent with vec_duplicate instead of
nested vec_concat operations.
(avx_vbroadcastf128_<mode>): Rename from
(*avx_vperm_broadcast_v4sf): New.
(*avx_vperm_broadcast_<AVX256MODEF2P>): New.
2009-11-30 Martin Jambor <>
PR middle-end/42196
* tree-sra.c (struct access): New field grp_different_types.
(dump_access): Dump grp_different_types.
(compare_access_positions): Prefer scalars and vectors over other
scalar types.
(sort_and_splice_var_accesses): Set grp_different_types if appropriate.
(sra_modify_expr): Use the original also when dealing with a complex
or vector group accessed as multiple types.
2009-11-30 Richard Henderson <>
* config/i386/i386.c (avx_vperm2f128_parallel): New.
* config/i386/i386-protos.h: Declare it.
* config/i386/ (avx_vperm2f128_v8sf_operand,
avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
* config/i386/ (avx_vperm2f128<mode>3): Change to expander.
(*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
(*avx_vperm2f128<mode>_nozero): New.
2009-11-30 Richard Henderson <>
* config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
* config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
(bdesc_args): Add them.
(ix86_expand_builtin): Expand them.
(expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
2009-11-30 Martin Jambor <>
PR middle-end/42206
* ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
2009-11-30 Jakub Jelinek <>
* ipa-reference.c (propagate): Only dump bitmaps if computed.
2009-11-30 Olga Golovanevsky <>
PR middle-end/39806
* ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
(new_var_hash): Likewise.
(is_in_new_vars_htab): Likewise.
(add_to_new_vars_htab): Likewise.
2009-11-30 Ira Rosen <>
* tree-vect-stmts.c (vectorizable_assignment): Support
multiple types.
2009-11-30 Richard Guenther <>
* doc/contrib.texi (Contributors): Add myself.
2009-11-30 Richard Guenther <>
* tree.c (free_lang_data): Do not set debug_info_level to
none if terse.
2009-11-30 Richard Guenther <>
PR middle-end/42119
PR fortran/38530
* expr.c (expand_expr_addr_expr_1): Properly expand the initializer
2009-11-30 Richard Guenther <>
* tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
variable UID order.
2009-11-30 Richard Guenther <>
* tree-dump.c (dump_option_value_in): Add TDF_NOUID.
* tree-pass.h (TDF_NOUID): Likewise.
* print-rtl.c: Include tree-pass.h.
(print_mem_expr): Pass dump_flags.
(print_rtx): Likewise.
* print-tree.c: Include tree-pass.h.
(print_node_brief): Handle TDF_NOUID.
(print_node): Likewise.
* tree-pretty-print.c (dump_decl_name): Likewise.
(dump_generic_node): Likewise.
* (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
2009-11-30 Nick Clifton <>
* config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
* config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
* config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
__stormy16_count_leading_zeros() into this function.
(__ctzhi2): Use __builtin_clz.
(__ffshi2): Likewise.
2009-11-30 Eric Botcazou <>
* config/sparc/sparc.c (DF_MODES): Simplify.
(TF_MODES, OF_MODES): Adjust for above change.
* config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
2009-11-30 Paolo Bonzini <>
PR rtl-optimization/41812
* fwprop.c (local_md, local_lr): New globals.
(process_defs, process_uses): Remove local_md argument. Never
consider dead pseudos to have singleton def-use chains.
(single_def_use_enter_block): Perform LR simulation.
(build_single_def_use_links): Remove local_md local variable.
Add DF_NOTE. Allocate local_lr.
(fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
* df-problems.c (df_md_scratch): New.
(df_md_alloc, df_md_free): Allocate/free it.
(df_md_local_compute): Only include live registers in init.
(df_md_transfer_function): Prune the in-set computed by
the confluence function, and the gen-set too.
2009-11-30 Hans-Peter Nilsson <>
PR rtl-optimization/40086
* reorg.c (relax_delay_slots): When looking for redundant insn at
the branch target, use next_real_insn, not next_active_insn.
2009-11-30 Kaveh R. Ghazi <>
* doc/install.texi: Update minimum MPC version to 0.8.
2009-09-09 Segher Boessenkool <>
* config/rs6000/ (fnmaddsf4_powerpc_1): Remove
HONOR_SIGNED_ZEROS final condition.
(fnmsubsf4_powerpc_1): Same.
(fnmadddf4_fpr_1): Same.
(fnmsubdf4_fpr_1): Same.
2009-11-29 Ira Rosen <>
PR tree-optimization/42193
* tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
to 1 in case of basic block SLP.
(vectorizable_load): Likewise.
2009-11-28 Jan Hubicka <>
* cgraph.c (same_body_alias_1): Break out of
(same_body_alias): ... here; remove comdat check; it is handled
in cp already.
(cgraph_add_thunk): New.
(dump_cgraph_node): Dump aliases and thunks.
* cgraph.h (cgraph_thunk_info): New structure.
(struct cgraph_node): Add thunk info.
(cgraph_add_thunk): New.
* cgraphunit.c (cgraph_emit_thunks): Remove.
(cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
(assemble_thunk): New function.
(cgraph_expand_function): Handle thunks.
(thunk_adjust): New.
(init_lowered_empty_function): New.
* lto-cgraph.c (lto_output_node): Stream thunk info.
(input_node): Likewise.
* langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
* i386.c (x86_output_mi_thunk): Make output prettier.
2009-11-28 Richard Guenther <>
PR tree-optimization/42183
* tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
address taken. Merge the addressable state of the NRV
variable and the result instead of copying it.
2009-11-28 Jakub Jelinek <>
* matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
malloc_fname variable.
(check_allocation_function): Remove unused gsi and bb_level_0
(transform_access_sites): Remove unused d_type_size and d_type_size_k
* omega.c (resurrect_subs): Remove unused n variable.
(omega_solve_geq): Remove unused neweqns variable.
* lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
* tree-inline.c (declare_return_variable): Remove USE_P argument,
return use instead of var.
(remap_decl, remap_block): Remove unused fn variable.
(expand_call_inline): Remove unused retvar variable, adjust
declare_return_variable caller.
(optimize_inline_calls): Remove unused prev_fn variable.
* tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
(vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
* tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
* tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
(vect_create_epilog_for_reduction): Remove unused bytesize variable.
* omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
parameter. Remove unused par_stmt variable.
(determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
(expand_omp_sections): Remove unused l1 variable.
(lower_omp_for): Remove unused ilist variable.
* tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
Remove unused has_upstream_mem_write_p variable.
* recog.c (decode_asm_operands): Remove unused noperands variable.
* tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
size2 variable.
* libgcov.c (__gcov_merge_delta): Remove unused last variable.
* tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
base_nm variable.
(gen_conditions_for_pow): Remove unused ec variable.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
* ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
fndecl variable.
* tree-ssa-sink.c (statement_sink_location): Remove unused code
* regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
* tree-complex.c (create_one_component_var): Remove unused inner_type
* calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
unnecessarily when GEN_*CALL omits that argument.
* regrename.c (regrename_optimize): Remove unused regs_seen variable.
(build_def_use): Remove unused icode variable.
* ipa-pure-const.c (check_call): Remove unused callee and avail
* tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
* tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
(vect_pattern_recog): Remove unused stmt variable.
* sel-sched-ir.c (make_regions_from_the_rest): Remove unused
new_regions variable.
* postreload.c (reload_cse_simplify_operands): Remove unused mode
* tree-parloops.c (create_call_for_reduction_1): Remove unused
addr_type variable.
(create_parallel_loop): Remove unused res variable.
(gen_parallel_loop): Remove unused nloop variable.
* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
* value-prof.c (gimple_mod_subtract_transform,
gimple_stringops_transform): Remove unused value variable.
(gimple_stringops_values_to_profile): Remove unused fcode variable.
* tree-vrp.c (register_new_assert_for): Remove unused found variable.
(vrp_visit_switch_stmt): Remove unused n variable.
* tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
(vectorizable_operation): Remove unused shift_p variable.
(vectorizable_store): Remove unused first_stmt_vinfo variable.
* tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
* tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
(vect_permute_store_chain): Remove unused scalar_dest variable.
(vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
* tree-ssa-threadupdate.c (thread_single_edge): Remove unused
local_info variable.
* tree-optimize.c (tree_rest_of_compilation): Remove unused node
* optabs.c (expand_binop): Remove unused equiv_value variable.
(emit_libcall_block): Remove unused prev variable.
(init_optabs): Remove unused int_mode variable.
* tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
(do_structure_copy): Remove unused lhsbase and rhsbase variables.
(find_func_aliases): Remove unused rhstype variable.
(ipa_pta_execute): Remove unused varid variable.
2009-11-28 Andy Hutchinson <>
* config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
2009-11-28 David Binderman <>
* ira-color.c (put_allocno_into_bucket): Remove set but not used
local variable hard_regs_num.
* ira-lives.c (process_single_reg_class_operands): Remove cover_class.
* loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
* lower-subreg.c (decompose_multiword_subregs): Remove next.
2009-11-27 Martin Jambor <>
PR middle-end/42006
* tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
instead of create_tmp_var. Set DECL_GIMPLE_REG_P to one manually
for vector and complex types.
(get_adjustment_for_base): Describe return value in the comment.
2009-11-27 Nick Clifton <>
* longlong.h (count_leading_zeros): Define macro for stormy16 target.
* config/stormy16/stormy16-lib2.c: Arrange for separate
compilation of each function.
(__ffshi2): New function.
(__stormy16_count_leading_zeros): New function.
* config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
compile each function into its own object file.
(stormy16-lib2-ashlsi3.c): New stub file.
(stormy16-lib2-ashrsi3.c): New stub file.
(stormy16-lib2-clzhi2.c): New stub file.
(stormy16-lib2-count-leading-zeros.c): New stub file.
(stormy16-lib2-ctzhi2.c): New stub file.
(stormy16-lib2-divsi3.c): New stub file.
(stormy16-lib2-ffshi2.c): New stub file.
(stormy16-lib2-lshrsi3.c): New stub file.
(stormy16-lib2-modsi3.c): New stub file.
(stormy16-lib2-parityhi2.c): New stub file.
(stormy16-lib2-popcounthi2.c): New stub file.
(stormy16-lib2-udivmodsi4.c): New stub file.
(stormy16-lib2-udivsi3.c): New stub file.
(stormy16-lib2-umodsi3.c): New stub file.
2009-11-27 Richard Henderson <>
* config/i386/ (vec_interleave_highv16qi,
vec_interleave_lowv16qi, vec_interleave_highv8hi,
vec_interleave_lowv8hi, vec_interleave_highv4si,
vec_interleave_lowv4si, vec_interleave_highv2di,
vec_interleave_lowv2di, vec_interleave_highv4sf,
vec_interleave_lowv4sf, vec_interleave_highv2df,
vec_interleave_lowv2df): Remove expanders.
(sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
Rename to their proper vec_interleave equivalent. Update all users
to the new name.
* config/i386/i386.c, config/i386/ Update all users.
2009-11-27 Michael Matz <>
PR rtl-optimization/42084
* cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
use it to stop walking.
(expand_gimple_cond): Adjust call to above.
2009-11-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR target/41810
* gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
[SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
__extension__ to allow cast from function pointer to object
pointer in C++.
* doc/install.texi (--enable-threads): Clarify use of Solaris threads.
2009-11-27 Steven Bosscher <>
* config/ia64/ Remove.
* config/ia64/ Do not include it.
* config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
"itanium1", and "merced" from the processor alias table.
(clocks, add_cycles): Remove global variables.
(ia64_sched_reorder2): Don't set/use them.
(ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
(bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
2009-11-27 Andreas Krebbel <>
* config/s390/s390.c (last_scheduled_insn): New variable.
(s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
(s390_sched_reorder, s390_sched_variable_issue): New functions.
2009-11-27 Michael Matz <>
PR c++/41906
* tree-eh.c (lower_catch): Stop after expanding a catch-all.
2009-11-27 Richard Guenther <>
* loop-init.c (pass_rtl_move_loop_invariants): Use
(pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
(pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
(pass_rtl_doloop): Use TV_LOOP_DOLOOP.
2009-11-27 Andreas Krebbel <>
* emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
2009-11-27 Jakub Jelinek <>
* config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
unused insn variable.
* genemit.c (output_peephole2_scratches): Only declare and initialize
_regs_allocated if it will be ever used.
* cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
succ_bb variable.
(create_empty_loop_on_edge): Remove unused freq and cnt variables.
* unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
* opts.c (decode_options): If optimize is bigger than 255,
set it to 255.
2009-11-26 Richard Henderson <>
* config/i386/ (mulv16qi3): Change back from an expander
to an insn-and-split.
(mulv4si): Mention AVX not XOP for AVX exception.
(*sse2_mulv4si3): Likewise.
(mulv2di3): Use vmulld not vpmacsdd for XOP expansion. Tidy.
2009-11-26 Bernd Schmidt <>
* cfgexpand (n_stack_vars_conflict): New static variable.
(triangular_index): Reduce likelyhood of overflow by performing
the division before the multiplication.
(resize_stack_vars_conflict): Call fatal_error if overflow
occurred in triangular_index. Update n_stack_vars_conflict.
PR rtl-opt/38582
* regrename.c (struct du_chain): Remove member earlyclobber.
(scan_rtx_reg): Don't set it. Remove argument earlyclobber,
all callers changed.
(scan_rtx): Remove argument earlyclobber, all callers changed.
(hide_operands, restore_operands, record_out_operands): New functions,
broken out of build_def_use.
(build_def_use): Call them as necessary.
* regrename.c (struct du_head): New members id, conflicts,
hard_conflicts and cannot_rename.
(enum scan_actions): Remove terminate_all_read and
terminate_overlapping_read; add mark_all_read.
(scan_actions_name): Likewise.
(du_head_p): New typedef. Define a vector type for it.
(id_to_chain): New static variable.
(note_sets, clear_dead_regs): Delete functions.
(free_chain_data): New function.
(merge_overlapping_regs): Simply walk the conflicts bitmap.
Remove argument B, all callers changed.
(regrename_optimize): Allocate id_to_chain. Ignore chains that have
the cannot_rename bit set. Update regno and nregs of a renamed chain.
Call free_chain_data when done.
(do_replace): Remove death notes when the renamed reg is set in the
last insn; add them if not.
(mark_conflict, note_sets_clobbers): New static function.
(fail_current_block, current_id, open_chains_set, live_hard_regs): New
static variables.
(scan_rtx_reg): Keep track of conflicts between chains, and between
chains and hard regs. Don't terminate chains when we find a read we
can't handle, mark it unrenameable instead. For terminate_write,
terminate chains that are written with an exact match or a superset
of registers. Set fail_current_block if multi-word lifetimes are too
complex to handle.
(scan_rtx_address): Use mark_all_read instead of terminate_all_read.
(build_def_use): Initialize current_id, live_chains and live_hard_regs;
free memory for them when done.
Rearrange the steps so that earlyclobbers are noted before reads
are processed. Add new steps to keep track of hard register lifetimes
outside insn operands.
2009-11-26 Richard Guenther <>
* tree-ssa-dce.c (nr_walks): New variable.
(mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
(perform_tree_ssa_dce): Init nr_walks.
2009-11-26 Michael Matz <>
PR tree-optimization/41905
* tree-eh.c (lower_eh_constructs_2): Don't add assignments
below statements that can't fall thru.
2009-11-26 Michael Matz <>
* builtins.c (expand_builtin_printf, expand_builtin_fprintf,
expand_builtin_sprintf): Remove.
(expand_builtin): Don't call them.
2009-11-26 Richard Guenther <>
* tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
2009-11-26 Nick Clifton <>
* config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
being used incorrectly.
(rx_function_ok_for_sibcall): New function. Do not allow indirect
sibcalls, or sibcalls from interrupt functions.
* config/rx/ (sibcall): Convert to a define_expand. Check
for a MEM inside a MEM.
(sibcall_value): Likewise.
(sibcall_internal): New pattern containing old sibcall pattern.
(sibcall_value_internal): Likewise.
2009-11-25 Richard Henderson <>
* config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
optional 3rd argument to define the mode.
* config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
(V2UDI, V4USI, V8UHI, V16UQI): New.
* config/i386/i386-modes.def: Rearrange for double-wide AVX.
* config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
* config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
(bdesc_args): Add the builtin definitions to match.
(ix86_expand_builtin): Expand them.
(ix86_builtin_vectorization_cost): Rename from
(ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
expand_vec_perm_blend, expand_vec_perm_vpermil,
expand_vec_perm_pshufb, expand_vec_perm_1,
expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
* (SSEMODE_EO): New.
(vec_extract_even<mode>): Use SSEMODE_EO and
(vec_extract_odd<mode>): Likewise.
(mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
2009-11-25 Richard Henderson <>
* target.h (targetm.vectorize.builtin_vec_perm_ok): New.
* hooks.h, hooks.c (hook_bool_tree_tree_true): New.
* tree-vect-slp.c (vect_create_mask_and_perm): Don't create
the vector constant here...
(vect_transform_slp_perm_load): ... do it here instead. Validate
that the permutation vector is implementable by the target.
2009-11-25 Jakub Jelinek <>
* config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
* config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
* print-rtl.c (print_rtx): When printing newline, append
print_rtx_head and indentation after the newline.
PR target/42165
* config/i386/i386.c (print_operand): For 32-byte memory use
YMMWORD in -masm=intel mode. Use TBYTE instead of XWORD.
* config/i386/ (crc32modesuffix): Expand to nothing
in -masm=intel mode.
(sse4_2_crc32di): Print just crc32 instead of crc32q in
-masm=intel mode.
* config/i386/ (*mmx_pinsrw): Print correct size of
memory operand in -masm=intel mode.
* config/i386/ (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
*sse2_pinsrw): Likewise.
(sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
q suffix in -masm=intel mode.
2009-11-25 Eric Botcazou <>
PR target/10127
PR ada/20548
PR middle-end/42004
* dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
(dwarf2out_stack_adjust): ...this. Do not adjust the arg size for
ACCUMULATE_OUTGOING_ARGS targets. Rename former version to...
(dwarf2out_notice_stack_adjust): ...this. Adjust for above renaming.
(dwarf2out_frame_debug_expr): Revert previous change and adjust for
above renaming.
(dwarf2out_frame_debug): Add ??? comment. Adjust for above renaming.
2009-11-25 Uros Bizjak <>
* config/i386/ (emms_operation): New predicate.
(vzeroupper_operation): Ditto.
(vzeroall_operation): Improve pattern recognition.
* config/i386/ (avx_vzeroupper_rex64): Remove insn pattern.
(avx_vzeroupper): Change insn pattern to expander.
(*avx_vzeroupper): New insn pattern. Use vzeroupper_operation
(*avx_vzeroall): Remove operands 1 and 2.
* config/i386/ (mmx_emms): Change insn pattern to expander.
(mmx_femms): Ditto.
(*mmx_emms): New insn pattern. Use emms_operation predicate.
(*mmx_femms): Ditto.
* config/i386/i386.c (enum ix86_builtins)
(struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
Remove initailization.
<CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
2009-11-25 Paul Brook <>
* config/arm/ (consttable_4): Handle (high ...).
2009-11-25 Robert Nelson <>
Richard Earnshaw <>
* arm.h (enum vfp_reg_type): Add VFP_NONE.
* arm.c (all_fpus): Use it for floating point units that aren't based
on the VFP architecture.
(aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
enum machine_mode.
2009-11-25 H.J. Lu <>
* alias.c: Remove trailing white spaces.
* alloc-pool.c: Likewise.
* alloc-pool.h: Likewise.
* attribs.c: Likewise.
* auto-inc-dec.c: Likewise.
* basic-block.h: Likewise.
* bb-reorder.c: Likewise.
* bt-load.c: Likewise.
* builtins.c: Likewise.
* builtins.def: Likewise.
* c-common.c: Likewise.
* c-common.h: Likewise.
* c-cppbuiltin.c: Likewise.
* c-decl.c: Likewise.
* c-format.c: Likewise.
* c-lex.c: Likewise.
* c-omp.c: Likewise.
* c-opts.c: Likewise.
* c-parser.c: Likewise.
* c-pretty-print.c: Likewise.
* c-tree.h: Likewise.
* c-typeck.c: Likewise.
* caller-save.c: Likewise.
* calls.c: Likewise.
* cfg.c: Likewise.
* cfganal.c: Likewise.
* cfgexpand.c: Likewise.
* cfghooks.c: Likewise.
* cfghooks.h: Likewise.
* cfglayout.c: Likewise.
* cfgloop.c: Likewise.
* cfgloop.h: Likewise.
* cfgloopmanip.c: Likewise.
* cfgrtl.c: Likewise.
* cgraph.c: Likewise.
* cgraph.h: Likewise.
* cgraphbuild.c: Likewise.
* cgraphunit.c: Likewise.
* cif-code.def: Likewise.
* collect2.c: Likewise.
* combine.c: Likewise.
* convert.c: Likewise.
* coverage.c: Likewise.
* crtstuff.c: Likewise.
* cse.c: Likewise.
* cselib.c: Likewise.
* dbgcnt.c: Likewise.
* dbgcnt.def: Likewise.
* dbgcnt.h: Likewise.
* dbxout.c: Likewise.
* dce.c: Likewise.
* ddg.c: Likewise.
* ddg.h: Likewise.
* defaults.h: Likewise.
* df-byte-scan.c: Likewise.
* df-core.c: Likewise.
* df-problems.c: Likewise.
* df-scan.c: Likewise.
* df.h: Likewise.
* dfp.c: Likewise.
* diagnostic.c: Likewise.
* diagnostic.h: Likewise.
* dominance.c: Likewise.
* domwalk.c: Likewise.
* double-int.c: Likewise.
* double-int.h: Likewise.
* dse.c: Likewise.
* dwarf2asm.c: Likewise.
* dwarf2asm.h: Likewise.
* dwarf2out.c: Likewise.
* ebitmap.c: Likewise.
* ebitmap.h: Likewise.
* emit-rtl.c: Likewise.
* et-forest.c: Likewise.
* except.c: Likewise.
* except.h: Likewise.
* expmed.c: Likewise.
* expr.c: Likewise.
* expr.h: Likewise.
* final.c: Likewise.
* flags.h: Likewise.
* fold-const.c: Likewise.
* function.c: Likewise.
* function.h: Likewise.
* fwprop.c: Likewise.
* gcc.c: Likewise.
* gcov-dump.c: Likewise.
* gcov-io.c: Likewise.
* gcov-io.h: Likewise.
* gcov.c: Likewise.
* gcse.c: Likewise.
* genattr.c: Likewise.
* genattrtab.c: Likewise.
* genautomata.c: Likewise.
* genchecksum.c: Likewise.
* genconfig.c: Likewise.
* genflags.c: Likewise.
* gengtype-parse.c: Likewise.
* gengtype.c: Likewise.
* gengtype.h: Likewise.
* genmddeps.c: Likewise.
* genmodes.c: Likewise.
* genopinit.c: Likewise.
* genpreds.c: Likewise.
* gensupport.c: Likewise.
* ggc-common.c: Likewise.
* ggc-page.c: Likewise.
* ggc-zone.c: Likewise.
* ggc.h: Likewise.
* gimple-iterator.c: Likewise.
* gimple-low.c: Likewise.
* gimple-pretty-print.c: Likewise.
* gimple.c: Likewise.
* gimple.def: Likewise.
* gimple.h: Likewise.
* gimplify.c: Likewise.
* graphds.c: Likewise.
* graphite-clast-to-gimple.c: Likewise.
* gthr-nks.h: Likewise.
* gthr-posix.c: Likewise.
* gthr-posix.h: Likewise.
* gthr-posix95.h: Likewise.
* gthr-single.h: Likewise.
* gthr-tpf.h: Likewise.
* gthr-vxworks.h: Likewise.
* gthr.h: Likewise.
* haifa-sched.c: Likewise.
* hard-reg-set.h: Likewise.
* hooks.c: Likewise.
* hooks.h: Likewise.
* hosthooks.h: Likewise.
* hwint.h: Likewise.
* ifcvt.c: Likewise.
* incpath.c: Likewise.
* init-regs.c: Likewise.
* integrate.c: Likewise.
* ipa-cp.c: Likewise.
* ipa-inline.c: Likewise.
* ipa-prop.c: Likewise.
* ipa-pure-const.c: Likewise.
* ipa-reference.c: Likewise.
* ipa-struct-reorg.c: Likewise.
* ipa-struct-reorg.h: Likewise.
* ipa-type-escape.c: Likewise.
* ipa-type-escape.h: Likewise.
* ipa-utils.c: Likewise.
* ipa-utils.h: Likewise.
* ipa.c: Likewise.
* ira-build.c: Likewise.
* ira-color.c: Likewise.
* ira-conflicts.c: Likewise.
* ira-costs.c: Likewise.
* ira-emit.c: Likewise.
* ira-int.h: Likewise.
* ira-lives.c: Likewise.
* ira.c: Likewise.
* jump.c: Likewise.
* lambda-code.c: Likewise.
* lambda-mat.c: Likewise.
* lambda-trans.c: Likewise.
* lambda.h: Likewise.
* langhooks.c: Likewise.
* lcm.c: Likewise.
* libgcov.c: Likewise.
* lists.c: Likewise.
* loop-doloop.c: Likewise.
* loop-init.c: Likewise.
* loop-invariant.c: Likewise.
* loop-iv.c: Likewise.
* loop-unroll.c: Likewise.
* lower-subreg.c: Likewise.
* lto-cgraph.c: Likewise.
* lto-compress.c: Likewise.
* lto-opts.c: Likewise.
* lto-section-in.c: Likewise.
* lto-section-out.c: Likewise.
* lto-streamer-in.c: Likewise.
* lto-streamer-out.c: Likewise.
* lto-streamer.c: Likewise.
* lto-streamer.h: Likewise.
* lto-symtab.c: Likewise.
* lto-wpa-fixup.c: Likewise.
* matrix-reorg.c: Likewise.
* mcf.c: Likewise.
* mode-switching.c: Likewise.
* modulo-sched.c: Likewise.
* omega.c: Likewise.
* omega.h: Likewise.
* omp-low.c: Likewise.
* optabs.c: Likewise.
* optabs.h: Likewise.
* opts-common.c: Likewise.
* opts.c: Likewise.
* params.def: Likewise.
* params.h: Likewise.
* passes.c: Likewise.
* plugin.c: Likewise.
* postreload-gcse.c: Likewise.
* postreload.c: Likewise.
* predict.c: Likewise.
* predict.def: Likewise.
* pretty-print.c: Likewise.
* pretty-print.h: Likewise.
* print-rtl.c: Likewise.
* print-tree.c: Likewise.
* profile.c: Likewise.
* read-rtl.c: Likewise.
* real.c: Likewise.
* recog.c: Likewise.
* reg-stack.c: Likewise.
* regcprop.c: Likewise.
* reginfo.c: Likewise.
* regmove.c: Likewise.
* regrename.c: Likewise.
* regs.h: Likewise.
* regstat.c: Likewise.
* reload.c: Likewise.
* reload1.c: Likewise.
* resource.c: Likewise.
* rtl.c: Likewise.
* rtl.def: Likewise.
* rtl.h: Likewise.
* rtlanal.c: Likewise.
* sbitmap.c: Likewise.
* sched-deps.c: Likewise.
* sched-ebb.c: Likewise.
* sched-int.h: Likewise.
* sched-rgn.c: Likewise.
* sched-vis.c: Likewise.
* sdbout.c: Likewise.
* sel-sched-dump.c: Likewise.
* sel-sched-dump.h: Likewise.
* sel-sched-ir.c: Likewise.
* sel-sched-ir.h: Likewise.
* sel-sched.c: Likewise.
* sel-sched.h: Likewise.
* sese.c: Likewise.
* sese.h: Likewise.
* simplify-rtx.c: Likewise.
* stack-ptr-mod.c: Likewise.
* stmt.c: Likewise.
* stor-layout.c: Likewise.
* store-motion.c: Likewise.
* stringpool.c: Likewise.
* stub-objc.c: Likewise.
* sync-builtins.def: Likewise.
* target-def.h: Likewise.
* target.h: Likewise.
* targhooks.c: Likewise.
* targhooks.h: Likewise.
* timevar.c: Likewise.
* tlink.c: Likewise.
* toplev.c: Likewise.
* toplev.h: Likewise.
* tracer.c: Likewise.
* tree-affine.c: Likewise.
* tree-affine.h: Likewise.
* tree-browser.def: Likewise.
* tree-call-cdce.c: Likewise.
* tree-cfg.c: Likewise.
* tree-cfgcleanup.c: Likewise.
* tree-chrec.c: Likewise.
* tree-chrec.h: Likewise.
* tree-complex.c: Likewise.
* tree-data-ref.c: Likewise.
* tree-data-ref.h: Likewise.
* tree-dfa.c: Likewise.
* tree-dump.c: Likewise.
* tree-dump.h: Likewise.
* tree-eh.c: Likewise.
* tree-flow-inline.h: Likewise.
* tree-flow.h: Likewise.
* tree-if-conv.c: Likewise.
* tree-inline.c: Likewise.
* tree-into-ssa.c: Likewise.
* tree-loop-distribution.c: Likewise.
* tree-loop-linear.c: Likewise.
* tree-mudflap.c: Likewise.
* tree-nested.c: Likewise.
* tree-nomudflap.c: Likewise.
* tree-nrv.c: Likewise.
* tree-object-size.c: Likewise.
* tree-optimize.c: Likewise.
* tree-outof-ssa.c: Likewise.
* tree-parloops.c: Likewise.
* tree-pass.h: Likewise.
* tree-phinodes.c: Likewise.
* tree-predcom.c: Likewise.
* tree-pretty-print.c: Likewise.
* tree-profile.c: Likewise.
* tree-scalar-evolution.c: Likewise.
* tree-ssa-address.c: Likewise.
* tree-ssa-alias.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-coalesce.c: Likewise.
* tree-ssa-copy.c: Likewise.
* tree-ssa-copyrename.c: Likewise.
* tree-ssa-dce.c: Likewise.
* tree-ssa-dom.c: Likewise.
* tree-ssa-dse.c: Likewise.
* tree-ssa-forwprop.c: Likewise.
* tree-ssa-ifcombine.c: Likewise.
* tree-ssa-live.c: Likewise.
* tree-ssa-live.h: Likewise.
* tree-ssa-loop-ch.c: Likewise.
* tree-ssa-loop-im.c: Likewise.
* tree-ssa-loop-ivcanon.c: Likewise.
* tree-ssa-loop-ivopts.c: Likewise.
* tree-ssa-loop-manip.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-ssa-loop-prefetch.c: Likewise.
* tree-ssa-loop-unswitch.c: Likewise.
* tree-ssa-loop.c: Likewise.
* tree-ssa-math-opts.c: Likewise.
* tree-ssa-operands.c: Likewise.
* tree-ssa-operands.h: Likewise.
* tree-ssa-phiopt.c: Likewise.
* tree-ssa-phiprop.c: Likewise.
* tree-ssa-pre.c: Likewise.
* tree-ssa-propagate.c: Likewise.
* tree-ssa-reassoc.c: Likewise.
* tree-ssa-sccvn.c: Likewise.
* tree-ssa-sink.c: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-ssa-ter.c: Likewise.
* tree-ssa-threadedge.c: Likewise.
* tree-ssa-threadupdate.c: Likewise.
* tree-ssa-uncprop.c: Likewise.
* tree-ssa.c: Likewise.
* tree-ssanames.c: Likewise.
* tree-switch-conversion.c: Likewise.
* tree-tailcall.c: Likewise.
* tree-vect-data-refs.c: Likewise.
* tree-vect-generic.c: Likewise.
* tree-vect-loop-manip.c: Likewise.
* tree-vect-loop.c: Likewise.
* tree-vect-patterns.c: Likewise.
* tree-vect-slp.c: Likewise.
* tree-vect-stmts.c: Likewise.
* tree-vectorizer.c: Likewise.
* tree-vectorizer.h: Likewise.
* tree-vrp.c: Likewise.
* tree.c: Likewise.
* tree.def: Likewise.
* tree.h: Likewise.
* treestruct.def: Likewise.
* unwind-compat.c: Likewise.
* unwind-dw2-fde-glibc.c: Likewise.
* unwind-dw2.c: Likewise.
* value-prof.c: Likewise.
* value-prof.h: Likewise.
* var-tracking.c: Likewise.
* varasm.c: Likewise.
* varpool.c: Likewise.
* vec.c: Likewise.
* vec.h: Likewise.
* vmsdbgout.c: Likewise.
* web.c: Likewise.
* xcoffout.c: Likewise.
2009-11-24 John David Anglin <>
* pa.c (output_call): Only use sr4 for long interspace calls if
call binds local and generating non PIC code.
(attr_length_call): Adjust length calculation for above.
2009-11-25 Uros Bizjak <>
* config/i386/ (plusminus_carry_mnemonic): New code attribute.
(add<mode>3_carry): Change operand order of plus RTX.
(*add<mode>3_carry): Ditto.
(*addsi3_carry_zext): Ditto.
(*add<dwi>3_doubleword): Update for changed operand order.
(*negti2_1 splitter): Ditto.
(*negdi2_1 splitter): Ditto.
(<plusminus_insn><mode>3_carry): Macroize expander from
{add,sub}<mode>3_carry patterns using plusminus code iterator.
(*<plusminus_insn><mode>3_carry): Macroize insn from
*{add,sub}<mode>3_carry patetrns using plusminus code iterator.
(neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
patterns using SDWIM mode iterator.
(*neg<dwi>2_doubleword): New insn_and_split pattern. Macroize
pattern from *neg{di,ti}2_1 patterns and corresponding splitters
using DWIH mode iterator.
(*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
using SWI mode iterator.
(*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
(one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
patterns using SWIM mode iterator.
(*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
patterns using SWI248 mode iterator.
(*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
patterns using SWI mode iterator.
(*one_cmpl<mode>2_2 splitter): Macroize splitter from
one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
2009-11-24 Michael Matz <>
* expr.c (set_storage_via_libcall): Fix build_call_expr call.
2009-11-24 David Binderman <>
* expr.c (store_field): Remove set but not used local variable
(expand_expr_real_2): Remove treeop2.
* gcse.c (update_ld_motion_stores): Remove new_rtx.
* haifa-sched.c (max_issue): Remove points.
(sched_create_recovery_edges): Remove e.
* ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
2009-11-24 Nick Clifton <>
* config/v850/v850.c (function_arg): Fix handling of zero-length
function arguments.
2009-11-24 Michael Matz <>
* tree.h (union tree_ann_d): Don't declare.
(tree_base): Remove ann field.
(struct var_ann_d): Declare forward.
(tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
(DECL_VAR_ANN_PTR): New macro.
* tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
accept only VAR, PARM or RESULT decls.
(create_tree_common_ann): Remove.
(remove_referenced_var): Use DECL_VAR_ANN_PTR.
* tree-eh.c (lookup_expr_eh_lp): Remove.
* tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
(ann_type, tree_common_ann, get_tree_common_ann): Remove.
* tree-flow.h (enum tree_ann_type): Remove.
(struct tree_ann_common_d): Remove.
(struct var_ann_d): Remove common field.
(union tree_ann_d): Remove.
(tree_ann_t, tree_ann_common_t): Remove typedefs.
(tree_common_ann, get_tree_common_ann, ann_type,
create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
* tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
* tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
* builtins.c (expand_builtin_memcpy): Use
currently_expanding_gimple_stmt instead of tree annotation.
(expand_builtin_memset_args): Ditto.
* cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
(expand_call_stmt): Don't set tree annotation.
(expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
* expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
* gimple.h (currently_expanding_gimple_stmt): Declare.
2009-11-24 Paolo Carlini <>
* dwarf2out.c (add_location_or_const_value_attribute): Remove
* cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
2009-11-24 Rafael Avila de Espindola <>
* lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
being called recursively.
2009-11-24 Basile Starynkevitch <>
* (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
$(MD5_H) params.def params.h prefix.h tree-inline.h.
2009-11-24 Paul Brook <>
* gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
2009-11-24 Julian Brown <>
Paul Brook <>
* config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
(arm_dwarf_register_span): New function.
(arm_dbx_register_number): Add VFPv3 dwarf numbering.
2009-11-24 David Binderman <>
* cfgrtl.c (commit_one_edge_insertion): Remove set but not used
local variable bb_note.
* dominance.c (get_dominated_by): Likewise local var n.
(output_file_names): Likewise local var idx.
(add_location_or_const_value_attribute): Likewise local var status.
* dwarf2out.c (gen_variable_die): Likewise local var field.
* emit-rtl.c (no_line_numbers): Remove.
(init_emit_once): Remove line_numbers parameter.
* rtl.h (init_emit_once): Adjust prototype.
* toplev.c (backend_init): Adjust init_emit_once call.
2009-11-24 Richard Guenther <>
PR tree-optimization/42142
* tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
Handle iv-dependent (non-)kills properly.
(mark_aliased_reaching_defs_necessary): Pass the basic-block
of the reference statement to mark_aliased_reaching_defs_necessary_1.
2009-11-24 Martin Jambor <>
PR tree-optimization/42154
* tree-sra.c (struct access): Added comments.
(sra_modify_expr): Build references to the old aggregate with
build_ref_for_offset instead of reusing access->expr.
(load_assign_lhs_subreplacements): Likewise.
2009-11-24 Uros Bizjak <>
* config/i386/ (add<mode>3_carry): Change insn pattern
to expander.
(sub<mode>3_carry): Ditto.
(x86_mov<mode>cc_0_m1): Ditto.
(*add<mode>3_carry): New insn pattern. Use VOIDmode match_operator
for ix86_carry_flag_operator operator predicate.
(*sub<mode>3_carry): Ditto.
(*x86_mov<mode>cc_0_m1): Ditto.
(*addsi3_carry_zext): Use VOIDmode match_operator for
ix86_carry_flag_operator operator predicate.
(*subsi3_carry_zext): Ditto.
(*x86_mov<mode>cc_0_m1_s): Ditto.
(*x86_mov<mode>cc_0_m1_neg): Ditto.
* config/i386/ (ix86_carry_flag_operator): Do not
check operator sub-expressions for FLAGS_REG and const0_rtx.
* config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
(ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
(ix86_expand_int_addcc): Update calls to
gen_{add,sub}{qi,hi,si,di}3_carry. Do not set mode of compare_op.
(ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
Do not set mode of compare operation.
2009-11-23 Jan Hubicka <>
PR middle-end/42151
* ipa-inline.c (inline_transform): Avoid ICE when transform is called
2009-11-23 Jan Hubicka <>
* ipa-cp.c (ipcp_compute_node_scale): Work around completely
wrong profile updates.
* predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
having largest frequency.
* ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
used uninitalized warning.
* tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
2009-11-23 Uros Bizjak <>
* config/alpha/ (*cmp_sadd_sidi): Use gen_lowpart instead
of gen_rtx_REG to generate operand 5.
(*cmp_ssub_sidi): Ditto.
2009-11-23 Richard Henderson <>
* config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
2009-11-23 Paul Brook <>
* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
case for noreturn functions.
(arm_compute_save_reg_mask): Remove special noreturn handling.
2009-11-23 Richard Guenther <>
* tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
size for DECL bases.
2009-11-22 Richard Henderson <>
* i386.c (avx_vpermilp_parallel): New function.
* i386-protos.h: Declare it.
* (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
* (AVXMODEFDP, AVXMODEFSP): New iterators.
(ssescalarnum, ssedoublesizemode): Add AVX modes.
(vpermilbits): Remove.
(avx_vpermil<mode>): Change insns to expanders.
(*avx_vpermil<mode>): New. Use vec_select.
2009-11-22 Richard Earnshaw <>
* opts.c (decode_options): Don't enable flag_schedule_insns
when optimizing for size.
* doc/invoke.texi: Document change.
2009-11-22 Uros Bizjak <>
PR target/42113
* config/alpha/ (*cmp_sadd_si): Change mode
of scratch register to SImode.
(*cmp_sadd_sidi): Ditto.
(*cmp_ssub_si): Ditto.
(*cmp_ssub_sidi): Ditto.
2009-11-21 Ian Lance Taylor <>
* (HOST_LIBS): Move higher in file.
is not empty, set to $(CC) and $(CFLAGS).
2009-11-22 Martin Jambor <>
* tree-cfg.c (verify_types_in_gimple_reference): Error out on
V_C_E of an SSA_NAME or an invariant if lvalue is required.
(verify_gimple_call): Verify LHS also with with
2009-11-21 Martin Jambor <>
PR middle-end/42025
* tree-sra.c (access_precludes_ipa_sra_p): New function.
(splice_param_accesses): Check all accesses by calling
(sra_ipa_modify_expr): Rename argument erite to dont_convert and do
not convert types if it is true.
(sra_ipa_modify_assign): Convert types in case of mismatch.
2009-11-21 Kaushik Phatak <>
* config/sh/ (cmpeqsi_t-1): Use logical_operand predicate
for operand 1.
2009-11-21 Adam Nemet <>
* config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
(mips_mulsidi3_gen_fn): Declare new function.
* config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
* config/mips/ (<u>mulsidi3): Change condition to use
mips_mulsidi3_gen_fn. Use mips_mulsidi3_gen_fn to generate the insn.
(<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
(mulsidi3_64bit_dmul): New define_insn.
2009-11-21 Ben Elliston <>
* gengtype-lex.l: Enable noinput flex option.
(YY_NO_INPUT): Remove define.
2009-11-21 Alexandre Oliva <>
* tree-ssa.c (find_released_ssa_name): Handle NULL wi.
(insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
(insert_debug_temps_for_defs): Handle PHI nodes.
* tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
SSA names.
2009-11-21 Alexandre Oliva <>
* tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
after remove_phi_node.
2009-11-21 Alexandre Oliva <>
PR tree-optimization/42078
* gimple.h (gimple_replace_lhs): New declaration.
* gimple.c (gimple_replace_lhs): New function.
* tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
modifying the call.
2009-11-20 Sebastian Pop <>
* config/i386/ (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
(xop_mulv2div2di3_low): Same.
(*xop_pmacsdqh_mem): Same.
2009-11-20 Richard Henderson <>
* config/i386/i386-builtin-types.awk: New file.
* config/i386/i386-builtin-types.def: New file.
* config/i386/t-i386: Use them to build
* config/i386/i386.c: Include it.
(ix86_builtin_type_tab, ix86_get_builtin_type): New.
(ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
(struct builtin_isa): Remove GTY marker. Replace tree type with
ix86_builtin_func_type; add set_and_not_built_p.
(def_builtin): Change type parameter to tcode; use
ix86_get_builtin_func_type; update all callers. Accept zero mask
to mean the builtin is unconditionally available.
(ix86_add_new_builtins): Use set_and_not_built_p instead of type
being set to NULL.
(enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
Update some users to rationalized enumeration codes from new include.
(enum multi_arg_type): Remove. Replace all enumeration values
with defines to new ix86_builtin_func_type.
(ix86_init_mmx_sse_builtins): Don't build any types here. Defer
all type resolution to def_builtin.
(ix86_init_builtin_types): Split out from ...
(ix86_init_builtins): ... here. Use ix86_get_builtin_func_type.
2009-11-20 Michael Meissner <>
PR target/41787
* config/rs6000/rs6000.c (struct machine_function): Revert
2009-10-23 change to set VRSAVE to non-0 if we use VSX.
(rs6000_expand_to_rtl_hook): Ditto.
(rs6000_check_vector_mode): Ditto.
(compute_vrsave_mask): Ditto.
2009-11-20 Paul Brook <>
* doc/invoke.texi: Document ARM -mcpu=cortex-a5.
* config/arm/arm-cores.def: Add cortex-a5.
* config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
* config/arm/ Regenerate.
2009-11-20 Olga Golovanevsky <>
PR middle-end/39960
* ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
(ref_pos): New field in structure.
(insert_new_var_in_stmt): New function.
2009-11-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
* config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
INT_LEAST64_TYPE): Define.
INT_FAST64_TYPE): Define.
UINT_FAST64_TYPE): Define.
2009-11-20 Julian Brown <>
* config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
specially for Thumb-1.
2009-11-19 Jason Merrill <>
* dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
2009-11-19 Basile Starynkevitch <>
Rafael Avila de Espindola <>
* doc/plugins.texi (Plugin initialization): Added advices for
retrieving the version of GCC at plugin compilation and loading times.
2009-11-19 Basile Starynkevitch <>
* plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
(dump_active_plugins): output to file everything. Use
internationalized dump & FMT_FOR_PLUGIN_EVENT.
2009-11-19 Richard Guenther <>
* gimple.c (canonicalize_cond_expr_cond): Strip conversions
around truth-valued expressions.
* tree.c (free_lang_data): Untangle check for LTO frontend.
2009-11-19 Jakub Jelinek <>
* tree.c (need_assembler_name_p): Use cgraph_get_node instead
of cgraph_node_for_decl.
* cgraph.h (cgraph_node_for_decl): Remove prototype.
* cgraph.c (cgraph_node_for_decl): Remove.
(cgraph_get_node): Just return NULL if !cgraph_hash.
2009-11-19 Paul Brook <>
* config.gcc: Add new ARM --with-fpu options.
* doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
* config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
2009-11-18 Richard Guenther <>
* gimple.h (union gimple_statement_d): Add gsmembase member.
(gimple_vuse_op): Use gsmembase for access.
(gimple_vdef_op): Likewise.
(gimple_vuse): Likewise.
(gimple_vdef): Likewise.
(gimple_vuse_ptr): Likewise.
(gimple_vdef_ptr): Likewise.
(gimple_set_vuse): Likewise.
(gimple_set_vdef): Likewise.
* gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
2009-11-18 Daniel Jacobowitz <>
* doc/arm-neon-intrinsics.texi: Regenerated.
2009-11-18 Daniel Jacobowitz <>
* config/arm/ (analyze_shape_elt): Handle alternatives.
2009-11-18 Paul Brook <>
Daniel Jacobowitz <>
* config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
(arm_arch7em): New variable.
(all_architectures): Add armv7e-m.
(arm_override_options): Set arm_arch7em.
Include arm_arch7em.
(arm_arch7em): Declare.
2009-11-18 Richard Guenther <>
* lto-streamer-in.c (input_gimple_stmt): Assert that we find
a valid field decl if checking is enabled.
2009-11-18 Martin Jambor <>
* ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
(lto_ipa_fixup_call_notes): Declare.
* ipa-prop.c (ipa_note_param_call): Store gimple uid.
(update_call_notes_after_inlining): Copy call stmt uid to the new
(ipa_write_param_call_note): New function.
(ipa_read_param_call_note): New function
(ipa_write_node_info): Write also param call notes. Removed a bogus
comment, reformatted to fit 80 columns.
(ipa_read_node_info): Read also param call notes. Removed a bogus
comment. Remove ipa_edge_args_vector growth.
(lto_ipa_fixup_call_notes): New function.
* ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
* ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
inlining regardless of flag_wpa.
(cgraph_decide_inlining_of_small_functions): Likewise.
(cgraph_decide_inlining): Likewise.
(inline_read_summary): Likewise.
2009-11-18 Jan Hubicka <>
* predict.c (compute_function_frequency): Export.
* predict.h (compute_function_frequency): Declare.
* tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
2009-11-18 Martin Jambor <>
* passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
on all nodes we write summaries for.
2009-11-18 Shujing Zhao <>
PR middle-end/22201
(PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
description string.
2009-11-18 Jakub Jelinek <>
* dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
(rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
PR c++/3187
* cgraph.h (struct cgraph_node): Add same_body and same_body_alias
(cgraph_same_body_alias, cgraph_remove_same_body_alias): New
* cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
cgraph_materialize_all_clones): Handle same_body aliases.
* cgraph.c (cgraph_allocate_node): New function.
(cgraph_create_node): Use it.
(cgraph_node_for_decl, cgraph_node, cgraph_get_node,
cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
(cgraph_same_body_alias, cgraph_remove_same_body_alias): New
* lto-cgraph.c (lto_output_node): Stream out same_body aliases.
(input_node): Stream in same_body aliases.
* lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
for same_body aliases.
(lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
2009-11-18 Iain Sandoe <>
PR other/39888
* config/darwin.h: Use the extension stub libraries to access
current libgcc_s features.
2009-11-18 Alexandre Oliva <>
PR debug/41926
* tree-vect-loop.c (vect_loop_kill_debug_uses): New.
(vect_transform_loop): Call it.
2009-11-18 Alexandre Oliva <>
* tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
released SSA names.
2009-11-18 Alexandre Oliva <>
PR debug/41888
PR debug/41886
* graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
are ok.
* graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
(try_generate_gimple_bb): Skip debug stmts when finding data refs.
* sese.c (sese_build_liveouts_bb): Skip debug stmts.
(sese_bad_liveouts_use): New.
(sese_reset_debug_liveouts_bb): New.
(sese_build_liveouts): Use it.
(rename_variables_in_stmt): Reset debug stmts rather than creating
new vars for them.
(expand_scalar_variable_stmt): Likewise.
2009-11-18 Alexandre Oliva <>
* df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
(df_ref_remove): Likewise.
2009-11-17 Jan Hubicka <>
* ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
2009-11-17 Eric Botcazou <>
* toplev.c (process_options): Remove dead code.
* doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
2009-11-17 Rafael Avila de Espindola <>
* lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
2009-11-17 Ulrich Weigand <>
PR tree-optimization/41857
* tree-ssa-address.c (move_hint_to_base): Use void pointer to
TYPE's address space instead of pointer to TYPE.
2009-11-17 Ulrich Weigand <>
* reload.c (find_reloads_address): Fix typo.
2009-11-17 Ulrich Weigand <>
* config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
registers in leaf functions if possible.
2009-11-17 Maxim Kuvyrkov <>
* config/m68k/m68k-devices.def: Add MCF5441x family.
2009-11-17 Jan Hubicka <>
* cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
removed node.
* cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
2009-11-17 Uros Bizjak <>
* config/i386/ (x86_64_szext_general_operand): Do not
nest ior expressions.
(x86_64_szext_nonmemory_operand): Ditto.
(call_insn_operand): Ditto.
2009-11-16 Alexandre Oliva <>
* stmt.c (expand_asm_stmt): Get locus from stmt.
2009-11-16 Alexandre Oliva <>
* tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
Create the decl label for the new dest block on demand. Require
a fallthrough edge if no asm labels were redirected.
2009-11-16 Uros Bizjak <>
* config/i386/ (cbranchsi4): Use nonimmediate_operand for
operand 1 predicate.
(cstoresi4): Ditto for operand 2.
(cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
patterns using SDWIM mode iterator.
(cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
using SWIM mode iterator.
(cmpdi_1): Rename from cmpdi_1_rex64.
(cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
SWI48 mode iterator.
(*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
using SWI mode iterator.
(*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
(*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
(*cmpqi_ext_3_insn): Make private.
(*cmpqi_ext_3_insn_rex64): Make private.
(cmpstrnsi): Update for renamed cmpdi_1_rex64.
* config/i386/ (cmpsi_operand): Remove.
2009-11-16 Paul Brook <>
* doc/invoke.texi: Document ARM VFPv4 based FPUs.
* config/arm/arm.c (all_fpus): Add VFPv4 entries.
2009-11-14 Jan Hubicka <>
* cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
* cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
zero out all callees.
* cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
frequency and count match.
* ipa-inline.c (update_noncloned_frequencies): New function.
(cgraph_clone_inlined_nodes): Use it.
* tree-inline.c (copy_bb): Fix frequency scaling; output
diagnostic on frequency mismatches to dump file.
(initialize_cfun): Do not scale frequency; fix count scaling;
initialize entry and exit block frequencies; copy profile info.
(copy_cfg_body): Use frequency_scale as argument; fix count scaling.
(copy_body): Use frequency_scale as argument.
(expand_call_inline): Compute frequency scale and output diagnostic
to dump file.
(delete_unreachable_blocks_update_callgrah): Remove checking that
has to be done after edge redirection.
(tree_function_versioning): Update initialize_cfun and copy_body call.
2009-11-14 Jan Hubicka <>
* cgraph.c (cgraph_release_function_body): Update use of
(cgraph_remove_node): Remove ipa_transforms_to_apply.
* cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
* cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
copied body.
(cgraph_materialize_clone): Remove original if dead.
* lto-streamer-in.c (lto_read_body): Remove FIXME and
ipa_transforms_to_apply hack.
* function.h (struct function): Add ipa_transforms_to_apply.
* ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
* tree-inline.c (copy_bb): Update sanity check.
(initialize_cfun): Do not copy ipa_transforms_to_apply.
(expand_call_inline): remove dead clone originals.
(tree_function_versioning): Merge transformation queues.
* passes.c (add_ipa_transform_pass): Remove.
(execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
(execute_all_ipa_transforms): Update.
(execute_one_pass): Update.
2009-11-14 Andy Hutchinson <>
PR target/21078, 21080
* config/avr/avr.c (avr_return_addr_rtx): New function for
(expand_prologue): Calculate stack usage.
(avr_asm_function_end_prologue): Output stack size and offset label.
* config/avr/avr.h (RETURN_ADDR_RTX): Replace.
(machine_function): Add stack_usage.
* config/avr/avr-protos.h (avr_return_addr_rtx): New function.
2009-11-14 Anatoly Sokolov <>
* config/iq2000/iq2000.c (iq2000_function_value): Make static, add
new 'outgoing' argument.
(iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
* config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
* config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
2009-11-14 Richard Earnshaw <>
PR target/42031
* (adddi_sesidi_di): Place tied contraint first.
(adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
(subdi_zesidi_di, subdi_sesidi_di): Likewise.
(mulsi3_compare0, mulsi_compare0_scratch): Likewise.
(mulsi3addsi, mulsi3addsi_compare0): Likewise.
(mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
(umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
(anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
(andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
(arm_lshrdi3_1bit, one_cmpldi2): Likewise.
2009-11-14 Uros Bizjak <>
* config/i386/ (call_register_no_elim_operand):
New predicate. Reject stack register as valid call operand
for 32bit targets.
(call_insn_operand): Use call_register_no_elim_operand.
2009-11-13 Richard Henderson <>
* function.c (stack_protect_prologue): Don't bypass expand_expr
for stack_protect_guard and guard_decl.
(stack_protect_epilogue): Likewise.
2009-11-13 Jan Hubicka <>
* ipa.c (function_and_variable_visibility): Clear COMDAT on functions
when to PUBLIC is set.
2009-11-13 Jakub Jelinek <>
PR middle-end/42029
* gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
tmp_load if needed.
2009-11-13 Uros Bizjak <>
PR target/41900
* config/i386/ (*call_pop_1, *call_1, *call_value_pop_1,
*call_value_1): Use "lsm" as operand 1 constraint.
* config/i386/ (call_insn_operand): Depend on
index_register_operand to avoid %esp register.
2009-11-13 Uros Bizjak <>
2009-11-03 Uros Bizjak <>
PR target/41900
* config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
(TARGET_CALL_ESP): New define.
* config/i386/i386.c (initial_ix86_tune_features): Initialize
* config/i386/ (*call_pop_1_esp, *call_1_esp,
*call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
*call_1, *call_value_pop_1 and *call_value_1. Depend on
(*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
New patterns, use "lsm" as operand 1 constraint.
* config/i386/ (call_insn_operand): Depend on
index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2009-11-13 Jason Merrill <>
PR debug/26965
* dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
Don't emit a second declaration at any scope.
2009-11-13 Andrey Belevantsev <>
PR rtl-optimization/41697
* sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
a conditional jump has a single successor.
2009-11-13 Andrey Belevantsev <>
* sched-deps.c (init_deps): New parameter lazy_reg_last. Don't
allocate reg_last when in case lazy_reg_last is true.
(init_deps_reg_last): New.
(free_deps): When max_reg is 0, this context is already freed.
* sched-int.h (init_deps_reg_last): Export.
(init_deps): Update prototype.
* sched-ebb.c (schedule_ebb): Update the call to init_deps.
* sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
* ddg.c (build_intra_loop_deps): Likewise.
* sel-sched-ir.c (copy_deps_context, create_deps_context,
reset_deps_context, deps_init_id): Likewise.
(init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
(free_data_for_scheduled_insn): New, break down from ...
(free_first_time_insn_data): ... here.
(has_dependence_p): Allocate reg_last now, when it is needed.
(extend_insn_data): When maximal LUID is big enough, allocate
per-insn data in smaller chunks.
* sel-sched-ir.h (free_data_for_scheduled_insn): Export.
* sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
in scheduled insn.
2009-11-13 Uros Bizjak <>
* config/i386/ (call_value): Fix comment.
(sibcall_value): Ditto.
2009-11-13 Eric Botcazou <>
* config/i386/linux-unwind.h (x86_frob_update_context): New function.
2009-11-12 Eric Botcazou <>
Laurent GUERBY <>
* config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
Do not schedule an %sp restore. Compensate for RETURN_ADDR_OFFSET.
(sparc_fallback_frame_state): Tidy. Compensate for RETURN_ADDR_OFFSET.
2009-11-12 Jan Hubicka <>
* ipa.c (function_and_variable_visibility): Fix my accidentail commit
and clear DECL_COMMON on localized declarations.
2009-11-12 Bernd Schmidt <>
PR rtl-opt/38582
* regrename.c (struct du_head): New structure; some elements moved
(struct du_chain): ... this one.
(open_chains, closed_chains): Now of type struct du_head *.
(do_replace): Accept du_head argument, not du_chain. All callers
changed. Modified code to match new data structures.
(build_def_use): Return a list of du_head structures. Modified code
to match new data structures.
(dump_def_use_chain): Accept du_head argument, not du_chain. All
callers changed. Modified code to match new data structures.
(merge_overlapping_regs): Accept du_head argument, not du_chain. All
callers changed. Modified code to match new data structures.
(scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
Allocate a du_head structure as well as a du_chain when creating a
new chain. Modified other code to match new data structures.
2009-11-12 Jan Hubicka <>
* cgraph.h (varpool_node_name): Declare.
* cgraphunit.c (process_function_and_variable_attributes): Set
force_output flag on used variables.
* ipa.c (function_and_variable_visibility): Dump externally visible
and needed variables.
* varpool.c (varpool_node_name): Export.
(decide_is_variable_needed): Check COMDAT for externally visible vars;
ignore needed flag.
2009-11-12 Uros Bizjak <>
PR middle-end/41930
* simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
processing if XEXP (x, i) is NULL.
2009-11-12 Jan Hubicka <>
* ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2009-11-11 Andy Hutchinson <>
PR middle-end/41440
* cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
single successor block, ending with jump created by RTL expander.
2009-11-11 Jan Hubicka <>
PR middle-end/41729
* ipa.c (function_and_variable_visibility): Do not privatize COMDAT
and WEAK variables at -fwhole-program.
PR middle-end/41735
* ipa.c (whole_program_function_and_variable_visility): COMDAT
functions/variables are not needed even if they are externally visible.
2009-11-11 Jan Hubicka <>
(patch by Richard Guenther)
* lto-streamer-out.c (output_function): Output head of argument list
* lto-streamer-in.c (input_function): Re-map arguments into merged
2009-11-11 Jan Hubicka <>
* lto-cgraph.c: Include gcov-io.h
(output_profile_summary): New function.
(output_cgraph): Use it.
(input_profile_summary): New function.
(input_cgraph): Use it.
* coverage.c (build_ctr_info_value): Use varpool; initalize
(create_coverage): Likewise.
* tree-profile.c (tree_init_ic_make_global_vars): Likewise.
(tree_init_edge_profiler): Likewise.
* (lto-cgraph.o): Add dependency on gcov-io.h.
2009-11-11 Kai Tietz <>
* config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
* c-pragma.c (def_pragma_macro_value): Likewise.
(def_pragma_macro): Likewise.
(pushed_macro_table): Likewise.
(HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
* doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2009-11-11 Basile Starynkevitch <>
* doc/plugins.texi (Registering custom attributes): section
renamed as (Registering custom attributes or pragmas).
Mentions custom attributes & pragmas, and c_register_pragma, with
a small example.
* doc/cpp.texi (Pragmas): Mentions that plugins can provide their
* doc/extend.texi (Function Attributes): Mentions that plugin can
provide their attributes.
2009-11-11 Jon Beniston <>
* config.gcc: Add lm32 elf and uclinux targets.
* config/lm32: New directory.
* config/lm32/lm32.c: New file.
* config/lm32/lm32.h: New file.
* config/lm32/ New file.
* config/lm32/lm32.opt: New file.
* config/lm32/lm32-protos.h: New file.
* config/lm32/ New file.
* config/lm32/ New file.
* config/lm32/sfp-machine.h: New file.
* config/lm32/t-fprules-softfp: New file.
* config/lm32/uclinux-elf.h: New file.
* doc/invoke.texi: Document lm32 options.
* doc/contrib.texi: Document lm32 porter.
* doc/install.texi: Document lm32 targets.
2009-11-11 Martin Jambor <>
PR lto/41932
* ipa-prop.c (ipa_update_after_lto_read): Call
ipa_check_create_node_params and ipa_check_create_edge_args. Also
call ipa_initialize_node_params instead of ipa_populate_param_decls.
2009-11-11 Daniel Jacobowitz <>
* config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
(neon_expand_vector_init): Use them. Also handle non-constant
vectors with identical elements and vectors with only one
non-constant element.
(arm_print_operand): Handle 'y' modifier.
* config/arm/arm-protos.h (neon_make_constant): Declare.
* config/arm/ (neon_vdup_n<mode>): Split into two
patterns. Use VX instead of VDQW for the first one. Allow
a VFP alternative and V32 modes for the second one.
* config/arm/ (shape_elt): Add Alternatives.
(ops): Use Alternatives for vdup lane instructions.
* config/arm/ (analyze_shape): Handle Alternatives.
* config/arm/ (mov<mode>): Use neon_make_constant.
2009-11-11 Daniel Jacobowitz <>
* config/arm/ (*neon_mov<mode>): Reject two non-register
(movti, mov<mode>): Call force_reg on one operand if required.
* config/arm/ (mov<mode>): Likewise.
2009-11-11 Daniel Jacobowitz <>
* config/arm/arm.c (arm_override_options): Enable scheduling for
2009-11-10 Eric Botcazou <>
PR target/10127
PR ada/20548
* expr.h (anti_adjust_stack_and_probe): Declare.
* explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
parameter and rewrite head comment.
(allocate_dynamic_stack_space): Adjust call to above function.
* function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
* tree.h (dwarf2out_args_size): Delete.
* dwarf2out.c (dwarf2out_args_size): Make static and move around.
(dwarf2out_args_size_adjust): Delete prototype and move around.
(dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2009-11-10 Eric Botcazou <>
* config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
DECL_SIZE of DECL_RESULT before evaluating it.
2009-11-10 Kaveh R. Ghazi <>
PR tree-optimization/41987
* fold-const.c (const_binop): Avoid using fold_buildN().
2009-11-10 Martin Jambor <>
* tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
(execute_all_ipa_stmt_fixups): Declare.
* ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
* ipa-inline.c (pass_ipa_inline): Likewise.
* ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
* ipa-reference.c (pass_ipa_reference): Likewise.
* ipa.c (pass_ipa_whole_program_visibility): Likewise.
* lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
(pass_ipa_lto_finish_out): Likewise.
* lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
* passes.c (execute_ipa_stmt_fixups): New function.
(execute_all_ipa_stmt_fixups): New function.
* lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2009-11-10 Eric Botcazou <>
PR ada/20548
* explow.c (probe_stack_range): Fix typo.
* config/sparc/ (probe_stack): New expander.
2009-11-09 Dave Korn <>
* config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2009-11-09 Jason Merrill <>
* (pgq): New function for printing gimple sequence.
2009-11-09 Paul Brook <>
Daniel Jacobowitz <>
Sandra Loosemore <>
* doc/extend.texi (Half-Precision): Update wording to reflect
that there are now multiple -mfpu options that enable fp16
hardware support.
* doc/invoke.texi: Update list of ARM -mfpu= options.
* config.gcc: Update ARM --with-fpu option list.
* config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
vfpv3xd and vfpv3xd-fp16.
(use_vfp_abi): New function.
(aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
when undesirable.
(aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
(arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
arm_9e_rtx_costs): Only expect double-precision operations if the FPU
provides them.
(coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
(arm_print_operand): Handle 'p' modifier.
(arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
* config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
(TARGET_FP16): Define.
* config/arm/ Disable double-precision patterns if the FPU
does not provide them.
(arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
double-precision values on a single-precision FPU.
(movdf_vfp, thumb2_movdf_vfp): Likewise. Use "Dy" for
double-precision constants.
(movhf_vfp_neon): New pattern (was movhf_vfp).
(movhf_vfp): Remove NEON instructions.
* config/arm/ Add new "Dy" constraint for
double-precision constants. Update description of "Dv".
* config/arm/ Disable double-precision patterns if the FPU
does not provide them
2009-11-09 Jakub Jelinek <>
* config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
(print_operand) <case 'Y'>: Likewise. Fix a pasto in operand lossage
2009-11-08 H.J. Lu <>
* collect2.c (main): Search PLUGIN_LD for plugin linker.
* (--with-plugin-ld): New. Default to ld.
* configure: Regenerated.
* Likewise.
(collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2009-11-08 Jonathan Gray <>
* config/openbsd-stdint.h: Change to reflect what
c_common_nodes_and_builtins expects.
2009-11-08 Paolo Carlini <>
* builtins.c (apply_args_reg_offset): Remove commented out delaration.
2009-11-08 Jakub Jelinek <>
PR target/41985
* config/i386/i386.c (get_some_local_dynamic_name): Don't assert
function contains at least one local dynamic name.
(print_operand) <case '&'>: Instead output operand lossage diagnostics
here if that happens.
2009-11-08 Zbigniew Chamski <>
Joern Rennecke <>
* cfgrtl.c (pass_free_cfg): Add pass name.
* cgraphbuild.c (pass_build_cgraph_edges): Likewise.
(pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
* dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
* df-core.c (pass_df_initialize_no_opt): Likewise.
* except.c (pass_rtl_eh): Likewise.
* function.c (pass_init_function, pass_leaf_regs): Likewise.
* gcse.c (pass_rtl_pre): Change pass name.
* passes.c (pass_postreload): Add pass name.
(make_pass_instance): Don't use duplicate-tracking logic for
names starting with '*'.
(next_pass_1): Assert that pass has a name.
(register_one_dump_file): If there is an space in the name,
skip past it.
* predict.c (pass_strip_predict_hints): Add pass name.
* reg-stack.c (pass_stack_regs): Likewise.
* stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
* tree-cfg.c (pass_warn_function_return,
pass_warn_function_noreturn): Add pass name.
* tree-dfa.c (pass_referenced_vars): Likewise.
* tree-optimize.c (pass_cleanup_cfg_post_optimizing):
Fix whitespace before comment.
(pass_fixup_cfg): Add pass name, fix whitespace before comment.
(pass_init_datastructures): Add pass name.
* tree-ssa-loop.c (pass_record_bounds): Likewise.
* tree-ssa.c (pass_early_warn_uninitialized,
pass_late_warn_uninitialized): Likewise.
* tree.c (pass_ipa_free_lang_data): Likewise.
* doc/passes.texi (pass manager): Document how to disambiguate
pass names.
2009-11-08 Paolo Bonzini <>
* df-problems.c: Fix documentation for forward simulation of LR.
(df_simulate_one_insn_forwards): Use df_simulate_find_defs.
(df_simulate_finalize_forwards): Remove.
* df.h (df_simulate_finalize_forwards): Remove.
2009-11-08 Richard Guenther <>
* tree-ssa-structalias.c (build_succ_graph): Properly make
variables escape if they are stored to anything.
2009-11-08 Richard Guenther <>
PR rtl-optimization/41928
* loop-invariant.c (free_loop_data): If we didn't allocate
loop data do not try to free it.
2009-11-07 Jason Merrill <>
* tree.c (reconstruct_complex_type): Preserve attributes.
2009-11-07 Richard Guenther <>
* tree-ssa-structalias.c (build_succ_graph): Feed stores
to anything only to variables that can take pointers.
(get_constraint_for_ssa_var): Properly exclude full
variables from expanding.
(first_vi_for_offset): Avoid overflow in arithmetic.
(first_or_preceding_vi_for_offset): Likewise.
(count_num_arguments): Fix implementation.
(gate_ipa_pta): Do not run when not optimizing.
2009-11-07 David Binderman <>
* builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
set but not used variables.
(apply_args_reg_offset): Comment out as unused.
* calls.c (flags_from_decl_or_type): Likewise.
* genautomata.c (check_regexp_units_distribution): Likewise.
2009-11-07 Uros Bizjak <>
* config/i386/ (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
*xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
operand alternatives.
2009-11-06 Michael Matz <>
PR middle-end/41963
* tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
of a potential reciprocal to really be reciprocals.
2009-11-06 Jakub Jelinek <>
* config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
lwpintrin.h after immintrin.h.
* config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
PR middle-end/41935
* c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
or non-constant index, allow index one past the last element and
allow exceeding array bound in arrays that might be used as flexible
array members.
2009-11-05 Richard Henderson <>
* config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
2009-11-05 Paul Brook <>
* config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
(arm_fpu_desc): New.
(all_fpus): Add FPU details.
(fp_model_for_fpu): Remove.
(arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
(arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
(arm_file_start): Use arm_fpu_desc.
(TARGET_FPA_EMU2): Define.
(arm_fp_model, fputype, arm_fpu_tune): Remove.
(vfp_reg_type, arm_fpu_desc): New.
* config/arm/ (attr fpu): Simplify.
* config/arm/ (movxf_fpa): Use TARGET_FPA_EMU2.
* config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
* config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
* config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
* config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
2009-11-05 Michael Matz <>
* config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
* doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
for 1/sqrtf.
2009-11-04 Jason Merrill <>
PR c++/36912
* varasm.c (initializer_constant_valid_p): A PLUS_EXPR
or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
(output_constant): Avoid crash after error.
2009-11-05 Martin Jambor <>
* tree-sra.c (struct access): Changed comment of next_sibling field.
(analyze_modified_params): Loop over accesses of a group rather than
over all with the ame base, pass a common bitmap to
(unmodified_by_ref_scalar_representative): Build link lists of
accesses of a group.
(splice_param_accesses): Likewise.
2009-11-04 Kenneth Zadeck <>
* df-scan.c (df-uses-record): Add case zero_extract of mem.
2009-11-04 Eric Botcazou <>
PR target/10127
PR ada/20548
* config/i386/ (probe_stack): New expander.
(logical operation peepholes): Do not split stack checking probes.
2009-11-04 Harsha Jagasia <>
Dwarakanath Rajagopal <>
* doc/invoke.texi (-mlwp): Add documentation.
* doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
* config.gcc (i[34567]86-*-*): Include lwpintrin.h.
(x86_64-*-*): Ditto.
* config/i386/lwpintrin.h: New file, provide x86 compiler
intrinisics for LWP.
* config/i386/cpuid.h (bit_LWP): Define LWP bit.
* config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
* config/i386/i386-c.c (ix86_target_macros_internal): Check
* config/i386/i386.h (TARGET_LWP): New macro for LWP.
* config/i386/i386.opt (-mlwp): New switch for LWP support.
* config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
(ix86_handle_option): Handle -mlwp.
(isa_opts): Handle -mlwp.
(enum pta_flags): Add PTA_LWP.
(override_options): Add LWP support.
(IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
(enum ix86_special_builtin_type): Add LWP intrinsic support.
(builtin_description): Ditto.
(ix86_init_mmx_sse_builtins): Ditto.
(ix86_expand_special_args_builtin): Ditto.
* config/i386/ (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
LWP support.
(lwp_llwpcbhi1): New lwp pattern.
(lwp_llwpcbsi1): Ditto.
(lwp_llwpcbdi1): Ditto.
(lwp_slwpcbhi1): Ditto.
(lwp_slwpcbsi1): Ditto.
(lwp_slwpcbdi1): Ditto.
(lwp_lwpvalhi3): Ditto.
(lwp_lwpvalsi3): Ditto.
(lwp_lwpvaldi3): Ditto.
(lwp_lwpinshi3): Ditto.
(lwp_lwpinssi3): Ditto.
(lwp_lwpinsdi3): Ditto.
2009-11-04 Andrew Pinski <>
Trevor Smigiel <>
PR rtl-opt/41833
* simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
a vec_duplicate.
2009-11-04 Richard Guenther <>
Rafael Avila de Espindola <>
* gcc.c (process_command): Handle arguments name@offset.
2009-11-04 Harsha Jagasia <>
Dwarakanath Rajagopal <>
* config.gcc (i[34567]86-*-*): Include xopintrin.h.
(x86_64-*-*): Ditto.
* config/i386/xopintrin.h: New file, provide common x86 compiler
intrinisics for XOP.
* config/i386/cpuid.h (bit_XOP): Define XOP bit.
* config/i386/x86intrin.h: Add XOP check and xopintrin.h.
* config/i386/i386-c.c(ix86_target_macros_internal): Check
* config/i386/i386.h(TARGET_XOP): New macro for XOP.
* config/i386/i386.opt (-mxop): New switch for XOP support.
* config/i386/ (UNSPEC_XOP_UNSIGNED_CMP)
(UNSPEC_FRCZ): Add new UNSPEC for XOP support.
(PPERM_*): New constants for vpperm instruction.
(xop_pcmov_<mode>): Add XOP conditional mov instructions.
* config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
(OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
(ix86_handle_option): Handle -mxop.
(isa_opts): Handle -mxop.
(enum pta_flags): Add PTA_XOP.
(override_options): Add XOP support.
(print_operand): Add code for XOP compare instructions.
(ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
(ix86_expand_int_vcond): Extend for XOP compare instruction.
(IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
(IX86_BUILTIN_VPCMOV256): Ditto.
(IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
(IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
(enum multi_arg_type): New enum for describing the various XOP
intrinsic argument types.
(bdesc_multi_arg): New table for XOP intrinsics.
(ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
(ix86_expand_multi_arg_builtin): New function for creating XOP
* config/i386/ (sserotatemax): New mode attribute for XOP.
(xop_pmacsww): Ditto.
(xop_pmacssww): Ditto.
(xop_pmacsdd): Ditto.
(xop_pmacssdd): Ditto.
(xop_pmacssdql): Ditto.
(xop_pmacssdqh): Ditto.
(xop_pmacsdql): Ditto.
(xop_pmacsdql_mem): Ditto.
(xop_mulv2div2di3_low): Ditto.
(xop_pmacsdqh): Ditto.
(xop_pmacsdqh_mem): Ditto.
(xop_mulv2div2di3_high): Ditto.
(xop_pmacsswd): Ditto.
(xop_pmacswd): Ditto.
(xop_pmadcsswd): Ditto.
(xop_pmadcswd): Ditto.
(xop_pcmov_<mode>): Ditto.
(xop_pcmov_<mode>256): Ditto.
(xop_phaddbw): Ditto.
(xop_phaddbd): Ditto.
(xop_phaddbq): Ditto.
(xop_phaddwd): Ditto.
(xop_phaddwq): Ditto.
(xop_phadddq): Ditto.
(xop_phaddubw): Ditto.
(xop_phaddubd): Ditto.
(xop_phaddubq): Ditto.
(xop_phadduwd): Ditto.
(xop_phadduwq): Ditto.
(xop_phaddudq): Ditto.
(xop_phsubbw): Ditto.
(xop_phsubwd): Ditto.
(xop_phsubdq): Ditto.
(xop_pperm): Ditto.
(rotl<mode>3): Ditto.
(rotr<mode>3): Ditto.
(xop_rotl<mode>3): Ditto.
(xop_rotr<mode>3): Ditto.
(vrotr<mode>3): Ditto.
(vrotl<mode>3): Ditto.
(xop_vrotl<mode>3): Ditto.
(vlshr<mode>3): Ditto.
(vashr<mode>3): Ditto.
(xop_ashl<mode>3): Ditto.
(xop_lshl<mode>3): Ditto.
(ashlv16qi3): Ditto.
(lshlv16qi3): Ditto.
(ashrv16qi3): Ditto.
(ashrv2di3): Ditto.
(xop_frcz<mode>2): Ditto.
(xop_vmfrcz<mode>2): Ditto.
(xop_frcz<mode>2256): Ditto.
(xop_maskcmp<mode>3): Ditto.
(xop_maskcmp_uns<mode>3): Ditto.
(xop_maskcmp_uns2<mode>3): Ditto.
(xop_pcom_tf<mode>3): Ditto.
* doc/invoke.texi (-mxop): Add documentation.
* doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
2009-11-03 Mark Mitchell <>
PR driver/11810
* gcc.c (SWITCHES_NEED_SPACES): Define to "o".
* config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
* config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
2009-11-04 Richard Earnshaw <>
PR target/40835
* (peephole2 patterns for move and compare): New.
2009-11-04 Nick Clifton <>
* defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
Make sure that it does not allow CONST_DOUBLEs.
* doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
* config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
* config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
* config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
* config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
* config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
* config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
* config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
* config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
* config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
* config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
* config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
* config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
* config/score/score.h (CONSTANT_ADDRESS_P): Delete.
* config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
2009-11-04 Richard Guenther <>
PR tree-optimization/41919
* tree-vrp.c (test_for_singularity): Properly compare values.
2009-11-04 Revital Eres <>
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
Consider peeling for alignment only for stores and remove
redundant assignment.
2009-11-04 Maxim Kuvyrkov <>
PR target/41302
* config/m68k/m68k.c (m68k_reg_present_p): New static function.
(m68k_ok_for_sibcall_p): Handle different result return locations.
2009-11-04 Richard Guenther <>
* c-opts.c (c_common_post_options): Move LTO option processing
code ...
* opts.c (decode_options): ... here.
2009-11-04 Jakub Jelinek <>
* c-common.c (fold_offsetof_1): Use %wd instead of
2009-11-04 Maciej W. Rozycki <>
* config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
__pic__ or __PIC__.
2009-11-04 Maciej W. Rozycki <>
* config.gcc (vax-*-linux*): Keep the original contents of
tmake_file while adding vax/t-linux.
2009-11-03 Eric Botcazou <>
PR target/10127
PR ada/20548
* system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
* doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
* doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
* explow.c (anti_adjust_stack_and_probe): New function.
(allocate_dynamic_stack_space): Do not directly allocate space if
STACK_CHECK_MOVING_SP, instead invoke above function.
(emit_stack_probe): Handle probe_stack insn.
(PROBE_INTERVAL): New macro.
(STACK_GROW_OFF): Likewise.
(probe_stack_range): Use Pmode and memory_address consistently. Fix
loop condition in the small constant case. Rewrite in the general
case to be immune to wraparounds. Make sure the address of probes
is valid. Try to use [base + disp] addressing mode if possible.
* ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
checking is enabled and STACK_CHECK_MOVING_SP.
* rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
return 1 for volatile references to the stack pointer.
* tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
__builtin_alloca if stack checking is enabled.
* unwind-dw2.c (uw_identify_context): Take into account whether the
context is that of a signal frame or not.
* config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
* config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
2009-11-03 Jakub Jelinek <>
PR rtl-optimization/41917
* rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
operand isn't known to be 0, return 1.
2009-11-03 Richard Sandiford <>
* config/mips/ Fix typos.
2009-11-03 Richard Sandiford <>
* doc/invoke.texi: Fix typo.
2009-11-03 Paul Brook <>
* config/arm/ (vectype): Add T_floatSF.
(string_of_vectype): Ditto.
* config/arm/ (signed_ctype): Add T_floatSF.
(deftypes): Use float for float32_t.
* config/arm/arm_neon.h: Regenerate.
2009-11-03 Nick Clifton <>
Kevin Buettner <>
* config/rx/ (rx_store_multiple_vector): Reverse
order of expected registers.
(rx_load_multiple_vector): Likewise.
(rx_rtsd_vector): Likewise.
* config/rx/rx.c (rx_cpu_type): New variable.
(rx_print_operand): Fix bug printing 64-bit constant values.
(rx_emit_stack_pushm): Reverse order of pushed registers.
(gen_rx_store_vector): Likewise.
(is_fast_interrupt_func): Only accept "fast_interrupt" as the
attribute name.
(is_exception_func): Rename to is_interrupt_func and only accept
"interrupt" as the attribute name.
(rx_get_stack_layout): Use new function name.
(rx_func_attr_inlinable): Likewise.
(rx_attribute_table): Remove "exception".
(rx_expand_prologue): If necessary push the accumulator register
in the prologue of interrupt functions.
(rx_expand_epilogue): If necessary pop the accumulator.
(rx_builtins): Add RX_BUILTIN_MVTIPL.
(rx_expand_builtin_stz): Remove.
(rx_expand_builtin_mvtipl): New function.
(rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
(rx_expand_builtin): Likewise.
(rx_enable_fpu): New variable.
(rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
* config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
on rx_cpu_type. Define __RX_FPU_INSNS__ if FPU insns are allowed.
(enum rx_cpu_types): Define.
(ASM_SPEC): Pass -m32bit-doubles on to assembler.
(OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
* config/rx/ Test ALLOW_RX_FPU_INSNS instead of
(revl): Rename to bswapsi2.
(bswaphi2): New pattern.
(mvtachi): Mark as volatile because it uses a register unknown to GCC.
(mvtaclo): Likewise.
(racw): Likewise.
(mvtc): Remove clobber of cc0.
(mvtcp): Delete.
(opecp): Delete.
* config/rx/rx.opt (mieee): Remove.
(fpu): Add.
(nofpu): Add.
(mcpu=): Add.
(patch=): Add.
(msave-acc-in-interrupts): Add.
* config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
(MULTILIB_DIRS): Likewise.
(MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
* doc/extend.texi: Remove description of "exception" function
* doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
-msave-acc-in-interrupts options.
2009-11-03 Richard Guenther <>
* c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
2009-11-03 Dodji Seketeli <>
PR c++/38699
* c-common.c (fold_offsetof_1): Issue errors when the member
designator of the offsetof expression is not legitimate.
2009-11-03 Uros Bizjak <>
* config/i386/ (*call_value_1_rex64_ms_sysv): Use register
names instead of numerical constants.
(sse_prologue_save): Ditto.
(*sse_prologue_save_insn): Ditto.
2009-11-03 Uros Bizjak <>
PR target/41900
* config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
(TARGET_CALL_ESP): New define.
* config/i386/i386.c (initial_ix86_tune_features): Initialize
* config/i386/ (*call_pop_1_esp, *call_1_esp,
*call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
*call_1, *call_value_pop_1 and *call_value_1. Depend on
(*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
New patterns, use "lsm" as operand 1 constraint.
* config/i386/ (call_insn_operand): Depend on
index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2009-11-02 Ulrich Weigand <>
PR tree-optimization/41857
* tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
* tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
to create_mem_ref.
* tree-ssa-address.c (move_hint_to_base): New function.
(most_expensive_mult_to_index): Add TYPE argument. Use mode and
address space associated with TYPE.
(addr_to_parts): Add TYPE and BASE_HINT arguments. Pass TYPE to
most_expensive_mult_to_index. Call move_hint_to_base.
(create_mem_ref): Add BASE_HINT argument. Pass BASE_HINT and
TYPE to addr_to_parts.
2009-11-02 Martin Jambor <>
PR tree-optimization/41750
* tree-sra.c (analyze_modified_params): Loop over all
representatives of components of a parameter.
2009-11-02 Jakub Jelinek <>
PR tree-optimization/41841
* ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
local variables of not yet materialized clones.
PR debug/41893
* cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
for a VOIDmode variable.
PR c++/41774
* c-pragma.c (visstack): Change into vector of ints rather than
enum symbol_visibility.
(push_visibility): Add kind argument, push default_visibility together
with kind.
(pop_visibility): Add kind argument, return true if successful, fail
if visibility stack is empty or if stack top is of different kind.
(handle_pragma_visibility): Don't check length of visstack, instead
call pop_visibility and issue diagnostics if it failed. Pass 0
as last argument to push_visibility and pop_visibility.
* c-pragma.h (push_visibility): Add kind argument.
(pop_visibility): Likewise. Return bool instead of void.
2009-11-01 Eric Botcazou <>
* tree.def (TARGET_MEM_REF): Update comment.
* alias.c (get_alias_set): Retrieve the original memory reference for
a TARGET_MEM_REF before proceeding.
2009-10-31 Anatoly Sokolov <>
* config/frv/frv.c (frv_function_value, frv_libcall_value,
frv_function_value_regno_p): New functions.
* config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
(FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
* config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
2009-10-31 Anatoly Sokolov <>
* config/mn10300/mn10300.c (mn10300_function_value): Make static, add
new 'outgoing' argument.
(mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
* config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
(FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
* config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
(mh10300_function_value_regno_p): Declare.
2009-10-31 Ramana Radhakrishnan <>
* config/arm/ New - integer pipeline description.
2009-10-31 Eric Botcazou <>
* tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
aborting if the sizes of the two references don't match.
2009-10-31 Toon Moene <>
* ipa-inline.c (cgraph_decide_inlining):
Include reason for not inlining called-once functions in dump file.
2009-10-30 Daniel Gutson <>
* config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
* config/arm/bpapi.h (BE8_LINK_SPEC): New define.
2009-10-30 Richard Guenther <>
PR lto/41858
* lto-streamer.h (struct lto_file_decl_data): Remove fd member.
2009-10-30 Nathan Sidwell <>
* target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
* config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
2009-10-30 Martin Jambor <>