[gcc/devel/ranger] re PR tree-optimization/93054 (ICE in gimple_set_lhs, at gimple.c:1820)

Aldy Hernandez aldyh@gcc.gnu.org
Wed Jun 17 17:44:58 GMT 2020


https://gcc.gnu.org/g:00294b189cf3285b17b4ca4135341e2614783553

commit 00294b189cf3285b17b4ca4135341e2614783553
Author: Richard Biener <rguenther@suse.de>
Date:   Thu Jan 9 10:41:38 2020 +0000

    re PR tree-optimization/93054 (ICE in gimple_set_lhs, at gimple.c:1820)
    
    2020-01-09  Richard Biener  <rguenther@suse.de>
    
            PR middle-end/93054
            * gimplify.c (gimplify_expr): Deal with NOP definitions.
    
            * gcc.dg/pr93054.c: New testcase.
    
    From-SVN: r280039

Diff:
---
 gcc/ChangeLog                  |  5 +++++
 gcc/gimplify.c                 |  3 ++-
 gcc/testsuite/ChangeLog        |  5 +++++
 gcc/testsuite/gcc.dg/pr93054.c | 10 ++++++++++
 4 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dbac2a41cfa..2339a87f99b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2020-01-09  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/93054
+	* gimplify.c (gimplify_expr): Deal with NOP definitions.
+
 2020-01-09  Richard Biener  <rguenther@suse.de>
 
 	PR tree-optimization/93040
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 73fb2e7cd7e..4243d3a83b8 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -14622,7 +14622,8 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
 	{
 	  /* Avoid the extra copy if possible.  */
 	  *expr_p = create_tmp_reg (TREE_TYPE (name));
-	  gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p);
+	  if (!gimple_nop_p (SSA_NAME_DEF_STMT (name)))
+	    gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p);
 	  release_ssa_name (name);
 	}
     }
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0e18082a829..71106d10033 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-01-09  Richard Biener  <rguenther@suse.de>
+
+	PR middle-end/93054
+	* gcc.dg/pr93054.c: New testcase.
+
 2020-01-09  Richard Biener  <rguenther@suse.de>
 
 	PR tree-optimization/93040
diff --git a/gcc/testsuite/gcc.dg/pr93054.c b/gcc/testsuite/gcc.dg/pr93054.c
new file mode 100644
index 00000000000..1d4680d28e6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr93054.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+
+__attribute__ ((returns_twice)) int
+bp (int);
+
+__attribute__ ((noreturn)) int
+cb (void)
+{
+  return bp (cb ()); /* { dg-warning "declared .noreturn." } */
+}


More information about the Gcc-cvs mailing list