IR: Make metadata typeless in assembly

Now that `Metadata` is typeless, reflect that in the assembly.  These
are the matching assembly changes for the metadata/value split in
r223802.

  - Only use the `metadata` type when referencing metadata from a call
    intrinsic -- i.e., only when it's used as a `Value`.

  - Stop pretending that `ValueAsMetadata` is wrapped in an `MDNode`
    when referencing it from call intrinsics.

So, assembly like this:

    define @foo(i32 %v) {
      call void @llvm.foo(metadata !{i32 %v}, metadata !0)
      call void @llvm.foo(metadata !{i32 7}, metadata !0)
      call void @llvm.foo(metadata !1, metadata !0)
      call void @llvm.foo(metadata !3, metadata !0)
      call void @llvm.foo(metadata !{metadata !3}, metadata !0)
      ret void, !bar !2
    }
    !0 = metadata !{metadata !2}
    !1 = metadata !{i32* @global}
    !2 = metadata !{metadata !3}
    !3 = metadata !{}

turns into this:

    define @foo(i32 %v) {
      call void @llvm.foo(metadata i32 %v, metadata !0)
      call void @llvm.foo(metadata i32 7, metadata !0)
      call void @llvm.foo(metadata i32* @global, metadata !0)
      call void @llvm.foo(metadata !3, metadata !0)
      call void @llvm.foo(metadata !{!3}, metadata !0)
      ret void, !bar !2
    }
    !0 = !{!2}
    !1 = !{i32* @global}
    !2 = !{!3}
    !3 = !{}

I wrote an upgrade script that handled almost all of the tests in llvm
and many of the tests in cfe (even handling many `CHECK` lines).  I've
attached it (or will attach it in a moment if you're speedy) to PR21532
to help everyone update their out-of-tree testcases.

This is part of PR21532.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224257 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith committed 2014-12-15 19:07:53 +00:00
1 parent 9ecdca9115
commit 1ef70ff39b
703 files changed
+11815 -11795

No files matched your search

@@ -29,9 +29,9 @@ entry:
ret i32 %tmp5.lobit
}
!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 !5, metadata !5, i64 0}
!4 = metadata !{metadata !"double", metadata !1}
!5 = metadata !{metadata !"int", metadata !1}
!0 = !{!4, !4, i64 0}
!1 = !{!"omnipotent char", !2}
!2 = !{!"Simple C/C++ TBAA", null}
!3 = !{!5, !5, i64 0}
!4 = !{!"double", !1}
!5 = !{!"int", !1}
+1 -1
View File
@@ -23,4 +23,4 @@ entry:
; CHECK: %add = add nsw i32 %0, 1
}
!3 = metadata !{}
!3 = !{}
@@ -23,7 +23,7 @@ for.end:
ret void
}
!0 = metadata !{metadata !"branch_weights", i32 0, i32 3}
!0 = !{!"branch_weights", i32 0, i32 3}
; CHECK-LABEL: Printing analysis {{.*}} for function 'infinite_loop'
; CHECK-NEXT: block-frequency-info: infinite_loop
@@ -47,4 +47,4 @@ for.end:
ret void
}
!1 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!1 = !{!"branch_weights", i32 1, i32 1}
+3 -3
View File
@@ -47,7 +47,7 @@ exit:
ret i32 %result
}
!0 = metadata !{metadata !"branch_weights", i32 64, i32 4}
!0 = !{!"branch_weights", i32 64, i32 4}
define i32 @test3(i32 %i, i32 %a, i32 %b, i32 %c, i32 %d, i32 %e) {
; CHECK-LABEL: Printing analysis {{.*}} for function 'test3':
@@ -90,7 +90,7 @@ exit:
ret i32 %result
}
!1 = metadata !{metadata !"branch_weights", i32 4, i32 4, i32 64, i32 4, i32 4}
!1 = !{!"branch_weights", i32 4, i32 4, i32 64, i32 4, i32 4}
define void @nested_loops(i32 %a) {
; CHECK-LABEL: Printing analysis {{.*}} for function 'nested_loops':
@@ -138,4 +138,4 @@ for.end13:
declare void @g(i32)
!2 = metadata !{metadata !"branch_weights", i32 1, i32 4000}
!2 = !{!"branch_weights", i32 1, i32 4000}
@@ -23,5 +23,5 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!0 = metadata !{metadata !"branch_weights", i32 1, i32 9}
!1 = metadata !{metadata !"branch_weights", i32 4, i32 5}
!0 = !{!"branch_weights", i32 1, i32 9}
!1 = !{!"branch_weights", i32 4, i32 5}
@@ -66,9 +66,9 @@ exit:
ret i32 %Return.2
}
!0 = metadata !{metadata !"branch_weights", i32 1, i32 3}
!1 = metadata !{metadata !"branch_weights", i32 4, i32 1}
!2 = metadata !{metadata !"branch_weights", i32 2, i32 1}
!0 = !{!"branch_weights", i32 1, i32 3}
!1 = !{!"branch_weights", i32 4, i32 1}
!2 = !{!"branch_weights", i32 2, i32 1}
declare i32 @c2(i32, i32)
declare i32 @logic2(i32, i32, i32)
@@ -159,7 +159,7 @@ exit:
ret i32 %Return.0
}
!3 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!3 = !{!"branch_weights", i32 1, i32 1}
declare i32 @c3(i32, i32, i32)
declare i32 @logic3(i32, i32, i32, i32)
@@ -37,4 +37,4 @@ exit:
declare i1 @foo()
!0 = metadata !{metadata !"branch_weights", i32 4294967295, i32 1}
!0 = !{!"branch_weights", i32 4294967295, i32 1}
+24 -24
View File
@@ -31,8 +31,8 @@ return:
ret void
}
!0 = metadata !{metadata !"branch_weights", i32 1, i32 7}
!1 = metadata !{metadata !"branch_weights", i32 3, i32 4}
!0 = !{!"branch_weights", i32 1, i32 7}
!1 = !{!"branch_weights", i32 3, i32 4}
; Irreducible control flow
; ========================
@@ -112,7 +112,7 @@ exit:
ret void
}
!2 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!2 = !{!"branch_weights", i32 3, i32 1}
; Testcase #2
; ===========
@@ -156,7 +156,7 @@ exit:
ret void
}
!3 = metadata !{metadata !"branch_weights", i32 2, i32 2, i32 2}
!3 = !{!"branch_weights", i32 2, i32 2, i32 2}
; A true loop with irreducible control flow inside.
define void @loop_around_irreducible(i1 %x) {
@@ -186,8 +186,8 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!4 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!5 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!4 = !{!"branch_weights", i32 1, i32 1}
!5 = !{!"branch_weights", i32 3, i32 1}
; Two unrelated irreducible SCCs.
define void @two_sccs(i1 %x) {
@@ -225,9 +225,9 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!6 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!7 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!8 = metadata !{metadata !"branch_weights", i32 4, i32 1}
!6 = !{!"branch_weights", i32 3, i32 1}
!7 = !{!"branch_weights", i32 1, i32 1}
!8 = !{!"branch_weights", i32 4, i32 1}
; A true loop inside irreducible control flow.
define void @loop_inside_irreducible(i1 %x) {
@@ -257,9 +257,9 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!9 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!10 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!11 = metadata !{metadata !"branch_weights", i32 2, i32 1}
!9 = !{!"branch_weights", i32 1, i32 1}
!10 = !{!"branch_weights", i32 3, i32 1}
!11 = !{!"branch_weights", i32 2, i32 1}
; Irreducible control flow in a branch that's in a true loop.
define void @loop_around_branch_with_irreducible(i1 %x) {
@@ -301,8 +301,8 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!12 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!13 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!12 = !{!"branch_weights", i32 3, i32 1}
!13 = !{!"branch_weights", i32 1, i32 1}
; Irreducible control flow between two true loops.
define void @loop_around_branch_with_irreducible_around_loop(i1 %x) {
@@ -348,10 +348,10 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!14 = metadata !{metadata !"branch_weights", i32 2, i32 1}
!15 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!16 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!17 = metadata !{metadata !"branch_weights", i32 4, i32 1}
!14 = !{!"branch_weights", i32 2, i32 1}
!15 = !{!"branch_weights", i32 1, i32 1}
!16 = !{!"branch_weights", i32 3, i32 1}
!17 = !{!"branch_weights", i32 4, i32 1}
; An irreducible SCC with a non-header.
define void @nonheader(i1 %x) {
@@ -377,9 +377,9 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!18 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!19 = metadata !{metadata !"branch_weights", i32 1, i32 3}
!20 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!18 = !{!"branch_weights", i32 1, i32 1}
!19 = !{!"branch_weights", i32 1, i32 3}
!20 = !{!"branch_weights", i32 3, i32 1}
; An irreducible SCC with an irreducible sub-SCC. In the current version of
; -block-freq, this means an extra header.
@@ -416,6 +416,6 @@ exit:
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
ret void
}
!21 = metadata !{metadata !"branch_weights", i32 2, i32 1}
!22 = metadata !{metadata !"branch_weights", i32 1, i32 1}
!23 = metadata !{metadata !"branch_weights", i32 8, i32 1, i32 3, i32 12}
!21 = !{!"branch_weights", i32 2, i32 1}
!22 = !{!"branch_weights", i32 1, i32 1}
!23 = !{!"branch_weights", i32 8, i32 1, i32 3, i32 12}
@@ -40,5 +40,5 @@ exit:
declare i1 @foo0(i32)
declare i2 @foo1(i32)
!0 = metadata !{metadata !"branch_weights", i32 1, i32 3}
!1 = metadata !{metadata !"branch_weights", i32 1, i32 2, i32 3}
!0 = !{!"branch_weights", i32 1, i32 3}
!1 = !{!"branch_weights", i32 1, i32 2, i32 3}
@@ -55,5 +55,5 @@ declare i1 @foo4(i32)
declare i1 @foo5(i32)
declare i1 @foo6(i32)
!0 = metadata !{metadata !"branch_weights", i32 1, i32 3}
!1 = metadata !{metadata !"branch_weights", i32 3, i32 1}
!0 = !{!"branch_weights", i32 1, i32 3}
!1 = !{!"branch_weights", i32 3, i32 1}
+3 -3
View File
@@ -43,7 +43,7 @@ exit:
ret i32 %result
}
!0 = metadata !{metadata !"branch_weights", i32 64, i32 4}
!0 = !{!"branch_weights", i32 64, i32 4}
define i32 @test3(i32 %i, i32 %a, i32 %b, i32 %c, i32 %d, i32 %e) {
; CHECK: Printing analysis {{.*}} for function 'test3'
@@ -87,7 +87,7 @@ exit:
ret i32 %result
}
!1 = metadata !{metadata !"branch_weights", i32 4, i32 4, i32 64, i32 4, i32 4}
!1 = !{!"branch_weights", i32 4, i32 4, i32 64, i32 4, i32 4}
define i32 @test4(i32 %x) nounwind uwtable readnone ssp {
; CHECK: Printing analysis {{.*}} for function 'test4'
@@ -114,7 +114,7 @@ return:
ret i32 %retval.0
}
!2 = metadata !{metadata !"branch_weights", i32 7, i32 6, i32 4, i32 4, i32 64}
!2 = !{!"branch_weights", i32 7, i32 6, i32 4, i32 4, i32 64}
declare void @coldfunc() cold
@@ -29,9 +29,9 @@ entry:
ret i32 %tmp5.lobit
}
!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 !5, metadata !5, i64 0}
!4 = metadata !{metadata !"double", metadata !1}
!5 = metadata !{metadata !"int", metadata !1}
!0 = !{!4, !4, i64 0}
!1 = !{!"omnipotent char", !2}
!2 = !{!"Simple C/C++ TBAA", null}
!3 = !{!5, !5, i64 0}
!4 = !{!"double", !1}
!5 = !{!"int", !1}
@@ -34,4 +34,4 @@ define i32 @ult_trip_count_with_range(i32 *%ptr0, i32 *%ptr1) {
ret i32 0
}
!0 = metadata !{i32 1, i32 100}
!0 = !{i32 1, i32 100}
+10 -10
View File
@@ -22,25 +22,25 @@ entry:
attributes #0 = { nounwind uwtable }
!0 = metadata !{metadata !0, metadata !"some domain"}
!1 = metadata !{metadata !1, metadata !"some other domain"}
!0 = !{!0, !"some domain"}
!1 = !{!1, !"some other domain"}
; Two scopes (which must be self-referential to avoid being "uniqued"):
!2 = metadata !{metadata !2, metadata !0, metadata !"a scope in dom0"}
!3 = metadata !{metadata !2}
!2 = !{!2, !0, !"a scope in dom0"}
!3 = !{!2}
!4 = metadata !{metadata !4, metadata !0, metadata !"another scope in dom0"}
!5 = metadata !{metadata !4}
!4 = !{!4, !0, !"another scope in dom0"}
!5 = !{!4}
; A list of the two scopes.
!6 = metadata !{metadata !2, metadata !4}
!6 = !{!2, !4}
; Another scope in the second domain
!7 = metadata !{metadata !7, metadata !1, metadata !"another scope in dom1"}
!8 = metadata !{metadata !7}
!7 = !{!7, !1, !"another scope in dom1"}
!8 = !{!7}
; A list of scopes from both domains.
!9 = metadata !{metadata !2, metadata !4, metadata !7}
!9 = !{!2, !4, !7}
; CHECK: NoAlias: %0 = load float* %c, align 4, !alias.scope !0 <-> store float %0, float* %arrayidx.i, align 4, !noalias !6
; CHECK: NoAlias: %0 = load float* %c, align 4, !alias.scope !0 <-> store float %1, float* %arrayidx.i2, align 4, !noalias !6
+2 -2
View File
@@ -22,6 +22,6 @@ entry:
attributes #0 = { nounwind uwtable }
!0 = metadata !{metadata !0, metadata !"some domain"}
!1 = metadata !{metadata !1, metadata !0, metadata !"some scope"}
!0 = !{!0, !"some domain"}
!1 = !{!1, !0, !"some scope"}
+6 -6
View File
@@ -32,10 +32,10 @@ entry:
attributes #0 = { nounwind uwtable }
!0 = metadata !{metadata !1, metadata !3}
!1 = metadata !{metadata !1, metadata !2, metadata !"some scope"}
!2 = metadata !{metadata !2, metadata !"some domain"}
!3 = metadata !{metadata !3, metadata !2, metadata !"some other scope"}
!4 = metadata !{metadata !1}
!5 = metadata !{metadata !3}
!0 = !{!1, !3}
!1 = !{!1, !2, !"some scope"}
!2 = !{!2, !"some domain"}
!3 = !{!3, !2, !"some other scope"}
!4 = !{!1}
!5 = !{!3}
+11 -11
View File
@@ -32,14 +32,14 @@ attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n
!llvm.ident = !{!0}
!0 = metadata !{metadata !"clang version 3.4"}
!1 = metadata !{metadata !2, metadata !2, i64 0}
!2 = metadata !{metadata !"any pointer", metadata !3, i64 0}
!3 = metadata !{metadata !"omnipotent char", metadata !4, i64 0}
!4 = metadata !{metadata !"Simple C/C++ TBAA"}
!5 = metadata !{metadata !6, metadata !2, i64 8}
!6 = metadata !{metadata !"_ZTSN12_GLOBAL__N_11RINS_1FIPi8TreeIterN1I1S1LENS_1KINS_1DIKS2_S3_EEEEE1GEPSD_EE", metadata !7, i64 8}
!7 = metadata !{metadata !"_ZTSN12_GLOBAL__N_11FIPi8TreeIterN1I1S1LENS_1KINS_1DIKS1_S2_EEEEE1GE", metadata !8, i64 0}
!8 = metadata !{metadata !"_ZTSN12_GLOBAL__N_11DIKPi8TreeIterEE", metadata !2, i64 0, metadata !9, i64 8}
!9 = metadata !{metadata !"_ZTS8TreeIter", metadata !2, i64 8, metadata !10, i64 16}
!10 = metadata !{metadata !"bool", metadata !3, i64 0}
!0 = !{!"clang version 3.4"}
!1 = !{!2, !2, i64 0}
!2 = !{!"any pointer", !3, i64 0}
!3 = !{!"omnipotent char", !4, i64 0}
!4 = !{!"Simple C/C++ TBAA"}
!5 = !{!6, !2, i64 8}
!6 = !{!"_ZTSN12_GLOBAL__N_11RINS_1FIPi8TreeIterN1I1S1LENS_1KINS_1DIKS2_S3_EEEEE1GEPSD_EE", !7, i64 8}
!7 = !{!"_ZTSN12_GLOBAL__N_11FIPi8TreeIterN1I1S1LENS_1KINS_1DIKS1_S2_EEEEE1GE", !8, i64 0}
!8 = !{!"_ZTSN12_GLOBAL__N_11DIKPi8TreeIterEE", !2, i64 0, !9, i64 8}
!9 = !{!"_ZTS8TreeIter", !2, i64 8, !10, i64 16}
!10 = !{!"bool", !3, i64 0}
@@ -45,23 +45,23 @@ define i8 @test1_no(i8* %a, i8* %b) nounwind {
}
; Root note.
!0 = metadata !{ }
!0 = !{ }
; Some type.
!1 = metadata !{metadata !7, metadata !7, i64 0}
!1 = !{!7, !7, i64 0}
; Some other non-aliasing type.
!2 = metadata !{metadata !8, metadata !8, i64 0}
!2 = !{!8, !8, i64 0}
; Some type.
!3 = metadata !{metadata !9, metadata !9, i64 0}
!3 = !{!9, !9, i64 0}
; Some type in a different type system.
!4 = metadata !{metadata !10, metadata !10, i64 0}
!4 = !{!10, !10, i64 0}
; Invariant memory.
!5 = metadata !{metadata !11, metadata !11, i64 0, i1 1}
!5 = !{!11, !11, i64 0, i1 1}
; Not invariant memory.
!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}
!6 = !{!11, !11, i64 0, i1 0}
!7 = !{ !"foo", !0 }
!8 = !{ !"bar", !0 }
!9 = !{ !"foo", !0 }
!10 = !{ !"bar", !"different" }
!11 = !{ !"qux", !0}
@@ -32,8 +32,8 @@ define i32 @callercaller(i32* %Q) {
ret i32 %X
}
!0 = metadata !{metadata !"test"}
!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}
!0 = !{!"test"}
!1 = !{!3, !3, i64 0}
!2 = !{!4, !4, i64 0}
!3 = !{!"green", !0}
!4 = !{!"blue", !0}
+12 -12
View File
@@ -50,23 +50,23 @@ define i8 @test1_no(i8* %a, i8* %b) nounwind {
}
; Root note.
!0 = metadata !{ }
!0 = !{ }
; Some type.
!1 = metadata !{metadata !7, metadata !7, i64 0}
!1 = !{!7, !7, i64 0}
; Some other non-aliasing type.
!2 = metadata !{metadata !8, metadata !8, i64 0}
!2 = !{!8, !8, i64 0}
; Some type.
!3 = metadata !{metadata !9, metadata !9, i64 0}
!3 = !{!9, !9, i64 0}
; Some type in a different type system.
!4 = metadata !{metadata !10, metadata !10, i64 0}
!4 = !{!10, !10, i64 0}
; Invariant memory.
!5 = metadata !{metadata !11, metadata !11, i64 0, i1 1}
!5 = !{!11, !11, i64 0, i1 1}
; Not invariant memory.
!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}
!6 = !{!11, !11, i64 0, i1 0}
!7 = !{ !"foo", !0 }
!8 = !{ !"bar", !0 }
!9 = !{ !"foo", !0 }
!10 = !{ !"bar", !"different" }
!11 = !{ !"qux", !0}
@@ -123,15 +123,15 @@ for.end: ; preds = %for.body
ret float %tmp10
}
; 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 !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}
; CHECK: [[TAG]] = !{[[TYPE_LL:!.*]], [[TYPE_LL]], i64 0}
; CHECK: [[TYPE_LL]] = !{!"long long", {{!.*}}}
!0 = !{!6, !6, i64 0}
!1 = !{!"omnipotent char", !2}
!2 = !{!"Simple C/C++ TBAA", null}
!3 = !{!7, !7, i64 0}
!4 = !{!8, !8, i64 0}
!5 = !{!9, !9, i64 0}
!6 = !{!"short", !1}
!7 = !{!"long long", !1}
!8 = !{!"int", !1}
!9 = !{!"float", !1}
@@ -77,10 +77,10 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1) nounwind
; CHECK: attributes #2 = { nounwind readonly }
; Root note.
!0 = metadata !{ }
!0 = !{ }
; Invariant memory.
!1 = metadata !{metadata !3, metadata !3, i64 0, i1 1 }
!1 = !{!3, !3, i64 0, i1 1 }
; Not invariant memory.
!2 = metadata !{metadata !3, metadata !3, i64 0, i1 0 }
!3 = metadata !{ metadata !"foo", metadata !0 }
!2 = !{!3, !3, i64 0, i1 0 }
!3 = !{ !"foo", !0 }
@@ -84,12 +84,12 @@ if.else:
ret void
}
!0 = metadata !{}
!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}
!0 = !{}
!1 = !{!5, !5, i64 0}
!2 = !{!6, !6, i64 0}
!3 = !{!7, !7, i64 0}
!4 = !{!8, !8, i64 0}
!5 = !{!"red", !0}
!6 = !{!"blu", !0}
!7 = !{!"outer space"}
!8 = !{!"brick red", !5}
@@ -25,8 +25,8 @@ declare void @llvm.arm.neon.vst1.v8i16(i8*, <8 x i16>, i32) nounwind
; CHECK: attributes #0 = { nounwind readonly }
; CHECK: attributes [[NUW]] = { nounwind }
!0 = metadata !{metadata !"tbaa root", null}
!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}
!0 = !{!"tbaa root", null}
!1 = !{!3, !3, i64 0}
!2 = !{!4, !4, i64 0}
!3 = !{!"A", !0}
!4 = !{!"B", !0}
+10 -10
View File
@@ -29,9 +29,9 @@ for.end: ; preds = %for.body, %entry
ret void
}
!0 = metadata !{metadata !"root", null}
!1 = metadata !{metadata !6, metadata !6, i64 0}
!2 = metadata !{metadata !7, metadata !7, i64 0}
!0 = !{!"root", null}
!1 = !{!6, !6, i64 0}
!2 = !{!7, !7, i64 0}
; LICM shouldn't hoist anything here.
@@ -56,10 +56,10 @@ loop:
br label %loop
}
!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}
!3 = !{!"pointer", !8}
!4 = !{!8, !8, i64 0}
!5 = !{!9, !9, i64 0}
!6 = !{!"pointer", !0}
!7 = !{!"double", !0}
!8 = !{!"char", !9}
!9 = !{!"root", null}
@@ -18,10 +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 !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}
; CHECK: [[TAGA]] = !{[[TYPEA:!.*]], [[TYPEA]], i64 0}
; CHECK: [[TYPEA]] = !{!"A", !{{.*}}}
!0 = !{!"tbaa root", null}
!1 = !{!3, !3, i64 0}
!2 = !{!4, !4, i64 0}
!3 = !{!"A", !0}
!4 = !{!"B", !0}
@@ -97,14 +97,14 @@ declare noalias i8* @_Znwm(i64)
attributes #0 = { nounwind }
!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}
!0 = !{!1, !1, i64 0}
!1 = !{!"int", !2, i64 0}
!2 = !{!"omnipotent char", !3, i64 0}
!3 = !{!"Simple C/C++ TBAA"}
!4 = !{!5, !5, i64 0}
!5 = !{!"any pointer", !2, i64 0}
!6 = !{!7, !8, i64 0}
!7 = !{!"_ZTS3Foo", !8, i64 0}
!8 = !{!"long", !2, i64 0}
!9 = !{!10, !5, i64 0}
!10 = !{!"_ZTS3Bar", !5, i64 0}
@@ -39,12 +39,12 @@ entry:
ret i64 %tmp3
}
!0 = metadata !{metadata !2, metadata !2, i64 0}
!1 = metadata !{metadata !"simple"}
!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}
!0 = !{!2, !2, i64 0}
!1 = !{!"simple"}
!2 = !{!"int", !1}
!3 = !{!6, !6, i64 0}
!4 = !{!7, !7, i64 0}
!5 = !{!8, !8, i64 0}
!6 = !{!"float", !1}
!7 = !{!"long", !1}
!8 = !{!"small", !1}
+7 -7
View File
@@ -15,10 +15,10 @@ b:
ret void
}
; 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}
; CHECK: [[TAGA]] = !{[[TYPEA:!.*]], [[TYPEA]], i64 0}
; CHECK: [[TYPEA]] = !{!"A", !{{.*}}}
!0 = !{!3, !3, i64 0}
!1 = !{!4, !4, i64 0}
!2 = !{!"test"}
!3 = !{!"A", !2}
!4 = !{!"B", !2}
@@ -363,30 +363,30 @@ entry:
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
!0 = metadata !{metadata !1, metadata !1, i64 0}
!1 = metadata !{metadata !"any pointer", metadata !2}
!2 = metadata !{metadata !"omnipotent char", metadata !3}
!3 = metadata !{metadata !"Simple C/C++ TBAA"}
!4 = metadata !{metadata !5, metadata !5, i64 0}
!5 = metadata !{metadata !"long long", metadata !2}
!6 = metadata !{metadata !7, metadata !7, i64 0}
!7 = metadata !{metadata !"int", metadata !2}
!8 = metadata !{metadata !9, metadata !7, i64 4}
!9 = metadata !{metadata !"_ZTS7StructA", metadata !10, i64 0, metadata !7, i64 4, metadata !10, i64 8, metadata !7, i64 12}
!10 = metadata !{metadata !"short", metadata !2}
!11 = metadata !{metadata !9, metadata !10, i64 0}
!12 = metadata !{metadata !13, metadata !7, i64 8}
!13 = metadata !{metadata !"_ZTS7StructB", metadata !10, i64 0, metadata !9, i64 4, metadata !7, i64 20}
!14 = metadata !{metadata !13, metadata !10, i64 4}
!15 = metadata !{metadata !13, metadata !7, i64 20}
!16 = metadata !{metadata !13, metadata !7, i64 16}
!17 = metadata !{metadata !18, metadata !7, i64 4}
!18 = metadata !{metadata !"_ZTS7StructS", metadata !10, i64 0, metadata !7, i64 4}
!19 = metadata !{metadata !18, metadata !10, i64 0}
!20 = metadata !{metadata !21, metadata !7, i64 4}
!21 = metadata !{metadata !"_ZTS8StructS2", metadata !10, i64 0, metadata !7, i64 4}
!22 = metadata !{metadata !21, metadata !10, i64 0}
!23 = metadata !{metadata !24, metadata !7, i64 12}
!24 = metadata !{metadata !"_ZTS7StructC", metadata !10, i64 0, metadata !13, i64 4, metadata !7, i64 28}
!25 = metadata !{metadata !26, metadata !7, i64 12}
!26 = metadata !{metadata !"_ZTS7StructD", metadata !10, i64 0, metadata !13, i64 4, metadata !7, i64 28, metadata !2, i64 32}
!0 = !{!1, !1, i64 0}
!1 = !{!"any pointer", !2}
!2 = !{!"omnipotent char", !3}
!3 = !{!"Simple C/C++ TBAA"}
!4 = !{!5, !5, i64 0}
!5 = !{!"long long", !2}
!6 = !{!7, !7, i64 0}
!7 = !{!"int", !2}
!8 = !{!9, !7, i64 4}
!9 = !{!"_ZTS7StructA", !10, i64 0, !7, i64 4, !10, i64 8, !7, i64 12}
!10 = !{!"short", !2}
!11 = !{!9, !10, i64 0}
!12 = !{!13, !7, i64 8}
!13 = !{!"_ZTS7StructB", !10, i64 0, !9, i64 4, !7, i64 20}
!14 = !{!13, !10, i64 4}
!15 = !{!13, !7, i64 20}
!16 = !{!13, !7, i64 16}
!17 = !{!18, !7, i64 4}
!18 = !{!"_ZTS7StructS", !10, i64 0, !7, i64 4}
!19 = !{!18, !10, i64 0}
!20 = !{!21, !7, i64 4}
!21 = !{!"_ZTS8StructS2", !10, i64 0, !7, i64 4}
!22 = !{!21, !10, i64 0}
!23 = !{!24, !7, i64 12}
!24 = !{!"_ZTS7StructC", !10, i64 0, !13, i64 4, !7, i64 28}
!25 = !{!26, !7, i64 12}
!26 = !{!"_ZTS7StructD", !10, i64 0, !13, i64 4, !7, i64 28, !2, i64 32}