long long foo (long long x, int y) { unsigned long long x0 = (unsigned long long) x, x1; long long a = x0 >> ((y - 4) & 63); if ((a & 8) == 0) y--; x1 = x << ((24 - y) & 63); return (x1 >> 1); }
ICEs at -m31 {-O1,-O2,-O3} on s390-linux. -- Summary: ICE on lshrdi3_31 pattern Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org GCC target triplet: s390-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25268