From 123d0a597beb6d9865f808bf15b0d67f2a8fd5b2 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 12 Jul 2021 10:26:25 +0200 Subject: middle-end/101423 - internal calls do not trap This adjusts gimple_could_trap_p to not consider internal function calls to trap compared to indirect calls or calls to weak functions. 2021-07-12 Richard Biener PR middle-end/101423 * gimple.c (gimple_could_trap_p_1): Internal function calls do not trap. * tree-eh.c (tree_could_trap_p): Likewise. --- gcc/tree-eh.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gcc/tree-eh.c') diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index 601285c..57ce8f0 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -2723,8 +2723,11 @@ tree_could_trap_p (tree expr) return TREE_THIS_VOLATILE (expr); case CALL_EXPR: + /* Internal function calls do not trap. */ + if (CALL_EXPR_FN (expr) == NULL_TREE) + return false; t = get_callee_fndecl (expr); - /* Assume that calls to weak functions may trap. */ + /* Assume that indirect and calls to weak functions may trap. */ if (!t || !DECL_P (t)) return true; if (DECL_WEAK (t)) -- cgit v1.1