summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/NewGVN/pr32607.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/NewGVN/pr32607.ll')
-rw-r--r--llvm/test/Transforms/NewGVN/pr32607.ll33
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/test/Transforms/NewGVN/pr32607.ll b/llvm/test/Transforms/NewGVN/pr32607.ll
new file mode 100644
index 00000000000..203ac75e2d0
--- /dev/null
+++ b/llvm/test/Transforms/NewGVN/pr32607.ll
@@ -0,0 +1,33 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -newgvn %s -S -o - | FileCheck %s
+define hidden void @foo() {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT: top:
+; CHECK-NEXT: br label [[IF:%.*]]
+; CHECK: if:
+; CHECK-NEXT: [[TMP0:%.*]] = phi double [ [[TMP1:%.*]], [[IF]] ], [ undef, [[TOP:%.*]] ]
+; CHECK-NEXT: [[TMP1]] = fadd double [[TMP0]], undef
+; CHECK-NEXT: br i1 false, label [[L50:%.*]], label [[IF]]
+; CHECK: L50:
+; CHECK-NEXT: store i8 undef, i8* null
+; CHECK-NEXT: ret void
+;
+top:
+ %.promoted = load double, double* undef, align 8
+ br label %if
+
+;; This is really a multi-valued phi, because the phi is defined by an expression of the phi.
+;; This means that we can't propagate the value over the backedge, because we'll just cycle
+;; through every value.
+
+if: ; preds = %if, %top
+ %0 = phi double [ %1, %if ], [ %.promoted, %top ]
+ %1 = fadd double %0, undef
+ br i1 false, label %L50, label %if
+
+L50: ; preds = %if
+ %.lcssa = phi double [ %1, %if ]
+ store double %.lcssa, double* undef, align 8
+ ret void
+}
+
OpenPOWER on IntegriCloud