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

            Bug ID: 78185
           Summary: Wrong branch optimization with -O1 on x86/x86_64
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mdaniels at qnx dot com
  Target Milestone: ---

Created attachment 39943
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39943&action=edit
Testcase

The attached test case is being incorrectly optimized on x86/x86_64 with -O1 or
above.

$ gcc -O1 -fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations -Wall
-Wextra -o /tmp/test /tmp/test.c 
$ /tmp/test
Floating point exception (core dumped)

The test case is reduced from csmith output.

Looking at the resulting assembly, it seems like the wrong branch is being
optimized away. Since it takes the wrong branch it ends up trying to divide by
zero.

I had also tried with armv7 and aarch64, which kept both branches so the
problem was not seen on those archs.

Tested on a Linux x86_64 host with GCC 5.4 and ToT.

Reply via email to