diff mbox series

Fix PR87301

Message ID alpine.LSU.2.20.1809171220040.16707@zhemvz.fhfr.qr
State New
Headers show
Series Fix PR87301 | expand

Commit Message

Richard Biener Sept. 17, 2018, 10:20 a.m. UTC
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2018-09-17  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87301
	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly
	clean EH info from leftover copy assignments.

	* gcc.dg/torture/pr87301.c: New testcase.
diff mbox series

Patch

Index: gcc/tree-ssa-sccvn.c
===================================================================
--- gcc/tree-ssa-sccvn.c	(revision 264357)
+++ gcc/tree-ssa-sccvn.c	(working copy)
@@ -5461,7 +5461,10 @@  eliminate_dom_walker::eliminate_cleanup
 		if (is_gimple_assign (stmt))
 		  {
 		    gimple_assign_set_rhs_from_tree (&gsi, sprime);
-		    update_stmt (gsi_stmt (gsi));
+		    stmt = gsi_stmt (gsi);
+		    update_stmt (stmt);
+		    if (maybe_clean_or_replace_eh_stmt (stmt, stmt))
+		      bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index);
 		    continue;
 		  }
 		else
Index: gcc/testsuite/gcc.dg/torture/pr87301.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr87301.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr87301.c	(working copy)
@@ -0,0 +1,34 @@ 
+/* { dg-do compile } */
+/* { dg-additional-options "-Wno-div-by-zero" } */
+
+void
+bl (int *be)
+{
+  int lo;
+    {
+      int **ny;
+
+      if (*be == 0)
+	{
+	  int ***k8 = &ny;
+	  int uj = (__INTPTR_TYPE__)&lo;
+
+	  for (;;)
+	    if (***k8 == 0)
+	      {
+		uj = !!(1 / 0) ? !(lo = 0) : 0;
+		(void) uj;
+
+		if (*ny == 0)
+		  for (;;)
+		    if (***k8 == 0)
+		      {
+		      }
+
+		for (lo = 0; lo < 2; ++lo)
+		  {
+		  }
+	      }
+	}
+    }
+}