From 60e12a2279b63058b63cd186910ea23298e1b757 Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Wed, 24 Mar 2021 17:01:59 +0000 Subject: [PATCH] [NFC][Loads] Add a testcase for TBAA aware FindAvailableLoadedValue (D99206) --- .../Transforms/InstCombine/load-no-aliasing.ll | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 llvm/test/Transforms/InstCombine/load-no-aliasing.ll diff --git a/llvm/test/Transforms/InstCombine/load-no-aliasing.ll b/llvm/test/Transforms/InstCombine/load-no-aliasing.ll new file mode 100644 index 0000000..4147320 --- /dev/null +++ b/llvm/test/Transforms/InstCombine/load-no-aliasing.ll @@ -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} -- 2.7.4