]> git.ipfire.org Git - thirdparty/gcc.git/commit
tree-optimization/115494 - PRE PHI translation and ranges
authorRichard Biener <rguenther@suse.de>
Wed, 15 Jan 2025 13:31:57 +0000 (14:31 +0100)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 16 Jan 2025 08:43:03 +0000 (09:43 +0100)
commitea1deefe54ea1c5182bfa179abf36469c9ec6974
treeb479d7423dfe5b26f2dd47e41f5fee856dbecb2b
parent7f5adfd31b3af08924faec36679eaea40a98af19
tree-optimization/115494 - PRE PHI translation and ranges

When we PHI translate dependent expressions we keep SSA defs in
place of the translated expression in case the expression itself
did not change even though it's context did and thus the validity
of ranges associated with it.  That eventually leads to simplification
errors given we violate the precondition that used SSA defs fed to
vn_valueize are valid to use (including their associated ranges).
The following makes sure to replace those with new representatives
always, not only when the dependent expression translation changed it.

The fix was originally discovered by Michael Morin.

PR tree-optimization/115494
* tree-ssa-pre.cc (phi_translate_1): Always generate a
representative for translated dependent expressions.

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

Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org>
gcc/testsuite/gcc.dg/torture/pr115494.c [new file with mode: 0644]
gcc/tree-ssa-pre.cc