https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79981
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 40942 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40942&action=edit gcc7-pr79981.patch Untested fix. With this patch the vrp1 difference is: _8 = ATOMIC_COMPARE_EXCHANGE (lock_4(D), 0, 1, 260, 2, 0); - # RANGE [0, 4294967295] + # RANGE [0, 1] NONZERO 1 _9 = IMAGPART_EXPR <_8>; # RANGE [0, 1] _1 = (_Bool) _9; - if (_1 != 0) + if (_9 != 0)