From: Andrew Pinski Date: Tue, 22 Oct 2024 16:05:38 +0000 (-0700) Subject: match: Reject non-const internal functions [PR117260] X-Git-Tag: basepoints/gcc-16~4970 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36e3e68250bf54909218298d1141138579803631;p=thirdparty%2Fgcc.git 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 --- 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;