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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-02-14
                 CC|                            |jakub at gcc dot gnu.org
   Target Milestone|---                         |7.5
            Summary|Combine pass yields wrong   |[7/8/9 Regression] Combine
                   |code with -O2 and -msse2    |pass yields wrong code with
                   |for 32bit target            |-O2 and -msse2 for 32bit
                   |                            |target
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r228231, will have a look.

Slightly simplified testcase:
static unsigned long long q = 0;

__attribute__((noipa)) static void
bar (void)
{
  q = (q & ~0x1ffffffffULL) | 0x100000000ULL;
}

int
main ()
{
  __asm volatile ("" : "+m" (q));
  bar ();
  if (q != 0x100000000ULL)
    __builtin_abort ();
  return 0;
}

Reply via email to