summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2019-11-20 13:44:51 -0800
committerAlina Sbirlea <asbirlea@google.com>2019-11-20 16:36:52 -0800
commitda4baa2a6c966154e19964fdced1119ed2f4d6ee (patch)
treed082c26fab0399dda855cbdff71c28d6981b03a7 /llvm/test/Analysis
parent049043b598ef5b12a5894c0c22db8608be70f517 (diff)
downloadbcm5719-llvm-da4baa2a6c966154e19964fdced1119ed2f4d6ee.tar.gz
bcm5719-llvm-da4baa2a6c966154e19964fdced1119ed2f4d6ee.zip
[MemorySSA] Update analysis when the terminator is a memory instruction.
Update MemorySSA when moving the terminator instruction, as that may be a memory touching instruction. Resolves PR44029.
Diffstat (limited to 'llvm/test/Analysis')
-rw-r--r--llvm/test/Analysis/MemorySSA/pr44029.ll63
1 files changed, 63 insertions, 0 deletions
diff --git a/llvm/test/Analysis/MemorySSA/pr44029.ll b/llvm/test/Analysis/MemorySSA/pr44029.ll
new file mode 100644
index 00000000000..e3aab4d0cef
--- /dev/null
+++ b/llvm/test/Analysis/MemorySSA/pr44029.ll
@@ -0,0 +1,63 @@
+; RUN: opt -loop-simplifycfg -verify-memoryssa -S < %s | FileCheck %s
+; REQUIRES: asserts
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+declare i32 @eggs(...)
+
+declare void @spam()
+
+; CHECK-LABEL: @f()
+define void @f() personality i8* bitcast (i32 (...)* @eggs to i8*) {
+bb:
+ invoke void @spam()
+ to label %bb2 unwind label %bb4
+
+bb2: ; preds = %bb
+ invoke void @spam()
+ to label %bb8 unwind label %bb5
+
+bb4: ; preds = %bb
+ %tmp = landingpad { i8*, i32 }
+ cleanup
+ resume { i8*, i32 } undef
+
+bb5: ; preds = %bb2
+ %tmp6 = landingpad { i8*, i32 }
+ cleanup
+ unreachable
+
+bb8: ; preds = %bb13, %bb2
+ br label %bb10
+
+bb10: ; preds = %bb8
+ invoke void @spam()
+ to label %bb11 unwind label %bb20
+
+bb11: ; preds = %bb10
+ invoke void @spam()
+ to label %bb12 unwind label %bb22
+
+bb12: ; preds = %bb11
+ invoke void @spam()
+ to label %bb13 unwind label %bb24
+
+bb13: ; preds = %bb12
+ br label %bb8
+
+bb20: ; preds = %bb10
+ %tmp21 = landingpad { i8*, i32 }
+ cleanup
+ unreachable
+
+bb22: ; preds = %bb11
+ %tmp23 = landingpad { i8*, i32 }
+ cleanup
+ unreachable
+
+bb24: ; preds = %bb12
+ %tmp25 = landingpad { i8*, i32 }
+ cleanup
+ unreachable
+}
OpenPOWER on IntegriCloud