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

            Bug ID: 95676
           Summary: [armhf] g++ mis-compiles code at -O1 or above
           Product: gcc
           Version: 9.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jamessan at jamessan dot com
  Target Milestone: ---

Created attachment 48730
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48730&action=edit
Reduced test case

After uploading msgpack-c 3.3.0 to Debian, the armhf build failed due to a
specific test failing.  I originally reported this to msgpack-c's upstream:
https://github.com/msgpack/msgpack-c/issues/881

However, after testing on Debian's porterbox, it seems to be a GCC issue.  The
issue does not reproduce when compiled with -O0 but does with -O1 or higher.

Similarly, changing the line that was failing from using googletest's
"EXPECT_TRUE(foo == bar);" to "EXPECT_EQ(foo, bar);" caused the test to pass.

I was able to use creduce to produce the attached file, test.cpp, which
exhibits the problem.  The final assignment in main (cd = ce.aq<ba::z::bw>() ==
g;) should always evaluate to true.

Reply via email to