Assume a call is expensive when it mismatches
Commit Message
This makes sure to not consider calls to builtin decls with
mismatching arguments as inexpensive.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
2022-04-13 Richard Biener <rguenther@suse.de>
* tree-scalar-evolution.cc (expression_expensive_p):
Never consider mismatched calls as cheap.
---
gcc/tree-scalar-evolution.cc | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
@@ -3420,12 +3420,15 @@ expression_expensive_p (tree expr, hash_map<tree, uint64_t> &cache,
break;
return true;
}
+ break;
+
default:
+ if (cfn == CFN_LAST
+ || !is_inexpensive_builtin (get_callee_fndecl (expr)))
+ return true;
break;
}
- if (!is_inexpensive_builtin (get_callee_fndecl (expr)))
- return true;
FOR_EACH_CALL_EXPR_ARG (arg, iter, expr)
if (expression_expensive_p (arg, cache, op_cost))
return true;