]> git.ipfire.org Git - thirdparty/gcc.git/commit
match: Reject non-ssa name/min invariants in gimple_extract [PR116412]
authorAndrew Pinski <quic_apinski@quicinc.com>
Mon, 19 Aug 2024 15:06:36 +0000 (08:06 -0700)
committerAndrew Pinski <quic_apinski@quicinc.com>
Tue, 20 Aug 2024 22:05:37 +0000 (15:05 -0700)
commitc7b76a076cb2c6ded7ae208464019b04cb0531a2
treedf96ea8f786ab26753f373ea75a09270da161e72
parent5d5193f0734fb4706940f7ac79899da25250be9d
match: Reject non-ssa name/min invariants in gimple_extract [PR116412]

After the conversion for phiopt's conditional operand
to use maybe_push_res_to_seq, it was found that gimple_extract
will extract out from REALPART_EXPR/IMAGPART_EXPR/VCE and BIT_FIELD_REF,
a memory load. But that extraction was not needed as memory loads are not
simplified in match and simplify. So gimple_extract should return false
in those cases.

Changes since v1:
* Move the rejection to gimple_extract from factor_out_conditional_operation.

Bootstrapped and tested on x86_64-linux-gnu.

PR tree-optimization/116412

gcc/ChangeLog:

* gimple-match-exports.cc (gimple_extract): Return false if op0
was not a SSA name nor a min invariant for REALPART_EXPR/IMAGPART_EXPR/VCE
and BIT_FIELD_REF.

gcc/testsuite/ChangeLog:

* gcc.dg/torture/pr116412-1.c: New test.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
gcc/gimple-match-exports.cc
gcc/testsuite/gcc.dg/torture/pr116412-1.c [new file with mode: 0644]