]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
match: Reject non-const internal functions [PR117260]
authorAndrew Pinski <quic_apinski@quicinc.com>
Tue, 22 Oct 2024 16:05:38 +0000 (09:05 -0700)
committerAndrew Pinski <quic_apinski@quicinc.com>
Wed, 23 Oct 2024 23:33:35 +0000 (16:33 -0700)
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 <quic_apinski@quicinc.com>
gcc/gimple-match-exports.cc

index d3e626a1a2451c6d023768c21bda9e54878bceeb..77d225825cfac68b633f4d93bc3c6eb24532df6a 100644 (file)
@@ -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;