mirror of
https://github.com/obfuscator-llvm/obfuscator
synced 2026-06-08 16:28:34 +00:00
Initial commit of LLVM 3.4
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 }
|
||||
Binary file not shown.
@@ -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 }
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Binary file not shown.
@@ -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
|
||||
@@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -constprop | llvm-dis
|
||||
; RUN: opt < %s -constprop | llvm-dis -disable-output
|
||||
; PR3465
|
||||
|
||||
define double @test() {
|
||||
|
||||
@@ -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.
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
config.suffixes = ['.ll', '.c', '.cpp']
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: }
|
||||
@@ -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
|
||||
|
||||
@@ -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]]}
|
||||
Reference in New Issue
Block a user