summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/MemorySSA/pr43427.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Analysis/MemorySSA/pr43427.ll')
-rw-r--r--llvm/test/Analysis/MemorySSA/pr43427.ll42
1 files changed, 42 insertions, 0 deletions
diff --git a/llvm/test/Analysis/MemorySSA/pr43427.ll b/llvm/test/Analysis/MemorySSA/pr43427.ll
new file mode 100644
index 00000000000..f7088782217
--- /dev/null
+++ b/llvm/test/Analysis/MemorySSA/pr43427.ll
@@ -0,0 +1,42 @@
+; RUN: opt -disable-output -licm -print-memoryssa -enable-mssa-loop-dependency=true < %s 2>&1 | FileCheck %s
+
+; CHECK-LABEL: @f()
+; CHECK: 8 = MemoryPhi(
+; CHECK: 7 = MemoryPhi(
+; CHECK: 9 = MemoryPhi(
+define void @f() {
+entry:
+ %e = alloca i16, align 1
+ br label %lbl1
+
+lbl1: ; preds = %if.else, %cleanup, %entry
+ store i16 undef, i16* %e, align 1
+ call void @g()
+ br i1 undef, label %for.end, label %if.else
+
+for.end: ; preds = %lbl1
+ br i1 undef, label %lbl3, label %lbl2
+
+lbl2: ; preds = %lbl3, %for.end
+ br label %lbl3
+
+lbl3: ; preds = %lbl2, %for.end
+ br i1 undef, label %lbl2, label %cleanup
+
+cleanup: ; preds = %lbl3
+ %cleanup.dest = load i32, i32* undef, align 1
+ %switch = icmp ult i32 %cleanup.dest, 1
+ br i1 %switch, label %cleanup.cont, label %lbl1
+
+cleanup.cont: ; preds = %cleanup
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* null)
+ ret void
+
+if.else: ; preds = %lbl1
+ br label %lbl1
+}
+
+declare void @g()
+
+; Function Attrs: argmemonly nounwind willreturn
+declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture)
OpenPOWER on IntegriCloud