https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126078
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |85316
Last reconfirmed| |2026-07-02
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Keywords| |missed-optimization
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
<bb 2> [local count: 1073741824]:
address_7 = (long unsigned int) uaddr_6(D);
# RANGE [irange] unsigned int [0, 3] MASK 0x3 VALUE 0x0
_10 = flags_9(D) & 3;
# RANGE [irange] unsigned int [0, 0][128, 128] MASK 0x80 VALUE 0x0
_1 = flags_9(D) & 128;
if (_1 != 0)
goto <bb 4>; [50.00%]
else
goto <bb 3>; [50.00%]
<bb 3> [local count: 536870912]:
<bb 4> [local count: 1073741824]:
# _14 = PHI <1(3), 2(2)>
# RANGE [irange] int [1, 2][4, 4][8, 8][16, 16] MASK 0x1f VALUE 0x0
size_4 = _14 << _10;
# RANGE [irange] long unsigned int [1, 2][4, 4][8, 8][16, 16] MASK 0x1f VALUE
0x0
_2 = (long unsigned int) size_4;
# RANGE [irange] long unsigned int [0, 15] MASK 0xf VALUE 0x0
_3 = address_7 % _2;
so it seems the info is there, we just do not use it.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85316
[Bug 85316] [meta-bug] VRP range propagation missed cases