When internal functions support was added to match (r6-4979-gc9e926ce2bdc8b),
the check for ECF_CONST was the builtin function side. Though before
r15-4503-g8d6d6d537fdc,
there was no use of maybe_push_res_to_seq with non-const internal functions so
the check
would not make a difference.
This adds the check for internal functions just as there is a check for
builtins.
Note I didn't add a testcase because there was no non-const internal function
which could be used on x86_64 in a decent manor.
Bootstrapped and tested on x86_64-linux-gnu.
gcc/ChangeLog:
PR tree-optimization/117260
* gimple-match-exports.cc (maybe_push_res_to_seq): Reject non-const
internal functions.
Signed-off-by: Andrew Pinski <[email protected]>
---
gcc/gimple-match-exports.cc | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gcc/gimple-match-exports.cc b/gcc/gimple-match-exports.cc
index d3e626a1a24..77d225825cf 100644
--- a/gcc/gimple-match-exports.cc
+++ b/gcc/gimple-match-exports.cc
@@ -522,6 +522,11 @@ maybe_push_res_to_seq (gimple_match_op *res_op, gimple_seq
*seq, tree res)
{
/* Generate the given function if we can. */
internal_fn ifn = as_internal_fn (fn);
+
+ /* We can't and should not emit calls to non-const functions. */
+ if (!(internal_fn_flags (ifn) & ECF_CONST))
+ return NULL_TREE;
+
new_stmt = build_call_internal (ifn, res_op);
if (!new_stmt)
return NULL_TREE;
--
2.43.0