xref: /llvm-project/llvm/test/Transforms/SimplifyCFG/preserve-load-metadata-3.ll (revision 8979ae42769e529b0f6fce3268492ffb49bd54b9)
1; RUN: opt < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -hoist-common-insts=true -S | FileCheck %s
2
3declare void @bar(ptr)
4declare void @baz(ptr)
5
6; CHECK-LABEL: @test_load_combine_metadata(
7; Check that dereferenceable_or_null metadata is combined
8; CHECK: load ptr, ptr %p
9; CHECK-SAME: !dereferenceable_or_null ![[DEREF:[0-9]+]]
10; CHECK: t:
11; CHECK: f:
12define void @test_load_combine_metadata(i1 %c, ptr %p) {
13  br i1 %c, label %t, label %f
14
15t:
16  %v1 = load ptr, ptr %p, !dereferenceable_or_null !0
17  call void @bar(ptr %v1)
18  br label %cont
19
20f:
21  %v2 = load ptr, ptr %p, !dereferenceable_or_null !1
22  call void @baz(ptr %v2)
23  br label %cont
24
25cont:
26  ret void
27}
28
29; CHECK: ![[DEREF]] = !{i64 8}
30
31!0 = !{i64 8}
32!1 = !{i64 16}
33