http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53385
Bug #: 53385 Summary: "Error: operand out of range" after changes for LSHIFT_EXPR in vrp.c Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: wschm...@gcc.gnu.org CC: berg...@vnet.ibm.com, meiss...@gcc.gnu.org, pthau...@us.ibm.com, rguent...@suse.de Host: powerpc64-linux Target: powerpc64-linux Build: powerpc64-linux Starting with revision 187535, bootstrap is broken on powerpc64-unknown-linux-gnu: /home/wschmidt/gcc/build/gcc-mainline-base/./gcc/xgcc -B/home/wschmidt/gcc/build/gcc-mainline-base/./gcc/ -B/home/wschmidt/gcc/install/gcc-mainline-base/powerpc64-linux/bin/ -B/home/wschmidt/gcc/install/gcc-mainline-base/powerpc64-linux/lib/ -isystem /home/wschmidt/gcc/install/gcc-mainline-base/powerpc64-linux/include -isystem /home/wschmidt/gcc/install/gcc-mainline-base/powerpc64-linux/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -mlong-double-128 -mno-minimal-toc -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fPIC -mlong-double-128 -mno-minimal-toc -I. -I. -I../.././gcc -I/home/wschmidt/gcc/gcc-mainline-base/libgcc -I/home/wschmidt/gcc/gcc-mainline-base/libgcc/. -I/home/wschmidt/gcc/gcc-mainline-base/libgcc/../gcc -I/home/wschmidt/gcc/gcc-mainline-base/libgcc/../include -I/home/wschmidt/gcc/gcc-mainline-base/libgcc/../libdecnumber/dpd -I/home/wschmidt/gcc/gcc-mainline-base/libgcc/../libdecnumber -DHAVE_CC_TLS -o _gcov_interval_profiler.o -MT _gcov_interval_profiler.o -MD -MP -MF _gcov_interval_profiler.dep -DL_gcov_interval_profiler -c /home/wschmidt/gcc/gcc-mainline-base/libgcc/libgcov.c /tmp/ccrZ0fWL.s: Assembler messages: /tmp/ccrZ0fWL.s:49: Error: operand out of range (65 is not between 0 and 63) *** [_gcov_interval_profiler.o] Error 1 make[3]: *** Waiting for unfinished jobs.... An example of the problem is: long unsigned foo (long unsigned a) { return (a << 2) & 0x3fffffffc; } which produces "rldic 3,3,2,65" instead of "rldic 3,3,2,30".