diff options
| author | Jakub Staszak <kubastaszak@gmail.com> | 2015-10-18 19:34:10 +0000 |
|---|---|---|
| committer | Jakub Staszak <kubastaszak@gmail.com> | 2015-10-18 19:34:10 +0000 |
| commit | f12821a43cfa6ae37eaf66ad8978cd45c60a20ff (patch) | |
| tree | 073365387a14b8fcd796c29e23cc3b491d3db61f | |
| parent | da3b3c78e78b0df94bd38a1f6003bdf9e37c6c17 (diff) | |
| download | bcm5719-llvm-f12821a43cfa6ae37eaf66ad8978cd45c60a20ff.tar.gz bcm5719-llvm-f12821a43cfa6ae37eaf66ad8978cd45c60a20ff.zip | |
Preserve CFG in MergedLoadStoreMotion. This fixes PR24426.
llvm-svn: 250660
| -rw-r--r-- | llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp | 1 | ||||
| -rw-r--r-- | llvm/test/Transforms/GVN/pr24426.ll | 18 |
2 files changed, 19 insertions, 0 deletions
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<TargetLibraryInfoWrapperPass>(); AU.addRequired<AAResultsWrapperPass>(); AU.addPreserved<GlobalsAAWrapperPass>(); 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 +} + |

