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