------- Comment #7 from dje at gcc dot gnu dot org 2006-06-27 01:40 ------- I think the correct test is something like
Index: rs6000.c =================================================================== --- rs6000.c (revision 115003) +++ rs6000.c (working copy) @@ -9794,8 +9794,8 @@ && INTVAL (startop) > 32 && (INTVAL (sizeop) + INTVAL (startop) < 64) && (INTVAL (sizeop) + INTVAL (startop) > 33) - && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) < 96) - && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) >= 64) + && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) < 64) + && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) >=32) && (64 - (INTVAL (shiftop) & 63)) >= INTVAL (sizeop)) return 1; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28170