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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|vrp2 introduces invalid     |vrp2 (match and simplify)
                   |wide Boolean values         |introduces invalid wide
                   |                            |signed Boolean values
   Last reconfirmed|                            |2023-10-02
             Status|UNCONFIRMED                 |NEW
                 CC|                            |jakub at gcc dot gnu.org
     Ever confirmed|0                           |1
           Keywords|                            |wrong-code

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This was broken by r14-4125-g5c5851bd93b8 .


Before VRP:
```
  # RANGE [irange] <signed-boolean:32> [-1, 0]
  _66 = _16 ? -1 : 0;
  vect_cst__67 = {_66, _66, _66, _66};
```

VRP2 dump:
```
Folding statement: _66 = _16 ? -1 : 0;
Applying pattern match.pd:5115, gimple-match-2.cc:16882
gimple_simplified to _38 = (<signed-boolean:32>) _16;
_66 = -_38;
```

This is was the reasoning for the build_nonstandard_integer_type there. 


With r14-4125-g5c5851bd93b8 reverted:
```
Folding statement: _66 = _16 ? -1 : 0;
Applying pattern match.pd:5118, gimple-match-1.cc:16933
gimple_simplified to _38 = (signed int) _16;
_43 = -_38;
_66 = (<signed-boolean:32>) _43;
Global Exported: _66 = [irange] <signed-boolean:32> [-1, 0]
Folded into: _66 = (<signed-boolean:32>) _43;
```


Note the testcase needs to compiled at -O3 on x86_64.

Reply via email to