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

            Bug ID: 82274
           Summary: __builtin_mul_overflow fails to detect overflow for
                    int64_t when compiled with -m32
           Product: gcc
           Version: 5.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mats at mozilla dot com
  Target Milestone: ---

The result from this test should be:
# g++ -std=c++11 bug.cpp  && ./a.out
SUCCESS: overflow detected
Result is 0

but when compiled with -m32 it fails to detect the overflow:
# g++ -m32 -std=c++11 bug.cpp  && ./a.out
ERROR: failed to detect overflow!
Result is 0

However, adding -O makes it work again:
# g++ -O -m32 -std=c++11 bug.cpp  && ./a.out
SUCCESS: overflow detected
Result is 0

# g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

(same results with g++ (GCC) 7.2.0)

Reply via email to