diff mbox

Fix PR81083

Message ID alpine.LSU.2.20.1706140920150.22867@zhemvz.fhfr.qr
State New
Headers show

Commit Message

Richard Biener June 14, 2017, 7:21 a.m. UTC
The following fixes PR81083, we shouldn't end up with abnormals as SSA
vals, even as VN hash value.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk 
sofar.

Richard.

2017-06-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81083
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
	as values.

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

Patch

Index: gcc/tree-ssa-sccvn.c
===================================================================
--- gcc/tree-ssa-sccvn.c	(revision 249145)
+++ gcc/tree-ssa-sccvn.c	(working copy)
@@ -2035,7 +2035,9 @@  vn_reference_lookup_3 (ao_ref *ref, tree
 	  ops[1] = bitsize_int (ref->size);
 	  ops[2] = bitsize_int (offset - offset2);
 	  tree val = vn_nary_build_or_lookup (rcode, vr->type, ops);
-	  if (val)
+	  if (val
+	      && (TREE_CODE (val) != SSA_NAME
+		  || ! SSA_NAME_OCCURS_IN_ABNORMAL_PHI (val)))
 	    {
 	      vn_reference_t res = vn_reference_lookup_or_insert_for_pieces
 		  (vuse, vr->set, vr->type, vr->operands, val);
Index: gcc/testsuite/gcc.dg/torture/pr81083.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr81083.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr81083.c	(working copy)
@@ -0,0 +1,13 @@ 
+/* { dg-do compile } */
+
+void a(int arg)
+{
+  extern struct { int x; } obj;
+  setjmp();
+  obj.x = arg;
+  arg = arg;
+  if (obj.x)
+    func();
+  if (obj.x)
+    func();
+}