https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107131

--- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #11)
> (In reply to Jakub Jelinek from comment #8)
> > I think the problem happens during combine.  Parts of the vector code
> > related to:
> >   V b = (V) { } >= o;
> >   V c = b <= (V)(b >= (V) { 0, 0, 0, 0, 0, 0x90DF0BE3990AC871ULL });
> > - in particular the scalar c[5] computation, i.e.
> > unsigned long long b = 0 >= o ? -1ULL : 0ULL;
> > unsigned long long c = b <= (b >= 0x90DF0BE3990AC871ULL ? -1ULL : 0ULL) ?
> > -1ULL : 0ULL;
> > evaluates to 0 rather than -1 that it should when o is 0.
> > 
> > This boils down to:
> > __attribute__((noipa)) unsigned long long
> > foo (unsigned char o)
> > {
> >   unsigned long long t1 = -(long long) (o == 0);
> >   unsigned long long t2 = -(long long) (t1 > 10439075533421201520ULL);
> >   unsigned long long t3 = -(long long) (t1 <= t2);
> >   return t3;
> > }
> > 
> > int
> > main ()
> > {
> >   if (foo (0) != -1ULL)
> >     __builtin_abort ();
> >   return 0;
> > }
> > at -O2 or -Os, which was miscompiled starting with r12-303-g86403f4e6e5f7216
> > and got fixed with r13-3530-g0e36a9c6915c713d30.
> > No idea why this is marked as 11 regression though...
> > 
> > So, do we need to backport PR107172 change to 12 branch?
> 
> Yes.  Testing that now.

Not.  Not picking cleanly.

Reply via email to