diff options
Diffstat (limited to 'test/Bitcode')
-rw-r--r-- | test/Bitcode/2012-05-07-SwitchInstRangesSupport.ll | 33 | ||||
-rw-r--r-- | test/Bitcode/attributes-3.3.ll | 236 | ||||
-rw-r--r-- | test/Bitcode/attributes-3.3.ll.bc | bin | 0 -> 1592 bytes | |||
-rw-r--r-- | test/Bitcode/attributes.ll | 39 | ||||
-rw-r--r-- | test/Bitcode/case-ranges-3.3.ll | 67 | ||||
-rw-r--r-- | test/Bitcode/case-ranges-3.3.ll.bc | bin | 0 -> 560 bytes | |||
-rw-r--r-- | test/Bitcode/drop-debug-info.ll | 26 | ||||
-rw-r--r-- | test/Bitcode/extractelement.ll | 2 | ||||
-rw-r--r-- | test/Bitcode/invalid.ll | 7 | ||||
-rw-r--r-- | test/Bitcode/invalid.ll.bc | bin | 0 -> 332 bytes | |||
-rw-r--r-- | test/Bitcode/lit.local.cfg | 1 | ||||
-rw-r--r-- | test/Bitcode/metadata-2.ll | 2 | ||||
-rw-r--r-- | test/Bitcode/metadata.ll | 3 | ||||
-rw-r--r-- | test/Bitcode/null-type.ll | 5 | ||||
-rw-r--r-- | test/Bitcode/select.ll | 9 | ||||
-rw-r--r-- | test/Bitcode/shuffle.ll | 2 | ||||
-rw-r--r-- | test/Bitcode/upgrade-tbaa.ll | 23 |
17 files changed, 413 insertions, 42 deletions
diff --git a/test/Bitcode/2012-05-07-SwitchInstRangesSupport.ll b/test/Bitcode/2012-05-07-SwitchInstRangesSupport.ll deleted file mode 100644 index 583b9a853bde3..0000000000000 --- a/test/Bitcode/2012-05-07-SwitchInstRangesSupport.ll +++ /dev/null @@ -1,33 +0,0 @@ -; RUN: rm -f %t.bc -; RUN: rm -f %t.ll -; RUN: rm -f %t2.bc -; RUN: rm -f %t2.ll -; RUN: llvm-as %s -o %t.bc -; RUN: llvm-dis %t.bc -o - | tail -n +2 > %t.ll -; RUN: llvm-as %t.ll -o %t2.bc -; RUN: llvm-dis %t2.bc -o - | tail -n +2 > %t2.ll -; RUN: llvm-diff %t.ll %t2.ll - -define void @test() { - %mem = alloca i32 - store i32 2, i32* %mem - %c = load i32* %mem - switch i32 %c, label %exit [ - i32 1, label %exit - i32 2, label %exit - ] -exit: - ret void -} -define void @test_wide() { - %mem = alloca i256 - store i256 2, i256* %mem - %c = load i256* %mem - switch i256 %c, label %exit [ - i256 123456789012345678901234567890, label %exit - i256 2, label %exit - ] -exit: - ret void -} - diff --git a/test/Bitcode/attributes-3.3.ll b/test/Bitcode/attributes-3.3.ll new file mode 100644 index 0000000000000..cd70ba1a749aa --- /dev/null +++ b/test/Bitcode/attributes-3.3.ll @@ -0,0 +1,236 @@ +; RUN: llvm-dis < %s.bc| FileCheck %s + +; attributes-3.3.ll.bc was generated by passing this file to llvm-as-3.3. +; The test checks that LLVM does not silently misread attributes of +; older bitcode files. + +define void @f1(i8 zeroext) +; CHECK: define void @f1(i8 zeroext) +{ + ret void; +} + +define void @f2(i8 signext) +; CHECK: define void @f2(i8 signext) +{ + ret void; +} + +define void @f3() noreturn +; CHECK: define void @f3() #0 +{ + ret void; +} + +define void @f4(i8 inreg) +; CHECK: define void @f4(i8 inreg) +{ + ret void; +} + +define void @f5(i8* sret) +; CHECK: define void @f5(i8* sret) +{ + ret void; +} + +define void @f6() nounwind +; CHECK: define void @f6() #1 +{ + ret void; +} + +define void @f7(i8* noalias) +; CHECK: define void @f7(i8* noalias) +{ + ret void; +} + +define void @f8(i8* byval) +; CHECK: define void @f8(i8* byval) +{ + ret void; +} + +define void @f9(i8* nest) +; CHECK: define void @f9(i8* nest) +{ + ret void; +} + +define void @f10() readnone +; CHECK: define void @f10() #2 +{ + ret void; +} + +define void @f11() readonly +; CHECK: define void @f11() #3 +{ + ret void; +} + +define void @f12() noinline +; CHECK: define void @f12() #4 +{ + ret void; +} + +define void @f13() alwaysinline +; CHECK: define void @f13() #5 +{ + ret void; +} + +define void @f14() optsize +; CHECK: define void @f14() #6 +{ + ret void; +} + +define void @f15() ssp +; CHECK: define void @f15() #7 +{ + ret void; +} + +define void @f16() sspreq +; CHECK: define void @f16() #8 +{ + ret void; +} + +define void @f17(i8 align 4) +; CHECK: define void @f17(i8 align 4) +{ + ret void; +} + +define void @f18(i8* nocapture) +; CHECK: define void @f18(i8* nocapture) +{ + ret void; +} + +define void @f19() noredzone +; CHECK: define void @f19() #9 +{ + ret void; +} + +define void @f20() noimplicitfloat +; CHECK: define void @f20() #10 +{ + ret void; +} + +define void @f21() naked +; CHECK: define void @f21() #11 +{ + ret void; +} + +define void @f22() inlinehint +; CHECK: define void @f22() #12 +{ + ret void; +} + +define void @f23() alignstack(4) +; CHECK: define void @f23() #13 +{ + ret void; +} + +define void @f24() returns_twice +; CHECK: define void @f24() #14 +{ + ret void; +} + +define void @f25() uwtable +; CHECK: define void @f25() #15 +{ + ret void; +} + +define void @f26() nonlazybind +; CHECK: define void @f26() #16 +{ + ret void; +} + +define void @f27() sanitize_address +; CHECK: define void @f27() #17 +{ + ret void; +} +define void @f28() sanitize_thread +; CHECK: define void @f28() #18 +{ + ret void; +} +define void @f29() sanitize_memory +; CHECK: define void @f29() #19 +{ + ret void; +} + +define void @f30() "cpu"="cortex-a8" +; CHECK: define void @f30() #20 +{ + ret void; +} + +define i8 @f31(i8 returned %A) +; CHECK: define i8 @f31(i8 returned %A) +{ + ret i8 %A; +} + +define void @f32() sspstrong +; CHECK: define void @f32() #21 +{ + ret void; +} + +define void @f33() minsize +; CHECK: define void @f33() #22 +{ + ret void; +} + +declare void @nobuiltin() + +define void @f34() +; CHECK: define void @f34() +{ + call void @nobuiltin() nobuiltin +; CHECK: call void @nobuiltin() #23 + ret void; +} + +; CHECK: attributes #0 = { noreturn } +; CHECK: attributes #1 = { nounwind } +; CHECK: attributes #2 = { readnone } +; CHECK: attributes #3 = { readonly } +; CHECK: attributes #4 = { noinline } +; CHECK: attributes #5 = { alwaysinline } +; CHECK: attributes #6 = { optsize } +; CHECK: attributes #7 = { ssp } +; CHECK: attributes #8 = { sspreq } +; CHECK: attributes #9 = { noredzone } +; CHECK: attributes #10 = { noimplicitfloat } +; CHECK: attributes #11 = { naked } +; CHECK: attributes #12 = { inlinehint } +; CHECK: attributes #13 = { alignstack=4 } +; CHECK: attributes #14 = { returns_twice } +; CHECK: attributes #15 = { uwtable } +; CHECK: attributes #16 = { nonlazybind } +; CHECK: attributes #17 = { sanitize_address } +; CHECK: attributes #18 = { sanitize_thread } +; CHECK: attributes #19 = { sanitize_memory } +; CHECK: attributes #20 = { "cpu"="cortex-a8" } +; CHECK: attributes #21 = { sspstrong } +; CHECK: attributes #22 = { minsize } +; CHECK: attributes #23 = { nobuiltin } diff --git a/test/Bitcode/attributes-3.3.ll.bc b/test/Bitcode/attributes-3.3.ll.bc Binary files differnew file mode 100644 index 0000000000000..5dd71864ea4fb --- /dev/null +++ b/test/Bitcode/attributes-3.3.ll.bc diff --git a/test/Bitcode/attributes.ll b/test/Bitcode/attributes.ll index 6c46e94012a5e..1789878e9f50c 100644 --- a/test/Bitcode/attributes.ll +++ b/test/Bitcode/attributes.ll @@ -179,6 +179,40 @@ define void @f30() "cpu"="cortex-a8" ret void; } +define i8 @f31(i8 returned %A) +; CHECK: define i8 @f31(i8 returned %A) +{ + ret i8 %A; +} + +define void @f32() sspstrong +; CHECK: define void @f32() #21 +{ + ret void; +} + +define void @f33() minsize +; CHECK: define void @f33() #22 +{ + ret void; +} + +declare void @nobuiltin() + +define void @f34() +; CHECK: define void @f34() +{ + call void @nobuiltin() nobuiltin +; CHECK: call void @nobuiltin() #24 + ret void; +} + +define void @f35() optnone noinline +; CHECK: define void @f35() #23 +{ + ret void; +} + ; CHECK: attributes #0 = { noreturn } ; CHECK: attributes #1 = { nounwind } ; CHECK: attributes #2 = { readnone } @@ -200,3 +234,8 @@ define void @f30() "cpu"="cortex-a8" ; CHECK: attributes #18 = { sanitize_thread } ; CHECK: attributes #19 = { sanitize_memory } ; CHECK: attributes #20 = { "cpu"="cortex-a8" } +; CHECK: attributes #21 = { sspstrong } +; CHECK: attributes #22 = { minsize } +; CHECK: attributes #23 = { noinline optnone } +; CHECK: attributes #24 = { nobuiltin } + diff --git a/test/Bitcode/case-ranges-3.3.ll b/test/Bitcode/case-ranges-3.3.ll new file mode 100644 index 0000000000000..6e1d0a69a5910 --- /dev/null +++ b/test/Bitcode/case-ranges-3.3.ll @@ -0,0 +1,67 @@ +; RUN: llvm-dis < %s.bc| FileCheck %s + +; case-ranges.ll.bc was generated by passing this file to llvm-as from the 3.3 +; release of LLVM. This tests that the bitcode for switches from that release +; can still be read. + +define i32 @foo(i32 %x) nounwind ssp uwtable { +; CHECK: define i32 @foo + %1 = alloca i32, align 4 + %2 = alloca i32, align 4 + store i32 %x, i32* %2, align 4 + %3 = load i32* %2, align 4 + switch i32 %3, label %9 [ +; CHECK: switch i32 %3, label %9 + i32 -3, label %4 +; CHECK-NEXT: i32 -3, label %4 + i32 -2, label %4 +; CHECK-NEXT: i32 -2, label %4 + i32 -1, label %4 +; CHECK-NEXT: i32 -1, label %4 + i32 0, label %4 +; CHECK-NEXT: i32 0, label %4 + i32 1, label %4 +; CHECK-NEXT: i32 1, label %4 + i32 2, label %4 +; CHECK-NEXT: i32 2, label %4 + i32 4, label %5 +; CHECK-NEXT: i32 4, label %5 + i32 5, label %6 +; CHECK-NEXT: i32 5, label %6 + i32 6, label %7 +; CHECK-NEXT: i32 6, label %7 + i32 7, label %8 +; CHECK-NEXT: i32 7, label %8 + ] + +; <label>:4 + store i32 -1, i32* %1 + br label %11 + +; <label>:5 + store i32 2, i32* %1 + br label %11 + +; <label>:6 + store i32 1, i32* %1 + br label %11 + +; <label>:7 + store i32 4, i32* %1 + br label %11 + +; <label>:8 + store i32 3, i32* %1 + br label %11 + +; <label>:9 + br label %10 + +; <label>:10 + store i32 0, i32* %1 + br label %11 + +; <label>:11 + %12 = load i32* %1 + ret i32 %12 +} diff --git a/test/Bitcode/case-ranges-3.3.ll.bc b/test/Bitcode/case-ranges-3.3.ll.bc Binary files differnew file mode 100644 index 0000000000000..998f7475a4d49 --- /dev/null +++ b/test/Bitcode/case-ranges-3.3.ll.bc diff --git a/test/Bitcode/drop-debug-info.ll b/test/Bitcode/drop-debug-info.ll new file mode 100644 index 0000000000000..da4ae0c541eb0 --- /dev/null +++ b/test/Bitcode/drop-debug-info.ll @@ -0,0 +1,26 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +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 !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5 (trunk 195495) (llvm/trunk 195495:195504M)", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !""} ; [ 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 !{i32 786478, metadata !1, metadata !5, metadata !"main", metadata !"main", metadata !"", i32 3, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @main, null, null, metadata !2, i32 3} ; [ DW_TAG_subprogram ] [line 3] [def] [main] +!5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/Users/manmanren/llvm_gmail/release/../llvm/tools/clang/test/CodeGen/debug-info-version.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} +!12 = metadata !{i32 4, i32 0, metadata !4, null} + +; CHECK-NOT: !dbg +; CHECK-NOT: !llvm.dbg.cu diff --git a/test/Bitcode/extractelement.ll b/test/Bitcode/extractelement.ll index d88f811e8e9cc..8999c656fce99 100644 --- a/test/Bitcode/extractelement.ll +++ b/test/Bitcode/extractelement.ll @@ -1,4 +1,4 @@ -; RUN: opt < %s -constprop | llvm-dis +; RUN: opt < %s -constprop | llvm-dis -disable-output ; PR3465 define double @test() { diff --git a/test/Bitcode/invalid.ll b/test/Bitcode/invalid.ll new file mode 100644 index 0000000000000..1d4a82bf2b613 --- /dev/null +++ b/test/Bitcode/invalid.ll @@ -0,0 +1,7 @@ +; RUN: not llvm-dis < %s.bc 2>&1 | FileCheck %s + +; CHECK: llvm-dis{{(\.EXE|\.exe)?}}: Invalid value + +; invalid.ll.bc has an invalid attribute number. +; The test checks that LLVM reports the error and doesn't access freed memory +; in doing so. diff --git a/test/Bitcode/invalid.ll.bc b/test/Bitcode/invalid.ll.bc Binary files differnew file mode 100644 index 0000000000000..a85c3644b3abb --- /dev/null +++ b/test/Bitcode/invalid.ll.bc diff --git a/test/Bitcode/lit.local.cfg b/test/Bitcode/lit.local.cfg deleted file mode 100644 index 19eebc0ac7ac3..0000000000000 --- a/test/Bitcode/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.ll', '.c', '.cpp'] diff --git a/test/Bitcode/metadata-2.ll b/test/Bitcode/metadata-2.ll index dbf46b06e1980..4055f921c330d 100644 --- a/test/Bitcode/metadata-2.ll +++ b/test/Bitcode/metadata-2.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llvm-dis -o /dev/null +; RUN: llvm-as < %s | llvm-dis -disable-output %0 = type { %object.ModuleInfo.__vtbl*, i8*, %"byte[]", %1, %"ClassInfo[]", i32, void ()*, void ()*, void ()*, i8*, void ()* } ; type %0 %1 = type { i64, %object.ModuleInfo* } ; type %1 %2 = type { i32, void ()* } ; type %2 diff --git a/test/Bitcode/metadata.ll b/test/Bitcode/metadata.ll index 19db3eac21602..fc8a622252bfb 100644 --- a/test/Bitcode/metadata.ll +++ b/test/Bitcode/metadata.ll @@ -1,6 +1,5 @@ -; RUN: llvm-as < %s | llvm-dis -o /dev/null +; RUN: llvm-as < %s | llvm-dis -disable-output !llvm.foo = !{!0} !0 = metadata !{i32 42} @my.str = internal constant [4 x i8] c"foo\00" - diff --git a/test/Bitcode/null-type.ll b/test/Bitcode/null-type.ll index 8502b0d55a338..a620fab8cc3a6 100644 --- a/test/Bitcode/null-type.ll +++ b/test/Bitcode/null-type.ll @@ -1,5 +1,4 @@ -; RUN: not llvm-dis < %s.bc > /dev/null 2> %t -; RUN: FileCheck %s < %t +; RUN: not llvm-dis < %s.bc 2>&1 | FileCheck %s ; PR8494 -; CHECK: Invalid MODULE_CODE_FUNCTION record +; CHECK: Invalid record diff --git a/test/Bitcode/select.ll b/test/Bitcode/select.ll new file mode 100644 index 0000000000000..71e669a90cdce --- /dev/null +++ b/test/Bitcode/select.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +define <2 x i32> @main() { + ret <2 x i32> select (<2 x i1> <i1 false, i1 undef>, <2 x i32> zeroinitializer, <2 x i32> <i32 0, i32 undef>) +} + +; CHECK: define <2 x i32> @main() { +; CHECK: ret <2 x i32> select (<2 x i1> <i1 false, i1 undef>, <2 x i32> zeroinitializer, <2 x i32> <i32 0, i32 undef>) +; CHECK: } diff --git a/test/Bitcode/shuffle.ll b/test/Bitcode/shuffle.ll index c3c01c6692c40..1495d8eebf9c6 100644 --- a/test/Bitcode/shuffle.ll +++ b/test/Bitcode/shuffle.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llvm-dis +; RUN: llvm-as < %s | llvm-dis -disable-output ; <rdar://problem/8622574> ; tests the bitcodereader can handle the case where the reader will initially diff --git a/test/Bitcode/upgrade-tbaa.ll b/test/Bitcode/upgrade-tbaa.ll new file mode 100644 index 0000000000000..e7389095b8c1e --- /dev/null +++ b/test/Bitcode/upgrade-tbaa.ll @@ -0,0 +1,23 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +; 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} + ; 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:!.*]] + ret void +} + +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} + +; 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]]} |