[Bug rtl-optimization/69124] [5/6 Regression] wrong code in thumb mode on arm-linux-gnueabihf
mikpelinux at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Jan 5 18:05:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69124
--- Comment #11 from Mikael Pettersson <mikpelinux at gmail dot com> ---
(In reply to ktkachov from comment #9)
> So I did a bisection between 4.9 and 5.
> The offending commit is r217624:
> Author: vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date: Sun Nov 16 05:00:30 2014 +0000
>
> 2014-11-15 Vladimir Makarov <vmakarov@redhat.com>
>
> * lra-remat.c (cand_transf_func): Process regno for
> rematerialization too.
> * lra.c (lra): Switch on rematerialization pass.
>
> i.e. when the LRA rematiralisation pass was turned on.
Strange, my bisect identified r217588 as the culprit, although it also talks
about lra materialization:
2014-11-14 Vladimir Makarov <vmakarov@redhat.com>
* lra-int.h (lra_create_live_ranges): Add parameter.
* lra-lives.c (temp_bitmap): Move higher.
(initiate_live_solver): Move temp_bitmap initialization into
lra_live_ranges_init.
(finish_live_solver): Move temp_bitmap clearing into
live_ranges_finish.
(process_bb_lives): Add parameter. Use it to control live info
update and dead insn elimination. Pass it to mark_regno_live and
mark_regno_dead.
(lra_create_live_ranges): Add parameter. Pass it to
process_bb_lives.
(lra_live_ranges_init, lra_live_ranges_finish): See changes in
initiate_live_solver and finish_live_solver.
* lra-remat.c (do_remat): Process insn non-operand hard regs too.
Use temp_bitmap to update avail_cands.
* lra.c (lra): Pass new parameter to lra_create_live_ranges. Move
check with lra_need_for_spill_p after live range pass. Switch on
rematerialization pass.
More information about the Gcc-bugs
mailing list