diff options
Diffstat (limited to 'test/Bitcode')
34 files changed, 231 insertions, 94 deletions
diff --git a/test/Bitcode/Inputs/invalid-abbrev.bc b/test/Bitcode/Inputs/invalid-abbrev.bc Binary files differnew file mode 100644 index 0000000..4e8f394 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-abbrev.bc diff --git a/test/Bitcode/Inputs/invalid-align.bc b/test/Bitcode/Inputs/invalid-align.bc Binary files differnew file mode 100644 index 0000000..e84fa6c --- /dev/null +++ b/test/Bitcode/Inputs/invalid-align.bc diff --git a/test/Bitcode/Inputs/invalid-bad-abbrev-number.bc b/test/Bitcode/Inputs/invalid-bad-abbrev-number.bc new file mode 100644 index 0000000..e4e1fb3 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-bad-abbrev-number.bc @@ -0,0 +1 @@ +BCÀÞ!0000000000
\ No newline at end of file diff --git a/test/Bitcode/Inputs/invalid-bitwidth.bc b/test/Bitcode/Inputs/invalid-bitwidth.bc Binary files differnew file mode 100644 index 0000000..e9028f7 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-bitwidth.bc diff --git a/test/Bitcode/Inputs/invalid-extractval-array-idx.bc b/test/Bitcode/Inputs/invalid-extractval-array-idx.bc Binary files differnew file mode 100644 index 0000000..7465df3 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-extractval-array-idx.bc diff --git a/test/Bitcode/Inputs/invalid-extractval-struct-idx.bc b/test/Bitcode/Inputs/invalid-extractval-struct-idx.bc Binary files differnew file mode 100644 index 0000000..ccb40f7 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-extractval-struct-idx.bc diff --git a/test/Bitcode/Inputs/invalid-extractval-too-many-idxs.bc b/test/Bitcode/Inputs/invalid-extractval-too-many-idxs.bc Binary files differnew file mode 100644 index 0000000..543a3ba --- /dev/null +++ b/test/Bitcode/Inputs/invalid-extractval-too-many-idxs.bc diff --git a/test/Bitcode/Inputs/invalid-insertval-array-idx.bc b/test/Bitcode/Inputs/invalid-insertval-array-idx.bc Binary files differnew file mode 100644 index 0000000..79c3c03 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-insertval-array-idx.bc diff --git a/test/Bitcode/Inputs/invalid-insertval-struct-idx.bc b/test/Bitcode/Inputs/invalid-insertval-struct-idx.bc Binary files differnew file mode 100644 index 0000000..ec70384 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-insertval-struct-idx.bc diff --git a/test/Bitcode/Inputs/invalid-insertval-too-many-idxs.bc b/test/Bitcode/Inputs/invalid-insertval-too-many-idxs.bc Binary files differnew file mode 100644 index 0000000..fd21ac2 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-insertval-too-many-idxs.bc diff --git a/test/Bitcode/Inputs/invalid-pr20485.bc b/test/Bitcode/Inputs/invalid-pr20485.bc Binary files differnew file mode 100644 index 0000000..b6211de --- /dev/null +++ b/test/Bitcode/Inputs/invalid-pr20485.bc diff --git a/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc b/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc Binary files differnew file mode 100644 index 0000000..4594efe --- /dev/null +++ b/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc diff --git a/test/Bitcode/Inputs/invalid-unexpected-eof.bc b/test/Bitcode/Inputs/invalid-unexpected-eof.bc new file mode 100644 index 0000000..a487393 --- /dev/null +++ b/test/Bitcode/Inputs/invalid-unexpected-eof.bc @@ -0,0 +1 @@ +BCÀÞ!00000000000000000000
\ No newline at end of file diff --git a/test/Bitcode/calling-conventions.3.2.ll b/test/Bitcode/calling-conventions.3.2.ll index f36e9f8..b60f1d7 100644 --- a/test/Bitcode/calling-conventions.3.2.ll +++ b/test/Bitcode/calling-conventions.3.2.ll @@ -15,7 +15,7 @@ declare coldcc void @coldcc() ; CHECK: declare coldcc void @coldcc declare cc10 void @cc10() -; CHECK: declare cc10 void @cc10 +; CHECK: declare ghccc void @cc10 declare spir_kernel void @spir_kernel() ; CHECK: declare spir_kernel void @spir_kernel @@ -72,7 +72,7 @@ define void @call_coldcc() { } define void @call_cc10 () { -; CHECK: call cc10 void @cc10 +; CHECK: call ghccc void @cc10 call cc10 void @cc10 () ret void } diff --git a/test/Bitcode/drop-debug-info.3.5.ll b/test/Bitcode/drop-debug-info.3.5.ll new file mode 100644 index 0000000..fde136d --- /dev/null +++ b/test/Bitcode/drop-debug-info.3.5.ll @@ -0,0 +1,40 @@ +; RUN: llvm-dis < %s.bc -o %t.ll 2>&1 | FileCheck -check-prefix=WARN %s +; RUN: FileCheck -input-file=%t.ll %s + +; The bitcode paired with this test was generated by passing this file to +; llvm-dis-3.5. This tests that llvm-dis warns correctly when reading old +; bitcode. + +; CHECK-NOT: !llvm.dbg.cu +; CHECK-NOT: !dbg +; WARN: warning: ignoring debug info with an invalid version (1) +target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-apple-macosx10.10.0" + +; Function Attrs: nounwind ssp uwtable +define i32 @main() #0 { +entry: + %retval = alloca i32, align 4 + store i32 0, i32* %retval + ret i32 0, !dbg !12 +} + +attributes #0 = { nounwind ssp uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!9, !10} +!llvm.ident = !{!11} + +!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.2 (230356)", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/Users/dexonsmith/data/llvm/staging/test/Bitcode/t.c] [DW_LANG_C99] +!1 = metadata !{metadata !"t.c", metadata !"/Users/dexonsmith/data/llvm/staging/test/Bitcode"} +!2 = metadata !{} +!3 = metadata !{metadata !4} +!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"main", metadata !"main", metadata !"", i32 1, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, i32 ()* @main, null, null, metadata !2, i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [main] +!5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/Users/dexonsmith/data/llvm/staging/test/Bitcode/t.c] +!6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!7 = metadata !{metadata !8} +!8 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!9 = metadata !{i32 2, metadata !"Dwarf Version", i32 2} +!10 = metadata !{i32 2, metadata !"Debug Info Version", i32 1} +!11 = metadata !{metadata !"clang version 3.5.2 (230356)"} +!12 = metadata !{i32 1, i32 14, metadata !4, null} diff --git a/test/Bitcode/drop-debug-info.3.5.ll.bc b/test/Bitcode/drop-debug-info.3.5.ll.bc Binary files differnew file mode 100644 index 0000000..c401989 --- /dev/null +++ b/test/Bitcode/drop-debug-info.3.5.ll.bc diff --git a/test/Bitcode/drop-debug-info.ll b/test/Bitcode/drop-debug-info.ll deleted file mode 100644 index a2f5694..0000000 --- a/test/Bitcode/drop-debug-info.ll +++ /dev/null @@ -1,29 +0,0 @@ -; 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 = metadata !{metadata !"0x11\0012\00clang version 3.5 (trunk 195495) (llvm/trunk 195495:195504M)\000\00\000\00\000", metadata !1, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [/Users/manmanren/llvm_gmail/release/../llvm/tools/clang/test/CodeGen/debug-info-version.c] [DW_LANG_C99] -!1 = metadata !{metadata !"../llvm/tools/clang/test/CodeGen/debug-info-version.c", metadata !"/Users/manmanren/llvm_gmail/release"} -!2 = metadata !{i32 0} -!3 = metadata !{metadata !4} -!4 = metadata !{metadata !"0x2e\00main\00main\00\003\000\001\000\006\00256\000\003", metadata !1, metadata !5, metadata !6, null, i32 ()* @main, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 3] [def] [main] -!5 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [/Users/manmanren/llvm_gmail/release/../llvm/tools/clang/test/CodeGen/debug-info-version.c] -!6 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !7, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!7 = metadata !{metadata !8} -!8 = metadata !{metadata !"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 = metadata !{i32 2, metadata !"Dwarf Version", i32 2} -!12 = metadata !{i32 4, i32 0, metadata !4, null} - -; WARN: warning: ignoring debug info with an invalid version (0) -; CHECK-NOT: !dbg -; CHECK-NOT: !llvm.dbg.cu diff --git a/test/Bitcode/function-encoding-rel-operands.ll b/test/Bitcode/function-encoding-rel-operands.ll index 24d6d80..a96253b 100644 --- a/test/Bitcode/function-encoding-rel-operands.ll +++ b/test/Bitcode/function-encoding-rel-operands.ll @@ -35,9 +35,9 @@ define double @test_float_binops(i32 %a) nounwind { ; CHECK: FUNCTION_BLOCK -; skip checking operands of INST_INBOUNDS_GEP since that depends on ordering +; skip checking operands of INST_GEP since that depends on ordering ; between literals and the formal parameters. -; CHECK: INST_INBOUNDS_GEP {{.*}} +; CHECK: INST_GEP {{.*}} ; CHECK: INST_LOAD {{.*}}op0=1 {{.*}} ; CHECK: INST_CMP2 op0=1 {{.*}} ; CHECK: INST_RET {{.*}}op0=1 diff --git a/test/Bitcode/function-local-metadata.3.5.ll b/test/Bitcode/function-local-metadata.3.5.ll new file mode 100644 index 0000000..5bd8296 --- /dev/null +++ b/test/Bitcode/function-local-metadata.3.5.ll @@ -0,0 +1,35 @@ +; RUN: llvm-dis < %s.bc | FileCheck %s + +; Check that function-local metadata is dropped correctly when it's not a +; direct argument to a call instruction. +; +; Bitcode assembled by llvm-as v3.5.0. + +define void @foo(i32 %v) { +; CHECK: entry: +entry: +; CHECK-NEXT: call void @llvm.bar(metadata i32 %v) + call void @llvm.bar(metadata !{i32 %v}) + +; Note: these supposedly legal instructions fired an assertion in llvm-as: +; +; Assertion failed: (I != ValueMap.end() && "Value not in slotcalculator!"), function getValueID, file lib/Bitcode/Writer/ValueEnumerator.cpp, line 138. +; +; So, I didn't test them; it looks like bitcode compatability is irrelevant. + ; call void @llvm.bar(metadata !{i32 0, i32 %v}) + ; call void @llvm.bar(metadata !{i32 %v, i32 0}) + ; call void @llvm.bar(metadata !{metadata !{}, i32 %v}) + ; call void @llvm.bar(metadata !{i32 %v, metadata !{}}) + +; CHECK-NEXT: call void @llvm.bar(metadata !0) +; CHECK-NEXT: call void @llvm.bar(metadata !0) + call void @llvm.bar(metadata !{i32 %v, i32 %v}) + call void @llvm.bar(metadata !{metadata !{i32 %v}}) + +; CHECK-NEXT: ret void{{$}} + ret void, !baz !{i32 %v} +} + +declare void @llvm.bar(metadata) + +; CHECK: !0 = !{} diff --git a/test/Bitcode/function-local-metadata.3.5.ll.bc b/test/Bitcode/function-local-metadata.3.5.ll.bc Binary files differnew file mode 100644 index 0000000..6323ca4 --- /dev/null +++ b/test/Bitcode/function-local-metadata.3.5.ll.bc diff --git a/test/Bitcode/highLevelStructure.3.2.ll b/test/Bitcode/highLevelStructure.3.2.ll index f9509eb..88fb340 100644 --- a/test/Bitcode/highLevelStructure.3.2.ll +++ b/test/Bitcode/highLevelStructure.3.2.ll @@ -75,11 +75,11 @@ entry: ; Named metadata Test ; CHECK: !name = !{!0, !1, !2} !name = !{!0, !1, !2} -; CHECK: !0 = metadata !{metadata !"zero"} +; CHECK: !0 = !{!"zero"} !0 = metadata !{metadata !"zero"} -; CHECK: !1 = metadata !{metadata !"one"} +; CHECK: !1 = !{!"one"} !1 = metadata !{metadata !"one"} -; CHECK: !2 = metadata !{metadata !"two"} +; CHECK: !2 = !{!"two"} !2 = metadata !{metadata !"two"} diff --git a/test/Bitcode/invalid.ll b/test/Bitcode/invalid.ll index 1d4a82b..df9fec8 100644 --- a/test/Bitcode/invalid.ll +++ b/test/Bitcode/invalid.ll @@ -1,6 +1,6 @@ ; RUN: not llvm-dis < %s.bc 2>&1 | FileCheck %s -; CHECK: llvm-dis{{(\.EXE|\.exe)?}}: Invalid value +; CHECK: llvm-dis{{(\.EXE|\.exe)?}}: error: Unknown attribute kind (48) ; invalid.ll.bc has an invalid attribute number. ; The test checks that LLVM reports the error and doesn't access freed memory diff --git a/test/Bitcode/invalid.test b/test/Bitcode/invalid.test new file mode 100644 index 0000000..fb81888 --- /dev/null +++ b/test/Bitcode/invalid.test @@ -0,0 +1,43 @@ +RUN: not llvm-dis -disable-output %p/Inputs/invalid-pr20485.bc 2>&1 | \ +RUN: FileCheck --check-prefix=INVALID-ENCODING %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-abbrev.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-ABBREV %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-unexpected-eof.bc 2>&1 | \ +RUN: FileCheck --check-prefix=UNEXPECTED-EOF %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-bad-abbrev-number.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-ABBREV-NUMBER %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-type-table-forward-ref.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-TYPE-TABLE-FORWARD-REF %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-bitwidth.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-BITWIDTH %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-align.bc 2>&1 | \ +RUN: FileCheck --check-prefix=BAD-ALIGN %s + +INVALID-ENCODING: Invalid encoding +BAD-ABBREV: Abbreviation starts with an Array or a Blob +UNEXPECTED-EOF: Unexpected end of file +BAD-ABBREV-NUMBER: Invalid abbrev number +BAD-TYPE-TABLE-FORWARD-REF: Invalid TYPE table: Only named structs can be forward referenced +BAD-BITWIDTH: Bitwidth for integer type out of range +BAD-ALIGN: Invalid alignment value + +RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-array-idx.bc 2>&1 | \ +RUN: FileCheck --check-prefix=EXTRACT-ARRAY %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-struct-idx.bc 2>&1 | \ +RUN: FileCheck --check-prefix=EXTRACT-STRUCT %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-too-many-idxs.bc 2>&1 | \ +RUN: FileCheck --check-prefix=EXTRACT-IDXS %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-insertval-array-idx.bc 2>&1 | \ +RUN: FileCheck --check-prefix=INSERT-ARRAY %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-insertval-struct-idx.bc 2>&1 | \ +RUN: FileCheck --check-prefix=INSERT-STRUCT %s +RUN: not llvm-dis -disable-output %p/Inputs/invalid-insertval-too-many-idxs.bc 2>&1 | \ +RUN: FileCheck --check-prefix=INSERT-IDXS %s + + +EXTRACT-ARRAY: EXTRACTVAL: Invalid array index +EXTRACT-STRUCT: EXTRACTVAL: Invalid struct index +EXTRACT-IDXS: EXTRACTVAL: Invalid type +INSERT-ARRAY: INSERTVAL: Invalid array index +INSERT-STRUCT: INSERTVAL: Invalid struct index +INSERT-IDXS: INSERTVAL: Invalid type diff --git a/test/Bitcode/linkage-types-3.2.ll b/test/Bitcode/linkage-types-3.2.ll index dc6c90c..fb6cc57 100644 --- a/test/Bitcode/linkage-types-3.2.ll +++ b/test/Bitcode/linkage-types-3.2.ll @@ -6,124 +6,124 @@ ; older bitcode files. @common.var = common global i32 0 -; CHECK: @common.var = common global i32 0 +; CHECK: @common.var = common global i32 0{{$}} @appending.var = appending global [8 x i32] undef -; CHECK: @appending.var = appending global [8 x i32] undef +; CHECK: @appending.var = appending global [8 x i32] undef{{$}} @extern_weak.var = extern_weak global i32 -; CHECK: @extern_weak.var = extern_weak global i32 +; CHECK: @extern_weak.var = extern_weak global i32{{$}} @private.var = private constant i32 0 -; CHECK: @private.var = private constant i32 0 +; CHECK: @private.var = private constant i32 0{{$}} @linker_private.var = linker_private constant i32 0 -; CHECK: @linker_private.var = private constant i32 0 +; CHECK: @linker_private.var = private constant i32 0{{$}} @linker_private_weak.var = linker_private_weak constant i32 0 -; CHECK: @linker_private_weak.var = private constant i32 0 +; CHECK: @linker_private_weak.var = private constant i32 0{{$}} @linker_private_weak_def_auto.var = linker_private_weak_def_auto constant i32 0 -; CHECK: @linker_private_weak_def_auto.var = constant i32 0 +; CHECK: @linker_private_weak_def_auto.var = constant i32 0{{$}} @internal.var = internal constant i32 0 -; CHECK: @internal.var = internal constant i32 0 +; CHECK: @internal.var = internal constant i32 0{{$}} @available_externally.var = available_externally constant i32 0 -; CHECK: @available_externally.var = available_externally constant i32 0 +; CHECK: @available_externally.var = available_externally constant i32 0{{$}} @linkonce.var = linkonce constant i32 0 -; CHECK: @linkonce.var = linkonce constant i32 0 +; CHECK: @linkonce.var = linkonce constant i32 0, comdat{{$}} @weak.var = weak constant i32 0 -; CHECK: @weak.var = weak constant i32 0 +; CHECK: @weak.var = weak constant i32 0, comdat{{$}} @linkonce_odr.var = linkonce_odr constant i32 0 -; CHECK: @linkonce_odr.var = linkonce_odr constant i32 0 +; CHECK: @linkonce_odr.var = linkonce_odr constant i32 0, comdat{{$}} @linkonce_odr_auto_hide.var = linkonce_odr_auto_hide constant i32 0 -; CHECK: @linkonce_odr_auto_hide.var = constant i32 0 +; CHECK: @linkonce_odr_auto_hide.var = constant i32 0{{$}} @external.var = external constant i32 -; CHECK: @external.var = external constant i32 +; CHECK: @external.var = external constant i32{{$}} @dllexport.var = dllexport global i32 0 -; CHECK: @dllexport.var = dllexport global i32 0 +; CHECK: @dllexport.var = dllexport global i32 0{{$}} @dllimport.var = dllimport global i32 -; CHECK: @dllimport.var = external dllimport global i32 +; CHECK: @dllimport.var = external dllimport global i32{{$}} define private void @private() -; CHECK: define private void @private +; CHECK: define private void @private() { { - ret void; + ret void } define linker_private void @linker_private() -; CHECK: define private void @linker_private +; CHECK: define private void @linker_private() { { - ret void; + ret void } define linker_private_weak void @linker_private_weak() -; CHECK: define private void @linker_private_weak +; CHECK: define private void @linker_private_weak() { { - ret void; + ret void } define linker_private_weak_def_auto void @linker_private_weak_def_auto() -; CHECK: define void @linker_private_weak_def_auto +; CHECK: define void @linker_private_weak_def_auto() { { - ret void; + ret void } define internal void @internal() -; CHECK: define internal void @internal +; CHECK: define internal void @internal() { { - ret void; + ret void } define available_externally void @available_externally() -; CHECK: define available_externally void @available_externally +; CHECK: define available_externally void @available_externally() { { - ret void; + ret void } define linkonce void @linkonce() -; CHECK: define linkonce void @linkonce +; CHECK: define linkonce void @linkonce() comdat { { - ret void; + ret void } define weak void @weak() -; CHECK: define weak void @weak +; CHECK: define weak void @weak() comdat { { - ret void; + ret void } define linkonce_odr void @linkonce_odr() -; CHECK: define linkonce_odr void @linkonce_odr +; CHECK: define linkonce_odr void @linkonce_odr() comdat { { - ret void; + ret void } define linkonce_odr_auto_hide void @linkonce_odr_auto_hide() -; CHECK: define void @linkonce_odr_auto_hide +; CHECK: define void @linkonce_odr_auto_hide() { { - ret void; + ret void } define external void @external() -; CHECK: define void @external +; CHECK: define void @external() { { - ret void; + ret void } declare dllimport void @dllimport() -; CHECK: declare dllimport void @dllimport +; CHECK: declare dllimport void @dllimport(){{$}} define dllexport void @dllexport() -; CHECK: define dllexport void @dllexport() +; CHECK: define dllexport void @dllexport() { { - ret void; + ret void } diff --git a/test/Bitcode/mdstring-high-bits.ll b/test/Bitcode/mdstring-high-bits.ll new file mode 100644 index 0000000..0d8fdeb --- /dev/null +++ b/test/Bitcode/mdstring-high-bits.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +; PR21882: confirm we don't crash when high bits are set in a character in a +; metadata string. + +; CHECK: !name = !{!0} +!name = !{!0} +; CHECK: !0 = !{!"\80"} +!0 = !{!"\80"} diff --git a/test/Bitcode/metadata-2.ll b/test/Bitcode/metadata-2.ll index bb957a7..07371a3 100644 --- a/test/Bitcode/metadata-2.ll +++ b/test/Bitcode/metadata-2.ll @@ -84,5 +84,5 @@ moduleinfoCtorEntry: } !llvm.ldc.classinfo._D6Object7__ClassZ = !{!0} !llvm.ldc.classinfo._D10ModuleInfo7__ClassZ = !{!1} -!0 = metadata !{%object.Object undef, i1 false, i1 false} -!1 = metadata !{%object.ModuleInfo undef, i1 false, i1 false} +!0 = !{%object.Object undef, i1 false, i1 false} +!1 = !{%object.ModuleInfo undef, i1 false, i1 false} diff --git a/test/Bitcode/metadata.3.5.ll b/test/Bitcode/metadata.3.5.ll new file mode 100644 index 0000000..ae7b83a --- /dev/null +++ b/test/Bitcode/metadata.3.5.ll @@ -0,0 +1,26 @@ +; RUN: llvm-dis < %s.bc | FileCheck %s + +; Check that metadata encoded in 3.5 is correctly understood going forward. +; +; Bitcode assembled by llvm-as v3.5.0. + +define void @foo(i32 %v) { +; CHECK: entry: +entry: +; CHECK-NEXT: call void @llvm.bar(metadata !0) + call void @llvm.bar(metadata !0) + +; CHECK-NEXT: ret void, !baz !1 + ret void, !baz !1 +} + +declare void @llvm.bar(metadata) + +@global = global i32 0 + +; CHECK: !0 = !{!1, !2, i32* @global, null} +; CHECK: !1 = !{!2, null} +; CHECK: !2 = !{} +!0 = metadata !{metadata !1, metadata !2, i32* @global, null} +!1 = metadata !{metadata !2, null} +!2 = metadata !{} diff --git a/test/Bitcode/metadata.3.5.ll.bc b/test/Bitcode/metadata.3.5.ll.bc Binary files differnew file mode 100644 index 0000000..1857465 --- /dev/null +++ b/test/Bitcode/metadata.3.5.ll.bc diff --git a/test/Bitcode/metadata.ll b/test/Bitcode/metadata.ll index 955b48b..7d24a91 100644 --- a/test/Bitcode/metadata.ll +++ b/test/Bitcode/metadata.ll @@ -2,5 +2,5 @@ ; RUN: verify-uselistorder < %s !llvm.foo = !{!0} -!0 = metadata !{i32 42} +!0 = !{i32 42} @my.str = internal constant [4 x i8] c"foo\00" diff --git a/test/Bitcode/pr18704.ll b/test/Bitcode/pr18704.ll index f05fe53..e57ce3c 100644 --- a/test/Bitcode/pr18704.ll +++ b/test/Bitcode/pr18704.ll @@ -1,6 +1,6 @@ ; RUN: not llvm-dis < %s.bc 2>&1 | FileCheck %s -; CHECK: llvm-dis{{(\.EXE|\.exe)?}}: Never resolved value found in function +; CHECK: llvm-dis{{(\.EXE|\.exe)?}}: error: Never resolved value found in function ; pr18704.ll.bc has an instruction referring to invalid type. ; The test checks that LLVM reports the error and doesn't access freed memory diff --git a/test/Bitcode/upgrade-loop-metadata.ll b/test/Bitcode/upgrade-loop-metadata.ll index cebc583..be2a99a 100644 --- a/test/Bitcode/upgrade-loop-metadata.ll +++ b/test/Bitcode/upgrade-loop-metadata.ll @@ -27,9 +27,9 @@ 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} diff --git a/test/Bitcode/upgrade-tbaa.ll b/test/Bitcode/upgrade-tbaa.ll index 23b4d7d..c20c66a 100644 --- a/test/Bitcode/upgrade-tbaa.ll +++ b/test/Bitcode/upgrade-tbaa.ll @@ -4,7 +4,7 @@ ; Function Attrs: nounwind define void @_Z4testPiPf(i32* nocapture %pI, float* nocapture %pF) #0 { entry: - store i32 0, i32* %pI, align 4, !tbaa !{metadata !"int", metadata !0} + store i32 0, i32* %pI, align 4, !tbaa !{!"int", !0} ; CHECK: store i32 0, i32* %pI, align 4, !tbaa [[TAG_INT:!.*]] store float 1.000000e+00, float* %pF, align 4, !tbaa !2 ; CHECK: store float 1.000000e+00, float* %pF, align 4, !tbaa [[TAG_FLOAT:!.*]] @@ -13,12 +13,12 @@ entry: attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } -!0 = metadata !{metadata !"omnipotent char", metadata !1} -!1 = metadata !{metadata !"Simple C/C++ TBAA"} -!2 = metadata !{metadata !"float", metadata !0} +!0 = !{!"omnipotent char", !1} +!1 = !{!"Simple C/C++ TBAA"} +!2 = !{!"float", !0} -; CHECK: [[TAG_INT]] = metadata !{metadata [[TYPE_INT:!.*]], metadata [[TYPE_INT]], i64 0} -; CHECK: [[TYPE_INT]] = metadata !{metadata !"int", metadata [[TYPE_CHAR:!.*]]} -; CHECK: [[TYPE_CHAR]] = metadata !{metadata !"omnipotent char", metadata !{{.*}} -; CHECK: [[TAG_FLOAT]] = metadata !{metadata [[TYPE_FLOAT:!.*]], metadata [[TYPE_FLOAT]], i64 0} -; CHECK: [[TYPE_FLOAT]] = metadata !{metadata !"float", metadata [[TYPE_CHAR]]} +; CHECK: [[TAG_INT]] = !{[[TYPE_INT:!.*]], [[TYPE_INT]], i64 0} +; CHECK: [[TYPE_INT]] = !{!"int", [[TYPE_CHAR:!.*]]} +; CHECK: [[TYPE_CHAR]] = !{!"omnipotent char", !{{.*}} +; CHECK: [[TAG_FLOAT]] = !{[[TYPE_FLOAT:!.*]], [[TYPE_FLOAT]], i64 0} +; CHECK: [[TYPE_FLOAT]] = !{!"float", [[TYPE_CHAR]]} diff --git a/test/Bitcode/weak-macho-3.5.ll b/test/Bitcode/weak-macho-3.5.ll new file mode 100644 index 0000000..0c09fe4 --- /dev/null +++ b/test/Bitcode/weak-macho-3.5.ll @@ -0,0 +1,11 @@ +; RUN: llvm-dis < %s.bc| FileCheck %s + +; weak-macho-3.5.ll.bc was generated by passing this file to llvm-as-3.5 +; The test checks that LLVM does not place weak GlobalVariables into Comdats for +; macho object files, they don't support it. + +target triple = "x86_64-apple-macosx10.9.0" +; CHECK: target triple = "x86_64-apple-macosx10.9.0" + +@x = weak global i32 0 +; CHECK: @x = weak global i32 0{{$}} diff --git a/test/Bitcode/weak-macho-3.5.ll.bc b/test/Bitcode/weak-macho-3.5.ll.bc Binary files differnew file mode 100644 index 0000000..ee66072 --- /dev/null +++ b/test/Bitcode/weak-macho-3.5.ll.bc |