From b3d2acb6dce9a25f433c2d5d5bae48e9d2b4149a Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 26 May 2016 15:49:22 +0000 Subject: [PATCH] Fix ivopts estimates for internal functions tree-ssa-loop-ivopts.c:loop_body_includes_call was treating internal calls such as IFN_SQRT as clobbering all caller-saved registers, which I don't think is appropriate for any current internal function. Tested on aarch64-linux-gnu and x86_64-linux-gnu. gcc/ * tree-ssa-loop-ivopts.c (loop_body_includes_call): Don't assume that internal functions will clobber all caller-saved registers. From-SVN: r236780 --- gcc/ChangeLog | 5 +++++ gcc/tree-ssa-loop-ivopts.c | 1 + 2 files changed, 6 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8fe8a26f394..d31de13336f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-05-26 Richard Sandiford + + * tree-ssa-loop-ivopts.c (loop_body_includes_call): Don't assume + that internal functions will clobber all caller-saved registers. + 2016-05-26 Wilco Dijkstra * config/aarch64/aarch64.c (aarch64_case_values_threshold): diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 9ce6b649519..23c988620c3 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -7643,6 +7643,7 @@ loop_body_includes_call (basic_block *body, unsigned num_nodes) { gimple *stmt = gsi_stmt (gsi); if (is_gimple_call (stmt) + && !gimple_call_internal_p (stmt) && !is_inexpensive_builtin (gimple_call_fndecl (stmt))) return true; } -- 2.30.2