diff options
| author | Artur Pilipenko <apilipenko@azulsystems.com> | 2015-11-02 17:53:51 +0000 |
|---|---|---|
| committer | Artur Pilipenko <apilipenko@azulsystems.com> | 2015-11-02 17:53:51 +0000 |
| commit | 5c5011d503fa8c2d225f947adec3bda6141b91c5 (patch) | |
| tree | 8960d95cb25d67ab261f4952230cf04e1168ac9f /llvm/test/Transforms/SimplifyCFG | |
| parent | 5daa9b231f5ba14ee8dd902260c8edae13cc01de (diff) | |
| download | bcm5719-llvm-5c5011d503fa8c2d225f947adec3bda6141b91c5.tar.gz bcm5719-llvm-5c5011d503fa8c2d225f947adec3bda6141b91c5.zip | |
Preserve load alignment and dereferenceable metadata during some transformations
Reviewed By: hfinkel
Differential Revision: http://reviews.llvm.org/D13953
llvm-svn: 251809
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG')
3 files changed, 96 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-2.ll b/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-2.ll new file mode 100644 index 00000000000..94d3565ce98 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-2.ll @@ -0,0 +1,32 @@ +; RUN: opt < %s -simplifycfg -S | FileCheck %s + +declare void @bar(i32*) +declare void @baz(i32*) + +; CHECK-LABEL: @test_load_combine_metadata( +; Check that dereferenceable metadata is combined +; CHECK: load i32*, i32** %p +; CHECK-SAME: !dereferenceable ![[DEREF:[0-9]+]] +; CHECK: t: +; CHECK: f: +define void @test_load_combine_metadata(i1 %c, i32** %p) { + br i1 %c, label %t, label %f + +t: + %v1 = load i32*, i32** %p, !dereferenceable !0 + call void @bar(i32* %v1) + br label %cont + +f: + %v2 = load i32*, i32** %p, !dereferenceable !1 + call void @baz(i32* %v2) + br label %cont + +cont: + ret void +} + +; CHECK: ![[DEREF]] = !{i64 8} + +!0 = !{i64 8} +!1 = !{i64 16} diff --git a/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-3.ll b/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-3.ll new file mode 100644 index 00000000000..92bdf6ec5c1 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-3.ll @@ -0,0 +1,32 @@ +; RUN: opt < %s -simplifycfg -S | FileCheck %s + +declare void @bar(i32*) +declare void @baz(i32*) + +; CHECK-LABEL: @test_load_combine_metadata( +; Check that dereferenceable_or_null metadata is combined +; CHECK: load i32*, i32** %p +; CHECK-SAME: !dereferenceable_or_null ![[DEREF:[0-9]+]] +; CHECK: t: +; CHECK: f: +define void @test_load_combine_metadata(i1 %c, i32** %p) { + br i1 %c, label %t, label %f + +t: + %v1 = load i32*, i32** %p, !dereferenceable_or_null !0 + call void @bar(i32* %v1) + br label %cont + +f: + %v2 = load i32*, i32** %p, !dereferenceable_or_null !1 + call void @baz(i32* %v2) + br label %cont + +cont: + ret void +} + +; CHECK: ![[DEREF]] = !{i64 8} + +!0 = !{i64 8} +!1 = !{i64 16} diff --git a/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata.ll b/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata.ll new file mode 100644 index 00000000000..89815c84315 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata.ll @@ -0,0 +1,32 @@ +; RUN: opt < %s -simplifycfg -S | FileCheck %s + +declare void @bar(i32*) +declare void @baz(i32*) + +; CHECK-LABEL: @test_load_combine_metadata( +; Check that align metadata is combined +; CHECK: load i32*, i32** %p +; CHECK-SAME: !align ![[ALIGN:[0-9]+]] +; CHECK: t: +; CHECK: f: +define void @test_load_combine_metadata(i1 %c, i32** %p) { + br i1 %c, label %t, label %f + +t: + %v1 = load i32*, i32** %p, !align !0 + call void @bar(i32* %v1) + br label %cont + +f: + %v2 = load i32*, i32** %p, !align !1 + call void @baz(i32* %v2) + br label %cont + +cont: + ret void +} + +; CHECK: ![[ALIGN]] = !{i64 8} + +!0 = !{i64 8} +!1 = !{i64 16} |

