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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2025-03-13 00:00:00         |
                 CC|                            |pinskia at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
For:
```
#include <vector>

typedef std::vector<int> v1;
static
void drop_inplace(v1 & c, size_t len)
{
    if (len <= c.size())
        c[len-1] = 0;
}


void func(){
  v1 vec1{1,2,3,4,5,6};
  drop_inplace(vec1, 10);
}
```

fre3 has:
```
Value numbering stmt = _27 = PHI <0B(4), _35(9)>
Setting value number of _27 to _35 (changed)
_35 is available for _35

...
Value numbering stmt = __result_28 = _27 + _17;


Setting value number of _6 to __result_28 (changed)
Making available beyond BB14 _6 for value __result_28

Setting value number of _4 to _35 (changed)
Making available beyond BB14 _4 for value _35

Value numbering stmt = _9 = _6 - _4;
Setting value number of _9 to _9 (changed)
```

_9 should have been matched-and-simplified to `_17` during fre3 but seemly we
miss that _35's value is the same as _27. I have not debugged further than that
yet.

Reply via email to