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 (;;)
    ;
}

Reply via email to