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.