; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s define void @test(i8* %p) { load i8, i8* %p, !noalias !0 load i8, i8* %p, !noalias !1 load i8, i8* %p, !noalias !3 load i8, i8* %p, !noalias !5 load i8, i8* %p, !noalias !7 load i8, i8* %p, !noalias !9 load i8, i8* %p, !noalias !11 load i8, i8* %p, !noalias !14 load i8, i8* %p, !alias.scope !17 call void @llvm.experimental.noalias.scope.decl(metadata !20) ret void } declare void @llvm.experimental.noalias.scope.decl(metadata) ; CHECK: scope list must consist of MDNodes !0 = !{!"str"} ; CHECK: scope must have two or three operands !1 = !{!2} !2 = !{!2} ; CHECK: scope must have two or three operands !3 = !{!4} !4 = !{!4, !5, !6, !7} ; CHECK: first scope operand must be self-referential or string !5 = !{!6} !6 = !{!7, !8} ; CHECK: third scope operand must be string (if used) !7 = !{!8} !8 = !{!8, !9, !10} ; CHECK: second scope operand must be MDNode !9 = !{!10} !10 = !{!10, !"str"} ; CHECK: domain must have one or two operands !11 = !{!12} !12 = !{!12, !13} !13 = !{} ; CHECK: domain must have one or two operands !14 = !{!15} !15 = !{!15, !16} !16 = !{!17, !18, !19} ; CHECK: first domain operand must be self-referential or string !17 = !{!18} !18 = !{!18, !19} !19 = !{!20} ; CHECK: second domain operand must be string (if used) !20 = !{!21} !21 = !{!21, !22} !22 = !{!22, !23} !23 = !{}