If L_R_A does nothing with it, the normal reload handling will first try:(const:HI (plus:HI (symbol_ref:HI ("chk_fail_buf") (const_int 2))))
This worked just as your described after I added test of reg_equiv_constant[] inside L_R_A .
So I guess that looks like the fix for bug I posted. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34641 To summarize LEGITIMIZE_RELOAD_ADDRESS should now always check reg_equiv_constant before it trying to do any push_reload of register. Thanks for help!