https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78458
--- Comment #12 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Applying also the third patch Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 242751) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -8443,14 +8443,13 @@ rs6000_legitimate_offset_address_p (machine_mode m case TFmode: case IFmode: case KFmode: + case TDmode: + case TImode: + case PTImode: if (TARGET_E500_DOUBLE) return (SPE_CONST_OFFSET_OK (offset) && SPE_CONST_OFFSET_OK (offset + 8)); - /* fall through */ - case TDmode: - case TImode: - case PTImode: extra = 8; if (!worst_case) break; results in glibc compiling successfully and the compilation parts of the testsuite running OK; not yet done any execution testing with these patches. The bad offset came from an insn: (insn 115 1209 1210 (set (reg:DF 27 27 [orig:294 _129 ] [294]) (subreg:DF (mem/c:TI (plus:SI (reg/f:SI 1 1) (const_int 256 [0x100])) [14 %sfp+256 S16 A128]) 0)) 1909 {*frob_df_ti} (nil))