From f12821a43cfa6ae37eaf66ad8978cd45c60a20ff Mon Sep 17 00:00:00 2001 From: Jakub Staszak Date: Sun, 18 Oct 2015 19:34:10 +0000 Subject: Preserve CFG in MergedLoadStoreMotion. This fixes PR24426. llvm-svn: 250660 --- llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp | 1 + llvm/test/Transforms/GVN/pr24426.ll | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 llvm/test/Transforms/GVN/pr24426.ll diff --git a/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp b/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp index 4161d6f7dd7..744ab4b9100 100644 --- a/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp +++ b/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp @@ -118,6 +118,7 @@ public: private: // This transformation requires dominator postdominator info void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.setPreservesCFG(); AU.addRequired(); AU.addRequired(); AU.addPreserved(); diff --git a/llvm/test/Transforms/GVN/pr24426.ll b/llvm/test/Transforms/GVN/pr24426.ll new file mode 100644 index 00000000000..76b190f8fc2 --- /dev/null +++ b/llvm/test/Transforms/GVN/pr24426.ll @@ -0,0 +1,18 @@ +; RUN: opt < %s -memcpyopt -mldst-motion -gvn -S | FileCheck %s + +declare void @check(i8) + +declare void @write(i8* %res) + +define void @test1() { + %1 = alloca [10 x i8] + %2 = bitcast [10 x i8]* %1 to i8* + call void @write(i8* %2) + %3 = load i8, i8* %2 + +; CHECK-NOT: undef + call void @check(i8 %3) + + ret void +} + -- cgit v1.2.3