http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50802

--- Comment #10 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-11-07 
15:09:54 UTC ---
Weird.  My cross configured with

/space/rguenther/src/svn/trunk/configure --enable-languages=c,c++,fortran
--disable-nls --target=hppa2.0w-hp-hpux11.11

does not reproduce this.  I'm using ./cc1 -O2 on arith-rand-ll.c, and I'm
getting

arith-rand-ll.c: In function 'main':
arith-rand-ll.c:59:4: warning: incompatible implicit declaration of built-in
function 'abort' [enabled by default]
...

not sure if that's related.

>From your dump file:

x_118: [0, +INF]  EQUIVALENCES: { x_5 D.2243_12 } (2 elements)
xx_56: VARYING
D.2297_58: [-32768, 32767]

xx_56 = (short int) x_118;
Folding statement: D.2297_58 = (int) xx_56;
Folded into: D.2297_58 = (int) x_118;

should be reproducible with

extern void abort (void);

long long unsigned int x = 1 << (sizeof (short int) * 8);

int main()
{
  if (x >= 0)
    {
      short int xx = (short int)x;
      if (xx != 0)
        abort ();
    }
  return 0;
}

but that works for me ... does this fail for you?  Looking at the above
it _appears_ that x is signed!?  The reported value-range should be

x_5: VARYING

which it is indeed when compiling with my cross ...

Is, by any chance, the middle-end sizetype == long long unsigned int?
And for some weird reason those are mapped together?

Reply via email to