summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2015-12-04 16:40:05 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2015-12-04 16:40:05 +0000
commite7f8c9f3d63fb349f076e3710bae3b6f3415b191 (patch)
tree92967007f7e1f4591a804ffb3cde326a0431b58b
parent6e8d7db2b358fd019def3f1beef0caa43d416099 (diff)
downloadgcc-e7f8c9f3d63fb349f076e3710bae3b6f3415b191.tar.gz
* tree-tailcall.c (find_tail_calls): Ignore GIMPLE_NOPs.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231282 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/tree-tailcall.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b6ff6e162f5..d9a0bf89569 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,7 @@
2015-12-04 Jakub Jelinek <jakub@redhat.com>
+ * tree-tailcall.c (find_tail_calls): Ignore GIMPLE_NOPs.
+
PR tree-optimization/68680
* calls.c (special_function_p): Return ECF_MAY_BE_ALLOCA for
BUILT_IN_ALLOCA{,_WITH_ALIGN}. Don't check for __builtin_alloca
diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c
index bbd1b29ae48..a2585fbc533 100644
--- a/gcc/tree-tailcall.c
+++ b/gcc/tree-tailcall.c
@@ -412,9 +412,10 @@ find_tail_calls (basic_block bb, struct tailcall **ret)
{
stmt = gsi_stmt (gsi);
- /* Ignore labels, returns, clobbers and debug stmts. */
+ /* Ignore labels, returns, nops, clobbers and debug stmts. */
if (gimple_code (stmt) == GIMPLE_LABEL
|| gimple_code (stmt) == GIMPLE_RETURN
+ || gimple_code (stmt) == GIMPLE_NOP
|| gimple_clobber_p (stmt)
|| is_gimple_debug (stmt))
continue;
@@ -532,7 +533,8 @@ find_tail_calls (basic_block bb, struct tailcall **ret)
stmt = gsi_stmt (agsi);
- if (gimple_code (stmt) == GIMPLE_LABEL)
+ if (gimple_code (stmt) == GIMPLE_LABEL
+ || gimple_code (stmt) == GIMPLE_NOP)
continue;
if (gimple_code (stmt) == GIMPLE_RETURN)