Linaro GCC 4.5-2011.01-0

Milestone information

Project:
Linaro GCC
Series:
4.5
Version:
4.5-2011.01-0
Released:
 
Registrant:
Andrew Stubbs
Release registered:
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:
1 Chung-Lin Tang, 6 Ulrich Weigand
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
7 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.5-2011.01-0.tar.bz2 (md5, sig) Linaro GCC Source 503
last downloaded 71 weeks ago
Total downloads: 503

Release notes 

Linaro GCC 4.5 is the sixth release in the 4.5 series. Based off the official GCC 4.5.2 release, it includes many ARM-focused performance improvements and bug fixes.

Interesting changes include:
 * Improved optimization of multiple load instructions, and multiply-and-accumulate.
 * -fshrink-wrap optimization for better use of function prologues and epilogues.
 * plus, various other bug fixes, and minor improvements.

Changelog 

View the full changelog

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

 GCC Linaro 4.5-2011.01-0 released.

 gcc/
 * LINARO-VERSION: Update.

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

 Merge from FSF 4.5 branch r167945 (4.5.2 release).

2010-12-03 Yao Qi <email address hidden>

 * config/arm/arm-ldmstm.ml: Rewrite ldm/stm RTL patterns to fix
 regressions.
 * config/arm/ldmstm.md: Regenreate.

2010-12-03 Yao Qi <email address hidden>

 Backport from FSF mainline:

 2010-08-02 Bernd Schmidt <email address hidden>

 PR target/40457
 * config/arm/arm.h (arm_regs_in_sequence): Declare.
 * config/arm/arm-protos.h (emit_ldm_seq, emit_stm_seq,
 load_multiple_sequence, store_multiple_sequence): Delete
 declarations.
 (arm_gen_load_multiple, arm_gen_store_multiple): Adjust
 declarations.
 * config/arm/ldmstm.md: New file.
 * config/arm/arm.c (arm_regs_in_sequence): New array.
 (load_multiple_sequence): Now static. New args SAVED_ORDER,
 CHECK_REGS. All callers changed.
 If SAVED_ORDER is nonnull, copy the computed order into it.
 If CHECK_REGS is false, don't sort REGS. Handle Thumb mode.
 (store_multiple_sequence): Now static. New args NOPS_TOTAL,
 SAVED_ORDER, REG_RTXS and CHECK_REGS. All callers changed.
 If SAVED_ORDER is nonnull, copy the computed order into it.
 If CHECK_REGS is false, don't sort REGS. Set up REG_RTXS just
 like REGS. Handle Thumb mode.
 (arm_gen_load_multiple_1): New function, broken out of
 arm_gen_load_multiple.
 (arm_gen_store_multiple_1): New function, broken out of
 arm_gen_store_multiple.
 (arm_gen_multiple_op): New function, with code from
 arm_gen_load_multiple and arm_gen_store_multiple moved here.
 (arm_gen_load_multiple, arm_gen_store_multiple): Now just
 wrappers around arm_gen_multiple_op. Remove argument UP, all callers
 changed.
 (gen_ldm_seq, gen_stm_seq, gen_const_stm_seq): New functions.
 * config/arm/predicates.md (commutative_binary_operator): New.
 (load_multiple_operation, store_multiple_operation): Handle more
 variants of these patterns with different starting offsets. Handle
 Thumb-1.
 * config/arm/arm.md: Include "ldmstm.md".
 (ldmsi_postinc4, ldmsi_postinc4_thumb1, ldmsi_postinc3, ldmsi_postinc2,
 ldmsi4, ldmsi3, ldmsi2, stmsi_postinc4, stmsi_postinc4_thumb1,
 stmsi_postinc3, stmsi_postinc2, stmsi4, stmsi3, stmsi2 and related
 peepholes): Delete.
 * config/arm/ldmstm.md: New file.
 * config/arm/arm-ldmstm.ml: New file.

 * config/arm/arm.c (arm_rtx_costs_1): Remove second clause from the
 if statement which adds extra costs to frame-related expressions.

 2010-05-06 Bernd Schmidt <email address hidden>

 * config/arm/arm.h (MAX_LDM_STM_OPS): New macro.
 * config/arm/arm.c (multiple_operation_profitable_p,
 compute_offset_order): New static functions.
 (load_multiple_sequence, store_multiple_sequence): Use them.
 Replace constant 4 with MAX_LDM_STM_OPS. Compute order[0] from
 memory offsets, not register numbers.
 (emit_ldm_seq, emit_stm_seq): Replace constant 4 with MAX_LDM_STM_OPS.

 2010-04-16 Bernd Schmidt <email address hidden>

 * recog.h (struct recog_data): New field is_operator.
 (struct insn_operand_data): New field is_operator.
 * recog.c (extract_insn): Set recog_data.is_operator.
 * genoutput.c (output_operand_data): Emit code to set the
 is_operator field.
 * reload.c (find_reloads): Use it rather than testing for an
 empty constraint string.

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

 gcc/
 * doc/tm.texi (RETURN_ADDR_REGNUM): Document.
 * doc/md.texi (simple_return): Document pattern.
 (return): Add a sentence to clarify.
 * doc/rtl.texi (simple_return): Document.
 * doc/invoke.texi (Optimize Options): Document -fshrink-wrap.
 * common.opt (fshrink-wrap): New.
 * opts.c (decode_options): Set it for -O2 and above.
 * gengenrtl.c (special_rtx): PC, CC0, RETURN and SIMPLE_RETURN
 are special.
 * rtl.h (ANY_RETURN_P): New macro.
 (global_rtl_index): Add GR_RETURN and GR_SIMPLE_RETURN.
 (ret_rtx, simple_return_rtx): New macros.
 * genemit.c (gen_exp): RETURN and SIMPLE_RETURN have unique rtxs.
 (gen_expand, gen_split): Use ANY_RETURN_P.
 * rtl.c (copy_rtx): RETURN and SIMPLE_RETURN are shared.
 * emit-rtl.c (verify_rtx_sharing): Likewise.
 (skip_consecutive_labels): Return the argument if it is a return rtx.
 (classify_insn): Handle both kinds of return.
 (init_emit_regs): Create global rtl for ret_rtx and simple_return_rtx.
 * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
 * rtl.def (SIMPLE_RETURN): New.
 * rtlanal.c (tablejump_p): Check JUMP_LABEL for returns.
 * final.c (final_scan_insn): Recognize both kinds of return.
 * reorg.c (function_return_label, function_simple_return_label): New
 static variables.
 (end_of_function_label): Remove.
 (simplejump_or_return_p): New static function.
 (find_end_label): Add a new arg, KIND. All callers changed.
 Depending on KIND, look for a label suitable for return or
 simple_return.
 (make_return_insns): Make corresponding changes.
 (get_jump_flags): Check JUMP_LABELs for returns.
 (follow_jumps): Likewise.
 (get_branch_condition): Check target for return patterns rather
 than NULL.
 (own_thread_p): Likewise for thread.
 (steal_delay_list_from_target): Check JUMP_LABELs for returns.
 Use simplejump_or_return_p.
 (fill_simple_delay_slots): Likewise.
 (optimize_skip): Likewise.
 (fill_slots_from_thread): Likewise.
 (relax_delay_slots): Likewise.
 (dbr_schedule): Adjust handling of end_of_function_label for the
 two new variables.
 * ifcvt.c (find_if_case_1): Take care when redirecting jumps to the
 exit block.
 (dead_or_predicable): Change NEW_DEST arg to DEST_EDGE. All callers
 changed. Ensure that the right label is passed to redirect_jump.
 * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
 returnjump_p): Handle SIMPLE_RETURNs.
 (delete_related_insns): Check JUMP_LABEL for returns.
 (redirect_target): New static function.
 (redirect_exp_1): Use it. Handle any kind of return rtx as a label
 rather than interpreting NULL as a return.
 (redirect_jump_1): Assert that nlabel is not NULL.
 (redirect_jump): Likewise.
 (redirect_jump_2): Handle any kind of return rtx as a label rather
 than interpreting NULL as a return.
 * dwarf2out.c (compute_barrier_args_size_1): Check JUMP_LABEL for
 returns.
 * function.c (emit_return_into_block): Remove useless declaration.
 (record_hard_reg_sets, frame_required_for_rtx, gen_return_pattern,
 requires_stack_frame_p): New static functions.
 (emit_return_into_block): New arg SIMPLE_P. All callers changed.
 Generate either kind of return pattern and update the JUMP_LABEL.
 (thread_prologue_and_epilogue_insns): Implement a form of
 shrink-wrapping. Ensure JUMP_LABELs for return insns are set.
 * print-rtl.c (print_rtx): Handle returns in JUMP_LABELs.
 * cfglayout.c (fixup_reorder_chain): Ensure JUMP_LABELs for returns
 remain correct.
 * resource.c (find_dead_or_set_registers): Check JUMP_LABELs for
 returns.
 (mark_target_live_regs): Don't pass a return rtx to next_active_insn.
 * basic-block.h (force_nonfallthru_and_redirect): Declare.
 * sched-vis.c (print_pattern): Add case for SIMPLE_RETURN.
 * cfgrtl.c (force_nonfallthru_and_redirect): No longer static. New arg
 JUMP_LABEL. All callers changed. Use the label when generating
 return insns.

 * config/i386/i386.md (returns, return_str, return_cond): New
 code_iterator and corresponding code_attrs.
 (<return_str>return): Renamed from return and adapted.
 (<return_str>return_internal): Likewise for return_internal.
 (<return_str>return_internal_long): Likewise for return_internal_long.
 (<return_str>return_pop_internal): Likewise for return_pop_internal.
 (<return_str>return_indirect_internal): Likewise for
 return_indirect_internal.
 * config/i386/i386.c (ix86_expand_epilogue): Expand a simple_return as
 the last insn.
 (ix86_pad_returns): Handle both kinds of return rtx.
 * config/arm/arm.c (use_simple_return_p): new function.
 (is_jump_table): Handle returns in JUMP_LABELs.
 (output_return_instruction): New arg SIMPLE. All callers changed.
 Use it to determine which kind of return to generate.
 (arm_final_prescan_insn): Handle both kinds of return.
 * config/arm/arm.md (returns, return_str, return_simple_p,
 return_cond): New code_iterator and corresponding code_attrs.
 (<return_str>return): Renamed from return and adapted.
 (arm_<return_str>return): Renamed from arm_return and adapted.
 (cond_<return_str>return): Renamed from cond_return and adapted.
 (cond_<return_str>return_inverted): Renamed from cond_return_inverted
 and adapted.
 (epilogue): Use ret_rtx instead of gen_rtx_RETURN.
 * config/arm/thumb2.md (thumb2_<return_str>return): Renamed from
 thumb2_return and adapted.
 * config/arm/arm.h (RETURN_ADDR_REGNUM): Define.
 * config/arm/arm-protos.h (use_simple_return_p): Declare.
 (output_return_instruction): Adjust declaration.
 * config/mips/mips.c (mips_expand_epilogue): Generate a simple_return
 as final insn.
 * config/mips/mips.md (simple_return): New expander.
 (*simple_return, simple_return_internal): New patterns.
 * config/sh/sh.c (barrier_align): Handle return in a JUMP_LABEL.
 (split_branches): Don't pass a null label to redirect_jump.

 From mainline:
 * vec.h (FOR_EACH_VEC_ELT, FOR_EACH_VEC_ELT_REVERSE): New macros.
 * haifa-sched.c (find_fallthru_edge_from): Rename from
 find_fallthru_edge. All callers changed.
 * sched-int.h (find_fallthru_edge_from): Rename declaration as well.
 * basic-block.h (find_fallthru_edge): New inline function.

2010-12-21 Chung-Lin Tang <email address hidden>

 Issue #10201

 Backport from mainline:

 2010-12-16 Chung-Lin Tang <email address hidden>

 PR target/46883
 gcc/
 * config/arm/arm.md
 (zero_extendhisi2 for register input splitter): Change
 "register_operand" to "s_register_operand".
 (zero_extendqisi2 for register input splitter): Same.

 gcc/testsuite/
 * gcc.target/arm/pr46883.c: New testcase.

2010-12-18 Andrew Stubbs <email address hidden>

 Backport from mainline:

 gcc/
 2010-12-17 Andrew Stubbs <email address hidden>

 * config/arm/arm.md (maddhisi4, *maddhidi4): Use the canonical
 operand order for plus.
 Drop redundant % from constraints.

2010-12-17 Bernd Schmidt <email address hidden>

 Issue #10208

 gcc/
 * config/arm/arm.c (arm_select_cc_mode): Before calling
 arm_select_dominance_cc_mode for AND or IOR operations, ensure
 that op is NE or EQ.

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

2010-12-14 Sandra Loosemore <email address hidden>

 Backport from mainline:

 2010-12-14 Jakub Jelinek <email address hidden>

 PR tree-optimization/46909

 gcc/
 * tree-ssa-ccp.c (and_var_with_comparison_1): Save partial
 result even in the is_and case, if both partial results
 are the same, return it.
 (or_var_with_comparison_1): Use is_or predicate instead of
 innercode == TRUTH_OR_EXPR test. Save partial result
 even in the is_or case, if both partial results are the
 same, return it. In the !is_or case when both partial
 results are the same, return the partial result instead
 of boolean_true_node.

 gcc/testsuite/
 * gcc.c-torture/execute/pr46909-1.c: New test.
 * gcc.c-torture/execute/pr46909-2.c: New test.
 * gcc.dg/pr46909.c: New test.

2010-12-22 Ulrich Weigand <email address hidden>

 LP: #693425
 Backport from mainline:

 gcc/
 * config/spu/spu.md ("mov<mode>"): Use nonimmediate_operand
 predicate for destination operand.
 * config/spu/spu.c (spu_expand_mov): If move destination is an
 invalid subreg, perform move in the subreg's inner mode instead.

2010-12-21 Ulrich Weigand <email address hidden>

 LP: #662324
 Backport from mainline:

 2010-12-17 Dodji Seketeli <email address hidden>

 gcc/
 * dwarf2out.c (gen_type_die_with_usage): Do not try to emit debug
 info for a redundant typedef that has DECL_ORIGINAL_TYPE set. Use
 that underlying type instead.

 gcc/testsuite/
 * g++.dg/debug/dwarf2/self-ref-1.C: New test.
 * g++.dg/debug/dwarf2/self-ref-2.C: Likewise.

2010-12-21 Ulrich Weigand <email address hidden>

 LP: #617384
 Backport from mainline:

 gcc/
 * config/arm/arm.c (require_pic_register): Set INSN_LOCATOR for all
 instructions injected into the prologue to prologue_locator.

2010-12-13 Chung-Lin Tang <email address hidden>

 Backport from mainline:

 2010-12-10 Jakub Jelinek <email address hidden>

 PR rtl-optimization/46865

 * rtl.c (rtx_equal_p_cb, rtx_equal_p): For last operand of
 ASM_OPERANDS and ASM_INPUT if integers are different,
 call locator_eq.
 * jump.c (rtx_renumbered_equal_p): Likewise.

 gcc/testsuite/
 * gcc.target/i386/pr46865-1.c: New test.
 * gcc.target/i386/pr46865-2.c: New test.

2010-12-14 Andrew Stubbs <email address hidden>

 gcc/
 * DEV-PHASE: Revert to upstream state.
 * REVISION: Delete file.
 * configure: Regenerate.
 * configure.ac (PKGVERSION): Set default to a custom
 Linaro string.
 * LINARO-VERSION: New file.

2010-12-10 Andrew Stubbs <email address hidden>

 gcc/
 * REVISION: Bump version.

0 blueprints and 7 bugs targeted

Bug report Importance Assignee Status
693425 #693425 SPU back-end incompatible with extension elimination pass 3 High Ulrich Weigand  10 Fix Released
693425 #693425 SPU back-end incompatible with extension elimination pass 3 High Ulrich Weigand  10 Fix Released
617384 #617384 .debug_line is wrong with -fpic 4 Medium Ulrich Weigand  10 Fix Released
617384 #617384 .debug_line is wrong with -fpic 4 Medium Ulrich Weigand  10 Fix Released
662324 #662324 Pointer type information lost in 4.5 debuginfo 5 Low Ulrich Weigand  10 Fix Released
662324 #662324 Pointer type information lost in 4.5 debuginfo 5 Low Ulrich Weigand  10 Fix Released
687406 #687406 Using -save-temps results in different code 5 Low Chung-Lin Tang  10 Fix Released
This milestone contains Public information
Everyone can see this information.