http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54009
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |4.8.0 --- Comment #2 from Alan Modra <amodra at gmail dot com> 2012-07-24 12:43:23 UTC --- The x+32768 assembly is fixed, but errors remain. If you change the testcase slightly, substituting 32764 with a smaller value, 2764 say, then r() accesses x.d with an indirect address while w() does so using a lo_sum with an offset. This is wrong if the extern x is such that d straddles a 32k boundary. In the case of r(), the indirect address is generated in rs6000_split_multireg_move. It seems the fix for pr42427 specifically excluded lo_sum addresses, but if I read the diff correctly, before that patch they were split.