https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84821
Bug ID: 84821 Summary: [8 Regression] ICE (unable to find a register to spill) Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: doko at gcc dot gnu.org Target Milestone: --- r258410, when doing a jit build using a r258410 bootstrapped compiler. the bootstrap build is configured with configure -v --with-pkgversion='Ubuntu 8-20180310-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu the jit build is configured with the same arguments plus --enable-host-shared. with options \" '-v' '--with-pkgversion=Ubuntu 8-20180310-1ubuntu1' '--with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs' '--prefix=/usr' '--with-gcc-major-version-only' '--program-suffix=-8' '--program-prefix=x86_64-linux-gnu-' '--enable-shared' '--enable-linker-build-id' '--libexecdir=/usr/lib' '--without-included-gettext' '--enable-threads=posix' '--libdir=/usr/lib' '--enable-nls' '--with-sysroot=/' '--enable-clocale=gnu' '--enable-libstdcxx-time=yes' '--with-default-libstdcxx-abi=new' '--enable-gnu-unique-object' '--disable-vtable-verify' '--enable-libmpx' '--enable-plugin' '--enable-default-pie' '--with-system-zlib' '--with-target-system-zlib' '--enable-objc-gc=auto' '--enable-multiarch' '--disable-werror' '--with-arch-32=i686' '--with-abi=m64' '--with-multilib-list=m32,m64,mx32' '--enable-multilib' '--with-tune=generic' '--enable-offload-targets=nvptx-none' '--without-cuda-driver' '--enable-checking=release' '--build=x86_64-linux-gnu' '--host=x86_64-linux-gnu' '--target=x86_64-linux-gnu' '--enable-host-shared' '--disable-bootstrap' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu' 'target_alias=x86_64-linux-gnu' 'CC=/home/packages/gcc/8/u/gcc-8-8-20180310/build/gcc/xgcc -B/home/packages/gcc/8/u/gcc-8-8-20180310/build/gcc/' 'CXX=/home/packages/gcc/8/u/gcc-8-8-20180310/build/gcc/xg++ -B/home/packages/gcc/8/u/gcc-8-8-20180310/build/gcc/ -B/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libatomic/.libs -B/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libstdc++-v3/src/.libs -B/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libstdc++-v3/libsupc++/.libs -I/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libstdc++-v3/include -I/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu -I/home/packages/gcc/8/u/gcc-8-8-20180310/src/libstdc++-v3/libsupc++ -L/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libatomic/.libs -L/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libstdc++-v3/src/.libs -L/home/packages/gcc/8/u/gcc-8-8-20180310/build/x86_64-linux-gnu/libstdc++-v3/libsupc++/.libs' '--enable-languages=c,c++,jit,lto'\" $ build/gcc/xg++ -Bbuild/gcc/ -O2 -fPIC ira-lives.ii ira-lives.ii: In function 'void fn3()': ira-lives.ii:51:1: error: unable to find a register to spill } ^ ira-lives.ii:51:1: error: this is the insn: (insn 91 263 258 14 (parallel [ (set (reg:SI 198 [145]) (lshiftrt:SI (reg:SI 198 [145]) (reg:QI 202))) (clobber (reg:CC 17 flags)) ]) "ira-lives.ii":43 577 {*lshrsi3_1} (expr_list:REG_DEAD (reg:QI 202) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) ira-lives.ii:51: confused by earlier errors, bailing out not seen with -O1. and it looks like the configury needs to be done with --enable-default-pie to reproduce the issue. $ cat ira-lives.ii typedef struct a *b; struct a { int c; unsigned d[]; }; int e, f, g, i, l, m; struct o { long *h; int c; unsigned j; int k; long aa; }; inline void p(o *r) { r->c = g; } int *n, *ab; inline bool s(o *r) { for (; r->aa == 0; r->aa = r->h[r->j]) if (r->j >= r->c) return false; r->aa >>= 1; for (; r->aa;) r++; *n = r->k; return true; } class t { public: t(int); operator b() { return q; } b q; }; bool u, v, ac; void fn3() { long w, x; o ad; bool ae; t af(i), ag(i); for (p(&ad); s(&ad);) { a *ah = af, *ai = ah, *aj = ag; x = ai->d[e] >> f & 1; ae = x; ai = aj; w = ai->d[e] >> f & 1; ac = w; if (v && u && w && x) ab[l] = ++m; u = x; } for (;;) ; }