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))