]> git.ipfire.org Git - thirdparty/gcc.git/commit
middle-end/110176 - wrong zext (bool) <= (int) 4294967295u folding
authorRichard Biener <rguenther@suse.de>
Wed, 31 Jan 2024 13:40:24 +0000 (14:40 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 21 Jun 2024 09:21:29 +0000 (11:21 +0200)
commit0d0f181dedb928a6dbb9af040a09cda3f4d5da64
tree9491068b3bc80c96d2367cdfbdec4e3c7fc2a6e8
parent8d7ff01933c18532c82c864bd9182db619fcab43
middle-end/110176 - wrong zext (bool) <= (int) 4294967295u folding

The following fixes a wrong pattern that didn't match the behavior
of the original fold_widened_comparison in that get_unwidened
returned a constant always in the wider type.  But here we're
using (int) 4294967295u without the conversion applied.  Fixed
by doing as earlier in the pattern - matching constants only
if the conversion was actually applied.

PR middle-end/110176
* match.pd (zext (bool) <= (int) 4294967295u): Make sure
to match INTEGER_CST only without outstanding conversion.

* gcc.dg/torture/pr110176.c: New testcase.

(cherry picked from commit 22dbfbe8767ff4c1d93e39f68ec7c2d5b1358beb)
gcc/match.pd
gcc/testsuite/gcc.dg/torture/pr110176.c [new file with mode: 0644]