https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120003
Bug ID: 120003
Summary: Missed Optimisation / Regression
Product: gcc
Version: 15.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: phdiv at fastmail dot fm
Target Milestone: ---
Consider the following code:
extern bool g(int);
bool f(){
bool retval = false;
for(int i=0; i<1'000'000; ++i)
retval = retval || g(i);
return retval;
}
Up until GCC 11, it was recognised that the loop can be exited as soon
as the first call to g returns true. Since GCC 12, and present up to 15,
the loop keeps on incrementing needlessly.
https://godbolt.org/z/q5qKbcoMG