aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-ssa-warn-access.cc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2023-04-20 13:02:52 +0200
committerJakub Jelinek <jakub@redhat.com>2023-04-20 13:02:52 +0200
commit1edcb2ea0eb29f1a85cd9ba7bb933c4a260cba44 (patch)
tree34426eb7fc8b51b2ced92257bd5a2c5e1c8abfae /gcc/gimple-ssa-warn-access.cc
parent705b0d2b62318b3935214f08a1cf023b1117acb8 (diff)
downloadgcc-1edcb2ea0eb29f1a85cd9ba7bb933c4a260cba44.zip
gcc-1edcb2ea0eb29f1a85cd9ba7bb933c4a260cba44.tar.gz
gcc-1edcb2ea0eb29f1a85cd9ba7bb933c4a260cba44.tar.bz2
tree: Add 3+ argument fndecl_built_in_p
On Wed, Feb 22, 2023 at 09:52:06AM +0000, Richard Biener wrote: > > The following testcase ICEs because we still have some spots that > > treat BUILT_IN_UNREACHABLE specially but not BUILT_IN_UNREACHABLE_TRAP > > the same. This patch uses (fndecl_built_in_p (node, BUILT_IN_UNREACHABLE) || fndecl_built_in_p (node, BUILT_IN_UNREACHABLE_TRAP)) a lot and from grepping around, we do something like that in lots of other places, or in some spots instead as (fndecl_built_in_p (node, BUILT_IN_NORMAL) && (DECL_FUNCTION_CODE (node) == BUILT_IN_WHATEVER1 || DECL_FUNCTION_CODE (node) == BUILT_IN_WHATEVER2)) The following patch adds an overload for this case, so we can write it in a shorter way, using C++11 argument packs so that it supports as many codes as one needs. 2023-04-20 Jakub Jelinek <jakub@redhat.com> Jonathan Wakely <jwakely@redhat.com> * tree.h (built_in_function_equal_p): New helper function. (fndecl_built_in_p): Turn into variadic template to support 1 or more built_in_function arguments. * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p. * gimplify.cc (goa_stabilize_expr): Likewise. * cgraphclones.cc (cgraph_node::create_clone): Likewise. * ipa-fnsummary.cc (compute_fn_summary): Likewise. * omp-low.cc (setjmp_or_longjmp_p): Likewise. * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee, cgraph_update_edges_for_call_stmt_node, cgraph_edge::verify_corresponds_to_fndecl, cgraph_node::verify_node): Likewise. * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise. * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise. * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
Diffstat (limited to 'gcc/gimple-ssa-warn-access.cc')
-rw-r--r--gcc/gimple-ssa-warn-access.cc7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc
index 48e85e9..33bc4a8 100644
--- a/gcc/gimple-ssa-warn-access.cc
+++ b/gcc/gimple-ssa-warn-access.cc
@@ -1787,8 +1787,7 @@ matching_alloc_calls_p (tree alloc_decl, tree dealloc_decl)
/* Return false for deallocation functions that are known not
to match. */
- if (fndecl_built_in_p (dealloc_decl, BUILT_IN_FREE)
- || fndecl_built_in_p (dealloc_decl, BUILT_IN_REALLOC))
+ if (fndecl_built_in_p (dealloc_decl, BUILT_IN_FREE, BUILT_IN_REALLOC))
return false;
/* Otherwise proceed below to check the deallocation function's
"*dealloc" attributes to look for one that mentions this operator
@@ -1812,8 +1811,8 @@ matching_alloc_calls_p (tree alloc_decl, tree dealloc_decl)
if (DECL_IS_OPERATOR_DELETE_P (dealloc_decl))
return false;
- if (fndecl_built_in_p (dealloc_decl, BUILT_IN_FREE)
- || fndecl_built_in_p (dealloc_decl, BUILT_IN_REALLOC))
+ if (fndecl_built_in_p (dealloc_decl, BUILT_IN_FREE,
+ BUILT_IN_REALLOC))
return true;
alloc_dealloc_kind = alloc_kind_t::builtin;