https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64412
--- Comment #16 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Uroš Bizjak from comment #15) > (In reply to H.J. Lu from comment #14) > > > This is generated in the backend: > > Yes, but the question is, why somehow similar testcase legitimizes the > address correctly with -fpic, while the original testcase doesn't. My impressions are most of PIC addresses like: 6: r92:DI=[const(unspec[`G'] 2)] 7: r91:DI=r92:DI REG_EQUAL `G' 8: {r90:DI=r89:DI+r91:DI;clobber flags:CC;} is generated by x86 backend vi ix86_expand_move and x86 backend was never presented with other opportunities before. X86 backend isn't prepared to handle some RTL expansions from offload.