blob: 900077783c9086feb232083c66d415b8d5330616 [file] [log] [blame]
2012-12-27 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_deligitimze_address): Do not
delegitimize TLS addresses on AIX.
(rs6000_legitimize_tls_address_aix): Append TLS symbol qualifier.
Set SYMBOL_FLAG_LOCAL on module symbol.
(output_toc): Do not append TLS symbol qualifier here.
* config/rs6000/ (tls_get_addr_internal): Add GPR 4 to
2012-12-27 Andreas Schwab <>
* target.def (supports_function_versions): Fix typo.
2012-12-26 Sriraman Tallam <>
new target hook.
* doc/tm.texi: Regenerate.
* c-family/c-common.c (handle_target_attribute): Retain target attribute
for targets that support versioning.
* target.def (supports_function_versions): New hook.
* cp/class.c (add_method): Remove calls
* config/i386/i386.c (ix86_function_versions): Use target string
to check for function versions instead of target flags.
* (ix86_supports_function_versions): New function.
* (is_function_default_version): Check target string.
2012-12-27 Steven Bosscher <>
* cgraph.c (verify_cgraph_node): Don't allocate/free visited_nodes set.
2012-12-25 John David Anglin <>
PR target/53789
* config/pa/ (movsi): Reject expansion of TLS symbol references
after reload starts.
2012-12-22 Jan Hubicka <>
PR lto/54728
* cgraph.h (symtab_real_symbol_p): Drop code looking for external functions.
* lto-streamer-out.c (output_symbol_p): New function.
(produce_symtab) Use it.
2012-12-21 Martin Jambor <>
PR tree-optimization/55355
* tree-sra.c (type_internals_preclude_sra_p): Also check that
bit_position is small enough to fit a single HOST_WIDE_INT.
2012-12-21 Eric Botcazou <>
* rtlanal.c (volatile_insn_p): Delete commented out code.
(side_effects_p): Likewise.
(may_trap_p_1) <UNSPEC_VOLATILE>: Return 1 again.
* target.def (unspec_may_trap_p): Adjust comment.
* targhooks.c (default_unspec_may_trap_p): Don't handle UNSPEC_VOLATILE.
* config/ia64/ia64.c (ia64_unspec_may_trap_p): Adjust to above change.
2012-12-21 Vladimir Makarov <>
PR middle-end/55775
* lra-assigns.c (improve_inheritance): Do nothing after
* lra-constraints.c (MAX_CONSTRAINT_ITERATION_NUMBER): Rename to
Move to lra-int.h.
2012-12-21 Steve Ellcey <>
PR bootstrap/54128
* ira.c (build_insn_chain): Check only NONDEBUG instructions for
register usage.
2012-12-21 David Edelsohn <>
* varasm.c (bss_initializer_p): Remove static.
* output.h (bss_initializer_p): Declare.
* xcoffout.c (xcoff_tbss_section_name): Define.
* xcoffout.h (xcoff_tbss_section_name): Declare.
* config/rs6000/xcoff.h (TARGET_ENCODE_SECTION_INFO): Define.
(ASM_OUTPUT_TLS_COMMON): Merge strings.
* config/rs6000/rs6000.c (tls_private_data_section): New.
(output_toc): Only output CSECT decoration for TLS.
Output appropriate CSECT for data or bss.
(rs6000_xcoff_asm_init_sections) Define tls_private_data_section.
(rs6000_xcoff_select_section): Handle TLS bss and private data.
(rs6000_xcoff_file_start): Generate xcoff_tbss_section_name.
(rs6000_xcoff_encode_section_info): Strip SYMBOL_FLAG_HAS_BLOCK_INFO
from native TLS symbols.
2012-12-21 Richard Biener <>
PR rtl-optimization/52996
* cprop.c (bypass_block): When loops are to be preserved
do not bypass loop headers. Revert earlier kludge to remove
loops when doing that.
2012-12-21 Richard Biener <>
PR bootstrap/54659
* system.h: Include gmp.h.
* tree-ssa-loop-niter.c: Do not include gmp.h here.
* double-int.h: Likewise.
* realmpfr.h: Likewise.
2012-12-21 Greta Yorsh <>
* config/arm/ New file.
* config/arm/t-arm (MD_INCLUDES): Add
* config/arm/ Include
(generic_sched): Don't use generic scheduler for Cortex-A7.
(generic_vfp): Likewise.
* config/arm/arm.c: (TARGET_SCHED_REORDER): Use arm_sched_reorder.
(arm_sched_reorder,cortexa7_sched_reorder): New function.
(cortexa7_older_only,cortexa7_younger): Likewise.
(arm_issue_rate): Add Cortex-A7.
2012-12-20 Ian Bolton <>
* gcc/config/aarch64/
(*addsi3_aarch64_uxtw): New pattern.
(*addsi3_compare0_uxtw): New pattern.
(*add_<shift>_si_uxtw): New pattern.
(*add_<optab><SHORT:mode>_si_uxtw): New pattern.
(*add_<optab><SHORT:mode>_shft_si_uxtw): New pattern.
(*add_<optab><SHORT:mode>_mult_si_uxtw): New pattern.
(*add_<optab>si_multp2_uxtw): New pattern.
(*addsi3_carryin_uxtw): New pattern.
(*addsi3_carryin_alt1_uxtw): New pattern.
(*addsi3_carryin_alt2_uxtw): New pattern.
(*addsi3_carryin_alt3_uxtw): New pattern.
(*add_uxtsi_multp2_uxtw): New pattern.
(*subsi3_uxtw): New pattern.
(*subsi3_compare0_uxtw): New pattern.
(*sub_<shift>_si_uxtw): New pattern.
(*sub_mul_imm_si_uxtw): New pattern.
(*sub_<optab><SHORT:mode>_si_uxtw): New pattern.
(*sub_<optab><SHORT:mode>_shft_si_uxtw): New pattern.
(*sub_<optab>si_multp2_uxtw): New pattern.
(*sub_uxtsi_multp2_uxtw): New pattern.
(*negsi2_uxtw): New pattern.
(*negsi2_compare0_uxtw): New pattern.
(*neg_<shift>_si2_uxtw): New pattern.
(*neg_mul_imm_si2_uxtw): New pattern.
(*mulsi3_uxtw): New pattern.
(*maddsi_uxtw): New pattern.
(*msubsi_uxtw): New pattern.
(*mulsi_neg_uxtw): New pattern.
(*<su_optab>divsi3_uxtw): New pattern.
2012-12-20 Jakub Jelinek <>
PR middle-end/55750
* gimplify.c (gimplify_self_mod_expr): Don't force lvalue to
pass is_gimple_min_lval.
2012-12-20 Richard Henderson <>
Andreas Krebbel <>
* config/s390/ (NxxDq, NxxSq): New.
* config/s390/ (contiguous_bitmask_operand): New.
* config/s390/s390.c (print_operand) ['e', 'f', 's', 't']: New
operand letters.
* config/s390/ (bfstart, bfend): New mode attrs.
(*insv<GPR>_zEC12_noshift): Use them.
(*insv<GPR>_z10_noshift): Likewise.
(*insv<GPR>_or_z10_noshift): Likewise.
* config/s390/ (*insv_l_di_reg_extimm): Un-macroize from :P.
* config/s390/ (*anddi3_cc): Add risbg alternative.
(*anddi3_cconly, *anddi3): Likewise.
(*andsi3, *andsi3_cconly, *andsi3_zarch): Likewise.
* config/s390/ (bitsize): New mode attr.
(*extzv<GPR>, *extzv<GPR>, *insv<GPR>_zEC12, *insv<GPR>_z10): Use it.
(extend<HQI><DSI>2, zero_extend<HQI>si2): Likewise.
(zero_extend<HQI>di2, fixuns_trunc<BFP><GPR>2): Likewise.
* config/s390/ (nonzero_shift_count_operand): New.
* config/s390/s390-protos.h (s390_extzv_shift_ok): Declare.
* config/s390/s390.c (s390_extzv_shift_ok): New function.
* config/s390/ (extzv): New expander.
(*extzv<GPR>_zEC12, *extzv<GPR>_z10): New insns.
(*pre_z10_extzv<GPR>): Rename from *extzv<GPR>; simplify with
(*extzv_<GPR>_srl, *extzv_<GPR>_sll): New insns.
* config/s390/ (IXOR): New code iterator.
(*r<IXOR>sbg_<GPR>_noshift): Rename from *insv<GPR>_or_z10_noshift;
macro-ize to handle XOR too.
(*r<IXOR>sbg_di_rotl, *r<IXOR>sbg_<GPR>_srl, *r<IXOR>sbg_<GPR>_sll):
New patterns.
* config/s390/ (*insv_rnsbg_noshift, *insv_rnsbg_srl): New.
2012-12-20 Thomas Schwinge <>
PR bootstrap/55202
* <PLUGIN_LD_SUFFIX>: Use POSIX shell syntax.
* configure: Regenerate.
2012-12-20 Andreas Krebbel <>
PR target/55754
* config/arm/arm.c (arm_canonicalize_comparison): Remove
op0_preserve_value check for zero_extend to and transformation.
2012-12-20 Teresa Johnson <>
Jakub Jelinek <>
PR gcov-profile/55734
* gcov-io.c (gcov_read_summary): Use __builtin_popcount instead
of __builtin_popcountll when building libgcov.a, otherwise use
(gcov_histo_index): When not building libgcov.a, use floor_log2
instead of __builtin_clzll.
2012-12-20 Richard Biener <>
PR middle-end/55740
* cfghooks.c (merge_blocks): Properly handle merging of
two loop headers.
2012-12-20 Roland Stigge <>
Matthias Klose <>
* config/rs6000/t-spe (MULTIARCH_DIRNAME): Remove.
* config/rs6000/t-linux (MULTIARCH_DIRNAME): Define name for
2012-12-19 Matthias Klose <>
* config/i386/t-kfreebsd (MULTIARCH_DIRNAME): Add comma to
separate arguments in make function.
2012-12-19 Uros Bizjak <>
Yuri Rumyantsev <>
* config/i386/i386.h (enum ix86_tune_indices): Add
* config/i386/i386.c (initial_ix86_tune_features)
* config/i386/ (splitters to avoid cmove memory operands): New.
(peephole2s to avoid cmove memory operands): New.
2012-12-19 Kyrylo Tkachov <>
* config/arm/ (f_minmaxs, f_minmaxd): New types.
* config/arm/ (smax<mode>3): New pattern.
(smin<mode>3): Likewise.
2012-12-19 Richard Biener <>
* targhooks.h (default_canonicalize_comparison): Fix prototype.
* targhooks.c (default_canonicalize_comparison): Define.
2012-12-19 Richard Biener <>
PR tree-optimization/55736
PR tree-optimization/55703
* gimplify.c (prune_expr_location): New function.
(unshare_expr_without_location): Likewise.
* tree.h (unshare_expr_without_location): Declare.
* ipa-prop.c (prune_expression_for_jf): Remove.
(prune_expression_for_jf_1): Likewise.
(ipa_set_jf_constant): Use unshare_expr_without_location.
(ipa_set_jf_arith_pass_through): Likewise.
(determine_known_aggregate_parts): Likewise.
* tree-switch-conversion.c (build_constructors): Use
unshare_expr_without_location on all constructor elements.
2012-12-19 Andreas Krebbel <>
* target.def: Define canonicalize_comparison hook.
* targhooks.h (default_canonicalize_comparison): New prototype.
* targhooks.c (default_canonicalize_comparison): New function.
* doc/tm.texi: Add documentation for the new target hook.
* doc/ Likewise.
* combine.c (try_combine): Adjust to use the target hook.
* config/alpha/alpha.h (CANONICALIZE_COMPARISON): Remove macro
* config/alpha/alpha.c (alpha_canonicalize_comparison): New function.
* config/arm/arm-protos.h (arm_canonicalize_comparison): Remove
* config/arm/arm.c (arm_canonicalize_comparison): Add new parameter.
* config/arm/arm.h (CANONICALIZE_COMPARISON): Remove macro definition.
* config/s390/s390-protos.h (s390_canonicalize_comparison): Remove
* config/s390/s390.c (s390_canonicalize_comparison): Add new parameter.
* config/s390/s390.h (CANONICALIZE_COMPARISON): Remove macro definition.
* config/sh/sh-protos.h (sh_canonicalize_comparison): Remove prototype.
* config/sh/sh.c (sh_canonicalize_comparison): Add new prototype. New
function overloading the old one.
* config/sh/sh.h (CANONICALIZE_COMPARISON): Remove macro definition.
* config/spu/spu.c (spu_canonicalize_comparison): New function.
* config/spu/spu.h (CANONICALIZE_COMPARISON): Remove macro definition.
2012-12-19 Jakub Jelinek <>
PR debug/55730
* dwarf2out.c (mem_loc_descriptor): Ignore CLOBBER.
* valtrack.c (gen_lowpart_for_debug): New function.
(propagate_for_debug): Temporarily set rtl_hooks.gen_lowpart_no_emit
to gen_lowpart_for_debug.
2012-12-18 Jan Hubicka <>
PR tree-optimization/55683
* ipa-prop.c (try_make_edge_direct_virtual_call): Look into constants
for binfo.
2012-12-19 Terry Guo <>
* config/arm/arm.c (thumb_find_work_register): Check argument
register number based on current PCS.
2012-12-18 Jakub Jelinek <>
PR target/55562
* sbitmap.c (bitmap_and, bitmap_xor, bitmap_ior): Return whether
dst sbitmap changed even if it doesn't have popcount.
2012-12-18 James Greenhalgh <>
* config/aarch64/ (insv_imm<mode>): Add modes
for source operands.
2012-12-18 James Greenhalgh <>
* config/aarch64/aarch64.c (aarch64_simd_attr_length_move):
Remove unused variables.
(aarch64_split_compare_and_swap): Likewise.
2012-12-18 Kyrylo Tkachov <>
* config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A7.
2012-12-18 Aldy Hernandez <>
PR other/54324
* doc/install.texi (Tools/packages necessary for building GCC):
Suggest --disable-stage1-checking for older GCC's.
2012-12-18 Aldy Hernandez <>
PR other/54324
* tree-ssa-coalesce.c (struct ssa_name_var_hash): Remove "union"
from template parameter.
2012-12-18 Richard Biener <>
PR middle-end/54838
* cfgloopmanip.c (fix_loop_structure): Re-discover latch
edges first and mark loops for removal if no latch edges remain.
* loop-init.c (loop_optimizer_finalize): Set
2012-12-18 Richard Biener <>
PR tree-optimization/55555
* tree-ssa-loop-niter.c (idx_infer_loop_bounds): Properly
analyze evolution of the index for the loop it is used in.
* tree-scalar-evolution.c (instantiate_scev_name): Take
inner loop we will be creating a chrec for. Generalize
fix for PR40281 and prune invalid SCEVs.
(instantiate_scev_poly): Likewise - pass down inner loop
we will be creating a chrec for.
(instantiate_scev_binary): Take and pass through inner loop.
(instantiate_array_ref): Likewise.
(instantiate_scev_convert): Likewise.
(instantiate_scev_not): Likewise.
(instantiate_scev_3): Likewise.
(instantiate_scev_2): Likewise.
(instantiate_scev_1): Likewise.
(instantiate_scev_r): Likewise.
(resolve_mixers): Adjust.
(instantiate_scev): Likewise.
2012-12-18 Jakub Jelinek <>
PR debug/55717
* rtlhooks-def.h (RTL_HOOKS_GEN_LOWPART_NO_EMIT): Define to
(gen_lowpart_no_emit_general): Remove prototype.
* rtlhooks.c (gen_lowpart_no_emit_general): Removed.
* simplify-rtx.c (simplify_unary_operation_1,
simplify_binary_operation_1): Continue simplifying if
rtl_hooks.gen_lowpart_no_emit returns NULL_RTX.
* dwarf2out.c (mem_loc_descriptor) <case TRUNCATE>: Handle
truncation like lowpart SUBREG.
2012-12-17 Gerald Pfeifer <>
* doc/contrib.texi (Contributors): Update Kaveh Ghazi's entry;
remove broken link to Rutgers University.
2012-12-17 Jan-Benedict Glaw <>
* varasm.c (pending_assemble_externals_processed): Guard
2012-12-17 Andrew Stubbs <>
Ulrich Weigand <>
* config/arm/ (zero_extend<mode>di2): Add extra alternatives
for NEON registers.
Add alternative for one-instruction extend-in-place.
(extend<mode>di2): Likewise.
Add constraints for Thumb-mode memory loads.
Prevent extend splitters doing NEON alternatives.
* config/arm/ (qhs_extenddi_cstr, qhs_zextenddi_cstr):
Adjust constraints to add new alternatives.
* config/arm/ Add splitters for zero- and sign-extend.
2012-12-17 Greta Yorsh <>
* config/arm/ (type): Add "simple_alu_shift" to attribute "type".
(core_cycles): Update for simple_alu_shift.
(thumb1_zero_extendhisi2,arm_zero_extendhisi2_v6): Use simple_alu_shift
instead of a CPU-speicific condition for "type" attribute.
(thumb1_zero_extendqisi2_v6,arm_zero_extendqisi2_v6): Likewise.
(thumb1_extendhisi2,arm_extendhisi2_v6,arm_extendqisi_v6): Likewise.
(thumb1_extendqisi2): Likewise.
* config/arm/ (thumb2_extendqisi_v6): Likewise.
(thumb2_zero_extendhisi2_v6,thumb2_zero_extendqisi2_v6) Likewise.
* config/arm/ (alu_shift_op): Use simple_alu_shift.
* config/arm/ (alu_shift_op): Likewise.
* config/arm/ (11_alu_shift_op): Likewise.
* config/arm/ (9_alu_op): Likewise.
* config/arm/ (cortex_a15_alu_shift): Likewise.
* config/arm/ (cortex_a5_alu_shift): Likewise.
* config/arm/ (cortex_a8_alu_shift,cortex_a8_mov): Likewise.
* config/arm/ (cortex_a9_dp,cortex_a9_dp_shift): Likewise.
* config/arm/ (cortex_m4_alu): Likewise.
* config/arm/ (cortex_r4_alu_shift): Likewise.
* config/arm/ (526_alu_shift_op): Likewise.
* config/arm/ (fa606te_core): Likewise.
* config/arm/ (626te_alu_shift_op): Likewise.
* config/arm/ (726te_alu_shift_op): Likewise.
* config/arm/ (mp626_alu_shift_op): Likewise.
2012-12-17 Richard Biener <>
PR middle-end/54781
* alias.c (ao_ref_from_mem): More appropriately constrain the
base object we feed to the tree oracle. Remove dead code.
2012-12-17 James Greenhalgh <>
Tejas Belagod <>
* config/aarch64/aarch64.c
(aarch64_autovectorize_vector_sizes): New.
2012-12-16 John David Anglin <>
PR middle-end/55709
Forward port from 4.7 branch:
2012-04-10 John David Anglin <>
PR middle-end/52894
* varasm.c (process_pending_assemble_externals): Set
pending_assemble_externals_processed true.
(assemble_external): Call assemble_external_real if the pending
assemble externals have been processed.
2012-12-16 Eric Botcazou <>
Tomash Brechko <>
PR target/55673
* config/sparc/sparc.c (sparc_emit_membar_for_model): Fix reversed
handling of before and after cases.
* config/sparc/ (atomic_store): Fix pasto.
2012-12-16 Eric Botcazou <>
PR rtl-optimization/55630
* expr.c (expand_assignment): Do not call copy_blkmode_to_reg to move
BLKmode return values to the return register.
2012-12-15 Alexandre Oliva <>
PR libmudflap/53952
* expr.c (mem_ref_refers_to_non_mem_p): Factor out
implementation into...
(addr_expr_of_non_mem_decl_p_1): ... this new function.
(addr_expr_of_non_mem_decl_p): New.
* tree.h (addr_expr_of_non_mem_decl_p): Declare.
* tree-mudflap.c (mf_xform_derefs_1): Don't change MEM_REFs
and TARGET_MEM_REFs that have an ADDR_EXPR of a non-mem DECL
as base operand.
2012-12-14 Yvan Roux <>
* optabs.c (expand_atomic_store): Elide redundant model test.
2012-12-14 Teresa Johnson <>
PR gcov-profile/55674
* lto-cgraph.c (merge_profile_summaries): Set min correctly the
first time we merge into a histogram entry.
2012-12-14 Richard Biener <>
PR tree-optimization/55684
* tree-ssa-loop-ivcanon.c (remove_redundant_iv_tests): Handle
gracefully the case where we cannot compute the number of
iterations at an exit.
2012-12-14 Richard Biener <>
PR tree-optimization/55687
* tree-chrec.h (no_evolution_in_loop_p): Properly use
2012-12-13 Richard Henderson <>
PR middle-end/55492
* optabs.c (expand_atomic_load): Emit acquire barrier after the load.
2012-12-13 Richard Henderson <>
* config/alpha/alpha.c (alpha_pad_function_end): Consider barriers
2012-12-13 Richard Biener <>
PR middle-end/53476
* varpool.c (varpool_remove_unreferenced_decls): Revert to 4.7
2012-12-13 Kyrylo Tkachov <>
* config/arm/ Add copyright notice.
2012-12-13 Jakub Jelinek <>
* tree-ssa-threadedge.c (propagate_threaded_block_debug_into): Avoid
-Wsign-compare warning.
2012-12-13 Richard Biener <>
PR lto/55660
* tree-streamer.c (record_common_node): Check that we are not
recursively pre-loading nodes we want to skip. Handle
char_type_node appearing as part of va_list_type_node.
2012-12-13 Jakub Jelinek <>
PR gcov-profile/55650
* coverage.c (coverage_obj_init): Return false if no functions
are being emitted.
2012-12-13 Steven Bosscher <>
* bitmap.c (struct bitmap_descriptor): Remove forward declaration.
(struct bitmap_head_def): Remove desc pointer. Add descriptor_id
field. Reorder fields for pointer alignment.
* bitmap.c: Include vec.h.
(struct bitmap_descriptor): Rename to bitmap_descriptor_d.
(bitmap_descriptor): New typedef, pointer to bitmap_descriptor_d.
Update all struct bitmap_descriptor references.
(next_bitmap_desc_id): New running index for bitmap desciptors.
(bitmap_descriptors): Vec of all bitmap descriptors by descriptor id.
(hash_descriptor, eq_descriptor): Update for struct bitmap_descriptor
(bitmap_descriptor): Rename function to get_bitmap_descriptor.
Stuff newly allocated bitmap descriptor into bitmap_descriptors.
Set the bitmap descriptor id.
(bitmap_register): Lookup bitmap desciptor and store its ID in
the passed bitmap.
(register_overhead): Likewise.
(bitmap_find_bit): Lookup descriptor by id in bitmap_descriptors.
(print_statistics): Update for struct bitmap_descriptor change.
* Fix bitmap.o dependencies.
2012-12-13 Richard Biener <>
* tree-ssa-pre.c (get_representative_for): Adjust dumping.
Mark created SSA names for release.
(eliminate_bb): Insert only when expr is not NULL.
2012-12-12 Jakub Jelinek <>
PR debug/55665
* tree-inline.c (remap_decls): Change nonlocalized_list
to pointer to pointer to vector from pointer to vector.
(remap_block): Pass address of BLOCK_NONLOCALIZED_VARS.
PR sanitizer/55508
* builtin-attrs.def (ATTR_TMPURE_NOTHROW_LEAF_LIST,
* sanitizer.def: Make __asan_report_* and __asan_handle_no_return
builtins tm pure.
2012-12-12 Steve Ellcey <>
* config/mips/mips.c (mips_option_override): Set
mips_dbx_regno entries to IGNORED_DWARF_REGNUM by default.
2012-12-12 Steven Bosscher <>
* graph.c: Include sbitmap.h and cfgloop.h.
(draw_cfg_nodes_no_loops): New function to dump basic blocks in
topological order if the function does not have a loop tree.
Handle unreachable blocks also.
(draw_cfg_nodes_for_loop): New function to dump basic blocks in
one loop tree node as a named cluster of nodes.
(draw_cfg_nodes): New function to draw all CFG nodes.
(draw_cfg_edges): New function to draw all CFG edges.
(print_graph_cfg): Simplify using the new functions.
* (graph.o): Fix dependencies.
2012-12-12 Steven Bosscher <>
* dumpfile.h (enum tree_dump_index): Remove TDI_vcg.
* dumpfile.c (dump_files[]): Remove entry for TDI_vcg.
* tree-cfg.c (gimple_cfg2vcg): Remove.
(build_gimple_cfg): Don't call it.
* doc/invoke.texi (-fdump-tree-vcg): Remove documentation.
Correct GraphViz documentation, it does handle multiple functions
in a single dump.
2012-12-12 Zdenek Dvorak <>
PR tree-optimization/55481
* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Fall
back to general rewriting if we cannot leave an original biv
definition alone.
2012-12-12 Jakub Jelinek <>
PR target/55659
2012-12-11 Jakub Jelinek <>
PR middle-end/43631
* var-tracking.c (emit_note_insn_var_location): If insn is followed
by BARRIER, put note after the BARRIER.
(next_non_note_insn_var_location): Skip over BARRIERs.
(emit_notes_in_bb): If call is followed by BARRIER, put note after
2012-12-06 Jakub Jelinek <>
PR middle-end/43631
* var-tracking.c (emit_note_insn_var_location, emit_notes_in_bb):
Clear BLOCK_FOR_INSN on notes emitted in between basic blocks,
don't adjust BB_END when inserting note after BB_END of some bb.
2012-12-12 Steven Bosscher <>
Jakub Jelinek <>
PR middle-end/52640
* varasm.c (pending_assemble_externals_set): New pointer set.
(process_pending_assemble_externals): Destroy the pointer set.
(assemble_external): See if decl is in pending_assemble_externals_set,
and add it to pending_assemble_externals if necessary.
(init_varasm_once): Allocate pending_assemble_externals_set.
2012-12-12 Jakub Jelinek <>
PR fortran/55633
* tree-ssa-loop-niter.c (discover_iteration_bound_by_body_walk):
Ignore bounds on which bound += double_int_one overflowed.
2012-12-11 Eric Botcazou <>
PR target/54121
* config/sparc/ (tldo_stb_sp32): Fix pasto.
(tldo_stb_sp64): Likewise.
(tldo_sth_sp32): Likewise.
(tldo_sth_sp64): Likewise.
(tldo_stw_sp32): Likewise.
(tldo_stw_sp64): Likewise.
(tldo_stx_sp64): Likewise.
2012-12-11 Jakub Jelinek <>
PR rtl-optimization/55193
* lra-constraints.c (loc_equivalence_callback): New function.
(lra_constraints): Call simplify_replace_fn_rtx instead of
loc_equivalence_change_p on DEBUG_INSNs.
2012-12-11 Kyrylo Tkachov <>
PR target/55642
* config/arm/ (*thumb2_abssi2):
Set ce_count attribute to 2.
(*thumb2_neg_abssi2): Likewise.
2012-12-11 Jakub Jelinek <>
* varasm.c (get_variable_section): Don't return lcomm_section
for asan_protect_global decls.
* asan.c (asan_protect_global): Only avoid public common variables.
Don't call get_variable_section here.
PR middle-end/43631
PR bootstrap/55615
* var-tracking.c (emit_note_insn_var_location): If insn is followed
by BARRIER, put note after the BARRIER.
(next_non_note_insn_var_location): Skip over BARRIERs.
(emit_notes_in_bb): If call is followed by BARRIER, put note after
* sanitizer.def: Add comment about importance of ordering of
* cfgcleanup.c (old_insns_match_p): Don't cross-jump __asan_report_*
* sanitizer.def (BUILT_IN_ASAN_HANDLE_NO_RETURN): New builtin.
* asan.c (instrument_builtin_call): Change is_gimple_builtin_call
gcc_assert to gcc_checking_assert.
(maybe_instrument_call): Imit __builtin___asan_handle_no_return ()
before noreturn calls other than __builtin_trap () and
__builtin_unreachable ().
2012-12-11 Richard Biener <>
PR other/54324
* doc/install.texi (Tools/packages necessary for building GCC):
State ISO C++98 host compiler requirement. Increment minimum
GCC version required for building all languages for a cross-compiler
to 3.4 or later.
2012-12-11 Richard Biener <>
PR tree-optimization/55079
* tree-vrp.c (extract_range_from_binary_expr_1): Handle MAX/MIN_EXPR
for more cases.
(register_edge_assert_for_2): Register asserts for post-in/decrement
(check_array_ref): Dump what expression we emit array bound
warnings for.
(search_for_addr_array): Likewise.
2012-12-11 Eric Botcazou <>
* tree-ssa-loop-ivopts.c (prepare_decl_rtl) <ADDR_EXPR>: Generate RTL
only for a DECL which HAS_RTL_P.
2012-12-11 Andreas Krebbel <>
* config/s390/ ("execute_operation"): New predicate.
* config/s390/ ("*execute_rl", "*execute"): Use the new
2012-12-10 Xinliang David Li <>
* config/i386/i386.c: Enable push/pop in pro/epilogue for modern CPUs.
2012-12-10 Steve Ellcey <>
* config/mips/gnu-user.h (NO_SHARED_SPECS): Add space before option.
2012-12-10 Steve Ellcey <>
PR target/54061
* dwarf2out.c (reg_loc_descriptor): Check for IGNORED_DWARF_REGNUM.
(mem_loc_descriptor): Ditto.
* config/mips/mips.h (ALL_COP_REG_FIRST): New.
(ALL_COP_REG_NUM): Redefine using above macros.
* config/mips/mips.c (mips_option_override): Set mips_dbx_regno
coprocessor entries to IGNORED_DWARF_REGNUM.
2012-12-10 H.J. Lu <>
PR lto/55466
* lto-symtab.c (lto_symtab_merge_decls_1): Don't record the
prevailing variable.
2012-12-10 Richard Biener <>
PR tree-optimization/55107
* tree-ssa-pre.c (struct pre_stats): Remove constified field.
(bitmap_set_replace_value): Add gcc_unreachable.
(do_regular_insertion): Re-write all_same handling. Insert
an assignment instead of a PHI in this case.
(eliminate_bb): Record availability also for SSA names defined
by a constant.
(do_pre): Do not record constified events.
(execute_fre): Likewise.
2012-12-10 Andreas Krebbel <>
* config/spu/ Replace "operands" with "operands != NULL" in
insn conditions.
2012-12-10 Jakub Jelinek <>
* asan.c (asan_init_shadow_ptr_types): Move earlier in the file.
Call initialize_sanitizer_builtins at the end.
(asan_pp_string): Use TREE_TYPE (shadow_ptr_types[0])
as character type instead of char_type_node.
(asan_emit_stack_protection): Call asan_init_shadow_ptr_types
if shadow_ptr_types isn't initialized.
(asan_protect_global): Return true for STRING_CSTs except those
created by asan_pp_string.
(count_string_csts, add_string_csts): New functions.
(struct asan_add_string_csts_data): New type.
(asan_finish_file): Clear flag_asan at the beginning, restore at the
end. Traverse constant_pool_htab () to look for protected
STRING_CSTs. Don't call initialize_sanitizer_builtins,
instead call asan_init_shadow_ptr_types if shadow_ptr_types isn't
initialized yet.
(asan_instrument): Don't call initialize_sanitizer_builtins.
* varasm.c (output_constant_def_contents): If STRING_CST should be
asan protected, align it sufficiently and emit padding after it.
(categorize_decl_for_section): If flag_asan, don't put STRING_CSTs
that should be asan protected into mergeable sections. For
-fmerge-all-constants, ignore it for -fmudflap or if decl is
asan protected.
2012-12-10 Kyrylo Tkachov <>
* config/arm/ (opcode): Add Vrintn, Vrinta, Vrintp, Vrintm,
Vrintz to type.
(type features): Add Requires_arch type constructor.
(ops): Define Vrintn, Vrinta, Vrintp, Vrintm, Vrintz features.
* config/arm/ (intrinsic_groups): Define Vrintn,
Vrinta, Vrintp, Vrintm, Vrintz, Vrintx.
* config/arm/ (effective_target): Define check for
Requires_arch 8.
* config/arm/ (print_feature_test_start): Handle
(print_feature_test_end): Likewise.
Add 2012 to Copyright notice.
* doc/arm-neon-intrinsics.texi: Regenerate.
* config/arm/arm_neon.h: Regenerate.
2012-12-10 Kai Tietz <>
* stmt.c (expand_sjlj_dispatch_table): Fix off by one.
PR target/53912
* stmt.c (compute_cases_per_edge): Cast from pointer via intptr_t.
(expand_case): Likewise.
PR target/53912
* print-tree.c (print_node): Cast from pointer via uintptr_t.
2012-12-10 Jakub Jelinek <>
* asan.c (instrument_derefs): Handle bitfield COMPONENT_REFs
accesses as reads/writes to their DECL_BIT_FIELD_REPRESENTATIVE.
2012-12-08 Eric Botcazou <>
* lto-streamer-out.c (lto_write_tree): Do not reset the DECL_INITIAL of
variables in the global constant pool.
2012-12-08 Steven Bosscher <>
PR rtl-optimization/55158
* sched-rgn.c (bb_state_array, bb_state): Add some explaining
comment, and initialize to NULL explicitly.
(realloc_bb_state_array): New function.
(free_bb_state_array): New function.
(schedule_region): Call realloc_bb_state_array after schedule_block.
(sched_rgn_init): Use realloc_bb_state_array to initialize bb_state.
(sched_rgn_finish): Use free_bb_state_array to free it.
2012-12-08 Eric Botcazou <>
* tree-ssa-loop-im.c (for_each_index) <CONST_DECL>: New case.
2012-12-07 Sriraman Tallan <>
* toplev.c (process_options): Do not warn when -ffunction-sections
and -fprofile are used together.
2012-12-07 Steven Bosscher <>
* ree.c (struct ext_cand): Remove GTY markers.
2012-12-07 Vladimir Makarov <>
PR rtl-optimization/55141
* lra-constraints.c (lra_constraints): Use biggest mode for
2012-12-07 Jan Hubicka <>
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Add UPPER_BOUND
(try_unroll_loop_completely) Update.
2012-12-07 Jakub Jelinek <>
PR fortran/55395
* varpool.c (varpool_remove_node): Don't drop DECL_INITIAL
for -g for any kind of debug info.
2012-12-07 Richard Biener <>
PR tree-optimization/54886
* graphite-sese-to-poly.c (build_loop_iteration_domains): Properly
free all memory.
2012-12-07 Martin Jambor <>
PR middle-end/55078
* ipa-inline-transform.c (inline_call): Turn #if 0 to
* ipa-prop.c (try_make_edge_direct_simple_call): Use
(try_make_edge_direct_virtual_call): Likewise.
(update_indirect_edges_after_inlining): Lookup new_root_info and pass
it to the functions above.
2012-12-07 Martin Jambor <>
PR tree-optimization/55590
* tree-sra.c (build_ref_for_offset): Use get_object_alignment_1 to
get base alignment.
2012-12-06 Uros Bizjak <>
H.J. Lu <>
PR target/55597
* config/i386/i386.c (legitimize_tls_address): Zero-extend x to Pmode,
before using it as insn or call equivalent.
2012-12-06 Peter Bergner <>
* config/rs6000/sysv4.h (TARGET_ASAN_SHADOW_OFFSET): Define.
* config/rs6000/rs6000.c (rs6000_asan_shadow_offset): New function.
* config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Disable if using ASAN.
2012-12-06 Jakub Jelinek <>
PR fortran/55395
* varpool.c (varpool_remove_node): Don't drop DECL_INITIAL
if -g and emitting DWARF2+.
2012-12-06 Pat Haugen <>
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
default loop peeling limits.
2012-12-06 Jason Merrill <>
PR c++/55032
PR c++/55245
* tree.c (build_array_type_1): Re-layout if we found it in the
hash table.
2012-12-06 Jack Howarth <>
PR 55599/sanitizer
* config/darwin.h (LINK_COMMAND_SPEC_A): Remove static libasan support.
2012-12-06 Jakub Jelinek <>
PR middle-end/43631
* var-tracking.c (emit_note_insn_var_location, emit_notes_in_bb):
Clear BLOCK_FOR_INSN on notes emitted in between basic blocks,
don't adjust BB_END when inserting note after BB_END of some bb.
PR c++/55137
* fold-const.c (fold_binary_loc) <associate>: Don't introduce
TREE_OVERFLOW through reassociation. If type doesn't have defined
overflow, but one or both of the operands do, use the wrapping type
for reassociation and only convert to type at the end.
2012-12-06 Richard Biener <>
* gimple-fold.c (fold_stmt_1): Remove code handling folding stmts away.
2012-12-06 Kyrylo Tkachov <>
* doc/sourcebuild.texi: Document arm_v8_neon_ok.
2012-12-06 Kyrylo Tkachov <>
* config/arm/arm.c (neon_itype): Define NEON_RINT enum element.
(neon_builtin_data): Register vrintn, vrinta, vrintp, vrintm,
vrintz, vrintx neon builtins.
(arm_init_neon_builtins): Handle NEON_RINT.
(arm_expand_neon_builtin): Likewise.
* config/arm/ New file.
* config/arm/ ("unspec"): Move to
* config/arm/ (NEON_VRINT): New int iterator.
(nvrint_variant): New int attribute.
* config/arm/
(neon_vrint<NEON_VRINT:nvrint_variant><VCVTF:mode>): New pattern.
("unspec"): Move to
* config/arm/ ("unspec"): Move to
2012-12-05 John David Anglin <>
* config/pa/ Use "const_int 0" instead of match_test to simplify
opaque cond in all call insns.
2012-12-05 Steven Bosscher <>
PR rtl-optimization/55604
* lra-lives.c (lra_create_live_ranges): If there are no referenced
pseudos left, do not compute live ranges.
2012-12-05 Steven Bosscher <>
* doc/ (TARGET_CLASS_LIKELY_SPILLED_P): Update documentation.
* doc/tm.texi: Regenerate.
* regs.h (REG_LIVE_LENGTH): Update comments to not refer to no longer
existing files global.c and local-alloc.c.
* regmove.c (copy_src_to_dest): Likewise.
* function.h (struct rtl_data): Likewise.
* ira-color.c (allocno_priority_compare_func): Likewise.
* regstat.c (regstat_compute_ri): Likewise.
* config/epiphany/epiphany.h, config/vax/vax.h, config/cris/cris.h,
config/h8300/h8300.h, config/alpha/alpha.h, config/sparc/sparc.h,
config/rs6000/rs6000.h, config/pdp11/pdp11.h, config/pa/pa.h,
config/v850/v850.h, config/mn10300/mn10300.h, config/m32r/m32r.h,
config/i386/i386.h, config/mcore/mcore.h, config/sh/sh.h,
config/arm/arm.h (REGNO_OK_FOR_BASE_P): Likewise.
2012-12-05 Aldy Hernandez <>
PR target/54160
* config/t-darwin (darwin-c.o): Depend on $(CPP_INTERNAL_H).
* config/darwin-c.c (darwin_cpp_builtins): Only set __OBJC2__ when
in obj mode.
Include libcpp/internal.h.
2012-12-05 Michael Eager <>
PR rtl-optimization/54739
* config/microblaze/ (anddi3, iordi3, xordi3): Delete
2012-12-05 James Greenhalgh <>
* config/aarch64/aarch64-simd-builtins.def: Add new builtins.
* config/aarch64/ (simd_type): Add uzp.
(aarch64_<PERMUTE:perm_insn><PERMUTE:perm_hilo><mode>): New.
* config/aarch64/aarch64.c (aarch64_evpc_trn): New.
(aarch64_evpc_uzp): Likewise.
(aarch64_evpc_zip): Likewise.
(aarch64_expand_vec_perm_const_1): Check for trn, zip, uzp patterns.
* config/aarch64/ (unspec): Add neccessary unspecs.
(perm_insn): Likewise.
(perm_hilo): Likewise.
2012-12-05 James Greenhalgh <>
* config/aarch64/aarch64-protos.h
(aarch64_split_combinev16qi): New.
(aarch64_expand_vec_perm): Likewise.
(aarch64_expand_vec_perm_const): Likewise.
* config/aarch64/ (vec_perm_const<mode>): New.
(vec_perm<mode>): Likewise.
(aarch64_tbl1<mode>): Likewise.
(aarch64_tbl2v16qi): Likewise.
(aarch64_combinev16qi): New.
* config/aarch64/aarch64.c
(aarch64_vectorize_vec_perm_const_ok): New.
(aarch64_split_combinev16qi): Likewise.
(MAX_VECT_LEN): Define.
(expand_vec_perm_d): New.
(aarch64_expand_vec_perm_1): Likewise.
(aarch64_expand_vec_perm): Likewise.
(aarch64_evpc_tbl): Likewise.
(aarch64_expand_vec_perm_const_1): Likewise.
(aarch64_expand_vec_perm_const): Likewise.
(aarch64_vectorize_vec_perm_const_ok): Likewise.
* config/aarch64/
(V_cmp_result): Add mapping for V2DF.
2012-12-05 Yufeng Zhang <>
* config/aarch64/aarch64.c (aarch64_simd_mangle_map_entry): New
(aarch64_simd_mangle_map): New table.
(aarch64_mangle_type): Locate and return the mangled name for
a given AdvSIMD vector type.
2012-12-05 Yufeng Zhang <>
* config/aarch64/aarch64.c (aarch64_mangle_type): New function.
2012-12-05 James Greenhalgh <>
* config/aarch64/aarch64-builtins.c
(aarch64_builtin_vectorized_function): New.
* config/aarch64/aarch64-protos.h
(aarch64_builtin_vectorized_function): Declare.
* config/aarch64/aarch64-simd-builtins.def (frintz, frintp): Add.
(frintm, frinti, frintx, frinta, fcvtzs, fcvtzu): Likewise.
(fcvtas, fcvtau, fcvtps, fcvtpu, fcvtms, fcvtmu): Likewise.
* config/aarch64/
(aarch64_frint_<frint_suffix><mode>): New.
(<frint_pattern><mode>2): Likewise.
(aarch64_fcvt<frint_suffix><su><mode>): Likewise.
(l<fcvt_pattern><su_optab><fcvt_target><VDQF:mode>2): Likewise.
* config/aarch64/aarch64.c (TARGET_VECTORIZE_BUILTINS): Define.
* config/aarch64/
(btrunc<mode>2, ceil<mode>2, floor<mode>2)
(round<mode>2, rint<mode>2, nearbyint<mode>2): Consolidate as...
(<frint_pattern><mode>2): ...this.
(lceil<su_optab><mode><mode>2, lfloor<su_optab><mode><mode>2)
(lrint<su_optab><mode><mode>2): Consolidate as...
(l<fcvt_pattern><su_optab><GPF:mode><GPI:mode>2): ... this.
* config/aarch64/ (fcvt_target): New.
(FCVT_TARGET): Likewise.
(FRINT): Likewise.
(FCVT): Likewise.
(frint_pattern): Likewise.
(frint_suffix): Likewise.
(fcvt_pattern): Likewise.
2012-12-05 Steven Bosscher <>
* passes.c (pass_init_dump_file): Only open a clean graph dump file if
the dump was not already initialized.
2012-12-03 Steven Bosscher <>
* passes.c (finish_optimization_passes): Don't finish graph dumps here.
(pass_fini_dump_file): Wrap in TV_DUMP. Finish graph dumps.
(execute_one_pass): Don't set up graph dumps here.
2012-12-05 Richard Biener <>
PR lto/55525
* gimple-streamer-in.c (input_gimple_stmt): Fixup ARRAY_REFs as well.
2012-12-04 Ian Lance Taylor <>
* godump.c (find_dummy_types): Output a dummy type if we couldn't
output the real type.
2012-12-04 Steven Bosscher <>
* rtl.h (print_insn_with_notes): Remove prototype.
(rtl_dump_bb_for_graph): New prototype.
* sched-vis.c (print_insn_with_notes): Make static again. Fix
printing of notes.
(rtl_dump_bb_for_graph): New function.
* cfghooks.h (struct cfg_hooks) <dump_bb_for_graph>: New hook.
(dump_bb_for_graph): New prototype.
* cfghooks.c (dump_bb_for_graph): New function.
* tree-cfg.c (gimple_cfg_hooks): Register gimple_dump_bb_for_graph
as dump_bb_for_graph hook implementation for GIMPLE.
* cfgrtl.c (rtl_cfg_hooks): Likewise for rtl_dump_bb_for_graph.
(cfg_layout_rtl_cfg_hooks): Likewise.
* graph.c (draw_cfg_node): Don't include sbitmap.h, rtl.h, tree.h,
gimple.h, and gimple-pretty-print.h.
(draw_cfg_node, draw_cfg_node_succ_edges): Use the uniqe function
definition number instead of the function declaration UID.
(print_graph_cfg): Take a struct function instead of a tree.
Use the dump_bb_for_graph hook to dump the basic block content.
* graph.h (print_graph_cfg): Update prototype.
* passes.c (execute_function_dump): Update print_graph_cfg call.
* (graph.o): Fixup dependencies.
2012-12-04 Marcus Shawcroft <>
* config/aarch64/aarch64.c (aarch64_build_builtin_va_list): Set
2012-12-04 Andreas Krebbel <>
* config/s390/s390.c (s390_select_ccmode): Enable using CC of
x + imm for higher immediates on z9-109 upwards.
2012-12-04 Richard Earnshaw <>
* arm.opt (cirrus-fix-invalid-insns): Delete option.
* invoke.texi (cirrus-fix-invalid-insns): Remove documentation.
2012-12-04 Jakub Jelinek <>
* tsan.c (instrument_expr): If expr_ptr isn't a gimple val, first
store it into a SSA_NAME.
PR sanitizer/55439
* (tsan.o): Depend on tree-ssa-propagate.h.
* sanitizer.def: Add __tsan_atomic* builtins.
* asan.c (initialize_sanitizer_builtins): Adjust to also
initialize __tsan_atomic* builtins.
* tsan.c: Include tree-ssa-propagate.h.
(enum tsan_atomic_action): New enum.
(tsan_atomic_table): New table.
(instrument_builtin_call): New function.
(instrument_gimple): Take pointer to gimple_stmt_iterator
instead of gimple_stmt_iterator. Call instrument_builtin_call
on builtin call stmts.
(instrument_memory_accesses): Adjust instrument_gimple caller.
* builtin-types.def (BT_FN_BOOL_VPTR_PTR_I1_INT_INT,
2012-12-04 Tejas Belagod <>
* config/aarch64/aarch64.c (aarch64_simd_vector_alignment,
aarch64_simd_vector_alignment_reachable): New.
2012-12-04 Richard Biener <>
PR tree-optimization/55124
* tree-ssa-pre.c (find_or_generate_expression): Instead of
ICEing when we are not able to generate an expression defer it
by signalling failure. Fix possible wrong-code issue by
not picking random REFERENCE expressions as fallback.
(create_component_ref_by_pieces_1): Adjust. Add failure paths.
(create_expression_by_pieces): Likewise.
(insert_into_preds_of_block): When expression generation failed
for one edge make sure to not insert a PHI node.
2012-12-03 Eric Botcazou <>
* config/ia64/ia64.c (ia64_compute_frame_size): Allocate the scratch
area if the function allocates dynamic stack space.
(ia64_initial_elimination_offset): Adjust offsets to above change.
2012-12-03 Steven Bosscher <>
* gcse.c (struct reg_use): Remove unused struct.
(gcse_emit_move_after): Do not create REG_EQUAL notes that reference
the SET_DEST of the instruction the note would be attached to.
* cse.c (cse_main): Add the DF_NOTE problem.
2012-12-03 Jakub Jelinek <>
* sanitizer.def: Add Address Sanitizer builtins.
* (asan.o): Depend on langhooks.h.
(tsan.o): Depend on asan.h.
* asan.h (initialize_sanitizer_builtins): New prototype.
* asan.c: Include langhooks.h.
(report_error_func): Use builtin_decl_implicit of corresponding
(asan_init_func): Removed.
(initialize_sanitizer_builtins): New function.
(asan_finish_file): Call it. Use builtin_decl_implicit
(asan_instrument): Call initialize_sanitizer_builtins.
* builtins.def (DEF_SANITIZER_BUILTIN): Change condition to
(flag_asan || flag_tsan).
* tsan.c: Include asan.h and tsan.h.
(get_memory_access_decl): Rename BUILT_IN_TSAN_{READ,WRITE}_*
(tsan_pass): Call initialize_sanitizer_builtins.
(tsan_gate, tsan_gate_O0): Don't check if
builtin_decl_implicit_p (BUILT_IN_TSAN_INIT) is true.
(tsan_finish_file): Call initialize_sanitizer_builtins.
* builtin-types.def (BT_FN_VOID_PTR_PTRMODE): New fn type.
2012-12-03 Aldy Hernandez <>
PR middle-end/55401
* trans-mem.c (get_tm_region_blocks): Exclude uninstrumented
blocks from vector if requested.
(collect_bb2reg): Pass new argument to get_tm_region_blocks.
(get_bb_regions_instrumented): Add INCLUDE_UNINSTRUMENTED_P
argument, and pass it to expand_regions.
(execute_tm_mark): Pass new argument to get_bb_regions_instrumented.
(execute_tm_edges): Same.
2012-12-03 Jakub Jelinek <>
* asan.c (instrument_mem_region_access): Don't instrument
if base doesn't have pointer type or len integral type.
Add cast if len doesn't have size_t compatible type.
(instrument_builtin_call): Don't instrument BUILT_IN_ATOMIC_LOAD,
* asan.c (instrument_assignment): Instrument lhs only
for gimple_store_p and rhs1 only for gimple_assign_load_p.
2012-12-03 Michael Zolotukhin <>
* Add target mddump, build/genmddump.o. Extend
genprogrtl with mddump.
* genmddump.c: New.
2012-12-03 Steven Bosscher <>
* rtl.h (print_insn_with_notes): Prototype.
* sched-vis.c (print_insn_with_notes): Export it.
* gimple-pretty-print.h (gimple_dump_bb_for_graph): Prototype.
* gimple-pretty-print.c (print_gimple_expr): Flush the buffer.
(pp_gimple_stmt_1): Don't do it here.
(gimple_dump_bb_for_graph): New function.
* tree-pretty-print.c (print_generic_expr): Flush the buffer here.
(dump_generic_node): Don't flush the buffer here.
* graph.h (print_rtl_graph_with_bb): Rename to print_graph_cfg.
* graph.c: Include gimple.h, dumpfile.h, and gimple-pretty-print.h.
(draw_cfg_node): Handle GIMPLE basic blocks also.
(print_rtl_graph_with_bb): Rename to print_graph_cfg.
* passes.c (finish_optimization_passes): Don't finish graph dumps here.
(execute_function_dump): Use print_graph_cfg. Enable dumping the CFG
for GIMPLE also.
(pass_init_dump_file): Wrap in TV_DUMP. Set up CFG graph dumps.
(pass_fini_dump_file): Wrap in TV_DUMP. Finish graph dumps.
(execute_one_pass): Don't set up graph dumps here.
2012-12-03 Eric Botcazou <>
* tree-ssa.c (warn_uninitialized_var): Use OPT_Wmaybe_uninitialized tag
in the non-always executed case.
2012-12-03 Sofiane Naci <>
* config/aarch64/aarch64.c (aarch64_build_constant): Update prototype.
Call emit_move_insn instead of printing movi/movn/movz instructions.
Call gen_insv_immdi instead of printing movk instruction.
(aarch64_add_constant): Update prototype.
Generate RTL instead of printing add/sub instructions.
(aarch64_output_mi_thunk): Update calls to aarch64_build_constant
and aarch64_add_constant.
2012-12-03 Kai Tietz <>
PR target/53912
* ggc-common.c (POINTER_HASH): Cast from pointer via intptr_t.
PR target/53912
* tree-dump.c (dump_pointer): Print pointer via HOST_WIDE_INT_PRINT.
PR target/53912
* pointer-set.c (hash1): Cast from pointer via uintptr_t.
2012-12-02 Marek Polacek <>
PR middle-end/54838
* cprop.c (bypass_block): Determine number of latches. Return
when there is more than one latch edge.
2012-12-02 Teresa Johnson <>
PR gcov-profile/55551
* lto-cgraph.c (merge_profile_summaries): Handle scaled histogram
entries that map to the same index.
2012-12-02 Steven Bosscher <>
* optabs.c (add_equal_note): Do not create self-referencing REG_EQUAL
* fwprop.c (forward_propagate_and_simplify): Likewise.
2012-12-02 Steven Bosscher <>
* function.h (struct rtl_data): Remove epilogue_delay_list.
* reorg.c (find_end_label): Simplify always-true test.
(optimize_skip): Likewise.
* final.c (leaf_function_p): Don't loop over epilogue_delay_list.
(leaf_renumber_regs): Likewise.
* varasm.c (mark_constant_pool): Likewise.
* except.c (set_nothrow_function_flags): Likewise.
* cfgrtl.c (print_rtl_with_bb): Likewise.
2012-12-02 Hans-Peter Nilsson <>
* config/mmix/mmix.c (mmix_function_value): Set the mode of the
returned PARALLEL to that of the return-value, not VOIDmode.
2012-12-02 Sandra Loosemore <>
* doc/extend.texi: Various corrections to punctuation and grammar
throughout the file. Use consistent terminology and proper names.
Correct some minor markup issues.
2010-12-01 Xinliang David Li <>
* config/i386/i386.c: Allow sign extend instructions (cltd etc)
on modern CPUs.
2012-12-02 Steven Bosscher <>
* reorg.c: Remove an obsolete comment.
* config/pa/ Add back the HP-PA comment here, with details.
2012-11-30 Eric Botcazou <>
* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
Deal with degenerate cases where the bitsize isn't positive.
Rework comment.
2012-11-30 David Edelsohn <>
* xcoffout.c (xcoff_tls_data_section_name): Define.
* xcoffout.h (xcoff_tls_data_section_name): Declare.
* config/rs6000/rs6000.c (tls_data_section): Define.
(rs6000_legitimize_tls_address_aix): New function.
(rs6000_legitimize_tls_address): Use new function for AIX.
(rs6000_cannot_force_const_mem): No sum in TLS TOC symbols.
Allow TLS symbol in constant pool other than ELF.
(rs6000_legitimate_address_p): Allow TLS symbol other than ELF.
(rs6000_assemble_visibility): Do not emit anything on AIX.
(output_toc): Handle alias of TLS general-dynamic symbols.
Emit TLS decorations on symbols.
(rs6000_use_blocks_for_decl_p): New function.
(rs6000_xcoff_output_tls_section_asm_op): New function.
(rs6000_xcoff_asm_init_sections): Initialize tls_data_section.
(rs6000_xcoff_select_section): Choose tls_data_section for
thread-local storage.
(rs6000_xcoff_file_start): Generate xcoff_tls_data_section_name.
(rs6000_legitimate_constant_p): Allow TLS symbol other than ELF.
* config/rs6000/ (tls_tls_): Restrict to ELF.
(tls_get_tpointer): New.
(tle_get_tpointer_internal): New.
(tls_get_addr<mode>): New.
(tls_get_addr_internal<mode>): New.
* config/rs6000/xcoff.h (ASM_OUTPUT_TLS_COMMON): Define.
2012-11-30 Teresa Johnson <>
* lto-cgraph.c (output_profile_summary): Stream out sum_all
and histogram.
(input_profile_summary): Stream in sum_all and histogram.
(merge_profile_summaries): Merge sum_all and histogram, and
change to use RDIV.
(input_symtab): Call compute_working_sets after merging summaries.
* gcov-io.c (gcov_histo_index): Make extern for compiler.
* gcov-io.h (gcov_histo_index): Ditto.
* profile.c (compute_working_sets): Remove static keyword.
* profile.h (compute_working_sets): Ditto.
* (lto-cgraph.o): Depend on profile.h.
2012-11-30 Martin Jambor <>
PR middle-end/52890
PR tree-optimization/55415
PR tree-optimization/54386
PR target/55448
* ipa-prop.c (ipa_modify_call_arguments): Be optimistic when
get_pointer_alignment_1 returns false and the base was not a
* tree-sra.c (access_precludes_ipa_sra_p): New parameter req_align,
added check for required alignment. Update the user.
2012-11-30 Ramana Radhakrishnan <>
Greta Yorsh <>
* config/arm/ (type): Subdivide "alu" into "alu_reg"
and "simple_alu_imm".
(core_cycles): Use new names.
(arm_addsi3): Set type of patterns to use to alu_reg and simple_alu_imm.
(addsi3_compare0, addsi3_compare0_scratch): Likewise.
(addsi3_compare_op1, addsi3_compare_op2, compare_addsi2_op0): Likewise.
(compare_addsi2_op1, arm_subsi3_insn, subsi3_compare0): Likewise.
(subsi3_compare, arm_decscc,arm_andsi3_insn): Likewise.
(thumb1_andsi3_insn, andsi3_compare0_scratch): Likewise.
(zeroextractsi_compare0_scratch,iorsi3_insn,iorsi3_compare0): Likewise.
(iorsi3_compare0_scratch, arm_xorsi3, thumb1_xorsi3_insn): Likewise.
(xorsi3_compare0, xorsi3_compare0_scratch): Likewise.
(thumb1_zero_extendhisi2,arm_zero_extendhisi2_v6): Likewise.
(thumb1_zero_extendqisi2_v, arm_zero_extendqisi2_v6): Likewise.
(thumb1_extendhisi2, arm_extendqisi_v6): Likewise.
(thumb1_extendqisi2, arm_movsi_insn): Likewise.
(movsi_compare0, movhi_insn_arch4, movhi_bytes): Likewise.
(arm_movqi_insn, thumb1_movqi_insn, arm_cmpsi_insn): Likewise.
(movsicc_insn, if_plus_move, if_move_plus): Likewise.
* config/arm/ (neon_mov<mode>/VDX): Likewise.
(neon_mov<mode>/VQXMOV): Likewise.
* config/arm/ (1020alu_op): Likewise.
* config/arm/ (mp626_alu_op): Likewise.
* config/arm/ (726te_alu_op): Likewise.
* config/arm/ (626te_alu_op): Likewise.
* config/arm/ (606te_alu_op): Likewise.
* config/arm/ (526_alu_op): Likewise.
* config/arm/ (cortex_r4_alu, cortex_r4_mov): Likewise.
* config/arm/ (cortex_m4_alu): Likewise.
* config/arm/ (cprtex_a9_dp): Likewise.
* config/arm/ (cortex_a8_alu, cortex_a8_mov): Likewise.
* config/arm/ (cortex_a5_alu): Likewise.
* config/arm/ (cortex_a15_alu): Likewise.
* config/arm/ (9_alu_op): Likewise.
* config/arm/ (11_alu_op): Likewise.
* config/arm/ (alu_op): Likewise.
2012-11-30 Richard Biener <>
* tree-ssa-pre.c (get_expr_value_id): Do not allocate value-ids here.
2012-11-30 Richard Biener <>
* tree-ssa-sccvn.c (run_scc_vn): Remove iteration propagating
2012-11-30 Steven Bosscher <>
* coretypes.h (struct pretty_print_info): Make a coretype.
(typedef pretty_printer): Likewise.
* pretty-print.h (typedef pretty_printer): Not needed here anymore.
* pretty-print.c (pp_write_text_as_dot_label_to_stream): New function.
* rtl.h (str_pattern_slim): New prototype.
(print_value, print_pattern, print_insn): Adjust prototypes to take
a pretty-printer rather than a char buffer.
* sched-vis.c (safe_concat): Remove.
(print_exp): Print into a pretty-printer.
(print_value): Likewise.
(print_pattern): Likewise.
(print_insn): Likewise.
(print_insn_with_notes): New static function.
(init_rtl_slim_pretty_print): New function.
(dump_value_slim): Simplify. Print into and flush a pretty-printer.
(dump_insn_slim): Likewise.
(dump_rtl_slim): Likewise.
(str_pattern_slim): New function.
* haifa-sched.c (model_recompute): Use str_pattern_slim instead of
static buffers.
(model_record_pressures): Likewise.
(schedule_insn): Likewise.
* sel-sched-dump.c (dump_insn_rtx_1): Likewise.
(sel_prepare_string_for_dot_label): Refer to graph.c CFG dumper code.
* graph.c: Include pretty-print.h.
(init_graph_slim_pretty_print): New function.
(print_escaped_line): Removed here, and reincarnated as
(draw_cfg_node): Print into a pretty printer.
(draw_cfg_node_succ_edges): Likewise.
(print_rtl_graph_with_bb): Likewise.
* (graph.o): Fix dependencies.
(tree-optimize.o, toplev.o, sched-vis.o): Likewise.
2012-11-30 Jakub Jelinek <>
* tsan.c (is_load_of_const_p): Removed.
(instrument_expr): Use result of get_inner_reference
instead of get_base_address, avoid some unnecessary tests,
use !pt_solution_includes and !may_be_aliased tests to
check whether base might escape current function.
2012-11-30 Michael Zolotukhin <>
* gensupport.c (maybe_eval_c_test): Remove not-null check for expr.
* read-rtl.c (apply_iterators): Initialize condition with "" instead
of NULL.
2012-11-30 Kai Tietz <>
* config/i386/host-mingw32.c (va_granularity): Make none-const.
(mingw32_gt_pch_alloc_granularity): Return OS' allocation granularity.
(mingw32_gt_pch_use_address): Retry mapping of used address
as multiple instances might interfer.
* config/i386/mingw32.h (SHARED_LIBGCC_SPEC): Synchronize with
2012-11-29 Eric Botcazou <>
PR middle-end/55321
* calls.c (emit_library_call_value_1): Mark as no-nonlocal if no-throw.
2012-11-29 Vladimir Makarov <>
PR middle-end/55456
* lra-int.h (lra_new_regno_start): New external.
* lra.c (lra_new_regno_start): New global.
(lra): Set up lra_new_regno_start.
* lra-constraints.c (match_reload): Sync values only for original
2012-11-29 Kai Tietz <>
PR target/53912
* prefix.c (lookup_key): Replace xmalloc/xrealloc
2012-11-29 Richard Earnshaw <>
PR target/55073
* config/arm/ (neon_vtrn<mode>_internal): Split into expand
and insn patterns. Re-order insn arguments to tie inputs to outputs.
(neon_vzip<mode>_internal): Likewise.
(neon_vuzp<mode>_internal): Likewise.
2012-11-29 Marc Glisse <>
PR c++/53094
* fold-const.c (fold): Replace a CONSTRUCTOR with a VECTOR_CST.
2012-11-29 Richard Biener <>
* tree-ssa-pre.c (get_expr_value_id): Do not add expr
to the set of value expressions here.
(add_to_exp_gen, make_values_for_phi): Fold into ...
(compute_avail): ... here, and avoid useless work. Dump
avail sets in processing order.
(do_pre): Do not dump avail sets here.
2012-11-29 Matthew Gretton-Dann <>
PR target/54974
* config/arm/ (thumb2_pool_range, pool_range): Add comment on
Thumb pool ranges.
(thumb1_extendhisi2): Reduce Thumb pool range.
(arm_movdi): Likewise.
(thumb1_movdi_insn): Likewise.
(thumb1_movsi_insn): Likewise.
(pic_load_addr_unified): Likewise.
(pic_load_addr_32bit): Likewise.
(pic_load_addr_thumb1): Likewise.
(thumb1_movhf): Likewise.
(arm_movsf_soft_insn): Likewise.
(thumb1_movsf_soft_insn): Likewise.
(movdf_soft_insn): Likewise.
(thumb1_movdf_soft_insn): Likewise.
* config/arm/ (*neon_mov<mode>): Likewise.
(*neon_mov<mode>): Likwise.
* config/arm/ (*thumb2_movsi_insn): Likewise.
(*thumb2_movhi_insn): Likewise.
(*thumb2_extendqisi_v6): Likewise.
(*thumb2_zero_extendqisi_v6): Likewise.
(*thumb2_zero_extendqisi2_v6): Likewise.
* config/arm/ (*thumb2_movsi_vfp): Likewise.
(*movdi_vfp): Likewise.
(*movdi_vfp_cortexa8): Likewise.
(*thumb2_movsf_vfp): Likewise.
(*thumb2_movdf_vfp): Likewise.
2012-11-29 Kai Tietz <>
PR target/55171
* config/i386/i386.c (get_scratch_register_on_entry): Handle
(split_stack_prologue_scratch_regno): Likewise.
(ix86_static_chain): Likewise.
(x86_output_mi_thunk): Likewise.
2012-11-29 Marek Polacek <>
* cprop.c (bypass_block): Improve debug message.
2012-11-29 Oleg Raikhman <>
* config/epiphany/epiphany.h (FIXED_REGISTERS, CALL_USED_REGISTERS):
Make r40..r43 call-used.
(REG_ALLOC_ORDER): Sort r40..r43 into the call-used registers.
2012-11-29 Joern Rennecke <>
* config/epiphany/ (addsub_operator): New predicate.
* config/epiphany/ (sched_use_fpu): New attribute.
* config/epiphany/ (isub_i+1): New peephole2.
* config/epiphany/epiphany-protos.h (get_attr_sched_use_fpu): Declare.
* config/epiphany/epiphany.h (EPIPHANY_LIBRARY_EXTRA_SPEC): Define.
* config/epiphany/t-epiphany (SPECS): Set.
(specs): New rule.
* config/epiphany/ (isub_i+1): Work around generator bug.
* config/epiphany/epiphany.c (epiphany_adjust_cost): Use
2012-11-28 Jakub Jelinek <>
PR debug/36728
PR debug/55467
PR middle-end/55507
PR bootstrap/55511
* cselib.c (cselib_process_insn): If cselib_preserve_constants,
don't reset table and exit early on volatile insns and setjmp.
Reset table afterwards on setjmp.
2012-11-28 Andrew Pinski <>
PR bootstrap/54279
* (${QMTEST_DIR}/context): Use xg++ instead of g++.
2012-11-28 Richard Sandiford <>
PR rtl-optimization/55052
* simplify-rtx.c (simplify_subreg): Restore SCALAR_INT_MODE_P check.
2012-11-28 David Edelsohn <>
* target.def (use_blocks_for_decl_p): New hook.
* varasm.c (use_blocks_for_decl_p): Apply hook as final condition.
* doc/ (USE_BLOCKS_FOR_DECL_P): New description.
* doc/tm.texi: Regenerated.
2012-11-28 Richard Sandiford <>
PR middle-end/55438
* expmed.c (simple_mem_bitfield_p): New function, extracted from
store_bit_field_1 and extract_bit_field_1. Use GET_MODE_ALIGNMENT
rather than bitsize when checking the alignment.
(store_bit_field_1, extract_bit_field_1): Call it.
* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
Don't limit ALIGN_. Assume that memory is mapped in chunks of at
least word size, regardless of BIGGEST_ALIGNMENT.
(bit_field_mode_iterator::get_mode): Use GET_MODE_ALIGNMENT rather
than unit when checking the alignment.
(get_best_mode): Use GET_MODE_ALIGNMENT.
2012-11-28 Vladimir Makarov <>
PR rtl-optimization/55512
* lra-assigns.c (assign_by_spills): Assigned arbitrary hard regs
to failed reload pseudos instead of changing asm pattern.
* lra-constraints.c (MAX_CONSTRAINT_ITERATION_NUMBER): Increase value.
2012-11-28 Markus Trippelsdorf <>
PR other/55358
* dse.c (rest_of_handle_dse): Remove superfluous clearing.
2012-11-28 Joern Rennecke <>
* config/epiphany/ (move_double_src_operand):
Check that misaligned addresses are offsettable.
(move_dest_operand): Likewise.
* config/epiphany/epiphany.c (REG_OK_FOR_BASE_P): Don't force a
misaligned stack address to reg+index.
* config/epiphany/epiphany.opt (mfp-iarith): New option.
* config/epiphany/ (addsi3): Check for TARGET_FP_IARITH.
(subsi3, iadd, isub): Rename to ..
(subsi3_i, iadd_i, isub_i): .. This.
(subsi3, iadd, isub): New define_expands.
* config/epiphany/ (attribute type): Add v2fp.
(attribute fp_mode): Test for v2fp.
(<float_operation:insn_opname>v2sf3_i): Change type to v2fp.
* config/epiphany/ (fp_arith_nearest,
fp_arith_trunc): Combine to ..
(fp_arith): .. this.
(v2fp_arith): New insn reservation.
* config/epiphany/ (maddsi_combine): Fix output pattern.
2012-11-28 Oleg Raikhman <>
* config/epiphany/epiphany.h (ASM_OUTPUT_ALIGN_WITH_NOP): Define.
2012-11-28 Joern Rennecke <>
* config/epiphany/epiphany.h (HARD_REGNO_RENAME_OK): Define.
* config/epiphany/epiphany-protos.h (epiphany_regno_rename_ok):
* config/epiphany/epiphany.c (epiphany_regno_rename_ok): New function.
* config/epiphany/ (mov<mode>, *mov<mode>_insn): Check
for misaligned memory operands.
* config/epiphany/ (misaligned_operand): New predicate.
* config/epiphany/epiphany.opt (-may-round-for-trunc): New option.
* config/epiphany/ (*fix_truncsfsi2_i): Take it
into account.
2012-11-28 Richard Biener <>
PR tree-optimization/54547
* tree-vrp.c (set_and_canonicalize_value_range): Handle
1-bit anti-ranges explicitely.
(extract_range_from_assert): Properly canonicalize all
built anti-ranges.
2012-11-28 Eric Botcazou <>
* stor-layout.c (layout_type) <ARRAY_TYPE>: Do not clear TREE_OVERFLOW
on overflowed zeroes, except in one specific case.
2012-11-28 Marc Glisse <>
PR middle-end/55266
* fold-const.c (fold_ternary_loc) [BIT_FIELD_REF]: Handle
CONSTRUCTOR with vector elements.
* tree-ssa-propagate.c (valid_gimple_rhs_p): Handle CONSTRUCTOR
2012-11-28 Richard Biener <>
PR c/35634
* gimple.h (gimplify_self_mod_expr): Declare.
* gimplify.c (gimplify_self_mod_expr): Export. Take a different
type for performing the arithmetic in.
(gimplify_expr): Adjust.
* tree-vect-loop-manip.c (vect_can_advance_ivs_p): Strip
sign conversions we can re-apply after adjusting the IV.
2012-11-28 Steven Bosscher <>
PR rtl-optimization/55006
* loop-unroll.c (struct iv_to_split): Add new 'orig_var' member.
(analyze_iv_to_split_insn): Record it.
(maybe_strip_eq_note_for_split_iv): New function to remove REG_EQUAL
notes that refer to IVs that are being split.
(apply_opt_in_copies): Use maybe_strip_eq_note_for_split_iv. Twice.
2012-11-27 Steven Bosscher <>
* rtl.h (debug_bb_n_slim, debug_bb_slim, debug_insn_slim): Remove
(debug_rtl_slim): Rename to dump_rtl_slim.
(print_value_slim): Rename to dump_value_slim.
* ira.c (ira_update_equiv_info_by_shuffle_insn): Update
print_value_slim user.
* lra.c (lra_process_new_insns): Use dump_insn_slim to dump single
insns. Use dump_rtl_slim for insn chains.
* lra-constraints.c (get_reload_reg): Update print_value_slim user.
(process_addr_reg): Likewise.
(equiv_address_substitution): Likewise.
(inherit_reload_reg): Likewise. Use dump_insn_slim to dump single
(check_and_process_move): Likewise.
(lra_constraints): Likewise.
(split_reg): Likewise.
(update_ebb_live_info): Likewise.
(remove_inheritance_pseudos): Likewise.
* sched-vis.c: Don't include sched-int.h.
Remove #ifdef INSN_SCHEDULING tests.
(print_value_slim): Rename to dump_value_slim. Simplify a few
cases using GET_RTX_NAME.
(print_pattern): Do not handle UNSPEC and UNSPECV here, explain why.
(print_insn): Reorganize code to be independent of INSN_SCHEDULING.
Always print CALL_INSN patterns. Harmonize INSN_UID dumping template.
(dump_rtl_slim): Copied from debug_rtl_slim.
(debug_rtl_slim): Wrapper around dump_rtl_slim to stderr.
* haifa-sched.c (schedule_insn): Update print_insn user.
2012-11-27 Vladimir Makarov <>
PR rtl-optimization/55458
* lra-assigns.c: Include rtl-error.h.
(assign_by_spills): Report about asm impossible constraints.
* (lra-assigns.c): Add $(RTL_ERROR_H).
2012-11-27 Paolo Bonzini <>
PR rtl-optimization/55489
* gcse.c (compute_transp): Precompute a canonical version
of XEXP (x, 0), and pass it to canon_true_dependence.
* alias.c (init_alias_analysis): Fix allocation of reg_known_value.
2012-11-27 Diego Novillo <>
* vec.h: Replace 'class vec' with 'struct vec' everywhere.
(ggc_internal_cleared_alloc_stat): Remove.
(va_gc::reserve): Add PASS_MEM_STAT to ggc_realloc_stat call.
(va_stack::reserve): Add PASS_MEM_STAT to va_heap::reserve call.
(vec<T, A, vl_embed>::copy): Replace ALONE_MEM_STAT_DECL with
(vec_safe_reserve): Replace MEM_STAT_DECL with CXX_MEM_STAT_INFO.
(vec_safe_reserve_exact): Likewise.
(vec_alloc): Likewise.
(vec_safe_grow): Likewise.
(vec_safe_grow_cleared): Likewise.
(vec_safe_push): Likewise.
(vec_safe_insert): Likewise.
(vec_safe_splice): Likewise.
(vec_alloc): Likewise.
(vec_check_alloc): Likewise.
2012-11-27 Marc Glisse <>
* tree-cfg.c (verify_gimple_comparison): Verify that vector
comparison returns a vector.
2012-11-27 Meador Inge <>
* collect2.c (main): Call find_file_set_debug.
(find_a_find, add_prefix, prefix_from_env, prefix_from_string):
Factor out into ...
* file-find.c (New file): ... here and ...
* file-find.h (New file): ... here.
* gcc-ar.c (standard_exec_prefix): New variable.
(standard_libexec_prefix): Ditto.
(tooldir_base_prefix) Ditto.
(self_exec_prefix): Ditto.
(self_libexec_prefix): Ditto.
(self_tooldir_prefix): Ditto.
(target_version): Ditto.
(path): Ditto.
(target_path): Ditto.
(setup_prefixes): New function.
(main): Rework how wrapped programs are found.
* (OBJS-libcommon-target): Add file-find.o.
(AR_OBJS): New variable.
(gcc-ar$(exeext)): Add dependency on $(AR_OBJS).
(gcc-nm$(exeext)): Ditto.
(gcc-ranlib(exeext)): Ditto.
(COLLECT2_OBJS): Add file-find.o.
(collect2.o): Add file-find.h prerequisite.
(file-find.o): New rule.
2010-11-27 Dehao Chen <>
* ipa-prop.c (ipa_modify_call_arguments): Set loc correctly.
* emit-rtl.c (last_location): Remove unused variable.
2012-11-27 Uros Bizjak <>
* config/i386/
(*jcc<X87MODEF:mode>_<SWI24:mode>_i387 splitters): Remove
unneeded temporary.
2012-11-27 Dehao Chen <>
* cfgrtl.c (rtl_merge_blocks): Check with UNKNOWN_LOCATION correctly.
(cfg_layout_merge_blocks): Likewise.
2012-11-27 Jakub Jelinek <>
* passes.c (init_optimization_passes): Add pass_asan and pass_tsan
to -Og optimization passes.
2012-11-27 H.J. Lu <>
Markus Trippelsdorf <>
PR lto/54795
* lto-opts.c (lto_write_options): Also handle
OPT_SPECIAL_unknown, OPT_SPECIAL_ignore and
PR lto/55474
* lto-wrapper.c (merge_and_complain): Handle
OPT_SPECIAL_unknown, OPT_SPECIAL_ignore,
OPT_SPECIAL_program_name and OPT_SPECIAL_input_file.
2012-11-27 Jakub Jelinek <>
PR middle-end/52650
* function.c (instantiate_virtual_regs_in_insn): Don't delete invalid
asm gotos, instead just clear their template and inputs.
PR tree-optimization/55110
* tree-vect-loop.c (vectorizable_reduction): Don't assert
that STMT_VINFO_RELATED_STMT of orig_stmt is stmt.
2012-11-27 Richard Biener <>
* gimple-fold.c (fold_stmt_1): Remove unnecessary code.
2012-11-27 Bin Cheng <>
* config/arm/arm.c (thumb1_reorg): New function.
(arm_reorg): Call thumb1_reorg.
(thumb1_final_prescan_insn): Record src operand in thumb1_cc_op0.
* config/arm/ : Remove peephole2 patterns which rewrite move
into subtract of ZERO.
2012-11-27 Richard Biener <>
PR middle-end/55331
* gimple-fold.c (gimplify_and_update_call_from_tree): Replace
stmt with a NOP instead of removing it.
2012-11-27 Steven Bosscher <>
* loop-invariant.c (check_invariant_table_size): Take sizeof of
the right type.
* reorg.c (resource_conflicts_p): Use hard_reg_set_intersect_p.
(rare_destination): Remove.
(mostly_true_jump): Simplify. Base result on REG_BR_PROP notes if
available, otherwise assume branches are not taken.
(fill_eager_delay_slots): Update mostly_true_jump call.
(relax_delay_slots): Likewise.
2012-11-26 Eric Botcazou <>
* reorg.c (redundant_insn): Do not handle DEBUG_INSNs.
2012-11-26 Vladimir Makarov <>
PR target/55277
* lra-constraints.c (in_class_p): Check reg class contents too.
2012-11-26 James Greenhalgh <>
* config/aarch64/aarch64-builtins.c (aarch64_builtin_decls): New.
(aarch64_init_simd_builtins): Store declaration after builtin
(aarch64_builtin_decl): New.
* config/aarch64/aarch64-protos.h (aarch64_builtin_decl): New.
* config/aarch64/aarch64.c (TARGET_BUILTIN_DECL): Define.
2012-11-26 Steven Bosscher <>
* doc/invoke.texi: Remove -dv documentation. Fix up graph dump related
documentation. Document the '-graph' dump option. Complete the '-slim'
dump option documentation.
* common.opt (Variable graph_dump_format): Remove.
* flag-types.h (enum graph_dump_types): Remove.
* flags.h (dump_for_graph): Remove.
* opts.c (decode_d_option): Remove -dv handling.
* sched-int.h (print_insn, print_pattern, print_value): Move prototypes
from here ...
* rtl.h: here. Add note that these functions ought to be in
another file.
* sched-vis.c (print_insn): Add detailed dump for insn notes.
* print-rtl.c (dump_for_graph): Remove.
(print_rtx): Remove dump_for_graph related code.
* graph.c: Almost complete re-write to dump DOT (GraphViz) dumps
instead of VCG dumps.
* graph.h (print_rtl_graph_with_bb): Update prototype.
* passes.c (finish_optimization_passes): Fix profile dump finishing.
Unconditionally loop over graph dumps to finalize.
(execute_function_dump): Split code to dump graphs to separate block.
(execute_one_pass): Don't set TDF_GRAPH here, let the dump option
decoders do their job.
* ddg.c (vcg_print_ddg): Make it a DEBUG_FUNCTION.
* toplev.c: Don't include graph.h.
* tree-optimize.c: Don't include graph.h.
2012-11-26 Marek Polacek <>
* cprop.c (hash_set): Remove variable. Use regno variable directly.
2012-11-26 Eric Botcazou <>
* tree.h (DECL_RESTRICTED_P): Delete.
(DECL_READ_P): Add comment.
(TYPE_NO_FORCE_BLK): Fix comment.
(struct tree_decl_common): Remove decl_restricted_flag, add decl_flag_3.
* tree-emutls.c (new_emutls_decl): Do not deal with DECL_RESTRICTED_P.
* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
* tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
* alias.c (nonoverlapping_component_refs_p): Fix thinko.
2012-11-26 Kyrylo Tkachov <>
* doc/sourcebuild.texi: Document arm_v8_vfp_ok.
2012-11-26 Kyrylo Tkachov <>
* config/arm/arm.h (TARGET_FPU_ARMV8): New macro.
(f_rints, f_rintd): New types.
* config/arm/ (VRINT): New int iterator.
(F_fma_type): Remove.
(vfp_type): New mode attribute.
(vfp_double_cond): Likewise.
(vrint_pattern, vrint_variant, vrint_predicable): New int attribute.
* config/arm/ (fma<SDF:mode>4): Use vfp_type iterator
instead of F_fma_type.
(*fmsub<SDF:mode>4, *fnmsub<SDF:mode>4, *fnmadd<SDF:mode>4): Likewise.
(<vrint_pattern><SDF:mode>2): New pattern.
2012-11-26 Eric Botcazou <>
* fold-const.c (const_binop): Adjust comment.
(extract_muldiv_1): Likewise.
(fold_comparison): Likewise.
* stor-layout.c (place_field): Fix typo.
* tree.c (double_int_fits_to_tree_p): Remove obsolete comment.
(force_fit_type_double): Likewise. Fix long line.
2012-11-26 Greta Yorsh <>
* config/arm/arm.h (TARGET_LDRD): Reject Thumb1 targets.
2012-11-26 Matthias Klose <>
* config/rs6000/t-linux (MULTIARCH_DIRNAME): Fix unbalanced
2012-11-26 Jakub Jelinek <>
PR tree-optimization/54471
* tree-vrp.c (extract_range_from_binary_expr_1): For MULT_EXPR,
don't canonicalize range if min2 is zero.
2012-11-26 Hans-Peter Nilsson <>
PR middle-end/55030
* builtins.c (expand_builtin_setjmp_receiver): Update comment
regarding purpose of blockage.
* emit-rtl.c [!HAVE_blockage] (gen_blockage): Similarly for
the head comment.
* rtlanal.c (volatile_insn_p): Ditto.
* doc/md.texi (blockage): Update similarly. Change wording to
require one of two forms, rather than implying a wider choice.
* cse.c (cse_insn): Where checking for blocking insns, use
volatile_insn_p instead of manual check for volatile ASM.
* dse.c (scan_insn): Ditto.
* cselib.c (cselib_process_insn): Ditto.
2012-11-25 Uros Bizjak <>
* config/i386/ (<sse>_loadu<ssemodesuffix><avxsizesuffix>):
(<sse2>_loaddqu<avxsizesuffix>): Ditto.
(<sse>_storeu<ssemodesuffix><avxsizesuffix>): Fix handling of
(<sse2>_storedqu<avxsizesuffix>): Ditto.
2012-11-25 Steven Bosscher <>
* doc/ (DELAY_SLOTS_FOR_EPILOGUE): Remove documentation.
* doc/tm.texi: Regenerate.
* reorg.c (fill_simple_delay_slots): Remove code conditional on
(make_return_insns, dbr_schedule): Likewise.
* system.h (DELAY_SLOTS_FOR_EPILOGUE): Poison.
2012-11-24 Jack Howarth <>
* config/darwin.h (LINK_COMMAND_SPEC_A): Deal with -fsanitize=address.
2012-11-24 Matthias Klose <>
* (multiarch): Use $enableval instead of $withval.
* configure: Regenerate.
* config/i386/t-kfreebsd (MULTILIB_OSDIRNAMES): Filter out x32.
* gcc/config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use
x86_64-linux-gnux32 as multiarch name for x32.
2012-11-23 Tobias Burnus <>
* doc/invoke.texi (-fsanitize=address): Remove obsolete remark.
2012-11-23 Jakub Jelinek <>
PR c++/54046
* (gimple-low.o): Depend on langhooks.h.
* gimple-low.c: Include langhooks.c.
(block_may_fallthru): Handle TARGET_EXPR and ERROR_MARK,
by default call lang_hooks.block_may_fallthru.
* langhooks.h (struct lang_hooks): Add block_may_fallthru langhook.
* langhooks-def.h (LANG_HOOKS_BLOCK_MAY_FALLTHRU): Define.
2012-11-23 Jan Hubicka <>
* i386-c.c (ix86_target_macros_internal): Update handling of core
* i386.c (DUMMY_STRINGOP_ALGS): Update
(*_cost): Update.
(core_cost): Copy from generic64_cost; fix stringop descriptors.
(m_CORE2_32, m_CORE2_64, m_COREI7_32, m_COREI7_64, m_CORE2I7_32,
m_CORE2I7_64): Remove.
(m_CORE2, m_COREI7, m_CORE2I7): Update.
(initial_ix86_tune_features): Update.
(processor_target): Update.
(ix86_option_override_internal): Update.
(ix86_option_override_internal): Remove PROCESSOR_CORE2_64,
PROCESSOR_COREI7_64 special cases.
(decide_alg): Add noalign parameter; set it.
(ix86_expand_movmem, ix86_expand_setmem): Update noalign handling.
(ix86_issue_rate): Update.
(ia32_multipass_dfa_lookahead): Update.
(ix86_sched_init_global): Update.
(get_builtin_code_for_version): Update.
* i386.h (stringop_strategy): Add noalign flag.
(enum processor_type): Remove PROCESSOR_CORE2_32, PROCESSOR_CORE2_64,
2012-11-23 Eric Botcazou <>
PR rtl-optimization/55388
* alias.c (nonoverlapping_component_refs_p): Handle bitfields.
* emit-rtl.c (adjust_address_1): Deal with VOIDmode early.
* expmed.c (store_bit_field): Turn the call to adjust_address
into a call to adjust_bitfield_address_size.
2012-11-23 Vladimir Makarov <>
* lra.c (lra): Move init_reg_info and expand_reg_info calls before
2012-11-23 Jakub Jelinek <>
* tsan.c: Fix up comment formatting.
(instrument_gimple): Ignore gimple_clobber_p stmts.
(pass_tsan, pass_tsan_O0): Remove TODO_update_address_taken
from todo_flags_finish.
PR sanitizer/55435
* asan.c (gate_asan): Don't instrument functions with
no_address_safety_analysis attribute.
(gate_asan_O0): Use !optimize && gate_asan ().
* doc/extend.texi (no_address_safety_analysis): Document new
function attribute.
2012-11-22 Teresa Johnson <>
Jan Hubicka <>
* predict.c (maybe_hot_count_p): Use threshold from profiled working
set instead of hard limit.
(cgraph_maybe_hot_edge_p): Invoke maybe_hot_count_p() instead of
directly checking limit.
* params.def (HOT_BB_COUNT_FRACTION): Remove.
(HOT_BB_COUNT_WS_PERMILLE): New parameter.
* doc/invoke.texi (hot-bb-count-fraction): Remove.
(hot-bb-count-ws-permille): Document.
2012-11-22 Vladimir Makarov <>
PR middle-end/55430
* lra.c: Move #include "hard-reg-set.h" before #include "rtl.h".
(new_insn_reg): Update biggest_mode.
(collect_non_operand_hard_regs): Check eliminable regs too.
(initialize_lra_reg_info_element): Initialize biggest_mode.
(add_regs_to_insn_regno_info): Ignore non-allocatable
non-eliminable hard regs.
(lra.c): Move setting lra_no_alloc_regs before
* lra-constraints.c (simplify_operand_subreg): Add a comment.
(lra_constraints): Ignore equivalent memory of
regs occuring in paradoxical subregs.
* lra-lives.c (lra_create_live_ranges): Add a comment.
2012-11-22 Dmitry Vyukov <>
Wei Mi <>
* builtins.def (DEF_SANITIZER_BUILTIN): Define tsan builtins.
* sanitizer.def: Ditto.
* (tsan.o): Add tsan.o target.
(BUILTINS_DEF): Add sanitizer.def.
* passes.c (init_optimization_passes): Add tsan passes.
* tree-pass.h (register_pass_info): Ditto.
* toplev.c (compile_file): Ditto.
* doc/invoke.texi: Document tsan related options.
* gcc.c (LINK_COMMAND_SPEC): Add LIBTSAN_SPEC in link command if
* tsan.c: New file about tsan.
* tsan.h: Ditto.
* common.opt: Add -fsanitize=thread.
2012-11-22 Uros Bizjak <>
* doc/md.texi (RTL Templates Transformation): Use @pxref for
cross-reference in parentheses.
2012-11-22 Marcus Shawcroft <>
* doc/md.texi (AArch64 family): Remove Utf.
2012-11-22 Uros Bizjak <>
* config/i386/ (*jcc<mode>_0_i387): Macroize insn
from *fp_jcc_3_387 using X87MODEF mode iterator.
(*jcc<mode>_0_r_i387): New.
(*jccxf_i387): Ditto.
(*jccxf_r_i387): Ditto.
(*jcc<mode>_i387): Macroize insn from *fp_jcc_1_387 using
MODEF mode iterator.
(*jcc<mode>_r_i387): Macroize insn from *fp_jcc_1r_387 using
MODEF mode iterator.
(*jccu<mode>_i387): Macroize insn from *fp_jcc_2_387 using
X87MODEF mode iterator.
(*jccu<mode>_r_i387): Macroize insn from *fp_jcc_2r_387 using
X87MODEF mode iterator.
(*jcc{,u}<mode>_i387 splitters): Macroize splitters using
X87MODEF mode iterator.
(*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Macroize insn
from *fp_jcc_4_<mode>_387 using X87MODEF mode iterator.
(*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): New.
(*jcc<X87MODEF:mode>_<SWI24:mode>_i387 splitters): Macroize
splitters using X87MODEF and SWI24 mode iterators.
2012-11-22 Uros Bizjak <>
* config/i386/ (FPCMP): New mode iterator.
(unord): New mode attribute.
(*cmp<mode>_0_i387): Macroize insn from *cmpfp_0
using X87MODEF mode iterator.
(*cmp<mode>_0_cc_i387): Macroize insn from *cmpfp_0_cc using
X87MODEF mode iterator.
(*cmpxf_i387): Rename from *cmpfp_xf.
(*cmpxf_cc_i387): Rename from *cmpfp_xf_cc.
(*cmp<mode>_i387): Rename from *cmpfp_<mode>.
(*cmp<mode>_cc_i387): Rename from *cmpfp_<mode>_cc.
(*cmpu<mode>_i387): Macroize insn from *cmpfp_u using X87MODEF
mode iterator.
(*cmpu<mode>_cc_i387): Macroize insn from *cmpfp_u_cc using X87MODEF
mode iterator.
(*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Macroize_insn from
*cmpfp_<mode> using X87MODEF mode iterator.
(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Macroize_insn from
*cmpfp_<mode>_cc using X87MODEF mode iterator.
(*cmpi<FPCMP:unord><MODEF:mode>_mixed): Macroize insn from
*cmpfp_i{,u}_mixed using FPCMP and MODEF mode iterators.
(*cmpi<FPCMP:unord><MODEF:mode>_mixed): Macroize insn from
*cmpfp_i{,u}_sse using FPCMP and MODEF mode iterators.
(*cmpi<CCFPCMP:unord><X87MODEF:mode>_i387): Macroize insn from
*cmpfp_i{,u}_387 using FPCMP and X87MODEF mode iterators.
2012-11-22 Ian Bolton <>
* config/aarch64/ (bswaphi2): New pattern.
2012-11-22 H.J. Lu <>
PR sanitizer/55379
* gcc.c (LINK_COMMAND_SPEC): Issue an error for -static with
2012-11-22 H.J. Lu <>
* gcc.c (ADD_STATIC_LIBASAN_LIBS): New macro. Defined
* config/gnu-user.h (STATIC_LIBASAN_LIBS): New macro.
2012-11-22 Kyrylo Tkachov <>
* config/arm/ (*arm_abssi2): Define predicable attribute.
(*arm_neg_abssi2): Likewise.
* config/arm/ (*thumb2_abssi2): Likewise.
(*thumb2_neg_abssi2): Likewise.
2012-11-22 Jakub Jelinek <>
* ree.c (struct ext_modified): Add ATTRIBUTE_PACKED.
2012-11-22 Georg-Johann Lay <>
Adjust decimal point of signed accum mode to GCC default.
PR target/54222
* config/avr/avr-modes.def (HA, SA, DA): Remove mode adjustments.
(TA): Move decimal point one bit to the right.
* config/avr/avr.c (avr_out_fract): Rewrite.
2012-11-21 Matthias Klose <>
* config/alpha/t-linux: New file; define MULTIARCH_DIRNAME.
* config.gcc <alpha*-*-linux*> (tmake_file): Include alpha/t-linux.
2012-11-21 Matthias Klose <>
* config/m68k/t-linux: Define MULTIARCH_DIRNAME.
2012-11-21 Matthias Klose <>
* config/ia64/t-linux: New file; define MULTIARCH_DIRNAME.
* config.gcc <ia64*-*-linux*> (tmake_file): Include ia64/t-linux.
2012-11-21 Vladimir Makarov <>
PR rtl-optimization/55414
* lra-constraints.c (Index): New function.
(lra_constraints): Check dead equiv init insns.
2012-11-21 Richard Henderson <>
* config/alpha/ (extvmisaligndi): Rename from extv; update
mode of operand 1; remove ancient extract_bit_field workaround.
(insvmisaligndi): Rename from insv and update similarly.
(extzvmisaligndi): Rename from extzv and update similarly; split out...
(extzvdi): New expander.
2012-11-21 H.J. Lu <>
* doc/cpp.texi: Document __SANITIZE_ADDRESS__.
2012-11-21 H.J. Lu <>
PR c/55397
* cppbuiltin.c (define_builtin_macros_for_compilation_flags):
Define __SANITIZE_ADDRESS__ for flag_asan.
2012-11-21 Wei Mi <>
* common.opt: Change faddress-sanitizer to fsanitize=address.
* toplev.c (process_options): Likewise.
* gcc.c (LINK_COMMAND_SPEC): Likewise.
* testsuite/lib/asan-dg.exp
(check_effective_target_faddress_sanitizer): Likewise.
(asan_init): Likewise.
* doc/invoke.texi (-fsanitize=address): Document.
2012-11-21 Martin Jambor <>
* ipa-prop.h (struct ipa_node_params): Rename clone_for_all_contexts to
do_clone_for_all_contexts. Update all uses. New flag
* ipa-cp.c (cgraph_edge_brings_value_p): Also consider the case when cs
leads to the clone for all contexts.
(perhaps_add_new_callers): Likewise.
(decide_whether_version_node): Remove bogus !plats->aggs test. Set
is_all_contexts_clone when cloning for all contexts.
2012-11-21 Martin Jambor <>
PR tree-optimization/55260
* ipa-cp.c (intersect_aggregates_with_edge): New function.
(find_aggregate_values_for_callers_subset): Part moved to the function
above. Call it.
(cgraph_edge_brings_all_agg_vals_for_node): Reimplemented using
2012-11-21 Matthias Klose <>
* config/s390/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
2012-11-21 Teresa Johnson <>
PR gcov-profile/55417
* profile.c (compute_working_sets): Check index first
to avoid out-of-bounds array access.
2012-11-21 Matthias Klose <>
* config/aarch64/t-aarch64-linux: Define MULTIARCH_DIRNAME for
linux target.
2012-11-21 Uros Bizjak <>
* config/i386/
(*float<SWI48x:mode><MODEF:mode>2_mixed_with_temp): Use SWI48 mode
iterator instead of SWI48x. Update insn constraint.
(*float<SWI48x:mode><MODEF:mode>2_mixed_interunit): Ditto.
(*float<SWI48x:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
(*float<SWI48x:mode><MODEF:mode>2_sse_with_temp): Ditto.
(*float<SWI48x:mode><MODEF:mode>2_sse_interunit): Ditto.
(*float<SWI48x:mode><MODEF:mode>2_sse_nointerunit): Ditto.
(*float<SWI48x:mode><MODEF:mode>2 splitters): Ditto.
(lrint<MODEF:mode><SWI48x:mode>2): Ditto.
2012-11-21 Marcus Shawcroft <>
* (gengtype-lex.o): Add dependency on $(BCONFIG_H).
2012-11-21 Bin Cheng <>
* config/arm/arm-cores.def (cortex-m1, cortex-m0)
(cortex-m0plus): Use v6m.
* config/arm/arm-protos.h (tune_params): Add
* config/arm/arm.c (arm_slowmul_tune, arm_fastmul_tune)
(arm_strongarm_tune, arm_xscale_tune, arm_9e_tune, arm_v6t2_tune)
(arm_cortex_tune, arm_cortex_a15_tune, arm_cortex_a5_tune)
(arm_cortex_a9_tune, arm_fa726te_tune): Set
logical_op_non_short_circuit field.
(arm_v6m_tune): New tune_params struct.
* config/arm/arm.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
2012-11-20 Matthias Klose <>
* Substitute `with_cpu'.
* configure: Regenerate.
* Define `with_cpu'.
* config/rs6000/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
* config/rs6000/t-linux: New file; define MULTIARCH_DIRNAME.
* config/rs6000/t-fprules (SOFT_FLOAT_CPUS): New macro. Add e300c2
to the list.
* config/rs6000/t-spe: Define MULTIARCH_DIRNAME.
* config.gcc <powerpc-*-linux* | powerpc64-*-linux*> (tmake_file):
Include rs6000/t-linux for 32bit non-biarch configurations.
2012-11-20 Matthias Klose <>
* doc/install.texi: Move multiarch paragraph out of multilib
2012-11-20 Matthias Klose <>
* config/arm/t-linux-eabi: Define MULTIARCH_DIRNAME for linux target.
2012-11-20 Richard Sandiford <>
* stor-layout.c (bit_field_mode_iterator::next_mode): Fix signedness.
2012-11-20 Vladimir Makarov <>
PR rtl-optimization/55396
* lra-constraints.c (get_reload_reg): Change class if it is
different from reg class.
2012-11-20 Jakub Jelinek <>
* vec.h (class vec_prefix): Change into struct.
Rename field alloc_PRIVATE_ back to alloc_.
Rename field num_PRIVATE_ to num_.
Update all users.
(class vec<T, A, vl_embed>): Rename field pfx_PRIVATE_ to vecpfx_.
Rename field data_PRIVATE_ to vecdata_.
Update all users.
(class vec<T, A, vl_ptr>): Make every field public.
Rename field vec_PRIVATE_ back to vec_.
Update all users.
2012-11-20 Richard Sandiford <>
PR middle-end/55403
PR middle-end/55391
* expmed.c (store_bit_field_1): Use adjust_bitfield_address_size
rather than adjust_bitfield_address to change the mode of a reference.
(extract_bit_field_1): Likewise.
2012-11-20 Michael Meissner <>
* config/rs6000/ (movdf_hardfloat32): Add a comment
explaining the register ordering preferences.
2012-11-20 Aldy Hernandez <>
PR tree-optimization/55350
* gimple-ssa-strength-reduction.c (replace_dependent): Handle
2012-11-20 Uros Bizjak <>
* config/i386/ (fix_trunc<MODEF:mode><SWI48:mode>_sse): Macroize
insn from fix_trunc<mode>{si,di}_sse using SWI48 mode iterator.
(peephole2 to avoid vector decoded forms): Macroize peephole2
using MODEF mode iterator. Use SWI48 mode iterator instead of SWI48x.
2012-11-20 Uros Bizjak <>
PR target/19398
* config/i386/
(peephole2 to shorten x87->SSE reload sequences): Remove peephole2.
* config/i386/i386.h (enum ix86_tune_indices)
<IX86_TUNE_SHORTEN_X87_SSE>: Remove.
* config/i386/i386.c (initial_ix86_tune_features): Update.
2012-11-20 Vladimir Makarov <>
PR target/19398
* lra-constraints.c (process_alt_operands): Discourage reloads
through secondary memory.
2012-11-20 David Edelsohn <>
* config/rs6000/ (largetoc_low): Revert.
(largetoc_low_aix<mode>): New.
2012-11-20 Diego Novillo <>
Jakub Jelinek <>
* vec.h (struct vnull): Declare.
(vNULL): Declare.
* vec.c (vNULL): Define.
* bb-reorder.c: Replace all vec<T, A>() initializers with vNULL.
* cfgexpand.c: Likewise.
* cfgloop.c: Likewise.
* cfgloopanal.c: Likewise.
* cfgloopmanip.c: Likewise.
* cgraph.c: Likewise.
* config/c6x/c6x.c: Likewise.
* config/i386/i386.c: Likewise.
* df-core.c: Likewise.
* dominance.c: Likewise.
* dwarf2out.c: Likewise.
* except.c: Likewise.
* function.c: Likewise.
* gcse.c: Likewise.
* genautomata.c: Likewise.
* graphds.c: Likewise.
* graphite-scop-detection.c: Likewise.
* graphite.c: Likewise.
* haifa-sched.c: Likewise.
* ifcvt.c: Likewise.
* ipa-cp.c: Likewise.
* ipa-inline-analysis.c: Likewise.
* ipa-inline-transform.c: Likewise.
* ipa-inline.c: Likewise.
* ipa-prop.c: Likewise.
* ipa-split.c: Likewise.
* ipa-utils.c: Likewise.
* ira-build.c: Likewise.
* lto-cgraph.c: Likewise.
* lto-streamer-in.c: Likewise.
* lto-symtab.c: Likewise.
* opts-global.c: Likewise.
* passes.c: Likewise.
* ree.c: Likewise.
* sched-deps.c: Likewise.
* sel-sched-ir.c: Likewise.
* sel-sched-ir.h: Likewise.
* sel-sched.c: Likewise.
* stor-layout.c: Likewise.
* trans-mem.c: Likewise.
* tree-call-cdce.c: Likewise.
* tree-cfg.c: Likewise.
* tree-data-ref.c: Likewise.
* tree-diagnostic.c: Likewise.
* tree-eh.c: Likewise.
* tree-loop-distribution.c: Likewise.
* tree-predcom.c: Likewise.
* tree-ssa-loop-im.c: Likewise.
* tree-ssa-loop-ivcanon.c: Likewise.
* tree-ssa-loop-manip.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-ssa-loop-prefetch.c: Likewise.
* tree-ssa-math-opts.c: Likewise.
* tree-ssa-phiopt.c: Likewise.
* tree-ssa-pre.c: Likewise.
* tree-ssa-propagate.c: Likewise.
* tree-ssa-reassoc.c: Likewise.
* tree-ssa-sccvn.c: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-ssa-threadedge.c: Likewise.
* tree-ssa-uninit.c: Likewise.
* tree-stdarg.c: Likewise.
* tree-switch-conversion.c: Likewise.
* tree-vect-data-refs.c: Likewise.
* tree-vect-loop.c: Likewise.
* tree-vect-slp.c: Likewise.
* tree-vect-stmts.c: Likewise.
* value-prof.c: Likewise.
* varasm.c: Likewise.
2012-11-20 Diego Novillo <>
* (tlink.o): Add dependency on VEC_H.
2012-11-20 Diego Novillo <>
PR middle-end/55398
* vec.h (class vec_prefix): Make every field public.
Rename field alloc_ to alloc_PRIVATE_.
Rename field num_ to num_PRIVATE_.
Update all users.
(class vec<T, A, vl_embed>): Make every field public.
Rename field pfx_ to pfx_PRIVATE_.
Rename field data_ to data_PRIVATE_.
Update all users.
(class vec<T, A, vl_ptr>): Make every field public.
Rename field vec_ to vec_PRIVATE_.
Update all users.
2012-11-20 Kai Tietz <>
PR target/55268
* i386.c (ix86_mangle_decl_assembler_name): Use
2012-11-20 Uros Bizjak <>
* config/i386/i386.c (ix86_expand_call): Emit CLOBBERs in VOIDmode.
2012-11-20 Nick Clifton <>
* config/v850/v850.c (F): New function. Mark the given insn as
being frame related.
(v850_all_frame_related): New function. Mark the given push insn
as being frame related.
(v850_pass_by_reference): When using the RH850 ABI do not pass
arguments by reference.
(v850_strict_argument_naming): Delete function.
(v850_function_arg): Use word alignment with the RH850 ABI.
(v850_arg_partial_bytes): Likewise.
(v850_function_arg_advance): Likewise.
(v850_print_operand): Handle CONST_INT and CONST_DOUBLE.
(compute_register_save_size): Use df_regs_ever_live_p.
(increment_stack): Mark prologue adjustments as being frame related.
(expand_prologue): Handle pretend args. Mark insns generated as
being frame related.
(expand_epilogue): Likewise.
(v850_return_in_memory): When using the RH850 ABI return
aggregates in memory.
(v850_setup_incoming_varargs): Delete function.
(v850_option_override): New function.
(TARGET_DEBUG_UNWIND_INFO): Delete definition.
* config/v850/v850.h (ASM_SPEC): Pass 8byte-align and gcc-abi
options on to assembler.
(LINK_SPEC): Likewise.
(FUNCTION_BOUNDARY): With the RH850 ABI always 32-bit alignment.
(BIGGEST_ALIGNMENT): With -8byte-align set to 64-bits.
(enum reg_class): Swap EVEN_REGS and GENERAL_REGS.
(REG_CLASS_NAMES): Likewise.
(struct cum_arg): Delete anonymous_args field.
* config/v850/ Replace TARGET_V850E2V3 in floating point
insns with TARGET_USE_FPU.
(fixuns_truncsfsi2): New pattern.
(fixuns_truncdfsi2): New pattern.
(fix_truncsfdi2): New pattern.
(fixuns_truncsfdi2): New pattern.
(fix_truncdfdi2): New pattern.
(fixuns_truncdfdi2): New pattern.
(unsfloatsisf2): New pattern.
(unsfloatsidf2): New pattern.
(floatdisf2): New pattern.
(unsfloatdisf2): New pattern.
(floatdidf2): New pattern.
(unsfloatdidf2): New pattern.
(fnmasf4): Fix RTl description.
(fnmssf4): Likewise.
* config/v850/v850.opt (mrelax): New option.
(mlong-jumps): Likewise.
(msoft-float): Likewise.
(mhard-float): Likewise.
(mrh850-abi): Likewise.
(mgcc-abi): Likewise.
(m8byte-align): Likewise.
* config/v850/t-v850 (MULTILIB_OPTIONS): Update multilib options.
2012-11-20 Nick Clifton <>
* config/rx/rx.c (rx_function_arg_boundary): When using the RX ABI
align stack arguments to their natural alignment.
(rx_narrow_volatile_bitfield): New function. Allows narrow
volatile bitfields.
(rx_ok_to_inline): New function. Do not inline functions with
local variables into a naked caller.
* config/rx/rx.c (TARGET_CPU_CPP_BUILTINS): Define __RX_ABI__ or
(ASM_SPEC): Pass -mgcc-abi on to the assembler.
(STRICT_ALIGNMENT): Set to false.
(CTORS_SECTION_ASM_OP): Add executable attribute.
(DTORS_SECTION_ASM_OP): Add executable attribute.
(INIT_ARRAY_SECTION_ASM_OP): Add executable attribute.
(FINI_ARRAY_SECTION_ASM_OP): Add executable attribute.
* config/rx/ (subdi3): Don't allow MEMs as the third operand,
as it causes too much reload pressure.
* config/rx/rx.opt (mgcc-abi): New option.
(mrx-abi): New option.
* config/rx/t-rx (MULTILIB_OPTIONS): Show how to add an ABI multilib.
2012-11-20 James Greenhalgh <>
Tejas Belagod <>
* config/aarch64/aarch64-builtins.c
(aarch64_simd_builtin_type_bits): Rename to...
(aarch64_simd_builtin_type_mode): ...this, make sequential.
(aarch64_simd_builtin_datum): Refactor members.
(VAR1, VAR2, ..., VAR12): Update accordingly.
(aarch64_simd_builtin_data): Include from aarch64-simd-builtins.def.
(aarch64_builtins): Update accordingly.
(init_aarch64_simd_builtins): Refactor, rename to...
(aarch64_init_simd_builtins): ...this.
(aarch64_simd_builtin_compare): Remove.
(locate_simd_builtin_icode): Likewise.
* config/aarch64/aarch64-protos.h (aarch64_init_builtins): New.
(aarch64_expand_builtin): New.
* config/aarch64/aarch64-simd-builtins.def: New file.
* config/aarch64/aarch64.c (aarch64_init_builtins):
Move to aarch64-builtins.c.
(aarch64_expand_builtin): Likewise.
* config/aarch64/aarch64.h
(aarch64_builtins): Move to aarch64-builtins.c.
2012-11-20 Martin Jambor <>
PR tree-optimization/55260
* ipa-cp.c (find_aggregate_values_for_callers_subset): Rename info to
dest_info, use caller_info instead of info when determining whether
callee is a clone.
2012-11-20 Andrey Turetskiy <>
* config/i386/ (*<ssse3_avx2>_pmulhrsw<mode>3): Merge
*avx2_pmulhrswv16hi3 and *ssse3_pmulhrswv8hi3 into one pattern.
2012-11-20 Sofiane Naci <>
* config/aarch64/
(define_attr "sync_*"): Remove.
(define_attr "length"): Update.
* config/aarch64/aarch64-protos.h
(aarch64_expand_compare_and_swap): Add function prototype.
(aarch64_split_compare_and_swap): Likewise.
(aarch64_split_atomic_op): Likewise.
(aarch64_expand_sync): Remove function prototype.
(aarch64_output_sync_insn): Likewise.
(aarch64_output_sync_lock_release): Likewise.
(aarch64_sync_loop_insns): Likewise.
(struct aarch64_sync_generator): Remove.
(enum aarch64_sync_generator_tag): Likewise.
* config/aarch64/aarch64.c
(aarch64_legitimize_sync_memory): Remove function.
(aarch64_emit): Likewise.
(aarch64_insn_count): Likewise.
(aarch64_output_asm_insn): Likewise.
(aarch64_load_store_suffix): Likewise.
(aarch64_output_sync_load): Likewise.
(aarch64_output_sync_store): Likewise.
(aarch64_output_op2): Likewise.
(aarch64_output_op3): Likewise.
(aarch64_output_sync_loop): Likewise.
(aarch64_get_sync_operand): Likewise.
(aarch64_process_output_sync_insn): Likewise.
(aarch64_output_sync_insn): Likewise.
(aarch64_output_sync_lock_release): Likewise.
(aarch64_sync_loop_insns): Likewise.
(aarch64_call_generator): Likewise.
(aarch64_expand_sync): Likewise.
(* emit_f): Remove variable.
(aarch64_insn_count): Likewise.
(aarch64_emit_load_exclusive): New function.
(aarch64_emit_store_exclusive): Likewise.
(aarch64_emit_unlikely_jump): Likewise.
(aarch64_expand_compare_and_swap): Likewise.
(aarch64_split_compare_and_swap): Likewise.
(aarch64_split_atomic_op): Likewise.
* config/aarch64/
(atomic_sfx): New mode attribute.
(atomic_optab): New code attribute.
(atomic_op_operand): Likewise.
(atomic_op_str): Likewise.
(syncop): Rename to atomic_op.
* config/aarch64/ Delete.
* config/aarch64/ New file.
2012-11-20 Jakub Jelinek <>
PR middle-end/55094
* builtins.c (expand_builtin_trap): Add REG_ARGS_SIZE note
on the trap insn for !ACCUMULATE_OUTGOING_ARGS.
* cfgcleanup.c (outgoing_edges_match): Don't look at debug insns
on the first old_insns_match_p call. For !ACCUMULATE_OUTGOING_ARGS
fail if the last real insn doesn't have REG_ARGS_SIZE note.
PR rtl-optimization/54921
* cselib.h (fp_setter_insn): New prototype.
* cselib.c (fp_setter_insn): New function.
(cselib_process_insn): If frame_pointer_needed,
call cselib_invalidate_rtx (stack_pointer_rtx) after
processing a frame pointer setter.
* var-tracking.c (fp_setter): Removed.
(vt_initialize): Use fp_setter_insn instead of fp_setter.
2012-11-19 Michael Meissner <>
* config/rs6000/ (movdf_hardfloat32): Reorder move
constraints so that the traditional floating point loads, stores,
and moves are done first, then the VSX loads, stores, and moves,
and finally the GPR loads, stores, and moves so that reload
chooses FPRs over GPRs, and uses the traditional load/store
instructions which provide an offset.
(movdf_hardfloat64): Likewise.
2012-11-19 Richard Sandiford <>
PR middle-end/55359
* simplify-rtx.c (simplify_subreg): Return null for invalid offsets.
2012-11-19 Aldy Hernandez <>
* trans-mem.c (execute_tm_mark): Release bb_regions.
2012-11-19 Aldy Hernandez <>
* trans-mem (collect_bb2reg): Stop scanning at irrevocable blocks.
(get_bb_regions_instrumented): Add new traverse_clone argument and
use it.
(expand_regions_1): Same.
(expand_region): Same.
(execute_tm_mark): Pass new argument to expand_regions.
(expand_block_edges): Pass new argument to get_bb_regions_instrumented.
2012-11-19 Sofiane Naci <>
* config/aarch64/aarch64.c
(aarch64_output_mi_thunk): Refactor to generate RTL patterns.
2012-11-19 Mans Rullgard <>
PR target/55276
* config/rs6000/rs6000.c (rs6000_stack_info): Always set vrsave_mask
for TARGET_ALTIVEC_ABI. Zero vrsave_save_offset if
(rs6000_emit_prologue): For SAVE_INLINE_VLRs, check vrsave_size
not vrsave_mask.
2012-11-19 David Edelsohn <>
PR bootstrap/55384
* system.h (vec_free): Undef.
2012-11-19 Jakub Jelinek <>
PR middle-end/54630
* tree-ssa-coalesce.c (coalesce_ssa_name): Remove static
keyword from ssa_name_hash var.
2012-11-19 Maxim Kuznetsov <>
Kirill Yukhin <>
Michael Zolotukhin <>
* doc/md.texi: Document define_subst.
* gensupport.c (MAX_OPERANDS): New define.
(operand_data): New.
(match_operand_entries_in_pattern): New.
(used_operands_numbers): New.
(subst_true): New.
(subst_false): New.
(define_subst_queue): New.
(define_subst_tail): New.
(define_subst_attr_queue): New.
(define_subst_attr_tail): New.
(has_subst_attribute): New.
(subst_pattern_match): New.
(get_alternatives_number): New.
(alter_output_for_subst_insn): New.
(alter_attrs_for_subst_insn): New.
(process_substs_on_one_elem): New.
(subst_dup): New.
(process_define_subst): New.
(duplicate_alternatives): New.
(duplicate_each_alternative): New.
(constraints_handler_t): New typedef.
(alter_constraints): New.
(adjust_operands_numbers): New.
(replace_duplicating_operands_in_pattern): New.
(remove_from_queue): New.
(process_rtx): Handle define_subst and define_subst_attr.
(change_subst_attribute): New.
(alter_predicate_for_insn): Fix formatting.
(alter_attrs_for_insn): Likewise.
(alter_output_for_insn): Likewise.
(mark_operands_from_match_dup): New.
(mark_operands_used_in_match_dup): New.
(find_first_unused_number_of_operand): New.
(renumerate_operands_in_pattern): New.
(generate_match_dup): New.
(check_define_attr_duplicates): New.
(init_rtx_reader_args_cb): Add checking for duplicated attrs and
processing of define_subst.
(read_md_rtx): Handle define_subst.
* read-rtl.c (struct subst_attr_to_iter_mapping): New.
(substs): New global.
(apply_subst_iterator): New.
(bind_subst_iter_and_attr): New.
(find_subst_iter_by_attr): New.
(map_attr_string): Handle subst-iterators.
(add_condition_to_rtx): Handle define_subst.
(apply_iterators): Likewise.
(initialize_iterators): Likewise.
(add_define_attr_for_define_subst): New.
(add_define_subst_attr): New.
(read_subst_mapping): New.
(read_rtx): Handle define_subst_attr.
(read_rtx_code): Add subst-attributes recognition during reading of
* rtl.def (DEFINE_EXPAND): Add vector of attributes.
2012-11-19 Tom de Vries <>
PR rtl-optimization/55315
* rtlanal.c (nonzero_address_p): Don't assume a nonzero address plus a
const is a nonzero address.
2012-11-18 Sandra Loosemore <>
* doc/extend.texi: Use @smallexample consistently. Add @noindent
when continuing a sentence or paragraph past an example. Change
tabs to spaces in examples.
2012-11-18 Richard Sandiford <>
* doc/md.texi (extv@var{m}, extvmisalign@var{m}, extzv@var{m})
(extzvmisalign@var{m}, insv@var{m}, insvmisalign@var{m}): Document.
(insv, extv, extzv): Deprecate.
* optabs.def (insv_optab, extv_optab, extzv_optab)
(insvmisalign_optab, extvmisalign_optab, extzvmisalign_optab):
New optabs.
* optabs.c (get_optab_extraction_insn): New function.
(get_extraction_insn): Use it.
* config/mips/ (extv): Split into...
(extvmisalign<mode>, extv<mode>): ...these new patterns. Rename
existing extv<mode> pattern to...
(*extv<mode>): ...this.
(extzv): Split into...
(extzvmisalign<mode>, extzv<mode>): ...these new patterns. Rename
existing extzv<mode> pattern to...
(*extzv<mode>): ...this.
(insv): Split into...
(insvmisalign<mode>, insv<mode>): ...these new patterns. Rename
existing insv<mode> pattern to...
(*insv<mode>): ...this. Use const_int_operand rather than
* config/mips/mips.c (mips_block_move_straight): Use set_mem_size
to set the size of BLKmode accesses.
(mips_get_unaligned_mem): Require OP0 to be a BLKmode memory,
turning it from an "rtx *" to an rtx.
(mips_expand_ext_as_unaligned_load): Simplify for new optab
interface. Update call to mips_get_unaligned_mem.
(mips_expand_ins_as_unaligned_store): Update call to
2012-11-18 Richard Sandiford <>
* (recog.o): Add insn-codes.h.
* expr.h (extraction_pattern): Move to optabs.h.
(mode_for_extraction): Delete.
* optabs.h (extraction_insn): New structure.
(extraction_pattern): Moved from expr.h.
(get_best_reg_extraction_insn, get_best_mem_extraction_insn): Declare.
* optabs.c (HAVE_insv, CODE_FOR_insv, HAVE_extv, CODE_FOR_extv)
(HAVE_extzv, CODE_FOR_extzv): Provide defaults.
(extraction_type): New enum.
(get_traditional_extraction_insn, get_extraction_insn)
(get_best_reg_extraction_insn, get_best_mem_extraction_insn):
New functions.
* combine.c (make_extraction): Use get_best_reg_extraction_insn
instead of mode_for_extraction.
* expmed.c (HAVE_insv, CODE_FOR_insv, gen_insv, HAVE_extv)
(CODE_FOR_extv, gen_extv, HAVE_extzv, CODE_FOR_extzv, gen_extzv):
Remove fallback definitions.
(mode_for_extraction): Delete.
(adjust_bit_field_mem_for_reg): New function.
(store_bit_field_using_insv): Replace OP_MODE parameter with
an extraction_insn. Pass struct_mode to narrow_bit_field_mem.
(extract_bit_field_using_extv): Likewise EXT_MODE.
(store_bit_field_1): Use get_best_reg_extraction_insn and
get_best_mem_extraction_insn instead of mode_for_extraction.
Use adjust_bit_field_mem_for_reg when forcing memory to a
register and doing a register insertion. Update calls to
(extract_bit_field_1): Likewise extractions and calls to
(store_Bit_field): When narrowing to a bitregion, don't use the
insv mode as a limit.
* recog.c: (HAVE_extv, CODE_FOR_extv, HAVE_extzv, CODE_FOR_extzv):
Provide defaults.
(simplify_while_replacing): Use insn_data instead of
2012-11-18 Richard Sandiford <>
* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
Set up a default value of bitregion_end_.
(bit_field_mode_iterator::next_mode): Always apply bitregion_end_
check. Include SLOW_UNALIGNED_ACCESS in the alignment check.
(get_best_mode): Ignore modes that are wider than the alignment.
2012-11-18 Richard Sandiford <>
* machmode.h (bit_field_mode_iterator): New class.
(get_best_mode): Change final parameter to bool.
* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator)
(bit_field_mode_iterator::next_mode): New functions, split out from...
(get_best_mode): Change final parameter to bool.
Use bit_field_mode_iterator.
2012-11-18 Richard Sandiford <>
* expmed.c (narrow_bit_field_mem): New function.
(store_bit_field_using_insv, store_bit_field_1, store_fixed_bit_field)
(extract_bit_field_1): Use it.
2012-11-18 Richard Sandiford <>
* expr.h (adjust_address_1): Add a size parameter.
(adjust_address, adjust_address_nv, adjust_bitfield_address)
(adjust_bitfield_address_nv): Adjust accordingly.
(adjust_bitfield_address_size): Define.
* emit-rtl.c (adjust_address_1): Add a size parameter.
Use it to set the size if MODE has no size. Check whether
the size matches before returning the original memref.
Require the size to be known for adjust_object.
(adjust_automodify_address_1, widen_memory_access): Update calls
to adjust_address_1.
2012-11-18 Richard Sandiford <>
* combine.c (make_extraction): Handle TRUNCATEd INNERs.
2012-11-18 Richard Sandiford <>
* expr.c (expand_assignment): Don't set MEM_KEEP_ALIAS_SET_P here.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Handle DECL_BIT_FIELDs,
using their size instead of the COMPONENT_REF's.
2012-11-17 Matthias Klose <>
* config/mips/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
2012-11-17 Diego Novillo <>
VEC API overhaul (
* vec.c (register_overhead): Convert it into
member function of vec_prefix.
(release_overhead): Likewise.
(calculate_allocation): Likewise.
(vec_heap_free): Remove.
(vec_gc_o_reserve_1): Remove.
(vec_heap_o_reserve_1): Remove.
(vec_stack_o_reserve_1): Remove.
(vec_stack_o_reserve_exact): Remove.
(register_stack_vec): New.
(stack_vec_register_index): New.
(unregister_stack_vec): New.
(vec_assert_fail): Remove.
* vec.h: Conditionally include ggc.h. Document conditional hackery.
Update top-level documentation.
(VEC_ASSERT): Remove.
(vec_prefix): Add friends va_gc, va_gc_atomic, va_heap and va_stack.
Mark fields alloc_ and num_ as protected.
(struct vec_t): Remove. Remove all function members.
(struct vl_embed): Declare.
(struct vl_ptr): Declare.
(free): Remove.
(reserve_exact): Remove.
(reserve): Remove.
(safe_splice): Remove.
(safe_push): Remove.
(safe_grow): Remove.
(safe_grow_cleared): Remove.
(safe_insert): Remove.
(DEF_VEC_I): Remove.
(DEF_VEC_ALLOC_I): Remove.
(DEF_VEC_P): Remove.
(DEF_VEC_ALLOC_P): Remove.
(DEF_VEC_O): Remove.
(DEF_VEC_ALLOC_O): Remove.
(DEF_VEC_A): Remove.
(DEF_VEC_ALLOC_A): Remove.
(vec_stack_p_reserve_exact_1): Remove.
(vec_stack_o_reserve): Remove.
(vec_stack_o_reserve_exact): Remove.
(VEC_length): Remove.
(VEC_empty): Remove.
(VEC_address): Remove.
(vec_address): Remove.
(VEC_last): Remove.
(VEC_index): Remove.
(VEC_iterate): Remove.
(VEC_embedded_size): Remove.
(VEC_embedded_init): Remove.
(VEC_free): Remove.
(VEC_copy): Remove.
(VEC_space): Remove.
(VEC_reserve): Remove.
(VEC_reserve_exact): Remove.
(VEC_splice): Remove.
(VEC_safe_splice): Remove.
(VEC_quick_push): Remove.
(VEC_safe_push): Remove.
(VEC_pop): Remove.
(VEC_truncate): Remove.
(VEC_safe_grow): Remove.
(VEC_replace): Remove.
(VEC_quick_insert): Remove.
(VEC_safe_insert): Remove.
(VEC_ordered_remove): Remove.
(VEC_unordered_remove): Remove.
(VEC_block_remove): Remove.
(VEC_lower_bound): Remove.
(VEC_alloc): Remove.
(VEC_qsort): Remove.
(va_heap): Declare.
(va_heap::default_layout): New typedef to vl_ptr.
(va_heap::reserve): New.
(va_heap::release): New.
(va_gc): Declare.
(va_gc::default_layout): New typedef to vl_embed.
(va_gc::reserve): New.
(va_gc::release): New.
(va_gc_atomic): Declare. Inherit from va_gc.
(va_stack): Declare.
(va_stack::default_layout): New typedef to vl_ptr.
(va_stack::alloc): New.
(va_stack::reserve): New.
(va_stack::release): New.
(register_stack_vec): Declare.
(stack_vec_register_index): Declare.
(unregister_stack_vec): Declare.
(vec<T, A = va_heap, L = typename A::default_layout>): Declare
empty vec template.
(vec<T, A, vl_embed>): Partial specialization for embedded
(vec<T, A, vl_embed>::allocated): New.
(vec<T, A, vl_embed>::length): New.
(vec<T, A, vl_embed>::is_empty): New.
(vec<T, A, vl_embed>::address): New.
(vec<T, A, vl_embed>::operator[]): New.
(vec<T, A, vl_embed>::last New.
(vec<T, A, vl_embed>::space): New.
(vec<T, A, vl_embed>::iterate): New.
(vec<T, A, vl_embed>::iterate): New.
(vec<T, A, vl_embed>::copy): New.
(vec<T, A, vl_embed>::splice): New.
(vec<T, A, vl_embed>::quick_push New.
(vec<T, A, vl_embed>::pop New.
(vec<T, A, vl_embed>::truncate): New.
(vec<T, A, vl_embed>::quick_insert): New.
(vec<T, A, vl_embed>::ordered_remove): New.
(vec<T, A, vl_embed>::unordered_remove): New.
(vec<T, A, vl_embed>::block_remove): New.
(vec<T, A, vl_embed>::qsort): New.
(vec<T, A, vl_embed>::lower_bound): New.
(vec<T, A, vl_embed>::embedded_size): New.
(vec<T, A, vl_embed>::embedded_init): New.
(vec<T, A, vl_embed>::quick_grow): New.
(vec<T, A, vl_embed>::quick_grow_cleared): New.
(vec_safe_space): New.
(vec_safe_length): New.
(vec_safe_address): New.
(vec_safe_is_empty): New.
(vec_safe_reserve): New.
(vec_safe_reserve_exact): New.
(vec_alloc): New.
(vec_free): New.
(vec_safe_grow): New.
(vec_safe_grow_cleared): New.
(vec_safe_iterate): New.
(vec_safe_push): New.
(vec_safe_insert): New.
(vec_safe_truncate): New.
(vec_safe_copy): New.
(vec_safe_splice): New.
(vec<T, A, vl_ptr>): New partial specialization for the space
efficient layout.
(vec<T, A, vl_ptr>::exists): New.
(vec<T, A, vl_ptr>::is_empty): New.
(vec<T, A, vl_ptr>::length): New.
(vec<T, A, vl_ptr>::address): New.
(vec<T, A, vl_ptr>::operator[]): New.
(vec<T, A, vl_ptr>::operator!=): New.
(vec<T, A, vl_ptr>::operator==): New.
(vec<T, A, vl_ptr>::last): New.
(vec<T, A, vl_ptr>::space): New.
(vec<T, A, vl_ptr>::iterate): New.
(vec<T, A, vl_ptr>::copy): New.
(vec<T, A, vl_ptr>::reserve): New.
(vec<T, A, vl_ptr>::reserve_exact): New.
(vec<T, A, vl_ptr>::splice): New.
(vec<T, A, vl_ptr>::safe_splice): New.
(vec<T, A, vl_ptr>::quick_push): New.
(vec<T, A, vl_ptr>::safe_push): New.
(vec<T, A, vl_ptr>::pop): New.
(vec<T, A, vl_ptr>::truncate): New.
(vec<T, A, vl_ptr>::safe_grow): New.
(vec<T, A, vl_ptr>::safe_grow_cleared): New.
(vec<T, A, vl_ptr>::quick_grow): New.
(vec<T, A, vl_ptr>::quick_grow_cleared): New.
(vec<T, A, vl_ptr>::quick_insert): New.
(vec<T, A, vl_ptr>::safe_insert): New.
(vec<T, A, vl_ptr>::ordered_remove): New.
(vec<T, A, vl_ptr>::unordered_remove): New.
(vec<T, A, vl_ptr>::block_remove): New.
(vec<T, A, vl_ptr>::qsort): New.
(vec<T, A, vl_ptr>::lower_bound): New.
(vec_stack_alloc): Define.
* vecir.h: Remove. Update all users.
* vecprim.h: Remove. Update all users.
Move uchar to coretypes.h.
* (VEC_H): Add $(GGC_H).
Remove vecir.h and vecprim.h dependencies everywhere.
2012-11-16 Diego Novillo <>
* gengtype-lex.l (VEC): Remove.
Add characters in the set [\!\>\.-].
* gengtype-parse.c (token_names): Remove "VEC".
(require_template_declaration): Remove handling of VEC_TOKEN.
(type): Likewise.
Call create_user_defined_type when parsing GTY((user)).
* gengtype-state.c (type_lineloc): handle TYPE_UNDEFINED.
(write_state_undefined_type): New.
(write_state_type): Call write_state_undefined_type for TYPE_UNDEFINED.
(read_state_type): Call read_state_undefined_type for TYPE_UNDEFINED.
* gengtype.c (dbgprint_count_type_at): Handle TYPE_UNDEFINED.
(create_user_defined_type): Make extern.
(type_for_name): Factor out of resolve_typedef.
(create_undefined_type): New
(resolve_typedef): Call it when we cannot find a previous
typedef and the type is not a template.
(find_structure): Accept TYPE_UNDEFINED.
(set_gc_used_type): Add argument ALLOWED_UNDEFINED_TYPES,
default to false.
Emit an error for TYPE_UNDEFINED unless LEVEL is GC_UNUSED or
(filter_type_name): Accept templates with more than one argument.
(output_mangled_typename): Handle TYPE_UNDEFINED
(walk_type): Likewise.
(write_types_process_field): Likewise.
(write_func_for_structure): If CHAIN_NEXT is set, ORIG_S
should not be a user-defined type.
(write_types_local_user_process_field): Handle TYPE_ARRAY,
(write_types_local_process_field): Likewise.
(contains_scalar_p): Return 0 for TYPE_USER_STRUCT.
(write_root): Reject user-defined types that are not pointers.
(output_typename): Handle TYPE_NONE, TYPE_UNDEFINED, and TYPE_ARRAY.
(dump_typekind): Handle TYPE_UNDEFINED.
* gengtype.h (enum typekind): Add TYPE_UNDEFINED.
(create_user_defined_type): Declare.
(enum gty_token): Remove VEC_TOKEN.
2012-11-16 Diego Novillo <>
Adjust for new vec API (
* coretypes.h (uchar): Define.
* alias.c: Use new vec API in vec.h.
* asan.c: Likewise.
* attribs.c: Likewise.
* basic-block.h: Likewise.
* bb-reorder.c: Likewise.
* builtins.c: Likewise.
* calls.c: Likewise.
* cfg.c: Likewise.
* cfganal.c: Likewise.
* cfgcleanup.c: Likewise.
* cfgexpand.c: Likewise.
* cfghooks.c: Likewise.
* cfghooks.h: Likewise.
* cfgloop.c: Likewise.
* cfgloop.h: Likewise.
* cfgloopanal.c: Likewise.
* cfgloopmanip.c: Likewise.
* cfgrtl.c: Likewise.
* cgraph.c: Likewise.
* cgraph.h: Likewise.
* cgraphclones.c: Likewise.
* cgraphunit.c: Likewise.
* combine.c: Likewise.
* compare-elim.c: Likewise.
* coverage.c: Likewise.
* cprop.c: Likewise.
* data-streamer.h: Likewise.
* dbxout.c: Likewise.
* dce.c: Likewise.
* df-core.c: Likewise.
* df-problems.c: Likewise.
* df-scan.c: Likewise.
* dominance.c: Likewise.
* domwalk.c: Likewise.
* domwalk.h: Likewise.
* dse.c: Likewise.
* dwarf2cfi.c: Likewise.
* dwarf2out.c: Likewise.
* dwarf2out.h: Likewise.
* emit-rtl.c: Likewise.
* except.c: Likewise.
* except.h: Likewise.
* expr.c: Likewise.
* expr.h: Likewise.
* final.c: Likewise.
* fold-const.c: Likewise.
* function.c: Likewise.
* function.h: Likewise.
* fwprop.c: Likewise.
* gcc.c: Likewise.
* gcse.c: Likewise.
* genattr.c: Likewise.
* genattrtab.c: Likewise.
* genautomata.c: Likewise.
* genextract.c: Likewise.
* genopinit.c: Likewise
* ggc-common.c: Likewise.
* ggc.h: Likewise.
* gimple-low.c: Likewise.
* gimple-ssa-strength-reduction.c: Likewise.
* gimple-streamer-in.c: Likewise.
* gimple.c: Likewise.
* gimple.h: Likewise.
* gimplify.c: Likewise.
* graph.c: Likewise.
* graphds.c: Likewise.
* graphds.h: Likewise.
* graphite-blocking.c: Likewise.
* graphite-clast-to-gimple.c: Likewise.
* graphite-dependences.c: Likewise.
* graphite-interchange.c: Likewise.
* graphite-optimize-isl.c: Likewise.
* graphite-poly.c: Likewise.
* graphite-poly.h: Likewise.
* graphite-scop-detection.c: Likewise.
* graphite-scop-detection.h: Likewise.
* graphite-sese-to-poly.c: Likewise.
* graphite.c: Likewise.
* godump.c: Likewise.
* haifa-sched.c: Likewise.
* hw-doloop.c: Likewise.
* hw-doloop.h: Likewise.
* ifcvt.c: Likewise.
* insn-addr.h: Likewise.
* ipa-cp.c: Likewise.
* ipa-inline-analysis.c: Likewise.
* ipa-inline-transform.c: Likewise.
* ipa-inline.c: Likewise.
* ipa-inline.h: Likewise.
* ipa-prop.c: Likewise.
* ipa-prop.h: Likewise.
* ipa-pure-const.c: Likewise.
* ipa-ref-inline.h: Likewise.
* ipa-ref.c: Likewise.
* ipa-ref.h: Likewise.
* ipa-reference.c: Likewise.
* ipa-split.c: Likewise.
* ipa-utils.c: Likewise.
* ipa-utils.h: Likewise.
* ipa.c: Likewise.
* ira-build.c: Likewise.
* ira-color.c: Likewise.
* ira-emit.c: Likewise.
* ira-int.h: Likewise.
* ira.c: Likewise.
* loop-invariant.c: Likewise.
* loop-unroll.c: Likewise.
* lower-subreg.c: Likewise.
* lra-lives.c: Likewise.
* lra.c: Likewise.
* lto-cgraph.c: Likewise.
* lto-section-out.c: Likewise.
* lto-streamer-in.c: Likewise.
* lto-streamer-out.c: Likewise.
* lto-streamer.h: Likewise.
* lto-symtab.c: Likewise.
* mcf.c: Likewise.
* modulo-sched.c: Likewise.
* omp-low.c: Likewise.
* opts-common.c: Likewise.
* opts-global.c: Likewise.
* opts.c: Likewise.
* opts.h: Likewise.
* passes.c: Likewise.
* predict.c: Likewise.
* print-tree.c: Likewise.
* profile.c: Likewise.
* profile.h: Likewise.
* read-rtl.c: Likewise.
* ree.c: Likewise.
* reg-stack.c: Likewise.
* regrename.c: Likewise.
* regrename.h: Likewise.
* reload.c: Likewise.
* reload.h: Likewise.
* reload1.c: Likewise.
* rtl.h: Likewise.
* sched-deps.c: Likewise.
* sched-int.h: Likewise.
* sdbout.c: Likewise.
* sel-sched-dump.c: Likewise.
* sel-sched-ir.c: Likewise.
* sel-sched-ir.h: Likewise.
* sel-sched.c: Likewise.
* sese.c: Likewise.
* sese.h: Likewise.
* statistics.h: Likewise.
* stmt.c: Likewise.
* stor-layout.c: Likewise.
* store-motion.c: Likewise.
* tlink.c: Likewise.
* toplev.c: Likewise.
* trans-mem.c: Likewise.
* tree-browser.c: 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-diagnostic.c: Likewise.
* tree-dump.c: Likewise.
* tree-eh.c: Likewise.
* tree-emutls.c: Likewise.
* tree-flow.h: Likewise.
* tree-if-conv.c: Likewise.
* tree-inline.c: Likewise.
* tree-inline.h: Likewise.
* tree-into-ssa.c: Likewise.
* tree-iterator.c: Likewise.
* tree-loop-distribution.c: Likewise.
* tree-mudflap.c: Likewise.
* tree-optimize.c: Likewise.
* tree-outof-ssa.c: Likewise.
* tree-parloops.c: Likewise.
* tree-phinodes.c: Likewise.
* tree-predcom.c: Likewise.
* tree-pretty-print.c: Likewise.
* tree-scalar-evolution.c: Likewise.
* tree-sra.c: Likewise.
* tree-ssa-address.c: Likewise.
* tree-ssa-alias.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-coalesce.c: Likewise.
* tree-ssa-dce.c: Likewise.
* tree-ssa-dom.c: Likewise.
* tree-ssa-forwprop.c: Likewise.
* tree-ssa-live.c: Likewise.
* tree-ssa-live.h: 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-math-opts.c: Likewise.
* tree-ssa-operands.c: 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-sccvn.h: Likewise.
* tree-ssa-strlen.c: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-ssa-tail-merge.c: Likewise.
* tree-ssa-threadedge.c: Likewise.
* tree-ssa-threadupdate.c: Likewise.
* tree-ssa-uncprop.c: Likewise.
* tree-ssa-uninit.c: Likewise.
* tree-ssa.c: Likewise.
* tree-ssanames.c: Likewise.
* tree-stdarg.c: Likewise.
* tree-streamer-in.c: Likewise.
* tree-streamer-out.c: Likewise.
* tree-streamer.c: Likewise.
* tree-streamer.h: Likewise.
* tree-switch-conversion.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.h: Likewise.
* value-prof.c: Likewise.
* value-prof.h: Likewise.
* var-tracking.c: Likewise.
* varasm.c: Likewise.
* varpool.c: Likewise.
* vmsdbgout.c: Likewise.
* config/bfin/bfin.c: Likewise.
* config/c6x/c6x.c: Likewise.
* config/darwin.c: Likewise.
* config/i386/i386.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/mep/mep.c: Likewise.
* config/mips/mips.c: Likewise.
* config/pa/pa.c: Likewise.
* config/rs6000/rs6000-c.c: Likewise.
* config/rs6000/rs6000.c: Likewise.
* config/rx/rx.c: Likewise.
* config/spu/spu-c.c: Likewise.
* config/vms/vms.c: Likewise.
* config/vxworks.c: Likewise.
* config/epiphany/resolve-sw-modes.c: Likewise.
2012-11-17 Jakub Jelinek <>
PR tree-optimization/55236
* fold-const.c (make_range_step) <case NEGATE_EXPR>: For -fwrapv
and signed ARG0_TYPE, force low and high to be non-NULL.
2012-11-17 H.J. Lu <>
* common.opt (static-libasan): New option.
* gcc.c (LIBASAN_SPEC): New macro.
(LINK_COMMAND_SPEC): Replace -lasan with LIBASAN_SPEC.
* doc/invoke.texi: Document -static-libasan.
2012-11-17 Vladimir Makarov <>
PR rtl-optimization/55342
* lra-assigns.c (spill_for): Try to allocate other reload pseudos
before and after spilling.
2012-11-16 Sandra Loosemore <>
* doc/extend.texi: Various copy-edits to comply with GCC coding
standards for spelling, terminology, and markup, including use of
American spelling, correct use of terms like "back end" and
"run time", use correct name for GCC, use "@:" markup.
2012-11-16 Jakub Jelinek <>
PR tree-optimization/55329
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Never clear
bits in needed_eh_cleanup while iterating over the bitmap.
Look through all forwarder blocks at once.
2012-11-16 Jan Hubicka <>
* params.def (max-peeled-insns, max-completely-peeled-insns): Reduce
to 100.
2012-11-16 Simon Baldwin <>
* doc/cppopts.texi: Document -f[no-]canonical-system-headers.
* doc/install.texi: Document --enable-canonical-system-headers.
2012-11-16 Vladimir Makarov <>
PR rtl-optimization/55330
* lra-constraints.c (MAX_INHERITANCE_PASSES): New macro.
(lra_inheritance, lra_undo_inheritance): Use it to limit number of
the passes.
2012-11-16 Matthias Klose <>
* config/pa/t-linux: New file; define MULTIARCH_DIRNAME.
* config.gcc <hppa*64*-*-linux*, hppa*-*-linux*> (tmake_file):
Include pa/t-linux.
2012-11-16 Jakub Jelinek <>
PR target/54073
* config/i386/ (mov<mode>cc): Use comparison_operator
instead of ordered_comparison_operator resp.
ix86_fp_comparison_operator predicates.
* config/i386/i386.c (ix86_expand_fp_movcc): Reject TImode
or for -m32 DImode comparisons.
2012-11-16 Jan Hubicka <>
PR tree-optimization/54717
* tree-ssa-pre.c (do_partial_partial_insertion): Consider also edges
with ANTIC_IN.
2012-11-16 Uros Bizjak <>
* config/i386/i386-protos.h (ix86_emit_mode_set): Add third argument.
* config/i386/i386.h (EMIT_MODE_SET): Update.
* config/i386/i386.c (ix86_avx_emit_vzeroupper): New function.
(ix86_emit_mode_set) <AVX_U128>: Call ix86_avx_emit_vzeroupper.
2012-11-16 Ganesh Gopalasubramanian <>
bdver3 Enablement
* doc/extend.texi: Add details about bdver3.
* doc/invoke.texi: Add details about bdver3.
* config.gcc (i[34567]86-*-linux* | ...): Add bdver3.
(case ${target}): Add bdver3.
* config/i386/i386.h (TARGET_BDVER3): New definition.
* config/i386/ (define_attr "cpu"): Add bdver3.
* config/i386/ (sseshuf, sseshuf1): New type attributes.
* config/i386/ Handle sseshuf attribute.
* config/i386/ Likewise.
* config/i386/ Likewise.
* config/i386/ Likewise.
* config/i386/i386.opt (flag_dispatch_scheduler): Add bdver3.
* config/i386/i386-c.c (ix86_target_macros_internal): Add
bdver3 def_and_undef
* config/i386/driver-i386.c (host_detect_local_cpu): Let
-march=native recognize bdver3 processors.
* config/i386/i386.c (struct processor_costs bdver3_cost): New.
(m_BDVER3): New definition.
(m_AMD_MULTIPLE): Includes m_BDVER3.
(initial_ix86_tune_features): Add bdver3 tune.
(processor_target_table): Add bdver3 entry.
(static const char *const cpu_names): Add bdver3 entry.
(software_prefetching_beneficial_p): Add bdver3.
(ix86_option_override_internal): Add bdver3 instruction sets.
(ix86_option_override_internal): Remove XSAVEOPT for bdver1 and bdver2.
(ix86_issue_rate): Add bdver3.
(ix86_adjust_cost): Add bdver3.
(enum target_cpu_default): Add TARGET_CPU_DEFAULT_bdver3.
(enum processor_type): Add PROCESSOR_BDVER3.
* config/i386/ New file describing bdver3 pipelines.
2012-11-15 David S. Miller <>
* expmed.c (expand_shift_1): Don't strip non-integral SUBREGs.
* Add check for assembler SPARC4 instruction support.
* configure: Rebuild.
* Add HAVE_AS_SPARC4 section.
* config/sparc/sparc.opt (mcbcond): New option.
* doc/invoke.texi: Document it.
* config/sparc/ New constraint 'A' for 5-bit signed
* doc/md.texi: Document it.
* config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_CBCOND.
(sparc_option_override): Likewise.
(emit_cbcond_insn): New function.
(emit_conditional_branch_insn): Call it.
(emit_cbcond_nop): New function.
(output_ubranch): Use cbcond, remove label arg.
(output_cbcond): New function.
* config/sparc/sparc-protos.h (output_ubranch): Update.
(output_cbcond): Declare it.
(emit_cbcond_nop): Likewise.
* config/sparc/ (type attribute): New types 'cbcond'
and uncond_cbcond.
(emit_cbcond_nop): New attribute.
(length attribute): Handle cbcond and uncond_cbcond.
(in_call_delay attribute): Reject cbcond and uncond_cbcond.
(in_branch_delay attribute): Likewise.
(in_uncond_branch_delay attribute): Likewise.
(in_annul_branch_delay attribute): Likewise.
(*cbcond_sp32, *cbcond_sp64): New insn patterns.
(jump): Rewrite into an expander.
(*jump_ubranch, *jump_cbcond): New patterns.
* config/sparc/ Match 'cbcond' in 'n4_cti'.
* config/sparc/sparc.h (AS_NIAGARA4_FLAG): New macro, use it
when target default is niagara4.
(SPARC_SIMM5_P): Define.
* config/sparc/sol2.h (AS_SPARC64_FLAG): Adjust.
(AS_SPARC32_FLAG): Define.
AS_NIAGARA4_FLAG as needed.
2012-11-15 Steve Ellcey <>
* expr.c (expand_cond_expr_using_cmove): Use promoted mode for temp.
2012-11-15 Tom de Vries <>
PR tree-optimization/54619
* tree-ssa-loop-ivopts.c (get_use_type): New function.
(get_computation_at): Use get_use_type.
(get_computation_cost_at): Declare and set mem_mode. Use mem_mode.
2012-11-15 Jakub Jelinek <>
* asan.c (report_error_func): Set DECL_IGNORED_P, don't touch
(asan_init_func): Likewise.
(asan_finish_file): Use void * instead of __asan_global * as type of
__asan_{,un}register_globals. Set DECL_IGNORED_P on the decls.
2012-11-15 Matthias Klose <>
* (if_multiarch): Don't use a GNU make 3.81 feature.
2012-11-14 Jan Hubicka <>
PR bootstrap/55051
* gcov-io.c (gcov_read_summary): Fix array bound check.
2012-11-14 Sterling Augustine <>
PR debug/55328
* dwarf2out.c (index_address_table_entry): Check a node's refcount.
2012-11-14 Jan Hubicka <>
PR bootstrap/55051
* ipa-inline.c (edge_badness): Improve dumping; fix overflow.
2012-11-14 Matthias Klose <>
* config/sparc/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
* config/sparc/t-linux: New file; define MULTIARCH_DIRNAME.
* config.gcc <sparc-*-linux*> (tmake_file): Include sparc/t-linux
for 32bit non-biarch configurations.
2012-11-14 Matthias Klose <>
* doc/invoke.texi: Document -print-multiarch.
* doc/install.texi: Document --enable-multiarch.
* doc/fragments.texi: Document MULTILIB_OSDIRNAMES, MULTIARCH_DIRNAME.
* Add --enable-multiarch option.
* configure: Regenerate.
* (s-mlib): Pass MULTIARCH_DIRNAME to genmultilib.
enable_multiarch, with_float: New macros.
if_multiarch: New macro, define in terms of enable_multiarch.
* genmultilib: Add new argument for the multiarch name.
* gcc.c (multiarch_dir): Define.
(for_each_path): Search for multiarch suffixes.
(driver_handle_option): Handle multiarch option.
(do_spec_1): Pass -imultiarch if defined.
(main): Print multiarch.
(set_multilib_dir): Separate multilib and multiarch names
from multilib_select.
(print_multilib_info): Ignore multiarch names in multilib_select.
* incpath.c (add_standard_paths): Search the multiarch include dirs.
* cppdefault.h (default_include): Document multiarch in multilib
include directory for multiarch directories.
* common.opt: New options --print-multiarch and -imultilib.
* config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file):
Include i386/t-linux.
<i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu> (tmake_file):
Include i386/t-kfreebsd.
<i[34567]86-*-gnu*> (tmake_file): Include i386/t-gnu.
* config/i386/t-linux64: Add multiarch names in
* config/i386/t-gnu: New file.
* config/i386/t-kfreebsd: Likewise.
* config/i386/t-linux: Likewise.
2012-11-14 Jan Hubicka <>
* tree.c (set_call_expr_flags): New function.
(local_define_builtin): Use it.
* tree.h (set_call_expr_flags): Declare.
2012-11-14 Uros Bizjak <>
Vladimir Yakovlev <>
PR target/47440
* config/i386/i386.c (gate_insert_vzeroupper): New function.
(rest_of_handle_insert_vzeroupper): Ditto.
(struct rtl_opt_pass pass_insert_vzeroupper): New.
(ix86_option_override): Register vzeroupper insertion pass here.
(ix86_check_avx256_register): Handle SUBREGs properly.
(ix86_init_machine_status): Remove optimize_mode_switching[AVX_U128]
2012-11-14 David Edelsohn <>
* (HAVE_LD_LARGE_TOC): Add AIX test.
* configure: Regenerated.
* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Warn if
other toc options used with cmodel. Disable TARGET_NO_FP_IN_TOC
(ASM_SPEC): -mvsx implies -mpwr6. Add -many.
(ASM_DEFAULT_SPEC): Use -mpwr4.
(SET_CMODEL): Define.
* config/rs6000/ (largetoc_high_aix<mode>): New.
(largetoc_high_plus_aix<mode>): New.
(largetoc_low<mode>): Change to mode iterator. Test TARGET_TOC
instead of TARGET_ELF.
(tocref): Remove TARGET_ELF test.
* config/rs6000/rs6000.c (output_toc): Use [TE] for large TOC
symbols on AIX.
* config/rs6000/aix64.opt (mcmodel): New.
2012-11-14 Andreas Tobler <>
* config/i386/i386.c (ix86_get_function_versions_dispatcher): Guard
variables with ASM_OUTPUT_TYPE_DIRECTIVE and
2012-11-13 Ian Lance Taylor <>
* common.opt (fPIC, fPIE, fpic, fpie): Create a Negative loop such
that any of these options disables the others.
2012-11-13 Sriraman Tallam <>
* cgraph.c (insert_new_cgraph_node_version): Use cgraph_get_node
instead of cgraph_get_create_node.
* config/i386/i386.c (ix86_get_function_versions_dispatcher): Move
ifunc not supported code to the end.
2012-11-13 Martin Jambor <>
PR tree-optimization/55253
* ipa-cp.c (merge_aggregate_lattices): Propagate aggs_contain_variable
2012-11-13 Eric Botcazou <>
H.J. Lu <>
PR middle-end/55142
* config/i386/i386.c (legitimize_pic_address): Properly handle
(ix86_print_operand_address): Set code to 'k' when forcing
addr32 prefix. For x32, zero-extend negative displacement if
it < -16*1024*1024.
2012-11-13 Uros Bizjak <>
PR target/41993
* mode-switching.c (create_pre_exit): Set return_copy to last_insn if
copy_start is not a function return regno. Skip debug instructions
in instruction scan loop.
2012-11-13 Andrew Stubbs <>
Ulrich Weigand <>
* config/arm/arm.c (arm_emit_coreregs_64bit_shift): Fix comment.
* config/arm/ (opt, opt_enabled): New attributes.
(enabled): Use opt_enabled.
(ashldi3, ashrdi3, lshrdi3): Add TARGET_NEON case.
(ashldi3): Allow general operands for TARGET_NEON case.
* config/arm/ (rshifts): New code iterator.
(shift, shifttype): New code attributes.
* config/arm/ (UNSPEC_LOAD_COUNT): New unspec type.
(neon_load_count, ashldi3_neon_noclobber, ashldi3_neon,
signed_shift_di3_neon, unsigned_shift_di3_neon,
ashrdi3_neon_imm_noclobber, lshrdi3_neon_imm_noclobber,
<shift>di3_neon): New patterns.
2012-11-13 Jakub Jelinek <>
* (asan.o): Depend on $(TM_P_H).
PR tree-optimization/55281
* tree-vect-generic.c (expand_vector_condition): Accept any
is_gimple_val rather than just SSA_NAME if not COMPARISON_CLASS_P.
* fold-const.c (fold_ternary_loc): Fold VEC_COND_EXPR if arg0 is
either integer_all_onesp or integer_zerop.
* tree-vect-stmts.c (vectorizable_condition): Build the condition
using corresponding vector integer type instead of vectype.
PR rtl-optimization/54127
* cfgrtl.c (force_nonfallthru_and_redirect): When redirecting
asm goto labels from BB_HEAD (e->dest) to target bb, decrement
LABEL_NUSES of BB_HEAD (e->dest) and increment LABEL_NUSES of
BB_HEAD (target) appropriately and adjust JUMP_LABEL and/or
2012-11-12 Jakub Jelinek <>
* asan.c (instrument_builtin_call) <case BUILT_IN_BCOPY>: Fix up
dest assignment.
2012-11-13 Hans-Peter Nilsson <>
PR target/55257
* config/cris/cris.c (cris_asm_output_mi_thunk): Call
final_start_function and final_end_function.
2012-11-12 David Edelsohn <>
* asan.c: Include tm_p.h.
2012-11-12 John David Anglin <>
PR target/55195
* config/pa/ (attr type): Add sibcall and sh_func_adrs insn types.
(in_branch_delay): Don't allow sibcall or sh_func_adrs insns.
(in_nullified_branch_delay): Likewise.
(in_call_delay): Likewise.
Define delay for sibcall insns. Adjust Z3 and Z4 insn reservations for
new types. Add opaque cond to mark all calls, sibcalls, dyncalls and
the $$sh_func_adrs call as variable. Update type of sibcalls and
$$sh_func_adrs call.
* config/pa/pa.c (pa_adjust_insn_length): Revise to return updated
length instead of adjustment. Handle negative and undefined call
adjustments for insn_default_length. Remove adjustment for millicode
insn with unfilled delay slot.
(pa_output_millicode_call): Update for revised millicode length.
* config/pa/pa.h (ADJUST_INSN_LENGTH): Revise to set LENGTH.
2012-11-12 Eric Botcazou <>
* tree-ssa-ccp.c (dump_lattice_value) <CONSTANT>: Fix duplication.
2012-11-12 Eric Botcazou <>
* common.opt (fvar-tracking-uninit): Document.
* toplev.c (process_options): Fix handling of flag_var_tracking_uninit.
* config/darwin.c (darwin_override_options): Likewise.
2012-11-12 Steven Bosscher <>
* sched-vis.c (print_pattern): Handle NULL patterns.
2012-11-12 Steven Bosscher <>
Jakub Jelinek <>
PR rtl-optimization/51447
* df-scan.c (df_get_entry_block_def_set): Add global regs to the set.
* df-problems.c (df_lr_local_compute): Make global regs always live.
* dce.c (deletable_insn_p): Make insns setting a global reg
inherently necessary.
2012-11-12 Ian Bolton <>
* config/aarch64/ (cmov<mode>_insn): Emit CSINC when
one of the alternatives is constant 1.
* config/aarch64/ New constraint.
* config/aarch64/ Rename predicate
aarch64_reg_zero_or_m1 to aarch64_reg_zero_or_m1_or_1.
2012-11-12 Ian Bolton <>
* config/aarch64/ (*compare_neg<mode>): New pattern.
2012-11-12 Tobias Burnus <>
* doc/invoke.texi: Move -faddress-sanitizer from Optimization
Options to Debugging Options.
2012-11-12 Jakub Jelinek <>
* asan.c: Formatting cleanups.
2012-11-12 Wei Mi <>
* gcc.c (LINK_COMMAND_SPEC): Add -lasan to link command if
-faddress-sanitizer is on.
2012-11-12 Dodji Seketeli <>
* gimple.h (is_gimple_builtin_call): Declare ...
* gimple.c (is_gimple_builtin_call): ... new public function.
* asan.c (insert_if_then_before_iter, instrument_mem_region_access,
instrument_strlen_call, maybe_instrument_builtin_call,
instrument_call): New static functions.
(create_cond_insert_point): Renamed
create_cond_insert_point_before_iter into this. Add a new
parameter to decide whether to insert the condition before or
after the statement iterator.
(build_check_stmt): Adjust for the new create_cond_insert_point.
Add a new parameter to decide whether to add the instrumentation
code before or after the statement iterator.
(instrument_assignment): Factorize from ...
(transform_statements): ... here. Use maybe_instrument_call to
instrument builtin function calls as well.
(instrument_derefs): Adjust for the new parameter of
build_check_stmt. Fix detection of bit-field access.
2012-11-12 Dodji Seketeli <>
* asan.c (create_cond_insert_point_before_iter): Factorize out of ...
(build_check_stmt): ... here.
2012-11-12 Dodji Seketeli <>
* asan.c (create_cond_insert_point_before_iter): Factorize out of ...
(build_check_stmt): ... here.
2012-11-12 Dodji Seketeli <>
* asan.c (build_check_stmt): Accept the memory access to be
represented by an SSA_NAME.
2012-11-12 Jakub Jelinek <>
Wei Mi <>
* varasm.c: Include asan.h.
(assemble_noswitch_variable): Grow size by asan_red_zone_size
if decl is asan protected.
(place_block_symbol): Likewise.
(assemble_variable): If decl is asan protected, increase
DECL_ALIGN if needed, and for decls emitted using
assemble_variable_contents append padding zeros after it.
* (varasm.o): Depend on asan.h.
* asan.c: Include output.h.
(asan_pp, asan_pp_initialized, asan_ctor_statements): New variables.
(asan_pp_initialize, asan_pp_string): New functions.
(asan_emit_stack_protection): Use asan_pp{,_initialized}
instead of local pp{,_initialized} vars, use asan_pp_initialize
and asan_pp_string helpers.
(asan_needs_local_alias, asan_protect_global,
asan_global_struct, asan_add_global): New functions.
(asan_finish_file): Protect global vars that can be protected. Use
asan_ctor_statements instead of ctor_statements
* asan.h (asan_protect_global): New prototype.
(asan_red_zone_size): New inline function.
2012-11-12 Jakub Jelinek <>
* (asan.o): Depend on $(EXPR_H) $(OPTABS_H).
(cfgexpand.o): Depend on asan.h.
* asan.c: Include expr.h and optabs.h.
(asan_shadow_set): New variable.
(asan_shadow_cst, asan_emit_stack_protection): New functions.
(asan_init_shadow_ptr_types): Initialize also asan_shadow_set.
* cfgexpand.c: Include asan.h. Define HOST_WIDE_INT heap vector.
(partition_stack_vars): If i is large alignment and j small
alignment or vice versa, break out of the loop instead of continue,
and put the test earlier. If flag_asan, break out of the loop
if for small alignment size is different.
(struct stack_vars_data): New type.
(expand_stack_vars): Add DATA argument. Change PRED type to
function taking size_t argument instead of tree. Adjust pred
calls. Fill DATA in and add needed padding in between variables
if -faddress-sanitizer.
(defer_stack_allocation): Defer everything for flag_asan.
(stack_protect_decl_phase_1, stack_protect_decl_phase_2): Take
size_t index into stack_vars array instead of the decl directly.
(asan_decl_phase_3): New function.
(expand_used_vars): Return var destruction sequence. Adjust
expand_stack_vars calls, add another one for flag_asan. Call
asan_emit_stack_protection if expand_stack_vars added anything
to the vectors.
(expand_gimple_basic_block): Add disable_tail_calls argument.
(gimple_expand_cfg): Pass true to it if expand_used_vars returned
non-NULL. Emit the sequence returned by expand_used_vars after
* asan.h (asan_emit_stack_protection): New prototype.
(asan_shadow_set): New decl.
(asan_protect_stack_decl): New inline.
* toplev.c (process_options): Also disable -faddress-sanitizer on
2012-11-12 Jakub Jelinek <>
* asan.c (build_check_stmt): Rename join_bb variable to else_bb.
(gate_asan_O0): New function.
(pass_asan_O0): New variable.
* passes.c (init_optimization_passes): Add pass_asan_O0.
* tree-pass.h (pass_asan_O0): New declaration.
2012-11-12 Jakub Jelinek <>
Xinliang David Li <>
Dodji Seketeli <>
* (GTFILES): Add $(srcdir)/asan.c.
(asan.o): Update the dependencies of asan.o.
* asan.c (tm.h, tree.h, tm_p.h, basic-block.h, flags.h
function.h, tree-inline.h, tree-dump.h, diagnostic.h, demangle.h,
langhooks.h, ggc.h, cgraph.h, gimple.h): Remove these unused but
included headers.
(shadow_ptr_types): New variable.
(report_error_func): Change is_store argument to bool, don't append
newline to function name.
(build_check_stmt): Change is_store argument to bool. Emit GIMPLE
directly instead of creating trees and gimplifying them. Mark
the error reporting function as very unlikely.
(instrument_derefs): Change is_store argument to bool. Use
int_size_in_bytes to compute size_in_bytes, simplify size check.
Use build_fold_addr_expr instead of build_addr.
(transform_statements): Adjust instrument_derefs caller.
Use gimple_assign_single_p as stmt test. Don't look at MEM refs
in rhs2.
(asan_init_shadow_ptr_types): New function.
(asan_instrument): Don't push/pop gimplify context.
Call asan_init_shadow_ptr_types if not yet initialized.
* asan.h (ASAN_SHADOW_SHIFT): Adjust comment.
2012-11-12 Jakub Jelinek <>
* toplev.c (process_options): Warn and turn off
-faddress-sanitizer if not supported by target.
* asan.c: Include target.h.
(asan_scale, asan_offset_log_32, asan_offset_log_64,
asan_offset_log): Removed.
(build_check_stmt): Use ASAN_SHADOW_SHIFT and
targetm.asan_shadow_offset ().
(asan_instrument): Don't initialize asan_offset_log.
* asan.h (ASAN_SHADOW_SHIFT): Define.
* target.def (TARGET_ASAN_SHADOW_OFFSET): New hook.
* doc/tm.texi: Regenerated.
* (asan.o): Depend on $(TARGET_H).
* config/i386/i386.c (ix86_asan_shadow_offset): New function.
2012-11-12 Wei Mi <>
Diego Novillo <>
Dodji Seketeli <>
* Add asan.c and its dependencies.
* common.opt: Add -faddress-sanitizer option.
* doc/invoke.texi: Document the new flag.
* passes.c: Add the asan pass.
* toplev.c (compile_file): Call asan_finish_file.
* asan.c: New file.
* asan.h: New file.
* tree-pass.h: Declare pass_asan.
2012-11-12 Tobias Burnus <>
* diagnostic.c (diagnostic_append_note): Also call va_end when
inhibit_notes_p is true.
2012-11-12 Bin Cheng <>
* gcse.c (struct bb_data): Add new fields, old_pressure, live_in
and backup.
(get_regno_pressure_class): Add prototype.
(update_bb_reg_pressure): New.
(should_hoist_expr_to_dom): Add new parameter from.
Monitor the change of reg pressure and use it to drive hoisting.
(hoist_code): Update LIVE and reg pressure information.
(calculate_bb_reg_pressure): Initialize live_in and backup.
2012-11-12 Oleg Endo <>
* doc/md.texi (Standard Pattern Names For Generation): Fix swapped
sine and cosine operands in the sincos description.
2012-11-12 Oleg Endo <>
PR target/53512
* config/sh/ (sincossf3): Fix swapped sin and cos operands.
2012-11-11 H.J. Lu <>
* config/i386/ (*movti_internal_rex64): Remove "!" from
riF->o alternative.
2012-11-11 Eric Botcazou <>
* config/sparc/sparc.h (AS_NIAGARA3_FLAG): Tweak.
* config/sparc/sol2.h (TARGET_CPU_niagara4 support): Fix pasto.
2012-11-11 Eric Botcazou <>
H.J. Lu <>
PR rtl-optimization/55247
PR middle-end/55259
* emit-rtl.c (adjust_address_1): If POINTERS_EXTEND_UNSIGNED > 0,
* recog.c (offsettable_address_addr_space_p): Likewise.
2012-11-11 Steven Bosscher <>