https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69460
Richard Earnshaw <rearnsha at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Target| |arm Status|UNCONFIRMED |NEW Last reconfirmed| |2016-01-25 Component|rtl-optimization |target Ever confirmed|0 |1 --- Comment #3 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- Confirmed. This is a costing issue in the thumb1 code generation path. I think it's done this way to try to avoid creating long-lived expressions which can harm register allocation. In this case it means that the post-register allocation pass fails to spot the simplifying address expressions. One possible way of addressing this might be to reflect the true costs of expressions once register allocation has completed. By then we know we can't create any new register allocation issues.