diff options
Diffstat (limited to 'test/Analysis')
14 files changed, 114 insertions, 65 deletions
diff --git a/test/Analysis/BasicAA/full-store-partial-alias.ll b/test/Analysis/BasicAA/full-store-partial-alias.ll index 2c34fd5..4de2daf 100644 --- a/test/Analysis/BasicAA/full-store-partial-alias.ll +++ b/test/Analysis/BasicAA/full-store-partial-alias.ll @@ -29,7 +29,9 @@ entry: ret i32 %tmp5.lobit } -!0 = metadata !{metadata !"double", metadata !1} +!0 = metadata !{metadata !4, metadata !4, i64 0} !1 = metadata !{metadata !"omnipotent char", metadata !2} !2 = metadata !{metadata !"Simple C/C++ TBAA", null} -!3 = metadata !{metadata !"int", metadata !1} +!3 = metadata !{metadata !5, metadata !5, i64 0} +!4 = metadata !{metadata !"double", metadata !1} +!5 = metadata !{metadata !"int", metadata !1} diff --git a/test/Analysis/TypeBasedAliasAnalysis/aliastest.ll b/test/Analysis/TypeBasedAliasAnalysis/aliastest.ll index d59e392..76a88c8 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/aliastest.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/aliastest.ll @@ -47,16 +47,21 @@ define i8 @test1_no(i8* %a, i8* %b) nounwind { ; Root note. !0 = metadata !{ } ; Some type. -!1 = metadata !{ metadata !"foo", metadata !0 } +!1 = metadata !{metadata !7, metadata !7, i64 0} ; Some other non-aliasing type. -!2 = metadata !{ metadata !"bar", metadata !0 } +!2 = metadata !{metadata !8, metadata !8, i64 0} ; Some type. -!3 = metadata !{ metadata !"foo", metadata !0 } +!3 = metadata !{metadata !9, metadata !9, i64 0} ; Some type in a different type system. -!4 = metadata !{ metadata !"bar", metadata !"different" } +!4 = metadata !{metadata !10, metadata !10, i64 0} ; Invariant memory. -!5 = metadata !{ metadata !"qux", metadata !0, i1 1 } +!5 = metadata !{metadata !11, metadata !11, i64 0, i1 1} ; Not invariant memory. -!6 = metadata !{ metadata !"qux", metadata !0, i1 0 } +!6 = metadata !{metadata !11, metadata !11, i64 0, i1 0} +!7 = metadata !{ metadata !"foo", metadata !0 } +!8 = metadata !{ metadata !"bar", metadata !0 } +!9 = metadata !{ metadata !"foo", metadata !0 } +!10 = metadata !{ metadata !"bar", metadata !"different" } +!11 = metadata !{ metadata !"qux", metadata !0} diff --git a/test/Analysis/TypeBasedAliasAnalysis/argument-promotion.ll b/test/Analysis/TypeBasedAliasAnalysis/argument-promotion.ll index bb66e37..14bbeac 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/argument-promotion.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/argument-promotion.ll @@ -33,5 +33,7 @@ define i32 @callercaller(i32* %Q) { } !0 = metadata !{metadata !"test"} -!1 = metadata !{metadata !"green", metadata !0} -!2 = metadata !{metadata !"blue", metadata !0} +!1 = metadata !{metadata !3, metadata !3, i64 0} +!2 = metadata !{metadata !4, metadata !4, i64 0} +!3 = metadata !{metadata !"green", metadata !0} +!4 = metadata !{metadata !"blue", metadata !0} diff --git a/test/Analysis/TypeBasedAliasAnalysis/dse.ll b/test/Analysis/TypeBasedAliasAnalysis/dse.ll index 6b44eb6..bcf1f2c 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/dse.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/dse.ll @@ -51,16 +51,21 @@ define i8 @test1_no(i8* %a, i8* %b) nounwind { ; Root note. !0 = metadata !{ } ; Some type. -!1 = metadata !{ metadata !"foo", metadata !0 } +!1 = metadata !{metadata !7, metadata !7, i64 0} ; Some other non-aliasing type. -!2 = metadata !{ metadata !"bar", metadata !0 } +!2 = metadata !{metadata !8, metadata !8, i64 0} ; Some type. -!3 = metadata !{ metadata !"foo", metadata !0 } +!3 = metadata !{metadata !9, metadata !9, i64 0} ; Some type in a different type system. -!4 = metadata !{ metadata !"bar", metadata !"different" } +!4 = metadata !{metadata !10, metadata !10, i64 0} ; Invariant memory. -!5 = metadata !{ metadata !"qux", metadata !0, i1 1 } +!5 = metadata !{metadata !11, metadata !11, i64 0, i1 1} ; Not invariant memory. -!6 = metadata !{ metadata !"qux", metadata !0, i1 0 } +!6 = metadata !{metadata !11, metadata !11, i64 0, i1 0} +!7 = metadata !{ metadata !"foo", metadata !0 } +!8 = metadata !{ metadata !"bar", metadata !0 } +!9 = metadata !{ metadata !"foo", metadata !0 } +!10 = metadata !{ metadata !"bar", metadata !"different" } +!11 = metadata !{ metadata !"qux", metadata !0} diff --git a/test/Analysis/TypeBasedAliasAnalysis/dynamic-indices.ll b/test/Analysis/TypeBasedAliasAnalysis/dynamic-indices.ll index 52e394b..4dc4073 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/dynamic-indices.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/dynamic-indices.ll @@ -13,7 +13,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 ; CHECK: for.end: ; CHECK: %arrayidx31 = getelementptr inbounds %union.vector_t* %t, i64 0, i32 0, i64 1 -; CHECK: %tmp32 = load i64* %arrayidx31, align 8, !tbaa !3 +; CHECK: %tmp32 = load i64* %arrayidx31, align 8, !tbaa [[TAG:!.*]] define void @vrlh(%union.vector_t* %va, %union.vector_t* %vb, %union.vector_t* %vd) nounwind { entry: @@ -123,9 +123,15 @@ for.end: ; preds = %for.body ret float %tmp10 } -!0 = metadata !{metadata !"short", metadata !1} +; CHECK: [[TAG]] = metadata !{metadata [[TYPE_LL:!.*]], metadata [[TYPE_LL]], i64 0} +; CHECK: [[TYPE_LL]] = metadata !{metadata !"long long", metadata {{!.*}}} +!0 = metadata !{metadata !6, metadata !6, i64 0} !1 = metadata !{metadata !"omnipotent char", metadata !2} !2 = metadata !{metadata !"Simple C/C++ TBAA", null} -!3 = metadata !{metadata !"long long", metadata !1} -!4 = metadata !{metadata !"int", metadata !1} -!5 = metadata !{metadata !"float", metadata !1} +!3 = metadata !{metadata !7, metadata !7, i64 0} +!4 = metadata !{metadata !8, metadata !8, i64 0} +!5 = metadata !{metadata !9, metadata !9, i64 0} +!6 = metadata !{metadata !"short", metadata !1} +!7 = metadata !{metadata !"long long", metadata !1} +!8 = metadata !{metadata !"int", metadata !1} +!9 = metadata !{metadata !"float", metadata !1} diff --git a/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll b/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll index 0a30b30..e9fb941 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll @@ -80,6 +80,7 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1) nounwind !0 = metadata !{ } ; Invariant memory. -!1 = metadata !{ metadata !"foo", metadata !0, i1 1 } +!1 = metadata !{metadata !3, metadata !3, i64 0, i1 1 } ; Not invariant memory. -!2 = metadata !{ metadata !"foo", metadata !0, i1 0 } +!2 = metadata !{metadata !3, metadata !3, i64 0, i1 0 } +!3 = metadata !{ metadata !"foo", metadata !0 } diff --git a/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-mismatch.ll b/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-mismatch.ll index eceaa2c..90e1abb 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-mismatch.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-mismatch.ll @@ -85,7 +85,11 @@ if.else: } !0 = metadata !{} -!1 = metadata !{metadata !"red", metadata !0} -!2 = metadata !{metadata !"blu", metadata !0} -!3 = metadata !{metadata !"outer space"} -!4 = metadata !{metadata !"brick red", metadata !1} +!1 = metadata !{metadata !5, metadata !5, i64 0} +!2 = metadata !{metadata !6, metadata !6, i64 0} +!3 = metadata !{metadata !7, metadata !7, i64 0} +!4 = metadata !{metadata !8, metadata !8, i64 0} +!5 = metadata !{metadata !"red", metadata !0} +!6 = metadata !{metadata !"blu", metadata !0} +!7 = metadata !{metadata !"outer space"} +!8 = metadata !{metadata !"brick red", metadata !5} diff --git a/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll b/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll index 6f1c22d..93b8e50 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll @@ -26,5 +26,7 @@ declare void @llvm.arm.neon.vst1.v8i16(i8*, <8 x i16>, i32) nounwind ; CHECK: attributes [[NUW]] = { nounwind } !0 = metadata !{metadata !"tbaa root", null} -!1 = metadata !{metadata !"A", metadata !0} -!2 = metadata !{metadata !"B", metadata !0} +!1 = metadata !{metadata !3, metadata !3, i64 0} +!2 = metadata !{metadata !4, metadata !4, i64 0} +!3 = metadata !{metadata !"A", metadata !0} +!4 = metadata !{metadata !"B", metadata !0} diff --git a/test/Analysis/TypeBasedAliasAnalysis/licm.ll b/test/Analysis/TypeBasedAliasAnalysis/licm.ll index 12a9c1d..e45fc85 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/licm.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/licm.ll @@ -30,8 +30,8 @@ for.end: ; preds = %for.body, %entry } !0 = metadata !{metadata !"root", null} -!1 = metadata !{metadata !"pointer", metadata !0} -!2 = metadata !{metadata !"double", metadata !0} +!1 = metadata !{metadata !6, metadata !6, i64 0} +!2 = metadata !{metadata !7, metadata !7, i64 0} ; LICM shouldn't hoist anything here. @@ -56,6 +56,10 @@ loop: br label %loop } -!3 = metadata !{metadata !"pointer", metadata !4} -!4 = metadata !{metadata !"char", metadata !5} -!5 = metadata !{metadata !"root", null} +!3 = metadata !{metadata !"pointer", metadata !8} +!4 = metadata !{metadata !8, metadata !8, i64 0} +!5 = metadata !{metadata !9, metadata !9, i64 0} +!6 = metadata !{metadata !"pointer", metadata !0} +!7 = metadata !{metadata !"double", metadata !0} +!8 = metadata !{metadata !"char", metadata !9} +!9 = metadata !{metadata !"root", null} diff --git a/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll b/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll index c2407df..6fd6eac 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll @@ -7,7 +7,7 @@ target datalayout = "e-p:64:64:64" ; CHECK: @foo ; CHECK-NEXT: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %p, i8* %q, i64 16, i32 1, i1 false), !tbaa !0 -; CHECK-NEXT: store i8 2, i8* %s, align 1, !tbaa !2 +; CHECK-NEXT: store i8 2, i8* %s, align 1, !tbaa [[TAGA:!.*]] ; CHECK-NEXT: ret void define void @foo(i8* nocapture %p, i8* nocapture %q, i8* nocapture %s) nounwind { tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %p, i8* %q, i64 16, i32 1, i1 false), !tbaa !2 @@ -18,6 +18,10 @@ define void @foo(i8* nocapture %p, i8* nocapture %q, i8* nocapture %s) nounwind declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind +; CHECK [[TAGA]] = metadata !{metadata [[TYPEA:!.*]], metadata [[TYPEA]], i64 0} +; CHECK [[TYPEA]] = metadata !{metadata !"A", metadata !{{.*}}} !0 = metadata !{metadata !"tbaa root", null} -!1 = metadata !{metadata !"A", metadata !0} -!2 = metadata !{metadata !"B", metadata !0} +!1 = metadata !{metadata !3, metadata !3, i64 0} +!2 = metadata !{metadata !4, metadata !4, i64 0} +!3 = metadata !{metadata !"A", metadata !0} +!4 = metadata !{metadata !"B", metadata !0} diff --git a/test/Analysis/TypeBasedAliasAnalysis/placement-tbaa.ll b/test/Analysis/TypeBasedAliasAnalysis/placement-tbaa.ll index f1edb44..609e87c 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/placement-tbaa.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/placement-tbaa.ll @@ -18,7 +18,7 @@ ; Basic AA says MayAlias, TBAA says NoAlias ; CHECK: MayAlias: i64* %i5, i8** %p -; CHECK: NoAlias: store i64 %conv, i64* %i5, align 8, !tbaa !4 <-> store i8* null, i8** %p, align 8, !tbaa !3 +; CHECK: NoAlias: store i64 %conv, i64* %i5, align 8, !tbaa !6 <-> store i8* null, i8** %p, align 8, !tbaa !9 %struct.Foo = type { i64 } %struct.Bar = type { i8* } @@ -32,10 +32,10 @@ entry: store i32 %n, i32* %n.addr, align 4, !tbaa !0 %call = call noalias i8* @_Znwm(i64 8) %0 = bitcast i8* %call to %struct.Foo* - store %struct.Foo* %0, %struct.Foo** %f, align 8, !tbaa !3 - %1 = load %struct.Foo** %f, align 8, !tbaa !3 + store %struct.Foo* %0, %struct.Foo** %f, align 8, !tbaa !4 + %1 = load %struct.Foo** %f, align 8, !tbaa !4 %i = getelementptr inbounds %struct.Foo* %1, i32 0, i32 0 - store i64 1, i64* %i, align 8, !tbaa !4 + store i64 1, i64* %i, align 8, !tbaa !6 store i32 0, i32* %i1, align 4, !tbaa !0 br label %for.cond @@ -46,7 +46,7 @@ for.cond: br i1 %cmp, label %for.body, label %for.end for.body: - %4 = load %struct.Foo** %f, align 8, !tbaa !3 + %4 = load %struct.Foo** %f, align 8, !tbaa !4 %5 = bitcast %struct.Foo* %4 to i8* %new.isnull = icmp eq i8* %5, null br i1 %new.isnull, label %new.cont, label %new.notnull @@ -57,11 +57,11 @@ new.notnull: new.cont: %7 = phi %struct.Bar* [ %6, %new.notnull ], [ null, %for.body ] - store %struct.Bar* %7, %struct.Bar** %b, align 8, !tbaa !3 - %8 = load %struct.Bar** %b, align 8, !tbaa !3 + store %struct.Bar* %7, %struct.Bar** %b, align 8, !tbaa !4 + %8 = load %struct.Bar** %b, align 8, !tbaa !4 %p = getelementptr inbounds %struct.Bar* %8, i32 0, i32 0 - store i8* null, i8** %p, align 8, !tbaa !3 - %9 = load %struct.Foo** %f, align 8, !tbaa !3 + store i8* null, i8** %p, align 8, !tbaa !9 + %9 = load %struct.Foo** %f, align 8, !tbaa !4 %10 = bitcast %struct.Foo* %9 to i8* %new.isnull2 = icmp eq i8* %10, null br i1 %new.isnull2, label %new.cont4, label %new.notnull3 @@ -72,12 +72,12 @@ new.notnull3: new.cont4: %12 = phi %struct.Foo* [ %11, %new.notnull3 ], [ null, %new.cont ] - store %struct.Foo* %12, %struct.Foo** %f, align 8, !tbaa !3 + store %struct.Foo* %12, %struct.Foo** %f, align 8, !tbaa !4 %13 = load i32* %i1, align 4, !tbaa !0 %conv = sext i32 %13 to i64 - %14 = load %struct.Foo** %f, align 8, !tbaa !3 + %14 = load %struct.Foo** %f, align 8, !tbaa !4 %i5 = getelementptr inbounds %struct.Foo* %14, i32 0, i32 0 - store i64 %conv, i64* %i5, align 8, !tbaa !4 + store i64 %conv, i64* %i5, align 8, !tbaa !6 br label %for.inc for.inc: @@ -87,9 +87,9 @@ for.inc: br label %for.cond for.end: - %16 = load %struct.Foo** %f, align 8, !tbaa !3 + %16 = load %struct.Foo** %f, align 8, !tbaa !4 %i6 = getelementptr inbounds %struct.Foo* %16, i32 0, i32 0 - %17 = load i64* %i6, align 8, !tbaa !4 + %17 = load i64* %i6, align 8, !tbaa !6 ret i64 %17 } @@ -97,8 +97,14 @@ declare noalias i8* @_Znwm(i64) attributes #0 = { nounwind } -!0 = metadata !{metadata !"int", metadata !1} -!1 = metadata !{metadata !"omnipotent char", metadata !2} -!2 = metadata !{metadata !"Simple C/C++ TBAA"} -!3 = metadata !{metadata !"any pointer", metadata !1} -!4 = metadata !{metadata !"long", metadata !1} +!0 = metadata !{metadata !1, metadata !1, i64 0} +!1 = metadata !{metadata !"int", metadata !2, i64 0} +!2 = metadata !{metadata !"omnipotent char", metadata !3, i64 0} +!3 = metadata !{metadata !"Simple C/C++ TBAA"} +!4 = metadata !{metadata !5, metadata !5, i64 0} +!5 = metadata !{metadata !"any pointer", metadata !2, i64 0} +!6 = metadata !{metadata !7, metadata !8, i64 0} +!7 = metadata !{metadata !"_ZTS3Foo", metadata !8, i64 0} +!8 = metadata !{metadata !"long", metadata !2, i64 0} +!9 = metadata !{metadata !10, metadata !5, i64 0} +!10 = metadata !{metadata !"_ZTS3Bar", metadata !5, i64 0} diff --git a/test/Analysis/TypeBasedAliasAnalysis/precedence.ll b/test/Analysis/TypeBasedAliasAnalysis/precedence.ll index 47cb5f2..b219ef1 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/precedence.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/precedence.ll @@ -39,8 +39,12 @@ entry: ret i64 %tmp3 } -!0 = metadata !{metadata !"int", metadata !1} +!0 = metadata !{metadata !2, metadata !2, i64 0} !1 = metadata !{metadata !"simple"} -!3 = metadata !{metadata !"float", metadata !1} -!4 = metadata !{metadata !"long", metadata !1} -!5 = metadata !{metadata !"small", metadata !1} +!2 = metadata !{metadata !"int", metadata !1} +!3 = metadata !{metadata !6, metadata !6, i64 0} +!4 = metadata !{metadata !7, metadata !7, i64 0} +!5 = metadata !{metadata !8, metadata !8, i64 0} +!6 = metadata !{metadata !"float", metadata !1} +!7 = metadata !{metadata !"long", metadata !1} +!8 = metadata !{metadata !"small", metadata !1} diff --git a/test/Analysis/TypeBasedAliasAnalysis/sink.ll b/test/Analysis/TypeBasedAliasAnalysis/sink.ll index fd32d6a..726da6c 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/sink.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/sink.ll @@ -1,7 +1,7 @@ ; RUN: opt -tbaa -sink -S < %s | FileCheck %s ; CHECK: a: -; CHECK: %f = load float* %p, !tbaa !2 +; CHECK: %f = load float* %p, !tbaa [[TAGA:!.*]] ; CHECK: store float %f, float* %q define void @foo(float* %p, i1 %c, float* %q, float* %r) { @@ -15,6 +15,10 @@ b: ret void } -!0 = metadata !{metadata !"A", metadata !2} -!1 = metadata !{metadata !"B", metadata !2} +; CHECK: [[TAGA]] = metadata !{metadata [[TYPEA:!.*]], metadata [[TYPEA]], i64 0} +; CHECK: [[TYPEA]] = metadata !{metadata !"A", metadata !{{.*}}} +!0 = metadata !{metadata !3, metadata !3, i64 0} +!1 = metadata !{metadata !4, metadata !4, i64 0} !2 = metadata !{metadata !"test"} +!3 = metadata !{metadata !"A", metadata !2} +!4 = metadata !{metadata !"B", metadata !2} diff --git a/test/Analysis/TypeBasedAliasAnalysis/tbaa-path.ll b/test/Analysis/TypeBasedAliasAnalysis/tbaa-path.ll index ee52763..0cd5c30 100644 --- a/test/Analysis/TypeBasedAliasAnalysis/tbaa-path.ll +++ b/test/Analysis/TypeBasedAliasAnalysis/tbaa-path.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -tbaa -basicaa -struct-path-tbaa -aa-eval -evaluate-tbaa -print-no-aliases -print-may-aliases -disable-output 2>&1 | FileCheck %s -; RUN: opt < %s -tbaa -basicaa -struct-path-tbaa -gvn -S | FileCheck %s --check-prefix=OPT +; RUN: opt < %s -tbaa -basicaa -aa-eval -evaluate-tbaa -print-no-aliases -print-may-aliases -disable-output 2>&1 | FileCheck %s +; RUN: opt < %s -tbaa -basicaa -gvn -S | FileCheck %s --check-prefix=OPT ; Generated from clang/test/CodeGen/tbaa.cpp with "-O1 -struct-path-tbaa -disable-llvm-optzns". %struct.StructA = type { i16, i32, i16, i32 } |