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.