Linaro GCC 4.6-2011.07

Milestone information

Project:
Linaro GCC
Series:
4.6
Version:
4.6-2011.07
Released:
2011-07-21  
Registrant:
Michael Hope
Release registered:
2011-07-20
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
4 Ramana Radhakrishnan, 4 Richard Sandiford
Blueprints:
1 Implemented
Bugs:
9 Fix Released

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon gcc-linaro-4.6-2011.07.tar.bz2 (md5, sig) Linaro GCC Source 563
last downloaded 24 hours ago
Total downloads: 563

Release notes 

Linaro GCC 4.6 is the fifth release in the 4.6 series. Based off the
latest GCC 4.6.1+svn175677, it adds new optimisations and vectoriser
improvements.

Interesting changes include:
 * Updates to 4.6.1+r175677
 * Improves support for vector shifts by a constant
 * Improves handling of memory dependencies in the SMS optimisation
 * Improved vectorisation of widening multiplies by keeping the operands smaller for longer
 * Improves the peeling of potentially misaligned vectorised loops
 * Improved vectorisation of signed and unsigned widening multiplies by a constant
 * Merges the new upstream Cortex-A5 tuning

Fixes:
 * LP: #721531: Don't optimise out testing of the Thumb mode bit on function pointers
 * LP: #723185: ICE in reload_cse_simplify_operands when compiling with -marm -mfpu=neon
 * LP: #744754: ICE in *neon_movoi when using NEON intrinsics
 * LP: #791327: ICE due to using the stack pointer in RSB instructions
 * LP: #797748: ICE building SPEC2006 403.gcc emit-rtl.c
 * LP: #803232: ICE on code that uses vld4q_s16() NEON intrinsic
 * LP: #809435: Omit building the target libiberty when building a cross compiler
 * LP: #807573: ICE in *truncsisf2_vfp: Could not find a spill register
 * PR 49385: Ensure at least one of the operands is a register in thumb2_movhi_insn
 * Fixes an EABI unwinding bug that improves interoperability with armcc
 * Fixes a DWARF 2 problem exposed through shrinkwrap.
 * Fixes a bug in __builtin_isgreaterequal

Known issues:
 * Building Python 2.7 with -mfpu=neon exposes a bug in vmov.i64 in binutils 2.20.51. Please use 2.21 or later.

The source tarball is available from:
 https://launchpad.net/gcc-linaro/+milestone/4.6-2011.07

Downloads are available from the Linaro GCC page on Launchpad:
 https://launchpad.net/gcc-linaro

Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Bugs: https://bugs.launchpad.net/gcc-linaro/

Questions? https://ask.linaro.org/

Interested in commercial support? inquire at support@linaro.org

Changelog 

View the full changelog

2011-07-15 Michael Hope <email address hidden>

 Backport from mainline r174540
 LP: #807573

 gcc/
 2011-06-01 Richard Sandiford <email address hidden>

 PR rtl-optimization/48830
 PR rtl-optimization/48808
 PR rtl-optimization/48792
 * reload.c (push_reload): Check contains_reg_of_mode.
 * reload1.c (strip_paradoxical_subreg): New function.
 (gen_reload_chain_without_interm_reg_p): Use it to handle
 paradoxical subregs.
 (emit_output_reload_insns, gen_reload): Likewise.

 gcc/testsuite/
 2011-06-01 Eric Botcazou <email address hidden>
      Hans-Peter Nilsson <email address hidden>

 PR rtl-optimization/48830
 * gcc.target/sparc/ultrasp12.c: New test.

2011-07-15 Michael Hope <email address hidden>

 gcc/
 Backport from mainline:

 2011-06-29 Nathan Sidwell <email address hidden>

 * config/arm/unwind-arm.c (enum __cxa_type_match_result): New.
 (cxa_type_match): Correct declaration.
 (__gnu_unwind_pr_common): Reconstruct
 additional indirection when __cxa_type_match returns
 succeeded_with_ptr_to_base.

 libstdc++-v3/
 Backport from mainline:

 2011-06-29 Nathan Sidwell <email address hidden>

 * libsupc++/eh_arm.c (__cxa_type_match): Construct address of
 thrown object here. Return succeded_with_ptr_to_base for all
 pointer cases.

2011-07-15 Michael Hope <email address hidden>

 gcc/
 Backport from mainline:

 2011-03-22 Eric Botcazou <email address hidden>

 * combine.c (simplify_set): Try harder to find the best CC mode when
 simplifying a nested COMPARE on the RHS.

2011-07-15 Michael Hope <email address hidden>

 gcc/
 Backport from mainline:

 2011-04-05 Eric Botcazou <email address hidden>

 * ifcvt.c (cond_exec_process_insns): Disallow converting a block
 that contains the prologue.

 gcc/testsuite/
 Backport from mainline:

 2011-04-01 Bernd Schmidt <email address hidden>

 * gcc.c-torture/compile/20110401-1.c: New test.

2011-07-13 Richard Sandiford <email address hidden>

 Backport from mainline:
 gcc/
 2011-07-07 Richard Sandiford <email address hidden>

 * reload1.c (choose_reload_regs): Use mode sizes to check whether
 an old reload register completely defines the required value.

 gcc/testsuite/
 2011-07-07 Richard Sandiford <email address hidden>

 * gcc.target/arm/neon-modes-3.c: New test.

2011-07-11 Ramana Radhakrishnan <email address hidden>

 gcc/
 2011-06-22 Dmitry Plotnikov <email address hidden>
 Dmitry Melnik <email address hidden>

 * config/arm/arm.c (neon_immediate_valid_for_shift): New function.
 (neon_output_shift_immediate): Ditto.
 * config/arm/arm-protos.h (neon_immediate_valid_for_shift): New
 prototype.
 (neon_output_shift_immediate): Ditto.
 * config/arm/neon.md (vashl<mode>3): Modified constraint.
 (vashr<mode>3_imm): New insn pattern.
 (vlshr<mode>3_imm): Ditto.
 (vashr<mode>3): Modified constraint.
 (vlshr<mode>3): Ditto.
 * config/arm/predicates.md (imm_for_neon_lshift_operand): New
 predicate.
 (imm_for_neon_rshift_operand): Ditto.
 (imm_lshift_or_reg_neon): Ditto.
 (imm_rshift_or_reg_neon): Ditto.

 * optabs.c (init_optabs): Init optab codes for vashl, vashr, vlshr.

 gcc/testsuite
 2011-06-22 Dmitry Plotnikov <email address hidden>
 Dmitry Melnik <email address hidden>

 * gcc.target/arm/neon-vshr-imm-1.c: New testcase.
 * gcc.target/arm/neon-vshl-imm-1.c: New testcase.
 * gcc.target/arm/neon-vlshr-imm-1.c: New testcase.

2011-07-11 Revital Eres <email address hidden>

 Backport from mainline -r175091
 gcc/
 * modulo-sched.c (struct ps_insn): Remove row_rest_count
 field.
 (struct partial_schedule): Add rows_length field.
 (verify_partial_schedule): Check rows_length.
 (ps_insert_empty_row): Handle rows_length.
 (create_partial_schedule): Likewise.
 (free_partial_schedule): Likewise.
 (reset_partial_schedule): Likewise.
 (create_ps_insn): Remove rest_count argument.
 (remove_node_from_ps): Update rows_length.
 (add_node_to_ps): Update rows_length and call create_ps_insn without
 passing row_rest_count.
 (rotate_partial_schedule): Update rows_length.

2011-07-11 Revital Eres <email address hidden>

 Backport from mainline -r175090.
 gcc/
 * ddg.c (add_intra_loop_mem_dep): New function.
 (build_intra_loop_deps): Call it.
 gcc/testsuite
 * gcc.dg/sms-9.c: New file.

2011-07-11 Ira Rosen <email address hidden>

 Backport from FSF:
 2011-06-16 Ira Rosen <email address hidden>

 gcc/
 * tree-vectorizer.h (vect_recog_func_ptr): Change the first
 argument to be a VEC of statements.
 * tree-vect-loop.c (vect_determine_vectorization_factor): Remove the
 assert that pattern statements have to have their vector type set.
 * tree-vect-patterns.c (vect_recog_widen_sum_pattern):
 Change the first argument to be a VEC of statements. Update
 documentation.
 (vect_recog_dot_prod_pattern, vect_recog_pow_pattern): Likewise.
 (vect_handle_widen_mult_by_const): New function.
 (vect_recog_widen_mult_pattern): Change the first argument to be a
 VEC of statements. Update documentation. Check that the constant is
 INTEGER_CST. Support multiplication by a constant that fits an
 intermediate type - call vect_handle_widen_mult_by_const.
 (vect_pattern_recog_1): Update vect_recog_func_ptr and its
 call. Handle additional pattern statements if necessary.

 gcc/testsuite/
 * gcc.dg/vect/vect-widen-mult-half-u8.c: New test.

 and
 2011-06-30 Ira Rosen <email address hidden>

 gcc/
 * tree-vect-loop.c (vect_determine_vectorization_factor): Handle
 both pattern and original statements if necessary.
 (vect_transform_loop): Likewise.
 * tree-vect-patterns.c (vect_pattern_recog): Update documentation.
 * tree-vect-stmts.c (vect_mark_relevant): Add new argument.
 Mark the pattern statement only if the original statement doesn't
 have its own uses.
 (process_use): Call vect_mark_relevant with additional parameter.
 (vect_mark_stmts_to_be_vectorized): Likewise.
 (vect_get_vec_def_for_operand): Use vectorized pattern statement.
 (vect_analyze_stmt): Handle both pattern and original statements
 if necessary.
 (vect_transform_stmt): Don't store vectorized pattern statement
 in the original statement.
 (vect_is_simple_use_1): Use related pattern statement only if the
 original statement is irrelevant.
 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.

 gcc/testsuite/
 * gcc.dg/vect/slp-widen-mult-half.c: New test.
 * gcc.dg/vect/vect-widen-mult-half.c: New test.

2011-07-07 Richard Sandiford <email address hidden>

 gcc/
 * builtins.c (get_object_alignment): Fix comment.
 * fold-const.c (get_pointer_modulus_and_residue): Remove
 allow_func_align. Use get_object_alignment.
 (fold_binary_loc): Update caller.

2011-07-07 Richard Sandiford <email address hidden>

 gcc/
 Backport from mainline:

 2011-06-29 Richard Sandiford <email address hidden>

 PR tree-optimization/49545
 * builtins.c (get_object_alignment_1): Update function comment.
 Do not use DECL_ALIGN for functions, but test
 TARGET_PTRMEMFUNC_VBIT_LOCATION instead.
 * fold-const.c (get_pointer_modulus_and_residue): Don't check
 for functions here.
 * tree-ssa-ccp.c (get_value_from_alignment): Likewise.

 gcc/testsuite/
 Backport from mainline:

 2011-06-29 Richard Sandiford <email address hidden>

 * gcc.dg/torture/pr49169.c: Restrict to ARM and MIPS targets.

2011-07-07 Richard Sandiford <email address hidden>

 gcc/
 Backport from mainline:

 2011-07-27 Richard Guenther <email address hidden>

 PR tree-optimization/49169
 * fold-const.c (get_pointer_modulus_and_residue): Don't rely on
 the alignment of function decls.

 gcc/testsuite/
 Backport from mainline:

 2011-07-27 Michael Hope <email address hidden>
      Richard Sandiford <email address hidden>

 PR tree-optimization/49169
 * gcc.dg/torture/pr49169.c: New test.

2011-07-01 Andrew Stubbs <email address hidden>

 Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch 175677).

2011-07-03 Ira Rosen <email address hidden>

 Backport from FSF:
 2011-06-12 Ira Rosen <email address hidden>

 gcc/
 * tree-vect-data-refs.c (vect_peeling_hash_get_most_frequent):
 Take number of iterations to peel into account for equally frequent
 misalignment values.

2011-07-01 Ramana Radhakrishnan <email address hidden>

 Backport from mainline.
 LP 744754
        2011-04-17 Chung-Lin Tang <email address hidden>

 * config/arm/arm.c (neon_struct_mem_operand):
 Support POST_INC/PRE_DEC memory operands.

2011-06-28 Ramana Radhakrishnan <email address hidden>

 Backport from mainline.
 LP 791327
 gcc/
        2011-06-09 Ramana Radhakrishnan <email address hidden>

 PR target/49335
 * config/arm/predicates.md (add_operator): New.
 * config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage
 in Thumb2.

2011-06-28 Ramana Radhakrishnan <email address hidden>

 Backport from mainline.
 gcc/
 2011-06-24 Ramana Radhakrishnan <email address hidden>

 PR target/49385
 * config/arm/thumb2.md (*thumb2_movhi_insn): Make sure atleast
 one of the operands is a register.

2011-06-28 Ira Rosen <email address hidden>

 Backport from FSF:

 2011-06-07 Ira Rosen <email address hidden>

 gcc/
 * tree-vectorizer.h (vect_recog_func_ptr): Make last argument to be
 a pointer.
 * tree-vect-patterns.c (vect_recog_widen_sum_pattern,
 vect_recog_widen_mult_pattern, vect_recog_dot_prod_pattern,
 vect_recog_pow_pattern): Likewise.
 (vect_pattern_recog_1): Remove declaration.
 (widened_name_p): Remove declaration. Add new argument to specify
 whether to check that both types are either signed or unsigned.
 (vect_recog_widen_mult_pattern): Update documentation. Handle
 unsigned patterns and multiplication by constants.
 (vect_pattern_recog_1): Update vect_recog_func references. Use
 statement information from the statement returned from pattern
 detection functions.
 (vect_pattern_recog): Update vect_recog_func reference.
 * tree-vect-stmts.c (vectorizable_type_promotion): For widening
 multiplication by a constant use the type of the other operand.

 gcc/testsuite
 * lib/target-supports.exp
 (check_effective_target_vect_widen_mult_qi_to_hi):
 Add NEON as supporting target.
 (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
 (check_effective_target_vect_widen_mult_qi_to_hi_pattern): New.
 (check_effective_target_vect_widen_mult_hi_to_si_pattern): New.
 * gcc.dg/vect/vect-widen-mult-u8.c: Expect to be vectorized
 using widening multiplication on targets that support it.
 * gcc.dg/vect/vect-widen-mult-u16.c: Likewise.
 * gcc.dg/vect/vect-widen-mult-const-s16.c: New test.
 * gcc.dg/vect/vect-widen-mult-const-u16.c: New test.

 and

 2011-06-15 Ira Rosen <email address hidden>

 gcc/
 * tree-vect-loop-manip.c (remove_dead_stmts_from_loop): Remove.
 (slpeel_tree_peel_loop_to_edge): Don't call
 remove_dead_stmts_from_loop.
 * tree-vect-loop.c (vect_determine_vectorization_factor): Don't
 remove irrelevant pattern statements. For irrelevant statements
 check if it is the last statement of a detected pattern, use
 corresponding pattern statement instead.
 (destroy_loop_vec_info): No need to remove pattern statements,
 only free stmt_vec_info.
 (vect_transform_loop): For irrelevant statements check if it is
 the last statement of a detected pattern, use corresponding
 pattern statement instead.
 * tree-vect-patterns.c (vect_pattern_recog_1): Don't insert
 pattern statements. Set basic block for the new statement.
 (vect_pattern_recog): Update documentation.
 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Scan
 operands of pattern statements.
 (vectorizable_call): Fix printing. In case of a pattern statement
 use the lhs of the original statement when creating a dummy
 statement to replace the original call.
 (vect_analyze_stmt): For irrelevant statements check if it is
 the last statement of a detected pattern, use corresponding
 pattern statement instead.
 * tree-vect-slp.c (vect_schedule_slp_instance): For pattern
 statements use gsi of the original statement.

 and
 2011-06-21 Ira Rosen <email address hidden>

 PR tree-optimization/49478
 gcc/

 * tree-vect-loop.c (vectorizable_reduction): Handle DOT_PROD_EXPR
 with constant operand.

2011-06-28 Michael Hope <email address hidden>

 gcc/
 Backport from mainline:

 Chung-Lin Tang <email address hidden>
 Richard Earnshaw <email address hidden>

 PR target/48250
 * config/arm/arm.c (arm_legitimize_reload_address): Update cases
 to use sign-magnitude offsets. Reject unsupported unaligned
 cases. Add detailed description in comments.
 * config/arm/arm.md (reload_outdf): Disable for ARM mode; change
 condition from TARGET_32BIT to TARGET_ARM.

 Chung-Lin Tang <email address hidden>

 * config/arm/arm.c (arm_legitimize_reload_address): For NEON
 quad-word modes, reduce to 9-bit index range when above 1016
 limit.

2011-06-20 Ramana Radhakrishnan <email address hidden>

 gcc/
 Backport from mainline.
 2011-06-03 Julian Brown <email address hidden>

 * config/arm/arm-cores.def (strongarm, strongarm110, strongarm1100)
 (strongarm1110): Use strongarm tuning.
 * config/arm/arm-protos.h (tune_params): Add max_insns_skipped
 field.
 * config/arm/arm.c (arm_strongarm_tune): New.
 (arm_slowmul_tune, arm_fastmul_tune, arm_xscale_tune, arm_9e_tune)
 (arm_v6t2_tune, arm_cortex_tune, arm_cortex_a5_tune)
 (arm_cortex_a9_tune, arm_fa726te_tune): Add max_insns_skipped field
 setting, using previous defaults or 1 for Cortex-A5.
 (arm_option_override): Set max_insns_skipped from current tuning.

2011-06-20 Ramana Radhakrishnan <email address hidden>

 gcc/
 Backport from mainline.
 2011-06-02 Julian Brown <email address hidden>

 * config/arm/arm-cores.def (cortex-a5): Use cortex_a5 tuning.
 * config/arm/arm.c (arm_cortex_a5_branch_cost): New.
 (arm_cortex_a5_tune): New.

 2011-06-02 Julian Brown <email address hidden>

 * config/arm/arm-protos.h (tune_params): Add branch_cost hook.
 * config/arm/arm.c (arm_default_branch_cost): New.
 (arm_slowmul_tune, arm_fastmul_tune, arm_xscale_tune, arm_9e_tune)
 (arm_v6t2_tune, arm_cortex_tune, arm_cortex_a9_tune)
 (arm_fa726_tune): Set branch_cost field using
 arm_default_branch_cost.
 * config/arm/arm.h (BRANCH_COST): Use branch_cost hook from
 current_tune structure.
 * dojump.c (tm_p.h): Include file.

        2011-06-02 Julian Brown <email address hidden>

 * config/arm/arm-cores.def (arm1156t2-s, arm1156t2f-s): Use v6t2
 tuning.
 (cortex-a5, cortex-a8, cortex-a15, cortex-r4, cortex-r4f, cortex-m4)
 (cortex-m3, cortex-m1, cortex-m0): Use cortex tuning.
 * config/arm/arm-protos.h (tune_params): Add prefer_constant_pool
 field.
 * config/arm/arm.c (arm_slowmul_tune, arm_fastmul_tune)
 (arm_xscale_tune, arm_9e_tune, arm_cortex_a9_tune)
 (arm_fa726te_tune): Add prefer_constant_pool setting.
 (arm_v6t2_tune, arm_cortex_tune): New.
 * config/arm/arm.h (TARGET_USE_MOVT): Make dependent on
 prefer_constant_pool setting.

2011-06-20 Ramana Radhakrishnan <email address hidden>

 gcc/
 Backport from mainline
 2011-06-01 Paul Brook <email address hidden>
 * config/arm/arm-cores.def: Add cortex-r5. Add DIV flags to
 Cortex-A15.
 * config/arm/arm-tune.md: Regenerate.
 * config/arm/arm.c (FL_DIV): Rename...
 (FL_THUMB_DIV): ... to this.
 (FL_ARM_DIV): Define.
 (FL_FOR_ARCH7R, FL_FOR_ARCH7M): Use FL_THUMB_DIV.
 (arm_arch_hwdiv): Remove.
 (arm_arch_thumb_hwdiv, arm_arch_arm_hwdiv): New variables.
 (arm_issue_rate): Add cortexr5.
 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set
 __ARM_ARCH_EXT_IDIV__.
 (TARGET_IDIV): Define.
 (arm_arch_hwdiv): Remove.
 (arm_arch_arm_hwdiv, arm_arch_thumb_hwdiv): New prototypes.
 * config/arm/arm.md (tune_cortexr4): Add cortexr5.
 (divsi3, udivsi3): New patterns.
 * config/arm/thumb2.md (divsi3, udivsi3): Remove.
 * doc/invoke.texi: Document ARM -mcpu=cortex-r5

1 blueprint and 9 bugs targeted

Blueprint Priority Assignee Delivery
Backport any Tuning for other ARM cores from upstream (some work for this milestone) 4 High Ramana Radhakrishnan  11 Implemented
Bug report Importance Assignee Status
807573 #807573 [armel / 4.6 regression] could not find a spill register 3 High   10 Fix Released
721531 #721531 [armel] gcc computes wrong address for main() at build time 4 Medium Richard Sandiford  10 Fix Released
721531 #721531 [armel] gcc computes wrong address for main() at build time 4 Medium Richard Sandiford  10 Fix Released
723185 #723185 ICE in reload_cse_simplify_operands when compiling with -marm -mfpu=neon 4 Medium Richard Sandiford  10 Fix Released
744754 #744754 ICE in reload_cse_simplify_operands, at postreload.c:402 with neon optimized code 4 Medium Ramana Radhakrishnan  10 Fix Released
791327 #791327 codeblocks version 10.05-2 failed to build on armel 4 Medium Ramana Radhakrishnan  10 Fix Released
797748 #797748 ICE building SPEC2006 403.gcc emit-rtl.c 4 Medium Ramana Radhakrishnan  10 Fix Released
803232 #803232 ICE on code that uses vld4q_s16() NEON intrinsic 4 Medium Richard Sandiford  10 Fix Released
809435 #809435 omit building the target libiberty when building a cross compiler 4 Medium   10 Fix Released
This milestone contains Public information
Everyone can see this information.