diff options
Diffstat (limited to 'test/Assembler')
116 files changed, 953 insertions, 58 deletions
diff --git a/test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll b/test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll index 5cb869d..50ad32e 100644 --- a/test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll +++ b/test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll @@ -1,4 +1,4 @@ -; RUN: opt -O3 < %s | llvm-dis | not grep badref +; RUN: opt -S -O3 < %s | FileCheck %s ; RUN: verify-uselistorder %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" @@ -12,7 +12,8 @@ target triple = "x86_64-apple-darwin10.2" define i32 @main() nounwind readonly { %diff1 = alloca i64 ; <i64*> [#uses=2] - call void @llvm.dbg.declare(metadata !{i64* %diff1}, metadata !0, metadata !{metadata !"0x102"}) +; CHECK: call void @llvm.dbg.value(metadata i64 72, + call void @llvm.dbg.declare(metadata i64* %diff1, metadata !0, metadata !{!"0x102"}) store i64 72, i64* %diff1, align 8 %v1 = load %struct.test** @TestArrayPtr, align 8 ; <%struct.test*> [#uses=1] %v2 = ptrtoint %struct.test* %v1 to i64 ; <i64> [#uses=1] @@ -23,13 +24,16 @@ define i32 @main() nounwind readonly { declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone -!7 = metadata !{metadata !1} -!6 = metadata !{metadata !"0x11\0012\00clang version 3.0 (trunk 131941)\001\00\000\00\000", metadata !8, metadata !9, metadata !9, metadata !7, null, null} ; [ DW_TAG_compile_unit ] -!0 = metadata !{metadata !"0x100\00c\002\000", metadata !1, metadata !2, metadata !5} ; [ DW_TAG_auto_variable ] -!1 = metadata !{metadata !"0x2e\00main\00main\00\001\000\001\000\006\00256\000\001", metadata !8, metadata !2, metadata !3, null, i32 ()* @main, null, null, null} ; [ DW_TAG_subprogram ] -!2 = metadata !{metadata !"0x29", metadata !8} ; [ DW_TAG_file_type ] -!3 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", metadata !8, metadata !2, null, metadata !4, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!4 = metadata !{metadata !5} -!5 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, metadata !6} ; [ DW_TAG_base_type ] -!8 = metadata !{metadata !"/d/j/debug-test.c", metadata !"/Volumes/Data/b"} -!9 = metadata !{i32 0} +!7 = !{!1} +!6 = !{!"0x11\0012\00clang version 3.0 (trunk 131941)\001\00\000\00\000", !8, !9, !9, !7, null, null} ; [ DW_TAG_compile_unit ] +!0 = !{!"0x100\00c\002\000", !1, !2, !5} ; [ DW_TAG_auto_variable ] +!1 = !{!"0x2e\00main\00main\00\001\000\001\000\006\00256\000\001", !8, !2, !3, null, i32 ()* @main, null, null, null} ; [ DW_TAG_subprogram ] +!2 = !{!"0x29", !8} ; [ DW_TAG_file_type ] +!3 = !{!"0x15\00\000\000\000\000\000\000", !8, !2, null, !4, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!4 = !{!5} +!5 = !{!"0x24\00int\000\0032\0032\000\000\005", null, !6} ; [ DW_TAG_base_type ] +!8 = !{!"/d/j/debug-test.c", !"/Volumes/Data/b"} +!9 = !{i32 0} + +!llvm.module.flags = !{!10} +!10 = !{i32 1, !"Debug Info Version", i32 2} diff --git a/test/Assembler/ConstantExprNoFold.ll b/test/Assembler/ConstantExprNoFold.ll index 8d03e7a..83236d5 100644 --- a/test/Assembler/ConstantExprNoFold.ll +++ b/test/Assembler/ConstantExprNoFold.ll @@ -31,6 +31,17 @@ target datalayout = "p:32:32" @weak.gep = global i32* getelementptr (i32* @weak, i32 1) @weak = extern_weak global i32 +; An object with weak linkage cannot have it's identity determined at compile time. +; CHECK: @F = global i1 icmp eq (i32* @weakany, i32* @glob) +@F = global i1 icmp eq (i32* @weakany, i32* @glob) +@weakany = weak global i32 0 + +; Empty globals might end up anywhere, even on top of another global. +; CHECK: @empty.cmp = global i1 icmp eq ([0 x i8]* @empty.1, [0 x i8]* @empty.2) +@empty.1 = external global [0 x i8], align 1 +@empty.2 = external global [0 x i8], align 1 +@empty.cmp = global i1 icmp eq ([0 x i8]* @empty.1, [0 x i8]* @empty.2) + ; Don't add an inbounds on @glob.a3, since it's not inbounds. ; CHECK: @glob.a3 = alias getelementptr (i32* @glob.a2, i32 1) @glob = global i32 0 diff --git a/test/Assembler/alloca-invalid-type-2.ll b/test/Assembler/alloca-invalid-type-2.ll new file mode 100644 index 0000000..7b1cc62 --- /dev/null +++ b/test/Assembler/alloca-invalid-type-2.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: invalid type for alloca + +define void @test() { +entry: + alloca i32 (i32) + ret void +} diff --git a/test/Assembler/alloca-invalid-type.ll b/test/Assembler/alloca-invalid-type.ll new file mode 100644 index 0000000..413bcbd --- /dev/null +++ b/test/Assembler/alloca-invalid-type.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: invalid type for alloca + +define void @test() { +entry: + alloca metadata !{null} + ret void +} diff --git a/test/Assembler/call-invalid-1.ll b/test/Assembler/call-invalid-1.ll new file mode 100644 index 0000000..4a12b14 --- /dev/null +++ b/test/Assembler/call-invalid-1.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s + +declare void @f() + +define void @g() { + call void @f() align 8 +; CHECK: error: call instructions may not have an alignment + ret void +} diff --git a/test/Assembler/debug-info.ll b/test/Assembler/debug-info.ll new file mode 100644 index 0000000..435b892 --- /dev/null +++ b/test/Assembler/debug-info.ll @@ -0,0 +1,72 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !0, !1, !2, !3, !4, !5, !6, !7, !8, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27, !27} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27, !28, !29, !30} + +; CHECK: !0 = !MDSubrange(count: 3) +; CHECK-NEXT: !1 = !MDSubrange(count: 3, lowerBound: 4) +; CHECK-NEXT: !2 = !MDSubrange(count: 3, lowerBound: -5) +!0 = !MDSubrange(count: 3) +!1 = !MDSubrange(count: 3, lowerBound: 0) + +!2 = !MDSubrange(count: 3, lowerBound: 4) +!3 = !MDSubrange(count: 3, lowerBound: -5) + +; CHECK-NEXT: !3 = !MDEnumerator(name: "seven", value: 7) +; CHECK-NEXT: !4 = !MDEnumerator(name: "negeight", value: -8) +; CHECK-NEXT: !5 = !MDEnumerator(name: "", value: 0) +!4 = !MDEnumerator(name: "seven", value: 7) +!5 = !MDEnumerator(name: "negeight", value: -8) +!6 = !MDEnumerator(name: "", value: 0) + +; CHECK-NEXT: !6 = !MDBasicType(tag: DW_TAG_base_type, name: "name", size: 1, align: 2, encoding: DW_ATE_unsigned_char) +; CHECK-NEXT: !7 = !MDBasicType(tag: DW_TAG_unspecified_type, name: "decltype(nullptr)") +; CHECK-NEXT: !8 = !MDBasicType(tag: DW_TAG_base_type) +!7 = !MDBasicType(tag: DW_TAG_base_type, name: "name", size: 1, align: 2, encoding: DW_ATE_unsigned_char) +!8 = !MDBasicType(tag: DW_TAG_unspecified_type, name: "decltype(nullptr)") +!9 = !MDBasicType(tag: DW_TAG_base_type) +!10 = !MDBasicType(tag: DW_TAG_base_type, name: "", size: 0, align: 0, encoding: 0) + +; CHECK-NEXT: !9 = distinct !{} +; CHECK-NEXT: !10 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +; CHECK-NEXT: !11 = distinct !{} +; CHECK-NEXT: !12 = !MDFile(filename: "", directory: "") +!11 = distinct !{} +!12 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +!13 = distinct !{} +!14 = !MDFile(filename: "", directory: "") + +; CHECK-NEXT: !13 = !MDDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 32, align: 32) +!15 = !MDDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 32, align: 32) + +; CHECK-NEXT: !14 = !MDCompositeType(tag: DW_TAG_structure_type, name: "MyType", file: !10, line: 2, size: 32, align: 32, identifier: "MangledMyType") +; CHECK-NEXT: !15 = distinct !MDCompositeType(tag: DW_TAG_structure_type, name: "Base", file: !10, line: 3, scope: !14, size: 128, align: 32, offset: 64, flags: DIFlagPublic, elements: !16, runtimeLang: DW_LANG_C_plus_plus_11, vtableHolder: !15, templateParams: !18, identifier: "MangledBase") +; CHECK-NEXT: !16 = !{!17} +; CHECK-NEXT: !17 = !MDDerivedType(tag: DW_TAG_member, name: "field", file: !10, line: 4, scope: !15, baseType: !6, size: 32, align: 32, offset: 32, flags: DIFlagPublic) +; CHECK-NEXT: !18 = !{!6} +; CHECK-NEXT: !19 = !MDCompositeType(tag: DW_TAG_structure_type, name: "Derived", file: !10, line: 3, scope: !14, baseType: !15, size: 128, align: 32, offset: 64, flags: DIFlagPublic, elements: !20, runtimeLang: DW_LANG_C_plus_plus_11, vtableHolder: !15, templateParams: !18, identifier: "MangledBase") +; CHECK-NEXT: !20 = !{!21} +; CHECK-NEXT: !21 = !MDDerivedType(tag: DW_TAG_inheritance, scope: !19, baseType: !15) +; CHECK-NEXT: !22 = !MDDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !6, size: 32, align: 32, extraData: !15) +; CHECK-NEXT: !23 = !MDCompositeType(tag: DW_TAG_structure_type) +; CHECK-NEXT: !24 = !MDCompositeType(tag: DW_TAG_structure_type, runtimeLang: DW_LANG_Cobol85) +!16 = !MDCompositeType(tag: DW_TAG_structure_type, name: "MyType", file: !12, line: 2, size: 32, align: 32, identifier: "MangledMyType") +!17 = !MDCompositeType(tag: DW_TAG_structure_type, name: "Base", file: !12, line: 3, scope: !16, size: 128, align: 32, offset: 64, flags: DIFlagPublic, elements: !18, runtimeLang: DW_LANG_C_plus_plus_11, vtableHolder: !17, templateParams: !20, identifier: "MangledBase") +!18 = !{!19} +!19 = !MDDerivedType(tag: DW_TAG_member, name: "field", file: !12, line: 4, scope: !17, baseType: !7, size: 32, align: 32, offset: 32, flags: DIFlagPublic) +!20 = !{!7} +!21 = !MDCompositeType(tag: DW_TAG_structure_type, name: "Derived", file: !12, line: 3, scope: !16, baseType: !17, size: 128, align: 32, offset: 64, flags: DIFlagPublic, elements: !22, runtimeLang: DW_LANG_C_plus_plus_11, vtableHolder: !17, templateParams: !20, identifier: "MangledBase") +!22 = !{!23} +!23 = !MDDerivedType(tag: DW_TAG_inheritance, scope: !21, baseType: !17) +!24 = !MDDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !7, size: 32, align: 32, extraData: !17) +!25 = !MDCompositeType(tag: DW_TAG_structure_type) +!26 = !MDCompositeType(tag: DW_TAG_structure_type, runtimeLang: 6) + +; !25 = !{!7, !7} +; !26 = !MDSubroutineType(flags: DIFlagPublic | DIFlagStaticMember, types: !25) +; !27 = !MDSubroutineType(types: !25) +!27 = !{!7, !7} +!28 = !MDSubroutineType(flags: DIFlagPublic | DIFlagStaticMember, types: !27) +!29 = !MDSubroutineType(flags: 0, types: !27) +!30 = !MDSubroutineType(types: !27) diff --git a/test/Assembler/distinct-mdnode.ll b/test/Assembler/distinct-mdnode.ll new file mode 100644 index 0000000..abd7aea --- /dev/null +++ b/test/Assembler/distinct-mdnode.ll @@ -0,0 +1,28 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10} + +!0 = !{} +!1 = !{} ; This should merge with !0. +!2 = !{!0} +!3 = !{!0} ; This should merge with !2. +!4 = distinct !{} +!5 = distinct !{} +!6 = distinct !{!0} +!7 = distinct !{!0} +!8 = distinct !{!8} +!9 = distinct !{!9} +!10 = !{!10} ; This should become distinct. + +; CHECK: !named = !{!0, !0, !1, !1, !2, !3, !4, !5, !6, !7, !8} +; CHECK: !0 = !{} +; CHECK-NEXT: !1 = !{!0} +; CHECK-NEXT: !2 = distinct !{} +; CHECK-NEXT: !3 = distinct !{} +; CHECK-NEXT: !4 = distinct !{!0} +; CHECK-NEXT: !5 = distinct !{!0} +; CHECK-NEXT: !6 = distinct !{!6} +; CHECK-NEXT: !7 = distinct !{!7} +; CHECK-NEXT: !8 = distinct !{!8} +; CHECK-NOT: ! diff --git a/test/Assembler/drop-debug-info.ll b/test/Assembler/drop-debug-info.ll new file mode 100644 index 0000000..5109b5e --- /dev/null +++ b/test/Assembler/drop-debug-info.ll @@ -0,0 +1,29 @@ +; RUN: llvm-as < %s -o %t.bc 2>&1 >/dev/null | FileCheck -check-prefix=WARN %s +; RUN: llvm-dis < %t.bc | FileCheck %s +; RUN: verify-uselistorder < %t.bc + +define i32 @main() { +entry: + %retval = alloca i32, align 4 + store i32 0, i32* %retval + ret i32 0, !dbg !12 +} + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!9} + +!0 = !{!"0x11\0012\00clang version 3.5 (trunk 195495) (llvm/trunk 195495:195504M)\000\00\000\00\000", !1, !2, !2, !3, !2, !2} ; [ DW_TAG_compile_unit ] [/Users/manmanren/llvm_gmail/release/../llvm/tools/clang/test/CodeGen/debug-info-version.c] [DW_LANG_C99] +!1 = !{!"../llvm/tools/clang/test/CodeGen/debug-info-version.c", !"/Users/manmanren/llvm_gmail/release"} +!2 = !{i32 0} +!3 = !{!4} +!4 = !{!"0x2e\00main\00main\00\003\000\001\000\006\00256\000\003", !1, !5, !6, null, i32 ()* @main, null, null, !2} ; [ DW_TAG_subprogram ] [line 3] [def] [main] +!5 = !{!"0x29", !1} ; [ DW_TAG_file_type ] [/Users/manmanren/llvm_gmail/release/../llvm/tools/clang/test/CodeGen/debug-info-version.c] +!6 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !7, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!7 = !{!8} +!8 = !{!"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!9 = !{i32 2, !"Dwarf Version", i32 2} +!12 = !MDLocation(line: 4, scope: !4) + +; WARN: warning: ignoring debug info with an invalid version (0) +; CHECK-NOT: !dbg +; CHECK-NOT: !llvm.dbg.cu diff --git a/test/Assembler/extractvalue-no-idx.ll b/test/Assembler/extractvalue-no-idx.ll new file mode 100644 index 0000000..b313209 --- /dev/null +++ b/test/Assembler/extractvalue-no-idx.ll @@ -0,0 +1,8 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: expected index + +define void @f1() { + extractvalue <{ i32, i32 }> undef, !dbg !0 + ret void +} diff --git a/test/Assembler/functionlocal-metadata.ll b/test/Assembler/functionlocal-metadata.ll index c46233a..517138d 100644 --- a/test/Assembler/functionlocal-metadata.ll +++ b/test/Assembler/functionlocal-metadata.ll @@ -3,32 +3,30 @@ define void @Foo(i32 %a, i32 %b) { entry: - call void @llvm.dbg.value(metadata !{ i32* %1 }, i64 16, metadata !2, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.value(metadata !{i32* %1}, i64 16, metadata ![[ID2:[0-9]+]], metadata {{.*}}) + call void @llvm.dbg.value(metadata i32* %1, i64 16, metadata !2, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.value(metadata i32* %1, i64 16, metadata ![[ID2:[0-9]+]], metadata {{.*}}) %0 = add i32 %a, 1 ; <i32> [#uses=1] %two = add i32 %b, %0 ; <i32> [#uses=0] %1 = alloca i32 ; <i32*> [#uses=1] - call void @llvm.dbg.declare(metadata !{i32* %1}, metadata !{i32* %1}, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.declare(metadata !{i32* %1}, metadata !{i32* %1}, metadata {{.*}}) - call void @llvm.dbg.declare(metadata !{i32 %two}, metadata !{i32 %0}, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.declare(metadata !{i32 %two}, metadata !{i32 %0}, metadata {{.*}}) - call void @llvm.dbg.declare(metadata !{i32 %0}, metadata !{i32* %1, i32 %0}, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.declare(metadata !{i32 %0}, metadata !{i32* %1, i32 %0}, metadata {{.*}}) - call void @llvm.dbg.declare(metadata !{i32* %1}, metadata !{i32 %b, i32 %0}, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.declare(metadata !{i32* %1}, metadata !{i32 %b, i32 %0}, metadata {{.*}}) - call void @llvm.dbg.declare(metadata !{i32 %a}, metadata !{i32 %a, metadata !"foo"}, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.declare(metadata !{i32 %a}, metadata !{i32 %a, metadata !"foo"}, metadata {{.*}}) - call void @llvm.dbg.declare(metadata !{i32 %b}, metadata !{metadata !0, i32 %two}, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.declare(metadata !{i32 %b}, metadata !{metadata ![[ID0:[0-9]+]], i32 %two}, metadata {{.*}}) - - call void @llvm.dbg.value(metadata !{ i32 %a }, i64 0, metadata !1, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.value(metadata !{i32 %a}, i64 0, metadata ![[ID1:[0-9]+]], metadata {{.*}}) - call void @llvm.dbg.value(metadata !{ i32 %0 }, i64 25, metadata !0, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.value(metadata !{i32 %0}, i64 25, metadata ![[ID0]], metadata {{.*}}) - call void @llvm.dbg.value(metadata !{ i32* %1 }, i64 16, metadata !3, metadata !{metadata !"0x102"}) -; CHECK: call void @llvm.dbg.value(metadata !{i32* %1}, i64 16, metadata ![[ID3:[0-9]+]], metadata {{.*}}) - call void @llvm.dbg.value(metadata !3, i64 12, metadata !2, metadata !{metadata !"0x102"}) + call void @llvm.dbg.declare(metadata i32* %1, metadata i32* %1, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.declare(metadata i32* %1, metadata i32* %1, metadata {{.*}}) + call void @llvm.dbg.declare(metadata i32 %two, metadata i32 %0, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.declare(metadata i32 %two, metadata i32 %0, metadata {{.*}}) + call void @llvm.dbg.declare(metadata i32* %1, metadata i32 %b, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.declare(metadata i32* %1, metadata i32 %b, metadata {{.*}}) + call void @llvm.dbg.declare(metadata i32 %a, metadata i32 %a, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.declare(metadata i32 %a, metadata i32 %a, metadata {{.*}}) + call void @llvm.dbg.declare(metadata i32 %b, metadata i32 %two, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.declare(metadata i32 %b, metadata i32 %two, metadata {{.*}}) + + call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata !1, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.value(metadata i32 %a, i64 0, metadata ![[ID1:[0-9]+]], metadata {{.*}}) + call void @llvm.dbg.value(metadata i32 %0, i64 25, metadata !0, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.value(metadata i32 %0, i64 25, metadata ![[ID0:[0-9]+]], metadata {{.*}}) + call void @llvm.dbg.value(metadata i32* %1, i64 16, metadata !3, metadata !{!"0x102"}) +; CHECK: call void @llvm.dbg.value(metadata i32* %1, i64 16, metadata ![[ID3:[0-9]+]], metadata {{.*}}) + call void @llvm.dbg.value(metadata !3, i64 12, metadata !2, metadata !{!"0x102"}) ; CHECK: call void @llvm.dbg.value(metadata ![[ID3]], i64 12, metadata ![[ID2]], metadata {{.*}}) ret void, !foo !0, !bar !1 @@ -37,11 +35,11 @@ entry: !llvm.module.flags = !{!4} -!0 = metadata !{i32 662302, i32 26, metadata !1, null} -!1 = metadata !{i32 4, metadata !"foo"} -!2 = metadata !{metadata !"bar"} -!3 = metadata !{metadata !"foo"} -!4 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} +!0 = !MDLocation(line: 662302, column: 26, scope: !1) +!1 = !{i32 4, !"foo"} +!2 = !{!"bar"} +!3 = !{!"foo"} +!4 = !{i32 1, !"Debug Info Version", i32 2} declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone @@ -51,7 +49,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon ; CHECK: !foo = !{![[FOO]]} ; CHECK: !bar = !{![[BAR]]} -; CHECK: ![[ID0]] = metadata !{i32 662302, i32 26, metadata ![[ID1]], null} -; CHECK: ![[ID1]] = metadata !{i32 4, metadata !"foo"} -; CHECK: ![[ID2]] = metadata !{metadata !"bar"} -; CHECK: ![[ID3]] = metadata !{metadata !"foo"} +; CHECK: ![[ID0]] = !MDLocation(line: 662302, column: 26, scope: ![[ID1]]) +; CHECK: ![[ID1]] = !{i32 4, !"foo"} +; CHECK: ![[ID2]] = !{!"bar"} +; CHECK: ![[ID3]] = !{!"foo"} diff --git a/test/Assembler/generic-debug-node.ll b/test/Assembler/generic-debug-node.ll new file mode 100644 index 0000000..cb7222b --- /dev/null +++ b/test/Assembler/generic-debug-node.ll @@ -0,0 +1,27 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !1, !2, !2, !2, !2, !3, !4, !2} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} + +; CHECK: !0 = !{} +!0 = !{} + +; CHECK-NEXT: !1 = !GenericDebugNode(tag: DW_TAG_entry_point, header: "some\00header", operands: {!0, !2, !2}) +!1 = !GenericDebugNode(tag: 3, header: "some\00header", operands: {!0, !3, !4}) +!2 = !GenericDebugNode(tag: 3, header: "some\00header", operands: {!{}, !3, !4}) + +; CHECK-NEXT: !2 = !GenericDebugNode(tag: DW_TAG_entry_point) +!3 = !GenericDebugNode(tag: 3) +!4 = !GenericDebugNode(tag: 3, header: "") +!5 = !GenericDebugNode(tag: 3, operands: {}) +!6 = !GenericDebugNode(tag: 3, header: "", operands: {}) + +; CHECK-NEXT: !3 = distinct !GenericDebugNode(tag: DW_TAG_entry_point) +!7 = distinct !GenericDebugNode(tag: 3) + +; CHECK-NEXT: !4 = !GenericDebugNode(tag: 65535) +!8 = !GenericDebugNode(tag: 65535) + +; CHECK-NOT: ! +!9 = !GenericDebugNode(tag: DW_TAG_entry_point) diff --git a/test/Assembler/getelementptr.ll b/test/Assembler/getelementptr.ll index e938ff4..bd583af 100644 --- a/test/Assembler/getelementptr.ll +++ b/test/Assembler/getelementptr.ll @@ -8,6 +8,12 @@ @C = global i32* getelementptr ([2 x [3 x [5 x [7 x i32]]]]* @A, i64 3, i64 2, i64 0, i64 0, i64 7523) ; CHECK: @C = global i32* getelementptr ([2 x [3 x [5 x [7 x i32]]]]* @A, i64 39, i64 1, i64 1, i64 4, i64 5) +; Verify that constant expression GEPs work with i84 indices. +@D = external global [1 x i32] + +@E = global i32* getelementptr inbounds ([1 x i32]* @D, i84 0, i64 1) +; CHECK: @E = global i32* getelementptr inbounds ([1 x i32]* @D, i84 1, i64 0) + ; Verify that i16 indices work. @x = external global {i32, i32} @y = global i32* getelementptr ({ i32, i32 }* @x, i16 42, i32 0) diff --git a/test/Assembler/getelementptr_vec_idx4.ll b/test/Assembler/getelementptr_vec_idx4.ll new file mode 100644 index 0000000..08fe434 --- /dev/null +++ b/test/Assembler/getelementptr_vec_idx4.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: getelementptr vector index has a wrong number of elements + +global <2 x i32*> getelementptr (<4 x [3 x {i32, i32}]*> zeroinitializer, <2 x i32> <i32 1, i32 2>, <2 x i32> <i32 2, i32 3>, <2 x i32> <i32 1, i32 1>) diff --git a/test/Assembler/gv-invalid-type.ll b/test/Assembler/gv-invalid-type.ll new file mode 100644 index 0000000..bde04da --- /dev/null +++ b/test/Assembler/gv-invalid-type.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +@gv = global metadata undef +; CHECK: invalid type for global variable diff --git a/test/Assembler/inalloca.ll b/test/Assembler/inalloca.ll index a8c47b4..f433066 100644 --- a/test/Assembler/inalloca.ll +++ b/test/Assembler/inalloca.ll @@ -13,5 +13,5 @@ entry: ret void } -!0 = metadata !{i32 662302, null} +!0 = !{i32 662302, null} !foo = !{ !0 } diff --git a/test/Assembler/insertvalue-invalid-type-1.ll b/test/Assembler/insertvalue-invalid-type-1.ll new file mode 100644 index 0000000..de9b782 --- /dev/null +++ b/test/Assembler/insertvalue-invalid-type-1.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: insertvalue operand and field disagree in type: 'i32' instead of 'i64' + +define <{ i32 }> @test() { + ret <{ i32 }> insertvalue (<{ i64 }> zeroinitializer, i32 4, 0) +} diff --git a/test/Assembler/insertvalue-invalid-type.ll b/test/Assembler/insertvalue-invalid-type.ll new file mode 100644 index 0000000..6be20e5 --- /dev/null +++ b/test/Assembler/insertvalue-invalid-type.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: insertvalue operand and field disagree in type: 'i8*' instead of 'i32' + +define void @test() { +entry: + insertvalue { i32, i32 } undef, i8* null, 0 + ret void +} diff --git a/test/Assembler/invalid-attrgrp.ll b/test/Assembler/invalid-attrgrp.ll new file mode 100644 index 0000000..bf1961a --- /dev/null +++ b/test/Assembler/invalid-attrgrp.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +attributes +; CHECK: expected attribute group id diff --git a/test/Assembler/invalid-comdat.ll b/test/Assembler/invalid-comdat.ll index 987e1e1..7351999 100644 --- a/test/Assembler/invalid-comdat.ll +++ b/test/Assembler/invalid-comdat.ll @@ -1,4 +1,4 @@ ; RUN: not llvm-as < %s 2>&1 | FileCheck %s -@v = global i32 0, comdat $v +@v = global i32 0, comdat($v) ; CHECK: use of undefined comdat '$v' diff --git a/test/Assembler/invalid-datalayout1.ll b/test/Assembler/invalid-datalayout1.ll new file mode 100644 index 0000000..d1befdc --- /dev/null +++ b/test/Assembler/invalid-datalayout1.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "^" +; CHECK: Unknown specifier in datalayout string diff --git a/test/Assembler/invalid-datalayout10.ll b/test/Assembler/invalid-datalayout10.ll new file mode 100644 index 0000000..9f19688 --- /dev/null +++ b/test/Assembler/invalid-datalayout10.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "m" +; CHECK: Expected mangling specifier in datalayout string diff --git a/test/Assembler/invalid-datalayout11.ll b/test/Assembler/invalid-datalayout11.ll new file mode 100644 index 0000000..f8fed8f --- /dev/null +++ b/test/Assembler/invalid-datalayout11.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "m." +; CHECK: Unexpected trailing characters after mangling specifier in datalayout string diff --git a/test/Assembler/invalid-datalayout12.ll b/test/Assembler/invalid-datalayout12.ll new file mode 100644 index 0000000..d79c196 --- /dev/null +++ b/test/Assembler/invalid-datalayout12.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "f" +; CHECK: Missing alignment specification in datalayout string diff --git a/test/Assembler/invalid-datalayout13.ll b/test/Assembler/invalid-datalayout13.ll new file mode 100644 index 0000000..5ac719d --- /dev/null +++ b/test/Assembler/invalid-datalayout13.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = ":32" +; CHECK: Expected token before separator in datalayout string diff --git a/test/Assembler/invalid-datalayout14.ll b/test/Assembler/invalid-datalayout14.ll new file mode 100644 index 0000000..84634b5 --- /dev/null +++ b/test/Assembler/invalid-datalayout14.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "i64:64:16" +; CHECK: Preferred alignment cannot be less than the ABI alignment diff --git a/test/Assembler/invalid-datalayout15.ll b/test/Assembler/invalid-datalayout15.ll new file mode 100644 index 0000000..ea240b7 --- /dev/null +++ b/test/Assembler/invalid-datalayout15.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "i64:16:16777216" +; CHECK: Invalid preferred alignment, must be a 16bit integer diff --git a/test/Assembler/invalid-datalayout16.ll b/test/Assembler/invalid-datalayout16.ll new file mode 100644 index 0000000..0dd1abb --- /dev/null +++ b/test/Assembler/invalid-datalayout16.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "i64:16777216:16777216" +; CHECK: Invalid ABI alignment, must be a 16bit integer diff --git a/test/Assembler/invalid-datalayout17.ll b/test/Assembler/invalid-datalayout17.ll new file mode 100644 index 0000000..519f5c1 --- /dev/null +++ b/test/Assembler/invalid-datalayout17.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "i16777216:16:16" +; CHECK: Invalid bit width, must be a 24bit integer diff --git a/test/Assembler/invalid-datalayout18.ll b/test/Assembler/invalid-datalayout18.ll new file mode 100644 index 0000000..b9956f9 --- /dev/null +++ b/test/Assembler/invalid-datalayout18.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "p:32:32:16" +; CHECK: Preferred alignment cannot be less than the ABI alignment diff --git a/test/Assembler/invalid-datalayout2.ll b/test/Assembler/invalid-datalayout2.ll new file mode 100644 index 0000000..a435612 --- /dev/null +++ b/test/Assembler/invalid-datalayout2.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "m:v" +; CHECK: Unknown mangling in datalayout string diff --git a/test/Assembler/invalid-datalayout3.ll b/test/Assembler/invalid-datalayout3.ll new file mode 100644 index 0000000..44535fd --- /dev/null +++ b/test/Assembler/invalid-datalayout3.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "n0" +; CHECK: Zero width native integer type in datalayout string diff --git a/test/Assembler/invalid-datalayout4.ll b/test/Assembler/invalid-datalayout4.ll new file mode 100644 index 0000000..2d946d3 --- /dev/null +++ b/test/Assembler/invalid-datalayout4.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "p16777216:64:64:64" +; CHECK: Invalid address space, must be a 24bit integer diff --git a/test/Assembler/invalid-datalayout5.ll b/test/Assembler/invalid-datalayout5.ll new file mode 100644 index 0000000..3ce8791 --- /dev/null +++ b/test/Assembler/invalid-datalayout5.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "a1:64" +; CHECK: Sized aggregate specification in datalayout string diff --git a/test/Assembler/invalid-datalayout6.ll b/test/Assembler/invalid-datalayout6.ll new file mode 100644 index 0000000..425099f --- /dev/null +++ b/test/Assembler/invalid-datalayout6.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "a:" +; CHECK: Trailing separator in datalayout string diff --git a/test/Assembler/invalid-datalayout7.ll b/test/Assembler/invalid-datalayout7.ll new file mode 100644 index 0000000..097227a --- /dev/null +++ b/test/Assembler/invalid-datalayout7.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "p:52" +; CHECK: number of bits must be a byte width multiple diff --git a/test/Assembler/invalid-datalayout8.ll b/test/Assembler/invalid-datalayout8.ll new file mode 100644 index 0000000..28832ff --- /dev/null +++ b/test/Assembler/invalid-datalayout8.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "e-p" +; CHECK: Missing size specification for pointer in datalayout string diff --git a/test/Assembler/invalid-datalayout9.ll b/test/Assembler/invalid-datalayout9.ll new file mode 100644 index 0000000..dfeac65 --- /dev/null +++ b/test/Assembler/invalid-datalayout9.ll @@ -0,0 +1,3 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +target datalayout = "e-p:64" +; CHECK: Missing alignment specification for pointer in datalayout string diff --git a/test/Assembler/invalid-debug-info-version.ll b/test/Assembler/invalid-debug-info-version.ll new file mode 100644 index 0000000..94a8153 --- /dev/null +++ b/test/Assembler/invalid-debug-info-version.ll @@ -0,0 +1,5 @@ +; RUN: opt < %s -S | FileCheck %s + +!llvm.module.flags = !{!0} +!0 = !{i32 1, !"Debug Info Version", !""} +; CHECK: !{i32 1, !"Debug Info Version", !""} diff --git a/test/Assembler/invalid-fwdref2.ll b/test/Assembler/invalid-fwdref2.ll new file mode 100644 index 0000000..d823481 --- /dev/null +++ b/test/Assembler/invalid-fwdref2.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as %s -disable-output 2>&1 | grep "forward reference and definition of global have different types" + +@a2 = alias void ()* @g2 +@g2 = internal global i8 42 diff --git a/test/Assembler/invalid-generic-debug-node-tag-bad.ll b/test/Assembler/invalid-generic-debug-node-tag-bad.ll new file mode 100644 index 0000000..98c10b6 --- /dev/null +++ b/test/Assembler/invalid-generic-debug-node-tag-bad.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:29: error: invalid DWARF tag 'DW_TAG_badtag' +!0 = !GenericDebugNode(tag: DW_TAG_badtag) diff --git a/test/Assembler/invalid-generic-debug-node-tag-missing.ll b/test/Assembler/invalid-generic-debug-node-tag-missing.ll new file mode 100644 index 0000000..5372cbb --- /dev/null +++ b/test/Assembler/invalid-generic-debug-node-tag-missing.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:47: error: missing required field 'tag' +!0 = !GenericDebugNode(header: "some\00header") diff --git a/test/Assembler/invalid-generic-debug-node-tag-overflow.ll b/test/Assembler/invalid-generic-debug-node-tag-overflow.ll new file mode 100644 index 0000000..1722caa --- /dev/null +++ b/test/Assembler/invalid-generic-debug-node-tag-overflow.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK-NOT: error +!0 = !GenericDebugNode(tag: 65535) + +; CHECK: <stdin>:[[@LINE+1]]:29: error: value for 'tag' too large, limit is 65535 +!1 = !GenericDebugNode(tag: 65536) diff --git a/test/Assembler/invalid-generic-debug-node-tag-wrong-type.ll b/test/Assembler/invalid-generic-debug-node-tag-wrong-type.ll new file mode 100644 index 0000000..fca24a7 --- /dev/null +++ b/test/Assembler/invalid-generic-debug-node-tag-wrong-type.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:29: error: expected DWARF tag +!0 = !GenericDebugNode(tag: "string") diff --git a/test/Assembler/invalid-hexint.ll b/test/Assembler/invalid-hexint.ll new file mode 100644 index 0000000..a11b8cd --- /dev/null +++ b/test/Assembler/invalid-hexint.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +global i64 u0x0p001 +; CHECK: expected value token diff --git a/test/Assembler/invalid-mdbasictype-missing-tag.ll b/test/Assembler/invalid-mdbasictype-missing-tag.ll new file mode 100644 index 0000000..4b3823d --- /dev/null +++ b/test/Assembler/invalid-mdbasictype-missing-tag.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:31: error: missing required field 'tag' +!0 = !MDBasicType(name: "name") diff --git a/test/Assembler/invalid-mdcompileunit-language-bad.ll b/test/Assembler/invalid-mdcompileunit-language-bad.ll new file mode 100644 index 0000000..cf2da20 --- /dev/null +++ b/test/Assembler/invalid-mdcompileunit-language-bad.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:31: error: invalid DWARF language 'DW_LANG_NoSuchLanguage' +!0 = !MDCompileUnit(language: DW_LANG_NoSuchLanguage, + file: !MDFile(filename: "a", directory: "b")) diff --git a/test/Assembler/invalid-mdcompileunit-language-overflow.ll b/test/Assembler/invalid-mdcompileunit-language-overflow.ll new file mode 100644 index 0000000..14dab17 --- /dev/null +++ b/test/Assembler/invalid-mdcompileunit-language-overflow.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK-NOT: error +!0 = !MDCompileUnit(language: 65535, + file: !MDFile(filename: "a", directory: "b")) + +; CHECK: <stdin>:[[@LINE+1]]:31: error: value for 'language' too large, limit is 65535 +!1 = !MDCompileUnit(language: 65536, + file: !MDFile(filename: "a", directory: "b")) diff --git a/test/Assembler/invalid-mdcompileunit-missing-language.ll b/test/Assembler/invalid-mdcompileunit-missing-language.ll new file mode 100644 index 0000000..57a9a3e --- /dev/null +++ b/test/Assembler/invalid-mdcompileunit-missing-language.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:65: error: missing required field 'language' +!0 = !MDCompileUnit(file: !MDFile(filename: "a", directory: "b")) diff --git a/test/Assembler/invalid-mdcompositetype-missing-tag.ll b/test/Assembler/invalid-mdcompositetype-missing-tag.ll new file mode 100644 index 0000000..a3b1418 --- /dev/null +++ b/test/Assembler/invalid-mdcompositetype-missing-tag.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:36: error: missing required field 'tag' +!25 = !MDCompositeType(name: "Type") diff --git a/test/Assembler/invalid-mdderivedtype-missing-basetype.ll b/test/Assembler/invalid-mdderivedtype-missing-basetype.ll new file mode 100644 index 0000000..24fa585 --- /dev/null +++ b/test/Assembler/invalid-mdderivedtype-missing-basetype.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:45: error: missing required field 'baseType' +!0 = !MDDerivedType(tag: DW_TAG_pointer_type) diff --git a/test/Assembler/invalid-mdderivedtype-missing-tag.ll b/test/Assembler/invalid-mdderivedtype-missing-tag.ll new file mode 100644 index 0000000..3620628 --- /dev/null +++ b/test/Assembler/invalid-mdderivedtype-missing-tag.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:34: error: missing required field 'tag' +!0 = !MDDerivedType(baseType: !{}) diff --git a/test/Assembler/invalid-mdenumerator-missing-name.ll b/test/Assembler/invalid-mdenumerator-missing-name.ll new file mode 100644 index 0000000..709c6a5 --- /dev/null +++ b/test/Assembler/invalid-mdenumerator-missing-name.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:28: error: missing required field 'name' +!0 = !MDEnumerator(value: 7) diff --git a/test/Assembler/invalid-mdenumerator-missing-value.ll b/test/Assembler/invalid-mdenumerator-missing-value.ll new file mode 100644 index 0000000..a850168 --- /dev/null +++ b/test/Assembler/invalid-mdenumerator-missing-value.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:32: error: missing required field 'value' +!0 = !MDEnumerator(name: "name") diff --git a/test/Assembler/invalid-mdexpression-large.ll b/test/Assembler/invalid-mdexpression-large.ll new file mode 100644 index 0000000..43b8ce0 --- /dev/null +++ b/test/Assembler/invalid-mdexpression-large.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK-NOT: error +!0 = !MDExpression(18446744073709551615) + +; CHECK: <stdin>:[[@LINE+1]]:20: error: element too large, limit is 18446744073709551615 +!1 = !MDExpression(18446744073709551616) diff --git a/test/Assembler/invalid-mdexpression-verify.ll b/test/Assembler/invalid-mdexpression-verify.ll new file mode 100644 index 0000000..e573ef3 --- /dev/null +++ b/test/Assembler/invalid-mdexpression-verify.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck -check-prefix VERIFY %s +; RUN: llvm-as -disable-verify < %s | llvm-dis | FileCheck -check-prefix NOVERIFY %s + +; NOVERIFY: !named = !{!0} +!named = !{!0} + +; NOVERIFY: !0 = !MDExpression(0, 1, 9, 7, 2) +; VERIFY: assembly parsed, but does not verify +!0 = !MDExpression(0, 1, 9, 7, 2) diff --git a/test/Assembler/invalid-mdfile-missing-directory.ll b/test/Assembler/invalid-mdfile-missing-directory.ll new file mode 100644 index 0000000..825db08 --- /dev/null +++ b/test/Assembler/invalid-mdfile-missing-directory.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:30: error: missing required field 'directory' +!0 = !MDFile(filename: "file") diff --git a/test/Assembler/invalid-mdfile-missing-filename.ll b/test/Assembler/invalid-mdfile-missing-filename.ll new file mode 100644 index 0000000..0dd7117 --- /dev/null +++ b/test/Assembler/invalid-mdfile-missing-filename.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:30: error: missing required field 'filename' +!0 = !MDFile(directory: "dir") diff --git a/test/Assembler/invalid-mdglobalvariable-missing-name.ll b/test/Assembler/invalid-mdglobalvariable-missing-name.ll new file mode 100644 index 0000000..bc0f724 --- /dev/null +++ b/test/Assembler/invalid-mdglobalvariable-missing-name.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:42: error: missing required field 'name' +!0 = !MDGlobalVariable(linkageName: "foo") diff --git a/test/Assembler/invalid-mdimportedentity-missing-parent.ll b/test/Assembler/invalid-mdimportedentity-missing-parent.ll new file mode 100644 index 0000000..710a027 --- /dev/null +++ b/test/Assembler/invalid-mdimportedentity-missing-parent.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:51: error: missing required field 'scope' +!3 = !MDImportedEntity(tag: DW_TAG_imported_module) diff --git a/test/Assembler/invalid-mdimportedentity-missing-tag.ll b/test/Assembler/invalid-mdimportedentity-missing-tag.ll new file mode 100644 index 0000000..63cf0d2 --- /dev/null +++ b/test/Assembler/invalid-mdimportedentity-missing-tag.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:33: error: missing required field 'tag' +!3 = !MDImportedEntity(scope: !0) diff --git a/test/Assembler/invalid-mdlexicalblock-missing-parent.ll b/test/Assembler/invalid-mdlexicalblock-missing-parent.ll new file mode 100644 index 0000000..cdd12af --- /dev/null +++ b/test/Assembler/invalid-mdlexicalblock-missing-parent.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:29: error: missing required field 'scope' +!0 = !MDLexicalBlock(line: 7) diff --git a/test/Assembler/invalid-mdlexicalblockfile-missing-discriminator.ll b/test/Assembler/invalid-mdlexicalblockfile-missing-discriminator.ll new file mode 100644 index 0000000..b71eed8 --- /dev/null +++ b/test/Assembler/invalid-mdlexicalblockfile-missing-discriminator.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:36: error: missing required field 'discriminator' +!0 = !MDLexicalBlockFile(scope: !{}) diff --git a/test/Assembler/invalid-mdlexicalblockfile-missing-parent.ll b/test/Assembler/invalid-mdlexicalblockfile-missing-parent.ll new file mode 100644 index 0000000..1c901e2 --- /dev/null +++ b/test/Assembler/invalid-mdlexicalblockfile-missing-parent.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:42: error: missing required field 'scope' +!0 = !MDLexicalBlockFile(discriminator: 0) diff --git a/test/Assembler/invalid-mdlocalvariable-missing-name.ll b/test/Assembler/invalid-mdlocalvariable-missing-name.ll new file mode 100644 index 0000000..5b23600 --- /dev/null +++ b/test/Assembler/invalid-mdlocalvariable-missing-name.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:29: error: missing required field 'tag' +!0 = !MDLocalVariable(arg: 7) diff --git a/test/Assembler/invalid-mdlocation-field-bad.ll b/test/Assembler/invalid-mdlocation-field-bad.ll new file mode 100644 index 0000000..6ec7c64 --- /dev/null +++ b/test/Assembler/invalid-mdlocation-field-bad.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:18: error: invalid field 'bad' +!0 = !MDLocation(bad: 0) diff --git a/test/Assembler/invalid-mdlocation-field-twice.ll b/test/Assembler/invalid-mdlocation-field-twice.ll new file mode 100644 index 0000000..2335c93 --- /dev/null +++ b/test/Assembler/invalid-mdlocation-field-twice.ll @@ -0,0 +1,6 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +!0 = !{} + +; CHECK: <stdin>:[[@LINE+1]]:38: error: field 'line' cannot be specified more than once +!1 = !MDLocation(line: 3, scope: !0, line: 3) diff --git a/test/Assembler/invalid-mdlocation-missing-scope-2.ll b/test/Assembler/invalid-mdlocation-missing-scope-2.ll new file mode 100644 index 0000000..3b267c9 --- /dev/null +++ b/test/Assembler/invalid-mdlocation-missing-scope-2.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:25: error: missing required field 'scope' +!0 = !MDLocation(line: 7) diff --git a/test/Assembler/invalid-mdlocation-missing-scope.ll b/test/Assembler/invalid-mdlocation-missing-scope.ll new file mode 100644 index 0000000..87f41b3 --- /dev/null +++ b/test/Assembler/invalid-mdlocation-missing-scope.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:18: error: missing required field 'scope' +!0 = !MDLocation() diff --git a/test/Assembler/invalid-mdlocation-overflow-column.ll b/test/Assembler/invalid-mdlocation-overflow-column.ll new file mode 100644 index 0000000..92ea661 --- /dev/null +++ b/test/Assembler/invalid-mdlocation-overflow-column.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +!0 = !{} + +; CHECK-NOT: error +!1 = !MDLocation(column: 65535, scope: !0) + +; CHECK: <stdin>:[[@LINE+1]]:26: error: value for 'column' too large, limit is 65535 +!2 = !MDLocation(column: 65536, scope: !0) diff --git a/test/Assembler/invalid-mdlocation-overflow-line.ll b/test/Assembler/invalid-mdlocation-overflow-line.ll new file mode 100644 index 0000000..535b4c9 --- /dev/null +++ b/test/Assembler/invalid-mdlocation-overflow-line.ll @@ -0,0 +1,9 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +!0 = !{} + +; CHECK-NOT: error +!1 = !MDLocation(line: 4294967295, scope: !0) + +; CHECK: <stdin>:[[@LINE+1]]:24: error: value for 'line' too large, limit is 4294967295 +!2 = !MDLocation(line: 4294967296, scope: !0) diff --git a/test/Assembler/invalid-mdnamespace-missing-namespace.ll b/test/Assembler/invalid-mdnamespace-missing-namespace.ll new file mode 100644 index 0000000..da2f511 --- /dev/null +++ b/test/Assembler/invalid-mdnamespace-missing-namespace.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:36: error: missing required field 'scope' +!0 = !MDNamespace(name: "Namespace") diff --git a/test/Assembler/invalid-mdnode-badref.ll b/test/Assembler/invalid-mdnode-badref.ll new file mode 100644 index 0000000..cfa03e0 --- /dev/null +++ b/test/Assembler/invalid-mdnode-badref.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s +!named = !{!0} + +; CHECK: [[@LINE+1]]:14: error: use of undefined metadata '!1' +!0 = !{!0, !1} diff --git a/test/Assembler/invalid-mdnode-vector.ll b/test/Assembler/invalid-mdnode-vector.ll new file mode 100644 index 0000000..65231c0 --- /dev/null +++ b/test/Assembler/invalid-mdnode-vector.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +!0 = ! +; CHECK: expected '{' here diff --git a/test/Assembler/invalid-mdnode-vector2.ll b/test/Assembler/invalid-mdnode-vector2.ll new file mode 100644 index 0000000..f800795 --- /dev/null +++ b/test/Assembler/invalid-mdnode-vector2.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +!0 = !{ +; CHECK: expected metadata operand diff --git a/test/Assembler/invalid-mdobjcproperty-missing-name.ll b/test/Assembler/invalid-mdobjcproperty-missing-name.ll new file mode 100644 index 0000000..b55cfa8 --- /dev/null +++ b/test/Assembler/invalid-mdobjcproperty-missing-name.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:38: error: missing required field 'name' +!0 = !MDObjCProperty(setter: "setFoo") diff --git a/test/Assembler/invalid-mdsubprogram-missing-name.ll b/test/Assembler/invalid-mdsubprogram-missing-name.ll new file mode 100644 index 0000000..54ded22 --- /dev/null +++ b/test/Assembler/invalid-mdsubprogram-missing-name.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:38: error: missing required field 'name' +!0 = !MDSubprogram(linkageName: "foo") diff --git a/test/Assembler/invalid-mdsubrange-count-large.ll b/test/Assembler/invalid-mdsubrange-count-large.ll new file mode 100644 index 0000000..0d150aa --- /dev/null +++ b/test/Assembler/invalid-mdsubrange-count-large.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK-NOT: error +!0 = !MDSubrange(count: 9223372036854775807) + +; CHECK: <stdin>:[[@LINE+1]]:25: error: value for 'count' too large, limit is 9223372036854775807 +!1 = !MDSubrange(count: 9223372036854775808) diff --git a/test/Assembler/invalid-mdsubrange-count-missing.ll b/test/Assembler/invalid-mdsubrange-count-missing.ll new file mode 100644 index 0000000..bf9cb9a --- /dev/null +++ b/test/Assembler/invalid-mdsubrange-count-missing.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:32: error: missing required field 'count' +!0 = !MDSubrange(lowerBound: -3) diff --git a/test/Assembler/invalid-mdsubrange-count-negative.ll b/test/Assembler/invalid-mdsubrange-count-negative.ll new file mode 100644 index 0000000..92c0b4e --- /dev/null +++ b/test/Assembler/invalid-mdsubrange-count-negative.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK-NOT: error +!0 = !MDSubrange(count: -1) + +; CHECK: <stdin>:[[@LINE+1]]:25: error: value for 'count' too small, limit is -1 +!0 = !MDSubrange(count: -2) diff --git a/test/Assembler/invalid-mdsubrange-lowerBound-max.ll b/test/Assembler/invalid-mdsubrange-lowerBound-max.ll new file mode 100644 index 0000000..1c68e98 --- /dev/null +++ b/test/Assembler/invalid-mdsubrange-lowerBound-max.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:41: error: value for 'lowerBound' too large, limit is 9223372036854775807 +!0 = !MDSubrange(count: 30, lowerBound: 9223372036854775808) diff --git a/test/Assembler/invalid-mdsubrange-lowerBound-min.ll b/test/Assembler/invalid-mdsubrange-lowerBound-min.ll new file mode 100644 index 0000000..b3b2a03 --- /dev/null +++ b/test/Assembler/invalid-mdsubrange-lowerBound-min.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:41: error: value for 'lowerBound' too small, limit is -9223372036854775808 +!0 = !MDSubrange(count: 30, lowerBound: -9223372036854775809) diff --git a/test/Assembler/invalid-mdsubroutinetype-missing-types.ll b/test/Assembler/invalid-mdsubroutinetype-missing-types.ll new file mode 100644 index 0000000..7342417 --- /dev/null +++ b/test/Assembler/invalid-mdsubroutinetype-missing-types.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:65: error: missing required field 'types' +!29 = !MDSubroutineType(flags: DIFlagPublic | DIFlagStaticMember) diff --git a/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll b/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll new file mode 100644 index 0000000..62bee70 --- /dev/null +++ b/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:44: error: missing required field 'type' +!0 = !MDTemplateTypeParameter(name: "param") diff --git a/test/Assembler/invalid-mdtemplatevalueparameter-missing-tag.ll b/test/Assembler/invalid-mdtemplatevalueparameter-missing-tag.ll new file mode 100644 index 0000000..fea218c --- /dev/null +++ b/test/Assembler/invalid-mdtemplatevalueparameter-missing-tag.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+1]]:55: error: missing required field 'tag' +!0 = !MDTemplateValueParameter(type: !{}, value: i32 7) diff --git a/test/Assembler/invalid-mdtemplatevalueparameter-missing-type.ll b/test/Assembler/invalid-mdtemplatevalueparameter-missing-type.ll new file mode 100644 index 0000000..8ea3acc --- /dev/null +++ b/test/Assembler/invalid-mdtemplatevalueparameter-missing-type.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+2]]:44: error: missing required field 'type' +!0 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, + value: i32 7) diff --git a/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll b/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll new file mode 100644 index 0000000..e1e3f81 --- /dev/null +++ b/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: [[@LINE+2]]:41: error: missing required field 'value' +!0 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, + type: !{}) diff --git a/test/Assembler/invalid-metadata-attachment-has-type.ll b/test/Assembler/invalid-metadata-attachment-has-type.ll new file mode 100644 index 0000000..74e4151 --- /dev/null +++ b/test/Assembler/invalid-metadata-attachment-has-type.ll @@ -0,0 +1,8 @@ +; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s +; Check common error from old format. + +define void @foo() { +; CHECK: {{.*}}:[[@LINE+1]]:{{[0-9]+}}: error: invalid metadata-value-metadata roundtrip + ret void, !bar !{metadata !0} +} +!0 = !{} diff --git a/test/Assembler/invalid-metadata-function-local-attachments.ll b/test/Assembler/invalid-metadata-function-local-attachments.ll new file mode 100644 index 0000000..20cb0a9 --- /dev/null +++ b/test/Assembler/invalid-metadata-function-local-attachments.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +define void @foo(i32 %v) { +entry: +; CHECK: <stdin>:[[@LINE+1]]:{{[0-9]+}}: error: invalid use of function-local name + ret void, !foo !{i32 %v} +} diff --git a/test/Assembler/invalid-metadata-function-local-complex-1.ll b/test/Assembler/invalid-metadata-function-local-complex-1.ll new file mode 100644 index 0000000..be1d16d --- /dev/null +++ b/test/Assembler/invalid-metadata-function-local-complex-1.ll @@ -0,0 +1,10 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +define void @foo(i32 %v) { +entry: +; CHECK: <stdin>:[[@LINE+1]]:{{[0-9]+}}: error: invalid use of function-local name + call void @llvm.bar(metadata !{i32 %v, i32 0}) + ret void +} + +declare void @llvm.bar(metadata) diff --git a/test/Assembler/invalid-metadata-function-local-complex-2.ll b/test/Assembler/invalid-metadata-function-local-complex-2.ll new file mode 100644 index 0000000..72fa41a --- /dev/null +++ b/test/Assembler/invalid-metadata-function-local-complex-2.ll @@ -0,0 +1,10 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +define void @foo(i32 %v) { +entry: +; CHECK: <stdin>:[[@LINE+1]]:{{[0-9]+}}: error: invalid use of function-local name + call void @llvm.bar(metadata !{i32 0, i32 %v}) + ret void +} + +declare void @llvm.bar(metadata) diff --git a/test/Assembler/invalid-metadata-function-local-complex-3.ll b/test/Assembler/invalid-metadata-function-local-complex-3.ll new file mode 100644 index 0000000..35ec763 --- /dev/null +++ b/test/Assembler/invalid-metadata-function-local-complex-3.ll @@ -0,0 +1,10 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +define void @foo(i32 %v) { +entry: +; CHECK: <stdin>:[[@LINE+1]]:{{[0-9]+}}: error: invalid use of function-local name + call void @llvm.bar(metadata !{i32 %v}) + ret void +} + +declare void @llvm.bar(metadata) diff --git a/test/Assembler/invalid-metadata-has-type.ll b/test/Assembler/invalid-metadata-has-type.ll new file mode 100644 index 0000000..647cb67 --- /dev/null +++ b/test/Assembler/invalid-metadata-has-type.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s +; Check common error from old format. + +; CHECK: {{.*}}:[[@LINE+1]]:{{[0-9]+}}: error: unexpected type in metadata definition +!0 = metadata !{} diff --git a/test/Assembler/invalid-name.ll b/test/Assembler/invalid-name.ll Binary files differindex d9d7a11..0681ea5 100644 --- a/test/Assembler/invalid-name.ll +++ b/test/Assembler/invalid-name.ll diff --git a/test/Assembler/invalid-name2.ll b/test/Assembler/invalid-name2.ll Binary files differnew file mode 100644 index 0000000..384dee6 --- /dev/null +++ b/test/Assembler/invalid-name2.ll diff --git a/test/Assembler/invalid-specialized-mdnode.ll b/test/Assembler/invalid-specialized-mdnode.ll new file mode 100644 index 0000000..9a84abb --- /dev/null +++ b/test/Assembler/invalid-specialized-mdnode.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s -disable-output 2>&1 | FileCheck %s + +; CHECK: <stdin>:[[@LINE+1]]:6: error: expected metadata type +!0 = !Invalid(field: 0) diff --git a/test/Assembler/invalid_cast4.ll b/test/Assembler/invalid_cast4.ll new file mode 100644 index 0000000..7056f84 --- /dev/null +++ b/test/Assembler/invalid_cast4.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: invalid cast opcode for cast from 'i64' to 'i64' +global i64* inttoptr (i64 0 to i64) diff --git a/test/Assembler/large-comdat.ll b/test/Assembler/large-comdat.ll new file mode 100644 index 0000000..cab164f --- /dev/null +++ b/test/Assembler/large-comdat.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +$_ZSt9make_pairIN4llvm16DenseMapIteratorINS0_14PointerIntPairIPKNS0_5ValueELj1ENS0_21PointerLikeTypeTraitsIS5_EEEENS0_19NonLocalPointerInfoENS0_12DenseMapInfoIS8_EENS0_12DenseMapPairIS9_EEEEbESt4pairINSt17__decay_and_stripIT_E6__typeENSG_IT0_E6__typeEESH_SK_ = comdat any + +; CHECK: $_ZSt9make_pairIN4llvm16DenseMapIteratorINS0_14PointerIntPairIPKNS0_5ValueELj1ENS0_21PointerLikeTypeTraitsIS5_EEEENS0_19NonLocalPointerInfoENS0_12DenseMapInfoIS8_EENS0_12DenseMapPairIS9_EEEEbESt4pairINSt17__decay_and_stripIT_E6__typeENSG_IT0_E6__typeEESH_SK_ = comdat any + +define void @_ZSt9make_pairIN4llvm16DenseMapIteratorINS0_14PointerIntPairIPKNS0_5ValueELj1ENS0_21PointerLikeTypeTraitsIS5_EEEENS0_19NonLocalPointerInfoENS0_12DenseMapInfoIS8_EENS0_12DenseMapPairIS9_EEEEbESt4pairINSt17__decay_and_stripIT_E6__typeENSG_IT0_E6__typeEESH_SK_() comdat { + ret void +} diff --git a/test/Assembler/mdcompileunit.ll b/test/Assembler/mdcompileunit.ll new file mode 100644 index 0000000..ce00523 --- /dev/null +++ b/test/Assembler/mdcompileunit.ll @@ -0,0 +1,31 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !7, !8, !8} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10} + +!0 = distinct !{} +!1 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +!2 = distinct !{} +!3 = distinct !{} +!4 = distinct !{} +!5 = distinct !{} +!6 = distinct !{} + +; CHECK: !7 = !MDCompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: true, flags: "-O2", runtimeVersion: 2, splitDebugFilename: "abc.debug", emissionKind: 3, enums: !2, retainedTypes: !3, subprograms: !4, globals: !5, imports: !6) +!7 = !MDCompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", + isOptimized: true, flags: "-O2", runtimeVersion: 2, + splitDebugFilename: "abc.debug", emissionKind: 3, + enums: !2, retainedTypes: !3, subprograms: !4, + globals: !5, imports: !6) +!8 = !MDCompileUnit(language: 12, file: !1, producer: "clang", + isOptimized: true, flags: "-O2", runtimeVersion: 2, + splitDebugFilename: "abc.debug", emissionKind: 3, + enums: !2, retainedTypes: !3, subprograms: !4, + globals: !5, imports: !6) + +; CHECK: !8 = !MDCompileUnit(language: DW_LANG_C99, file: !1, isOptimized: false, runtimeVersion: 0, emissionKind: 0) +!9 = !MDCompileUnit(language: 12, file: !1, producer: "", + isOptimized: false, flags: "", runtimeVersion: 0, + splitDebugFilename: "", emissionKind: 0) +!10 = !MDCompileUnit(language: 12, file: !1) diff --git a/test/Assembler/mdexpression.ll b/test/Assembler/mdexpression.ll new file mode 100644 index 0000000..42bbfe0 --- /dev/null +++ b/test/Assembler/mdexpression.ll @@ -0,0 +1,16 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !4} +!named = !{!0, !1, !2, !3, !4} + +; CHECK: !0 = !MDExpression() +; CHECK-NEXT: !1 = !MDExpression(DW_OP_deref) +; CHECK-NEXT: !2 = !MDExpression(DW_OP_plus, 3) +; CHECK-NEXT: !3 = !MDExpression(DW_OP_bit_piece, 3, 7) +; CHECK-NEXT: !4 = !MDExpression(DW_OP_deref, DW_OP_plus, 3, DW_OP_bit_piece, 3, 7) +!0 = !MDExpression() +!1 = !MDExpression(DW_OP_deref) +!2 = !MDExpression(DW_OP_plus, 3) +!3 = !MDExpression(DW_OP_bit_piece, 3, 7) +!4 = !MDExpression(DW_OP_deref, DW_OP_plus, 3, DW_OP_bit_piece, 3, 7) diff --git a/test/Assembler/mdglobalvariable.ll b/test/Assembler/mdglobalvariable.ll new file mode 100644 index 0000000..ef04f3e --- /dev/null +++ b/test/Assembler/mdglobalvariable.ll @@ -0,0 +1,22 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +@foo = global i32 0 + +; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6} +!named = !{!0, !1, !2, !3, !4, !5, !6} + +!0 = distinct !{} +!1 = distinct !{} +!2 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +!3 = distinct !{} +!4 = distinct !{} + +; CHECK: !5 = !MDGlobalVariable(scope: !0, name: "foo", linkageName: "foo", file: !2, line: 7, type: !3, isLocal: true, isDefinition: false, variable: i32* @foo, declaration: !4) +!5 = !MDGlobalVariable(scope: !0, name: "foo", linkageName: "foo", + file: !2, line: 7, type: !3, isLocal: true, + isDefinition: false, variable: i32* @foo, + declaration: !4) + +; CHECK: !6 = !MDGlobalVariable(scope: null, name: "bar", isLocal: false, isDefinition: true) +!6 = !MDGlobalVariable(name: "bar") diff --git a/test/Assembler/mdimportedentity.ll b/test/Assembler/mdimportedentity.ll new file mode 100644 index 0000000..a1ac48d --- /dev/null +++ b/test/Assembler/mdimportedentity.ll @@ -0,0 +1,20 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !3} +!named = !{!0, !1, !2, !3, !4} + +; CHECK: !0 = distinct !{} +; CHECK-NEXT: !1 = distinct !{} +!0 = distinct !{} +!1 = distinct !{} + +; CHECK-NEXT: !2 = !MDImportedEntity(tag: DW_TAG_imported_module, scope: !0, entity: !1, line: 7, name: "foo") +!2 = !MDImportedEntity(tag: DW_TAG_imported_module, scope: !0, entity: !1, + line: 7, name: "foo") + +; CHECK-NEXT: !3 = !MDImportedEntity(tag: DW_TAG_imported_module, scope: !0, name: "") +!3 = !MDImportedEntity(tag: DW_TAG_imported_module, scope: !0) +!4 = !MDImportedEntity(tag: DW_TAG_imported_module, scope: !0, entity: null, + line: 0, name: "") + diff --git a/test/Assembler/mdlexicalblock.ll b/test/Assembler/mdlexicalblock.ll new file mode 100644 index 0000000..0a2c339 --- /dev/null +++ b/test/Assembler/mdlexicalblock.ll @@ -0,0 +1,25 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !4, !4, !5, !6, !7, !7} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} + +!0 = distinct !{} +!1 = distinct !{} +!2 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") + +; CHECK: !3 = !MDLexicalBlock(scope: !0, file: !2, line: 7, column: 35) +!3 = !MDLexicalBlock(scope: !0, file: !2, line: 7, column: 35) + +; CHECK: !4 = !MDLexicalBlock(scope: !0) +!4 = !MDLexicalBlock(scope: !0) +!5 = !MDLexicalBlock(scope: !0, file: null, line: 0, column: 0) + +; CHECK: !5 = !MDLexicalBlockFile(scope: !3, file: !2, discriminator: 0) +; CHECK: !6 = !MDLexicalBlockFile(scope: !3, file: !2, discriminator: 1) +!6 = !MDLexicalBlockFile(scope: !3, file: !2, discriminator: 0) +!7 = !MDLexicalBlockFile(scope: !3, file: !2, discriminator: 1) + +; CHECK: !7 = !MDLexicalBlockFile(scope: !3, discriminator: 7) +!8 = !MDLexicalBlockFile(scope: !3, discriminator: 7) +!9 = !MDLexicalBlockFile(scope: !3, file: null, discriminator: 7) diff --git a/test/Assembler/mdlocalvariable.ll b/test/Assembler/mdlocalvariable.ll new file mode 100644 index 0000000..7a4185f --- /dev/null +++ b/test/Assembler/mdlocalvariable.ll @@ -0,0 +1,26 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +@foo = global i32 0 + +; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8} + +!0 = distinct !{} +!1 = distinct !{} +!2 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +!3 = distinct !{} +!4 = distinct !{} + +; CHECK: !5 = !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !0, name: "foo", file: !2, line: 7, type: !3, arg: 3, flags: DIFlagArtificial, inlinedAt: !4) +; CHECK: !6 = !MDLocalVariable(tag: DW_TAG_auto_variable, scope: !0, name: "foo", file: !2, line: 7, type: !3, flags: DIFlagArtificial, inlinedAt: !4) +!5 = !MDLocalVariable(tag: DW_TAG_arg_variable, scope: !0, name: "foo", + file: !2, line: 7, type: !3, arg: 3, + flags: DIFlagArtificial, inlinedAt: !4) +!6 = !MDLocalVariable(tag: DW_TAG_auto_variable, scope: !0, name: "foo", + file: !2, line: 7, type: !3, flags: DIFlagArtificial, inlinedAt: !4) + +; CHECK: !7 = !MDLocalVariable(tag: DW_TAG_arg_variable, scope: null, name: "", arg: 0) +; CHECK: !8 = !MDLocalVariable(tag: DW_TAG_auto_variable, scope: null, name: "") +!7 = !MDLocalVariable(tag: DW_TAG_arg_variable) +!8 = !MDLocalVariable(tag: DW_TAG_auto_variable) diff --git a/test/Assembler/mdlocation.ll b/test/Assembler/mdlocation.ll new file mode 100644 index 0000000..e095d90 --- /dev/null +++ b/test/Assembler/mdlocation.ll @@ -0,0 +1,23 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !1, !2, !2, !3, !3, !4} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7} + +; CHECK: !0 = !{} +!0 = !{} + +; CHECK-NEXT: !1 = !MDLocation(line: 3, column: 7, scope: !0) +!1 = !MDLocation(line: 3, column: 7, scope: !0) +!2 = !MDLocation(scope: !0, column: 7, line: 3) + +; CHECK-NEXT: !2 = !MDLocation(line: 3, column: 7, scope: !0, inlinedAt: !1) +!3 = !MDLocation(scope: !0, inlinedAt: !1, column: 7, line: 3) +!4 = !MDLocation(column: 7, line: 3, scope: !0, inlinedAt: !1) + +; CHECK-NEXT: !3 = !MDLocation(line: 0, scope: !0) +!5 = !MDLocation(scope: !0) +!6 = !MDLocation(scope: !0, column: 0, line: 0) + +; CHECK-NEXT: !4 = !MDLocation(line: 4294967295, column: 65535, scope: !0) +!7 = !MDLocation(line: 4294967295, column: 65535, scope: !0) diff --git a/test/Assembler/mdnamespace.ll b/test/Assembler/mdnamespace.ll new file mode 100644 index 0000000..d7f6849 --- /dev/null +++ b/test/Assembler/mdnamespace.ll @@ -0,0 +1,16 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !4, !4} +!named = !{!0, !1, !2, !3, !4, !5} + +!0 = distinct !{} +!1 = distinct !{} +!2 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") + +; CHECK: !3 = !MDNamespace(scope: !0, file: !2, name: "Namespace", line: 7) +!3 = !MDNamespace(scope: !0, file: !2, name: "Namespace", line: 7) + +; CHECK: !4 = !MDNamespace(scope: !0) +!4 = !MDNamespace(scope: !0, file: null, name: "", line: 0) +!5 = !MDNamespace(scope: !0) diff --git a/test/Assembler/mdobjcproperty.ll b/test/Assembler/mdobjcproperty.ll new file mode 100644 index 0000000..8afe943 --- /dev/null +++ b/test/Assembler/mdobjcproperty.ll @@ -0,0 +1,20 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !4, !4} +!named = !{!0, !1, !2, !3, !4, !5} + +!0 = distinct !{} +!1 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +!2 = distinct !{} + + +; CHECK: !2 = distinct !{} +; CHECK-NEXT: !3 = !MDObjCProperty(name: "foo", file: !1, line: 7, setter: "setFoo", getter: "getFoo", attributes: 7, type: !2) +!3 = !MDObjCProperty(name: "foo", file: !1, line: 7, setter: "setFoo", + getter: "getFoo", attributes: 7, type: !2) + +; CHECK-NEXT: !4 = !MDObjCProperty(name: "foo") +!4 = !MDObjCProperty(name: "foo", file: null, line: 0, setter: "", getter: "", + attributes: 0, type: null) +!5 = !MDObjCProperty(name: "foo") diff --git a/test/Assembler/mdsubprogram.ll b/test/Assembler/mdsubprogram.ll new file mode 100644 index 0000000..aecfefc --- /dev/null +++ b/test/Assembler/mdsubprogram.ll @@ -0,0 +1,28 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +declare void @_Z3foov() + +; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} + +!0 = distinct !{} +!1 = distinct !{} +!2 = !MDFile(filename: "path/to/file", directory: "/path/to/dir") +!3 = distinct !{} +!4 = distinct !{} +!5 = distinct !{} +!6 = distinct !{} +!7 = distinct !{} + +; CHECK: !8 = !MDSubprogram(scope: !0, name: "foo", linkageName: "_Zfoov", file: !2, line: 7, type: !3, isLocal: true, isDefinition: false, scopeLine: 8, containingType: !4, virtuality: DW_VIRTUALITY_pure_virtual, virtualIndex: 10, flags: DIFlagPrototyped, isOptimized: true, function: void ()* @_Z3foov, templateParams: !5, declaration: !6, variables: !7) +!8 = !MDSubprogram(scope: !0, name: "foo", linkageName: "_Zfoov", + file: !2, line: 7, type: !3, isLocal: true, + isDefinition: false, scopeLine: 8, containingType: !4, + virtuality: DW_VIRTUALITY_pure_virtual, virtualIndex: 10, + flags: DIFlagPrototyped, isOptimized: true, function: void ()* @_Z3foov, + templateParams: !5, declaration: !6, variables: !7) + +; CHECK: !9 = !MDSubprogram(scope: null, name: "bar", isLocal: false, isDefinition: true, isOptimized: false) +!9 = !MDSubprogram(name: "bar") + diff --git a/test/Assembler/mdsubrange-empty-array.ll b/test/Assembler/mdsubrange-empty-array.ll new file mode 100644 index 0000000..fa05582 --- /dev/null +++ b/test/Assembler/mdsubrange-empty-array.ll @@ -0,0 +1,14 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !0, !1, !2} +!named = !{!0, !1, !2, !3} + +; CHECK: !0 = !MDSubrange(count: -1) +; CHECK-NEXT: !1 = !MDSubrange(count: -1, lowerBound: 4) +; CHECK-NEXT: !2 = !MDSubrange(count: -1, lowerBound: -5) +!0 = !MDSubrange(count: -1) +!1 = !MDSubrange(count: -1, lowerBound: 0) + +!2 = !MDSubrange(count: -1, lowerBound: 4) +!3 = !MDSubrange(count: -1, lowerBound: -5) diff --git a/test/Assembler/mdtemplateparameter.ll b/test/Assembler/mdtemplateparameter.ll new file mode 100644 index 0000000..f005c08 --- /dev/null +++ b/test/Assembler/mdtemplateparameter.ll @@ -0,0 +1,24 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2, !3, !3, !4, !5, !5} +!named = !{!0, !1, !2, !3, !4, !5, !6, !7} + +!0 = distinct !{} +!1 = distinct !{} +; CHECK: !1 = distinct !{} + +; CHECK-NEXT: !2 = !MDTemplateTypeParameter(name: "Ty", type: !1) +; CHECK-NEXT: !3 = !MDTemplateTypeParameter(name: "", type: !1) +!2 = !MDTemplateTypeParameter(name: "Ty", type: !1) +!3 = !MDTemplateTypeParameter(type: !1) +!4 = !MDTemplateTypeParameter(name: "", type: !1) + +; CHECK-NEXT: !4 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, name: "V", type: !1, value: i32 7) +; CHECK-NEXT: !5 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, name: "", type: !1, value: i32 7) +!5 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, + name: "V", type: !1, value: i32 7) +!6 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, + type: !1, value: i32 7) +!7 = !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, + name: "", type: !1, value: i32 7) diff --git a/test/Assembler/mdtype-large-values.ll b/test/Assembler/mdtype-large-values.ll new file mode 100644 index 0000000..287e862 --- /dev/null +++ b/test/Assembler/mdtype-large-values.ll @@ -0,0 +1,12 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; CHECK: !named = !{!0, !1, !2} +!named = !{!0, !1, !2} + +; CHECK: !0 = !MDBasicType(tag: DW_TAG_base_type, name: "name", size: 18446744073709551615, align: 18446744073709551614, encoding: DW_ATE_unsigned_char) +; CHECK-NEXT: !1 = !MDDerivedType(tag: DW_TAG_pointer_type, baseType: !0, size: 18446744073709551615, align: 18446744073709551614, offset: 18446744073709551613) +; CHECK-NEXT: !2 = !MDCompositeType(tag: DW_TAG_array_type, baseType: !0, size: 18446744073709551615, align: 18446744073709551614, offset: 18446744073709551613) +!0 = !MDBasicType(tag: DW_TAG_base_type, name: "name", size: 18446744073709551615, align: 18446744073709551614, encoding: DW_ATE_unsigned_char) +!1 = !MDDerivedType(tag: DW_TAG_pointer_type, baseType: !0, size: 18446744073709551615, align: 18446744073709551614, offset: 18446744073709551613) +!2 = !MDCompositeType(tag: DW_TAG_array_type, baseType: !0, size: 18446744073709551615, align: 18446744073709551614, offset: 18446744073709551613) diff --git a/test/Assembler/metadata-null-operands.ll b/test/Assembler/metadata-null-operands.ll new file mode 100644 index 0000000..acae1d4 --- /dev/null +++ b/test/Assembler/metadata-null-operands.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s +; RUN: verify-uselistorder %s + +; Don't crash on null operands. (If/when we add a verify check for these, we +; should disable the verifier for this test and remove this comment; the test +; is still important.) +!named = !{!0, !1} +!0 = !MDDerivedType(tag: DW_TAG_pointer_type, baseType: null) +!1 = !MDCompileUnit(language: DW_LANG_C, file: null) + +; CHECK: !named = !{!0, !1} +; CHECK: !0 = !MDDerivedType({{.*}}baseType: null{{.*}}) +; CHECK: !1 = !MDCompileUnit({{.*}}file: null{{.*}}) diff --git a/test/Assembler/metadata.ll b/test/Assembler/metadata.ll index f6e619d..e2c5923 100644 --- a/test/Assembler/metadata.ll +++ b/test/Assembler/metadata.ll @@ -11,8 +11,8 @@ define void @test() { ret void, !foo !0, !bar !1 } -!0 = metadata !{i32 662302, i32 26, metadata !1, null} -!1 = metadata !{i32 4, metadata !"foo"} +!0 = !MDLocation(line: 662302, column: 26, scope: !1) +!1 = !{i32 4, !"foo"} declare void @llvm.dbg.func.start(metadata) nounwind readnone diff --git a/test/Assembler/named-metadata.ll b/test/Assembler/named-metadata.ll index 954c189..9fa37a7 100644 --- a/test/Assembler/named-metadata.ll +++ b/test/Assembler/named-metadata.ll @@ -1,9 +1,9 @@ ; RUN: llvm-as < %s | llvm-dis | FileCheck %s ; RUN: verify-uselistorder %s -!0 = metadata !{metadata !"zero"} -!1 = metadata !{metadata !"one"} -!2 = metadata !{metadata !"two"} +!0 = !{!"zero"} +!1 = !{!"one"} +!2 = !{!"two"} !foo = !{!0, !1, !2} ; CHECK: !foo = !{!0, !1, !2} diff --git a/test/Assembler/short-hexpair.ll b/test/Assembler/short-hexpair.ll new file mode 100644 index 0000000..067ea30 --- /dev/null +++ b/test/Assembler/short-hexpair.ll @@ -0,0 +1,4 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +@x = global fp128 0xL01 +; CHECK: @x = global fp128 0xL00000000000000000000000000000001 diff --git a/test/Assembler/unnamed-comdat.ll b/test/Assembler/unnamed-comdat.ll new file mode 100644 index 0000000..8aa0f78c9 --- /dev/null +++ b/test/Assembler/unnamed-comdat.ll @@ -0,0 +1,6 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +; CHECK: comdat cannot be unnamed + +define void @0() comdat { + ret void +} diff --git a/test/Assembler/upgrade-loop-metadata.ll b/test/Assembler/upgrade-loop-metadata.ll index 7c5a580..0852469 100644 --- a/test/Assembler/upgrade-loop-metadata.ll +++ b/test/Assembler/upgrade-loop-metadata.ll @@ -31,12 +31,12 @@ for.end: ; preds = %for.cond ret void } -; CHECK: !{metadata !"llvm.loop.interleave.count", i32 4} -; CHECK: !{metadata !"llvm.loop.vectorize.width", i32 8} -; CHECK: !{metadata !"llvm.loop.vectorize.enable", i1 true} +; CHECK: !{!"llvm.loop.interleave.count", i32 4} +; CHECK: !{!"llvm.loop.vectorize.width", i32 8} +; CHECK: !{!"llvm.loop.vectorize.enable", i1 true} -!0 = metadata !{metadata !"clang version 3.5.0 (trunk 211528)"} -!1 = metadata !{metadata !1, metadata !2, metadata !3, metadata !4, metadata !4} -!2 = metadata !{metadata !"llvm.vectorizer.unroll", i32 4} -!3 = metadata !{metadata !"llvm.vectorizer.width", i32 8} -!4 = metadata !{metadata !"llvm.vectorizer.enable", i1 true} +!0 = !{!"clang version 3.5.0 (trunk 211528)"} +!1 = !{!1, !2, !3, !4, !4} +!2 = !{!"llvm.vectorizer.unroll", i32 4} +!3 = !{!"llvm.vectorizer.width", i32 8} +!4 = !{!"llvm.vectorizer.enable", i1 true} |