http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58675
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2014-02-10 CC| |amodra at gmail dot com Ever confirmed|0 |1 --- Comment #3 from Alan Modra <amodra at gmail dot com> --- I reckon this is overly restrictive checking in rs6000_secondary_reload_inner. rtl during reload is a little messy. I'll bet that (plus:DI (plus:DI (reg/f:DI 1 1) (const_int 65536 [0x10000])) (const_int -30176 [0xffffffffffff8a20])) has a reload pushed for the inner plus. ie. what you really have here is (plus:DI (reg:DI some_gpr) (const_int -30176 [0xffffffffffff8a20])) which is perfectly fine. (No, I haven't looked at this testcase under gdb to confirm this is exactly what is going on, but I've looked at reload enough in the past to risk an opinion here.)