[Bug tree-optimization/110199] New: [12/13/14 Regression] Missing VRP transformation with MIN_EXPR and known relation
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 9 22:28:13 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110199
Bug ID: 110199
Summary: [12/13/14 Regression] Missing VRP transformation with
MIN_EXPR and known relation
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Take:
```
int test(int a, int b)
{
if (a <= b)
return a < b ? a : b;
return 0;
}
```
This used to be optimized in GCC 11 and before via EVRP:
pushing new range for b_3(D): int [a_2(D), +INF] EQUIVALENCES: { b_3(D) } (1
elements)
evrp visiting stmt _5 = MIN_EXPR <a_2(D), b_3(D)>;
extract_range_from_stmt visiting:
_5 = MIN_EXPR <a_2(D), b_3(D)>;
Intersecting
int VARYING
and
int VARYING
to
int VARYING
Folding statement: _5 = MIN_EXPR <a_2(D), b_3(D)>;
Folded into: _5 = a_2(D);
But in GCC 12 and above it is missed:
Folding statement: _5 = MIN_EXPR <a_2(D), b_3(D)>;
folding with relation a_2(D) <= b_3(D)
Not folded
More information about the Gcc-bugs
mailing list