https://gcc.gnu.org/g:36e3e68250bf54909218298d1141138579803631

commit r15-4583-g36e3e68250bf54909218298d1141138579803631
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Tue Oct 22 09:05:38 2024 -0700

    match: Reject non-const internal functions [PR117260]
    
    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_apin...@quicinc.com>

Diff:
---
 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 d3e626a1a245..77d225825cfa 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;

Reply via email to