[NFC][Loads] Add a testcase for TBAA aware FindAvailableLoadedValue
authorThomas Preud'homme <thomasp@graphcore.ai>
Wed, 24 Mar 2021 17:01:59 +0000 (17:01 +0000)
committerThomas Preud'homme <thomasp@graphcore.ai>
Wed, 24 Mar 2021 17:03:19 +0000 (17:03 +0000)
(D99206)

llvm/test/Transforms/InstCombine/load-no-aliasing.ll [new file with mode: 0644]

diff --git a/llvm/test/Transforms/InstCombine/load-no-aliasing.ll b/llvm/test/Transforms/InstCombine/load-no-aliasing.ll
new file mode 100644 (file)
index 0000000..4147320
--- /dev/null
@@ -0,0 +1,25 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -tbaa -evaluate-aa-metadata -instcombine -S < %s | FileCheck %s
+
+; Check that load to load forwarding works with non aliasing store inbetween.
+define i32 @test_load_store_load_combine(i32*, float*) {
+; CHECK-LABEL: @test_load_store_load_combine(
+; CHECK-NEXT:    [[A:%.*]] = load i32, i32* [[TMP0:%.*]], align 4, !tbaa [[TBAA0:![0-9]+]]
+; CHECK-NEXT:    [[F:%.*]] = sitofp i32 [[A]] to float
+; CHECK-NEXT:    store float [[F]], float* [[TMP1:%.*]], align 4, !tbaa [[TBAA4:![0-9]+]]
+; CHECK-NEXT:    [[B:%.*]] = load i32, i32* [[TMP0]], align 4, !tbaa [[TBAA0]]
+; CHECK-NEXT:    ret i32 [[B]]
+;
+  %a = load i32, i32* %0, align 4, !tbaa !0
+  %f = sitofp i32 %a to float
+  store float %f, float* %1, align 4, !tbaa !4
+  %b = load i32, i32* %0, align 4, !tbaa !0
+  ret i32 %b
+}
+
+!0 = !{!1, !1, i64 0}
+!1 = !{!"int", !2, i64 0}
+!2 = !{!"omnipotent char", !3, i64 0}
+!3 = !{!"Simple C++ TBAA"}
+!4 = !{!5, !5, i64 0}
+!5 = !{!"float", !2, i64 0}