Linaro GCC 4.5-2011.01-1

Fixed 2011.01-0 bugs.

Milestone information

Project:
Linaro GCC
Series:
4.5
Version:
4.5-2011.01-1
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:
No users assigned to blueprints and bugs.
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
No bugs are targeted to this milestone.

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-1.tar.bz2 (md5, sig) Linaro GCC Source 1,496
last downloaded 46 weeks ago
Total downloads: 1,496

Release notes 

This is a bug-fix release. ARM users might like to try the previous release, 4.5-2011.01-0, but x86 users (particularly 64-bit) should upgrade.

The -fshrink-wrap optimization, and the LDM/STM improvements proved problematic and have been withdrawn. These features will be reintroduced in the next release, most likely next month.

The Linaro Toolchain Working Group would like to apologise for the inconvenience.

Changelog 

View the full changelog

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

 GCC Linaro 4.5-2011.01-1 released.

 gcc/
 * LINARO-VERSION: Update.

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

 Revert:

 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.

0 blueprints and 0 bugs targeted

There are no feature specifications or bug tasks targeted to this milestone. The project's maintainer, driver, or bug supervisor can target specifications and bug tasks to this milestone to track the things that are expected to be completed for the release.

This milestone contains Public information
Everyone can see this information.