blob: b32604a572b3b9396fd6a2cf3cf1e0025a08923f [file] [edit]
; RUN: llvm-as -disable-verify < %s | llvm-dis | FileCheck %s
define void @test(ptr %p, ptr %q) {
; CHECK-LABEL: define void @test(
; CHECK: call void @llvm.experimental.noalias.scope.decl(metadata [[SELF_SCOPES:![0-9]+]])
; CHECK: load i8, ptr %p, align 1, !alias.scope [[SELF_SCOPES]], !noalias [[NAMED_SCOPES:![0-9]+]]
; CHECK: store i8 %v, ptr %q, align 1, !alias.scope [[NAMED_SCOPES]], !noalias [[SELF_SCOPES]]
call void @llvm.experimental.noalias.scope.decl(metadata !0)
%v = load i8, ptr %p, !alias.scope !0, !noalias !3
store i8 %v, ptr %q, !alias.scope !3, !noalias !0
ret void
}
define void @shares_the_domain(ptr %p, ptr %q) {
; CHECK-LABEL: define void @shares_the_domain(
; CHECK: load i8, ptr %p, align 1, !alias.scope [[SELF_SCOPES]], !noalias [[NAMED_SCOPES]]
%v = load i8, ptr %p, !alias.scope !0, !noalias !3
ret void
}
declare void @llvm.experimental.noalias.scope.decl(metadata)
!0 = !{!1}
!1 = distinct !{!1, !2, !"self-referential scope"}
!2 = distinct !{!2, !"self-referential domain"}
!3 = !{!4}
!4 = !{!"named scope", !5}
!5 = !{!"named domain"}
!6 = !{!7}
!7 = distinct !{!"same name", !8}
!8 = distinct !{!"same domain name"}
!9 = !{!10}
!10 = distinct !{!"same name", !11}
!11 = distinct !{!"same domain name"}
define void @distinct_domains_sharing_a_name(ptr %p, ptr %q) {
; CHECK-LABEL: define void @distinct_domains_sharing_a_name(
; CHECK: load i8, ptr %p, align 1, !alias.scope [[SCOPES_A:![0-9]+]]
; CHECK: store i8 %v, ptr %q, align 1, !noalias [[SCOPES_B:![0-9]+]]
%v = load i8, ptr %p, !alias.scope !6
store i8 %v, ptr %q, !noalias !9
ret void
}
; CHECK-DAG: [[SELF_SCOPES]] = !{[[SELF_SCOPE:![0-9]+]]}
; CHECK-DAG: [[SELF_SCOPE]] = distinct !{[[SELF_SCOPE]], [[SELF_DOMAIN:![0-9]+]], !"self-referential scope"}
; CHECK-DAG: [[SELF_DOMAIN]] = distinct !{[[SELF_DOMAIN]], i1 false, !"self-referential domain"}
; CHECK-DAG: [[NAMED_SCOPES]] = !{[[NAMED_SCOPE:![0-9]+]]}
; CHECK-DAG: [[NAMED_SCOPE]] = !{!"named scope", [[NAMED_DOMAIN:![0-9]+]]}
; CHECK-DAG: [[NAMED_DOMAIN]] = !{!"named domain", i1 false}
; CHECK-DAG: [[SCOPES_A]] = !{[[SCOPE_A:![0-9]+]]}
; CHECK-DAG: [[SCOPE_A]] = distinct !{!"same name", [[DOMAIN_A:![0-9]+]]}
; CHECK-DAG: [[DOMAIN_A]] = distinct !{!"same domain name", i1 false}
; CHECK-DAG: [[SCOPES_B]] = !{[[SCOPE_B:![0-9]+]]}
; CHECK-DAG: [[SCOPE_B]] = distinct !{!"same name", [[DOMAIN_B:![0-9]+]]}
; CHECK-DAG: [[DOMAIN_B]] = distinct !{!"same domain name", i1 false}