lookupOperandLeader(SI->getPointerOperand())) &&
(lookupMemoryLeader(getMemoryAccess(LI)->getDefiningAccess()) ==
StoreRHS))
- return createVariableExpression(LI);
+ return createStoreExpression(SI, StoreRHS);
}
}
--- /dev/null
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -S -newgvn %s | FileCheck %s
+
+define void @tinkywinky(i64* %b) {
+; CHECK-LABEL: @tinkywinky(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br label [[BODY:%.*]]
+; CHECK: body:
+; CHECK-NEXT: store i64 undef, i64* [[B:%.*]]
+; CHECK-NEXT: [[B2:%.*]] = load i64, i64* [[B]]
+; CHECK-NEXT: br i1 undef, label [[BODY]], label [[END:%.*]]
+; CHECK: end:
+; CHECK-NEXT: br label [[BODY]]
+;
+entry:
+ br label %body
+body:
+ %d.1 = phi i64* [ undef, %entry ], [ %d.1, %body ], [ %b, %end ]
+ store i64 undef, i64* %d.1
+ %b2 = load i64, i64* %b
+ %or = or i64 %b2, 0
+ store i64 %or, i64* %b
+ br i1 undef, label %body, label %end
+end:
+ br label %body
+}