aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.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/gimplify.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/gimplify.cc')
-rw-r--r--gcc/gimplify.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc
index ade6e33..5a83405 100644
--- a/gcc/gimplify.cc
+++ b/gcc/gimplify.cc
@@ -15830,8 +15830,8 @@ goa_stabilize_expr (tree *expr_p, gimple_seq *pre_p, tree lhs_addr,
if (TREE_CODE (expr) == CALL_EXPR)
{
if (tree fndecl = get_callee_fndecl (expr))
- if (fndecl_built_in_p (fndecl, BUILT_IN_CLEAR_PADDING)
- || fndecl_built_in_p (fndecl, BUILT_IN_MEMCMP))
+ if (fndecl_built_in_p (fndecl, BUILT_IN_CLEAR_PADDING,
+ BUILT_IN_MEMCMP))
{
int nargs = call_expr_nargs (expr);
for (int i = 0; i < nargs; i++)