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

            Bug ID: 102303
           Summary: optimizer elides -ftrapv overflow detection
           Product: gcc
           Version: 11.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: john at mcfarlane dot name
  Target Milestone: ---

With flag, `-ftrapv`, the following program on CE with 'x86-64 gcc 11.2' has
exit status 139:

   int main()
   {
       int n = 0x7fffffff;
       return n+1;
   }

This is expected behavior: run-time overflow trapping. But with flags, `-ftrapv
-O1`, it has exit status 0. I wouldn't expect optimization to change the
behavior of this program, which appears to be either UB or as-if `-fwrapv`.

https://godbolt.org/z/jvj9javcY

Behavior is inconsistent with Clang 12.0. Behavior is inconsistent with
`-fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error`.

Inconsistency goes as far back as the 5.x series, where trapping of this
overflow first appears. Docs for -ftrapv
(https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html) don't mention
optimization.

Reply via email to