1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s 2 3define void @test(ptr %p) { 4 load i8, ptr %p, !noalias !0 5 load i8, ptr %p, !noalias !1 6 load i8, ptr %p, !noalias !3 7 load i8, ptr %p, !noalias !5 8 load i8, ptr %p, !noalias !7 9 load i8, ptr %p, !noalias !9 10 load i8, ptr %p, !noalias !11 11 load i8, ptr %p, !noalias !14 12 load i8, ptr %p, !alias.scope !17 13 call void @llvm.experimental.noalias.scope.decl(metadata !20) 14 ret void 15} 16 17declare void @llvm.experimental.noalias.scope.decl(metadata) 18 19; CHECK: scope list must consist of MDNodes 20!0 = !{!"str"} 21 22; CHECK: scope must have two or three operands 23!1 = !{!2} 24!2 = !{!2} 25 26; CHECK: scope must have two or three operands 27!3 = !{!4} 28!4 = !{!4, !5, !6, !7} 29 30; CHECK: first scope operand must be self-referential or string 31!5 = !{!6} 32!6 = !{!7, !8} 33 34; CHECK: third scope operand must be string (if used) 35!7 = !{!8} 36!8 = !{!8, !9, !10} 37 38; CHECK: second scope operand must be MDNode 39!9 = !{!10} 40!10 = !{!10, !"str"} 41 42; CHECK: domain must have one or two operands 43!11 = !{!12} 44!12 = !{!12, !13} 45!13 = !{} 46 47; CHECK: domain must have one or two operands 48!14 = !{!15} 49!15 = !{!15, !16} 50!16 = !{!17, !18, !19} 51 52; CHECK: first domain operand must be self-referential or string 53!17 = !{!18} 54!18 = !{!18, !19} 55!19 = !{!20} 56 57; CHECK: second domain operand must be string (if used) 58!20 = !{!21} 59!21 = !{!21, !22} 60!22 = !{!22, !23} 61!23 = !{} 62