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

            Bug ID: 109004
           Summary: wrong code for -O2 (any above -O0) with g++ 11.3 for
                    POWER9 (cross-compiler on x86_64 host)
           Product: gcc
           Version: 11.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bugreporter66 at gmail dot com
  Target Milestone: ---

Created attachment 54574
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54574&action=edit
archive with all the necessary source and output files

The code sample is attached with all the necessary output files. It's a
regression from g++ 9.x series, where it worked properly.

The line that fails the test is a ternary operator working on two memory
floating point operands: farr[n] < farr[m] ? farr[n] : farr[m];

Two potential workarounds for this are turning optimizations off (-O0) or
re-targeting to POWER8 instead (-O2 -mcpu=power8).

The test case is taken from https://github.com/VectorChief/UniSIMD-assembler,
where that test fails (v1.1.0c) for POWER9 target on Ubuntu MATE 22.04.2

Reply via email to