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

            Bug ID: 120996
           Summary: [16 regression][AArch64] 15% regression in microBUDE
                    since r16-1108-gb7960a3f966a0f
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dhruvc at nvidia dot com
  Target Milestone: ---

Source code: https://github.com/UoB-HPC/microBUDE
Compiler flags: -std=c++17 -O3 main.cpp -fopenmp -mcpu=neoverse-v2

The commit (ranger: Add support for float <-> float casts [PR120231]) causes
early jump threading to combine the two blocks created for the ternary
operations on the following line of the benchmark:

  float chrg_e = chrg_init * ((zone1 ? ONE : (ONE - distbb * elcdst1))
                           *  (distbb < elcdst ? ONE : ZERO));

This leads to 183t.ifcvt/184t.vect generating some additional instructions that
increase the size of the loop and the runtime. I wasn't able to get a min-repro
using creduce, so I attached the repository itself instead.

Reply via email to