Skip to content

Instantly share code, notes, and snippets.

@stanislaw
Created October 24, 2016 19:11
Show Gist options
  • Save stanislaw/b83e76f6ac1bdb6a562eda224792c111 to your computer and use it in GitHub Desktop.
Save stanislaw/b83e76f6ac1bdb6a562eda224792c111 to your computer and use it in GitHub Desktop.
; ModuleID = 'jitrust.0.rs'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-darwin"
%str_slice = type { i8*, i64 }
%"9.__test::test::TestDescAndFn" = type { %"9.__test::test::TestDesc", %"9.__test::test::TestFn" }
%"9.__test::test::TestDesc" = type { %"9.__test::test::TestName", i8, %"9.__test::test::ShouldPanic" }
%"9.__test::test::TestName" = type { i64, [0 x i64], [3 x i64] }
%"9.__test::test::ShouldPanic" = type { i64, [0 x i64], [2 x i64] }
%"9.__test::test::TestFn" = type { i64, [0 x i64], [2 x i64] }
%"2.std::any::TypeId" = type { i64 }
@str3538 = internal constant [31 x i8] c"arithmetic operation overflowed"
@str3539 = internal constant [10 x i8] c"jitrust.rs"
@panic_loc3540 = internal unnamed_addr constant { %str_slice, %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @str3538, i32 0, i32 0), i64 31 }, %str_slice { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str3539, i32 0, i32 0), i64 10 }, i32 3 }, align 8
@const3544 = internal unnamed_addr constant {} zeroinitializer, align 1
@const3545 = internal unnamed_addr constant i32 3, align 4
@const3546 = internal unnamed_addr constant i32 4, align 4
@const3547 = internal unnamed_addr constant i32 7, align 4
@const4251 = internal unnamed_addr constant i64 0, align 8
@const4255 = internal unnamed_addr constant {}* inttoptr (i64 1 to {}*), align 8
@const4256 = internal unnamed_addr constant i8* inttoptr (i64 1 to i8*), align 8
@const4268 = internal unnamed_addr constant i8 0, align 1
@const4279 = internal unnamed_addr constant i8* null, align 8
@vtable4291 = internal unnamed_addr constant { void (i8*)*, i64, i64, i64 (%str_slice*)* } { void (i8*)* @_ZN2i89drop.428317hd3dda8b7bdb49cbcE, i64 16, i64 8, i64 (%str_slice*)* @"_ZN35_$LT$T$u20$as$u20$std..any..Any$GT$11get_type_id17hc425c0542c131365E" }, align 8
@str4292 = internal constant [32 x i8] c"assertion failed: sum(3, 4) == 7"
@const4293 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([32 x i8], [32 x i8]* @str4292, i32 0, i32 0), i64 32 }, align 8
@_ZN7jitrust12foo_test_sum10_FILE_LINE17hd5a5a99a939df317E = internal constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @str3539, i32 0, i32 0), i64 10 }, i32 8, [4 x i8] undef }, align 8
@str4295 = internal constant [12 x i8] c"foo_test_sum"
@ref4296 = internal unnamed_addr constant { { { { i64, %str_slice, [8 x i8] }, i1, { i64, [16 x i8] } }, { i64, void ()*, [8 x i8] } } } { { { { i64, %str_slice, [8 x i8] }, i1, { i64, [16 x i8] } }, { i64, void ()*, [8 x i8] } } { { { i64, %str_slice, [8 x i8] }, i1, { i64, [16 x i8] } } { { i64, %str_slice, [8 x i8] } { i64 0, %str_slice { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @str4295, i32 0, i32 0), i64 12 }, [8 x i8] undef }, i1 false, { i64, [16 x i8] } { i64 0, [16 x i8] undef } }, { i64, void ()*, [8 x i8] } { i64 0, void ()* @_ZN7jitrust12foo_test_sum17h75d102fa299fca60E, [8 x i8] undef } } }, align 8
@const4297 = internal unnamed_addr constant { %"9.__test::test::TestDescAndFn"*, i64 } { %"9.__test::test::TestDescAndFn"* bitcast ({ { { { i64, %str_slice, [8 x i8] }, i1, { i64, [16 x i8] } }, { i64, void ()*, [8 x i8] } } }* @ref4296 to %"9.__test::test::TestDescAndFn"*), i64 1 }, align 8
; Function Attrs: uwtable
define internal i32 @_ZN7jitrust3sum17haa248b351ef7fc50E(i32, i32) unnamed_addr #0 !dbg !23 {
entry-block:
%a = alloca i32
%b = alloca i32
store i32 %0, i32* %a
call void @llvm.dbg.declare(metadata i32* %a, metadata !86, metadata !87), !dbg !88
store i32 %1, i32* %b
call void @llvm.dbg.declare(metadata i32* %b, metadata !89, metadata !87), !dbg !88
%2 = load i32, i32* %a, !dbg !90
%3 = load i32, i32* %b, !dbg !90
%4 = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %2, i32 %3), !dbg !90
%5 = extractvalue { i32, i1 } %4, 0, !dbg !90
%6 = extractvalue { i32, i1 } %4, 1, !dbg !90
%7 = icmp eq i1 %6, true, !dbg !90
%8 = call i1 @llvm.expect.i1(i1 %7, i1 false), !dbg !90
br i1 %7, label %cond, label %next
next: ; preds = %entry-block
br label %return, !dbg !90
return: ; preds = %next
ret i32 %5, !dbg !92
cond: ; preds = %entry-block
call void @_ZN4core9panicking5panic17hdbcf9a6d5c170498E({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @panic_loc3540), !dbg !90
unreachable, !dbg !90
}
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
; Function Attrs: nounwind readnone
declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) #1
; Function Attrs: nounwind readnone
declare i1 @llvm.expect.i1(i1, i1) #1
; Function Attrs: cold noinline noreturn
declare void @_ZN4core9panicking5panic17hdbcf9a6d5c170498E({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40)) unnamed_addr #2
; Function Attrs: uwtable
define internal void @_ZN7jitrust12foo_test_sum17h75d102fa299fca60E() unnamed_addr #0 !dbg !29 {
entry-block:
%0 = alloca i32
%const = alloca %str_slice
%1 = alloca { %str_slice, i32 }*
%2 = call i32 @_ZN7jitrust3sum17haa248b351ef7fc50E(i32 3, i32 4), !dbg !93
store i32 %2, i32* %0, !dbg !93
%3 = load i32, i32* %0, !dbg !93
%4 = icmp eq i32 %3, 7, !dbg !93
%5 = xor i1 %4, true, !dbg !95
br i1 %5, label %then-block-31-, label %next-block, !dbg !95
then-block-31-: ; preds = %entry-block
%6 = bitcast %str_slice* %const to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* bitcast (%str_slice* @const4293 to i8*), i64 16, i32 8, i1 false)
%7 = getelementptr inbounds %str_slice, %str_slice* %const, i32 0, i32 0
%8 = load i8*, i8** %7
%9 = getelementptr inbounds %str_slice, %str_slice* %const, i32 0, i32 1
%10 = load i64, i64* %9
store { %str_slice, i32 }* bitcast ({ %str_slice, i32, [4 x i8] }* @_ZN7jitrust12foo_test_sum10_FILE_LINE17hd5a5a99a939df317E to { %str_slice, i32 }*), { %str_slice, i32 }** %1, !dbg !96
%11 = load { %str_slice, i32 }*, { %str_slice, i32 }** %1, !dbg !96, !nonnull !2
call void @_ZN3std10sys_common6unwind12begin_unwind17hd78480d5ec5c51b2E(i8* noalias nonnull readonly %8, i64 %10, { %str_slice, i32 }* noalias readonly dereferenceable(24) %11), !dbg !100
unreachable, !dbg !100
next-block: ; preds = %entry-block
ret void, !dbg !101
}
; Function Attrs: cold noinline noreturn uwtable
define internal void @_ZN3std10sys_common6unwind12begin_unwind17hd78480d5ec5c51b2E(i8* noalias nonnull readonly, i64, { %str_slice, i32 }* noalias readonly dereferenceable(24)) unnamed_addr #3 !dbg !32 {
entry-block:
%x.i = alloca %str_slice
call void @llvm.dbg.declare(metadata %str_slice* %x.i, metadata !102, metadata !87), !dbg !103
%msg = alloca %str_slice
%file_line = alloca { %str_slice, i32 }*
%3 = alloca %str_slice*
%__coerce_target = alloca { i8*, void (i8*)** }
%4 = getelementptr inbounds %str_slice, %str_slice* %msg, i32 0, i32 0
store i8* %0, i8** %4
%5 = getelementptr inbounds %str_slice, %str_slice* %msg, i32 0, i32 1
store i64 %1, i64* %5
call void @llvm.dbg.declare(metadata %str_slice* %msg, metadata !106, metadata !87), !dbg !107
store { %str_slice, i32 }* %2, { %str_slice, i32 }** %file_line
call void @llvm.dbg.declare(metadata { %str_slice, i32 }** %file_line, metadata !108, metadata !87), !dbg !107
%6 = getelementptr inbounds %str_slice, %str_slice* %msg, i32 0, i32 0, !dbg !109
%7 = load i8*, i8** %6, !dbg !109
%8 = getelementptr inbounds %str_slice, %str_slice* %msg, i32 0, i32 1, !dbg !109
%9 = load i64, i64* %8, !dbg !109
%10 = getelementptr inbounds %str_slice, %str_slice* %x.i, i32 0, i32 0, !dbg !109
store i8* %7, i8** %10, !dbg !109, !noalias !110
%11 = getelementptr inbounds %str_slice, %str_slice* %x.i, i32 0, i32 1, !dbg !109
store i64 %9, i64* %11, !dbg !109, !noalias !110
%12 = call i8* @_ZN5alloc4heap15exchange_malloc17ha0f42465dfabf2c7E(i64 16, i64 8), !dbg !113
%13 = bitcast i8* %12 to %str_slice*, !dbg !113
%14 = bitcast %str_slice* %x.i to i8*, !dbg !113
%15 = bitcast %str_slice* %13 to i8*, !dbg !113
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %14, i64 16, i32 8, i1 false), !dbg !113
store %str_slice* %13, %str_slice** %3, !dbg !109
%16 = load %str_slice*, %str_slice** %3, !dbg !109, !nonnull !2
%17 = bitcast %str_slice* %16 to i8*
%18 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 0
store i8* %17, i8** %18
%19 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i64, i64, i64 (%str_slice*)* }, { void (i8*)*, i64, i64, i64 (%str_slice*)* }* @vtable4291, i32 0, i32 0), void (i8*)*** %19
%20 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 0
%21 = load i8*, i8** %20
%22 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 1
%23 = load void (i8*)**, void (i8*)*** %22
%24 = load { %str_slice, i32 }*, { %str_slice, i32 }** %file_line, !dbg !109, !nonnull !2
call void @_ZN3std10sys_common6unwind18begin_unwind_inner17h39d40f52add53ef7E(i8* noalias nonnull %21, void (i8*)** nonnull %23, { %str_slice, i32 }* noalias readonly dereferenceable(24) %24), !dbg !109
unreachable, !dbg !109
}
; Function Attrs: cold noinline noreturn
declare void @_ZN3std10sys_common6unwind18begin_unwind_inner17h39d40f52add53ef7E(i8* noalias nonnull, void (i8*)** nonnull, { %str_slice, i32 }* noalias readonly dereferenceable(24)) unnamed_addr #2
; Function Attrs: inlinehint uwtable
define internal i8* @_ZN5alloc4heap15exchange_malloc17ha0f42465dfabf2c7E(i64, i64) unnamed_addr #4 !dbg !49 {
entry-block:
%sret_slot = alloca i8*
%size = alloca i64
%align = alloca i64
%ptr = alloca i8*
%2 = alloca i8
store i64 %0, i64* %size
call void @llvm.dbg.declare(metadata i64* %size, metadata !115, metadata !87), !dbg !116
store i64 %1, i64* %align
call void @llvm.dbg.declare(metadata i64* %align, metadata !117, metadata !87), !dbg !116
%3 = load i64, i64* %size, !dbg !118
%4 = icmp eq i64 %3, 0, !dbg !118
br i1 %4, label %then-block-132-, label %else-block, !dbg !118
then-block-132-: ; preds = %entry-block
store i8* inttoptr (i64 1 to i8*), i8** %sret_slot, !dbg !120
br label %join
else-block: ; preds = %entry-block
%5 = load i64, i64* %size, !dbg !122
%6 = load i64, i64* %align, !dbg !122
%7 = call i8* @_ZN5alloc4heap8allocate17h2430c37b15082761E(i64 %5, i64 %6), !dbg !122
store i8* %7, i8** %ptr, !dbg !122
call void @llvm.dbg.declare(metadata i8** %ptr, metadata !124, metadata !87), !dbg !122
%8 = load i8*, i8** %ptr, !dbg !125
%9 = call zeroext i1 @"_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h6dab3ad7e90945b1E"(i8* %8), !dbg !125
%10 = zext i1 %9 to i8, !dbg !125
store i8 %10, i8* %2, !dbg !125
%11 = load i8, i8* %2, !dbg !125, !range !126
%12 = trunc i8 %11 to i1, !dbg !125
br i1 %12, label %then-block-150-, label %next-block, !dbg !125
then-block-150-: ; preds = %else-block
call void @_ZN5alloc3oom3oom17h7d76e900cfacf1cfE(), !dbg !127
unreachable, !dbg !127
next-block: ; preds = %else-block
%13 = load i8*, i8** %ptr, !dbg !129
store i8* %13, i8** %sret_slot, !dbg !129
br label %join
join: ; preds = %next-block, %then-block-132-
%14 = load i8*, i8** %sret_slot
ret i8* %14, !dbg !116
}
; Function Attrs: inlinehint uwtable
define internal i8* @_ZN5alloc4heap8allocate17h2430c37b15082761E(i64, i64) unnamed_addr #4 !dbg !55 {
entry-block:
%size.i = alloca i64
call void @llvm.dbg.declare(metadata i64* %size.i, metadata !130, metadata !87), !dbg !131
%align.i = alloca i64
call void @llvm.dbg.declare(metadata i64* %align.i, metadata !134, metadata !87), !dbg !131
%size = alloca i64
%align = alloca i64
store i64 %0, i64* %size
call void @llvm.dbg.declare(metadata i64* %size, metadata !135, metadata !87), !dbg !136
store i64 %1, i64* %align
call void @llvm.dbg.declare(metadata i64* %align, metadata !137, metadata !87), !dbg !136
%2 = load i64, i64* %size, !dbg !138
%3 = load i64, i64* %align, !dbg !138
store i64 %2, i64* %size.i, !dbg !138
store i64 %3, i64* %align.i, !dbg !138
%4 = load i64, i64* %size, !dbg !139
%5 = load i64, i64* %align, !dbg !139
%6 = call i8* @__rust_allocate(i64 %4, i64 %5), !dbg !139
ret i8* %6, !dbg !136
}
; Function Attrs: nounwind
declare noalias i8* @__rust_allocate(i64, i64) unnamed_addr #5
; Function Attrs: inlinehint uwtable
define internal zeroext i1 @"_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$7is_null17h6dab3ad7e90945b1E"(i8*) unnamed_addr #4 !dbg !59 {
entry-block:
%self = alloca i8*
store i8* %0, i8** %self
call void @llvm.dbg.declare(metadata i8** %self, metadata !140, metadata !87), !dbg !141
%1 = load i8*, i8** %self, !dbg !142
%2 = icmp eq i8* %1, null, !dbg !142
%3 = zext i1 %2 to i8, !dbg !142
%4 = trunc i8 %3 to i1, !dbg !142
ret i1 %4, !dbg !141
}
; Function Attrs: cold noinline noreturn
declare void @_ZN5alloc3oom3oom17h7d76e900cfacf1cfE() unnamed_addr #2
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #6
define internal void @_ZN2i89drop.428317hd3dda8b7bdb49cbcE(i8*) unnamed_addr {
entry-block:
ret void
}
; Function Attrs: uwtable
define internal i64 @"_ZN35_$LT$T$u20$as$u20$std..any..Any$GT$11get_type_id17hc425c0542c131365E"(%str_slice* noalias readonly dereferenceable(16)) unnamed_addr #0 !dbg !66 {
entry-block:
%sret_slot = alloca %"2.std::any::TypeId"
%self = alloca %str_slice*
%__cast = alloca i64
store %str_slice* %0, %str_slice** %self
call void @llvm.dbg.declare(metadata %str_slice** %self, metadata !144, metadata !87), !dbg !145
%1 = call i64 @_ZN4core3any6TypeId2of17h730182a2c595e12bE(), !dbg !146
store i64 %1, i64* %__cast
%2 = bitcast i64* %__cast to i8*
%3 = bitcast %"2.std::any::TypeId"* %sret_slot to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %2, i64 8, i32 8, i1 false)
%4 = bitcast %"2.std::any::TypeId"* %sret_slot to i64*
%5 = load i64, i64* %4, align 8
ret i64 %5, !dbg !145
}
; Function Attrs: uwtable
define internal i64 @_ZN4core3any6TypeId2of17h730182a2c595e12bE() unnamed_addr #0 !dbg !73 {
entry-block:
%sret_slot = alloca %"2.std::any::TypeId"
%0 = getelementptr inbounds %"2.std::any::TypeId", %"2.std::any::TypeId"* %sret_slot, i32 0, i32 0
store i64 8802261786977977801, i64* %0, !dbg !148
%1 = bitcast %"2.std::any::TypeId"* %sret_slot to i64*, !dbg !148
%2 = load i64, i64* %1, align 8, !dbg !148
ret i64 %2, !dbg !151
}
; Function Attrs: uwtable
define internal void @_ZN7jitrust6__test4main17hf6a37042d4230d94E() unnamed_addr #0 !dbg !78 {
entry-block:
%0 = load %"9.__test::test::TestDescAndFn"*, %"9.__test::test::TestDescAndFn"** getelementptr inbounds ({ %"9.__test::test::TestDescAndFn"*, i64 }, { %"9.__test::test::TestDescAndFn"*, i64 }* @const4297, i32 0, i32 0), !dbg !152
%1 = load i64, i64* getelementptr inbounds ({ %"9.__test::test::TestDescAndFn"*, i64 }, { %"9.__test::test::TestDescAndFn"*, i64 }* @const4297, i32 0, i32 1), !dbg !152
call void @_ZN4test16test_main_static17h5fcd65300d35f537E(%"9.__test::test::TestDescAndFn"* noalias nonnull readonly %0, i64 %1), !dbg !152
ret void, !dbg !154
}
declare void @_ZN4test16test_main_static17h5fcd65300d35f537E(%"9.__test::test::TestDescAndFn"* noalias nonnull readonly, i64) unnamed_addr #7
define i64 @main(i64, i8**) unnamed_addr {
top:
%2 = call i64 @_ZN3std2rt10lang_start17h5b0863080165c75eE(i8* bitcast (void ()* @_ZN7jitrust6__test4main17hf6a37042d4230d94E to i8*), i64 %0, i8** %1)
ret i64 %2
}
declare i64 @_ZN3std2rt10lang_start17h5b0863080165c75eE(i8*, i64, i8**) unnamed_addr #7
attributes #0 = { uwtable "no-frame-pointer-elim"="true" }
attributes #1 = { nounwind readnone }
attributes #2 = { cold noinline noreturn "no-frame-pointer-elim"="true" }
attributes #3 = { cold noinline noreturn uwtable "no-frame-pointer-elim"="true" }
attributes #4 = { inlinehint uwtable "no-frame-pointer-elim"="true" }
attributes #5 = { nounwind "no-frame-pointer-elim"="true" }
attributes #6 = { argmemonly nounwind }
attributes #7 = { "no-frame-pointer-elim"="true" }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!84, !85}
!0 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !1, producer: "rustc version 1.9.0 (e4e8b6668 2016-05-18)", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !3, subprograms: !22, globals: !80)
!1 = !DIFile(filename: "./jitrust.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!2 = !{}
!3 = !{!4, !11, !16}
!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "&str", size: 128, align: 64, elements: !5, identifier: "{&{str}}")
!5 = !{!6, !9}
!6 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !"{&{str}}", baseType: !7, size: 64, align: 64)
!7 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const u8", baseType: !8, size: 64, align: 64)
!8 = !DIBasicType(name: "u8", size: 8, align: 8, encoding: DW_ATE_unsigned)
!9 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !"{&{str}}", baseType: !10, size: 64, align: 64, offset: 64)
!10 = !DIBasicType(name: "usize", size: 64, align: 64, encoding: DW_ATE_unsigned)
!11 = !DICompositeType(tag: DW_TAG_structure_type, name: "(&str, u32)", size: 192, align: 64, elements: !12, identifier: "{tuple {&{str}}{u32}}")
!12 = !{!13, !14}
!13 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{tuple {&{str}}{u32}}", baseType: !"{&{str}}", size: 128, align: 64)
!14 = !DIDerivedType(tag: DW_TAG_member, name: "__1", scope: !"{tuple {&{str}}{u32}}", baseType: !15, size: 32, align: 32, offset: 128)
!15 = !DIBasicType(name: "u32", size: 32, align: 32, encoding: DW_ATE_unsigned)
!16 = !DICompositeType(tag: DW_TAG_structure_type, name: "TypeId", scope: !17, size: 64, align: 64, elements: !19, identifier: "{struct core/d58f8fb56255b473f683aa2bf6844fa55d32f22dcc9e846585aeb151f0d3582d/58b0}")
!17 = !DINamespace(name: "any", scope: !18)
!18 = !DINamespace(name: "core", scope: null)
!19 = !{!20}
!20 = !DIDerivedType(tag: DW_TAG_member, name: "t", scope: !"{struct core/d58f8fb56255b473f683aa2bf6844fa55d32f22dcc9e846585aeb151f0d3582d/58b0}", baseType: !21, size: 64, align: 64)
!21 = !DIBasicType(name: "u64", size: 64, align: 64, encoding: DW_ATE_unsigned)
!22 = !{!23, !29, !32, !42, !49, !55, !56, !59, !66, !73, !78}
!23 = distinct !DISubprogram(name: "sum", linkageName: "_ZN7jitrust3sumE", scope: !25, file: !24, line: 2, type: !26, isLocal: true, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!24 = !DIFile(filename: "jitrust.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!25 = !DINamespace(name: "jitrust", scope: null)
!26 = !DISubroutineType(types: !27)
!27 = !{!28, !28, !28}
!28 = !DIBasicType(name: "i32", size: 32, align: 32, encoding: DW_ATE_signed)
!29 = distinct !DISubprogram(name: "foo_test_sum", linkageName: "_ZN7jitrust12foo_test_sumE", scope: !25, file: !24, line: 7, type: !30, isLocal: true, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!30 = !DISubroutineType(types: !31)
!31 = !{null}
!32 = distinct !DISubprogram(name: "begin_unwind<&str>", linkageName: "_ZN7jitrust10sys_common6unwind18begin_unwind<&str>E", scope: !34, file: !33, line: 210, type: !36, isLocal: true, isDefinition: true, scopeLine: 210, flags: DIFlagPrototyped, isOptimized: false, templateParams: !40, variables: !2)
!33 = !DIFile(filename: "../src/libstd/sys/common/unwind/mod.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!34 = !DINamespace(name: "unwind", scope: !35)
!35 = !DINamespace(name: "sys_common", scope: !25)
!36 = !DISubroutineType(types: !37)
!37 = !{!38, !4, !39}
!38 = !DIBasicType(name: "!", encoding: DW_ATE_unsigned)
!39 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&(&str, u32)", baseType: !"{tuple {&{str}}{u32}}", size: 64, align: 64)
!40 = !{!41}
!41 = !DITemplateTypeParameter(name: "M", type: !"{&{str}}")
!42 = distinct !DISubprogram(name: "new", linkageName: "_ZN7jitrust5boxed8{{impl}}3newE", scope: !44, file: !43, line: 234, type: !46, isLocal: true, isDefinition: true, scopeLine: 234, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!43 = !DIFile(filename: "../src/liballoc/boxed.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!44 = !DINamespace(name: "{{impl}}", scope: !45)
!45 = !DINamespace(name: "boxed", scope: !25)
!46 = !DISubroutineType(types: !47)
!47 = !{!48, !4}
!48 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "Box<&str>", baseType: !"{&{str}}", size: 64, align: 64)
!49 = distinct !DISubprogram(name: "exchange_malloc", linkageName: "_ZN7jitrust4heap15exchange_mallocE", scope: !51, file: !50, line: 133, type: !52, isLocal: true, isDefinition: true, scopeLine: 133, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!50 = !DIFile(filename: "../src/liballoc/heap.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!51 = !DINamespace(name: "heap", scope: !25)
!52 = !DISubroutineType(types: !53)
!53 = !{!54, !10, !10}
!54 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*mut u8", baseType: !8, size: 64, align: 64)
!55 = distinct !DISubprogram(name: "allocate", linkageName: "_ZN7jitrust4heap8allocateE", scope: !51, file: !50, line: 57, type: !52, isLocal: true, isDefinition: true, scopeLine: 57, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!56 = distinct !DISubprogram(name: "check_size_and_alignment", linkageName: "_ZN7jitrust4heap24check_size_and_alignmentE", scope: !51, file: !50, line: 37, type: !57, isLocal: true, isDefinition: true, scopeLine: 37, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!57 = !DISubroutineType(types: !58)
!58 = !{null, !10, !10}
!59 = distinct !DISubprogram(name: "is_null", linkageName: "_ZN7jitrust3ptr8{{impl}}7is_nullE", scope: !61, file: !60, line: 326, type: !63, isLocal: true, isDefinition: true, scopeLine: 326, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!60 = !DIFile(filename: "../src/libcore/ptr.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!61 = !DINamespace(name: "{{impl}}", scope: !62)
!62 = !DINamespace(name: "ptr", scope: !25)
!63 = !DISubroutineType(types: !64)
!64 = !{!65, !54}
!65 = !DIBasicType(name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean)
!66 = distinct !DISubprogram(name: "get_type_id", linkageName: "_ZN7jitrust3any8{{impl}}11get_type_idE", scope: !68, file: !67, line: 103, type: !70, isLocal: true, isDefinition: true, scopeLine: 103, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!67 = !DIFile(filename: "../src/libcore/any.rs", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!68 = !DINamespace(name: "{{impl}}", scope: !69)
!69 = !DINamespace(name: "any", scope: !25)
!70 = !DISubroutineType(types: !71)
!71 = !{!16, !72}
!72 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&&str", baseType: !"{&{str}}", size: 64, align: 64)
!73 = distinct !DISubprogram(name: "of<&str>", linkageName: "_ZN7jitrust3any8{{impl}}8of<&str>E", scope: !68, file: !67, line: 225, type: !74, isLocal: true, isDefinition: true, scopeLine: 225, flags: DIFlagPrototyped, isOptimized: false, templateParams: !76, variables: !2)
!74 = !DISubroutineType(types: !75)
!75 = !{!16}
!76 = !{!77}
!77 = !DITemplateTypeParameter(name: "T", type: !"{&{str}}")
!78 = distinct !DISubprogram(name: "main", linkageName: "_ZN7jitrust6__test4mainE", scope: !79, file: !24, line: 1, type: !30, isLocal: true, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, templateParams: !2, variables: !2)
!79 = !DINamespace(name: "__test", scope: !25)
!80 = !{!81}
!81 = !DIGlobalVariable(name: "_FILE_LINE", linkageName: "_ZN7jitrust12foo_test_sum10_FILE_LINEE", scope: !82, file: !83, line: 5, type: !"{tuple {&{str}}{u32}}", isLocal: true, isDefinition: true, variable: { %str_slice, i32, [4 x i8] }* @_ZN7jitrust12foo_test_sum10_FILE_LINE17hd5a5a99a939df317E)
!82 = !DINamespace(name: "foo_test_sum", scope: !25)
!83 = !DIFile(filename: "<std macros>", directory: "/Users/stanislaw/Projects/lab-jit-rust")
!84 = !{i32 2, !"Dwarf Version", i32 2}
!85 = !{i32 2, !"Debug Info Version", i32 3}
!86 = !DILocalVariable(name: "a", arg: 1, scope: !23, file: !24, line: 2, type: !28)
!87 = !DIExpression()
!88 = !DILocation(line: 2, scope: !23)
!89 = !DILocalVariable(name: "b", arg: 2, scope: !23, file: !24, line: 2, type: !28)
!90 = !DILocation(line: 3, scope: !91)
!91 = distinct !DILexicalBlock(scope: !23, file: !24, line: 2, column: 34)
!92 = !DILocation(line: 4, scope: !23)
!93 = !DILocation(line: 8, scope: !94)
!94 = distinct !DILexicalBlock(scope: !29, file: !24, line: 7, column: 18)
!95 = !DILocation(line: 2, scope: !94)
!96 = !DILocation(line: 6, scope: !97)
!97 = distinct !DILexicalBlock(scope: !98, file: !83, line: 4, column: 8)
!98 = distinct !DILexicalBlock(scope: !99, file: !83, line: 2)
!99 = distinct !DILexicalBlock(scope: !94, file: !83, line: 2, column: 12)
!100 = !DILocation(line: 3, scope: !98)
!101 = !DILocation(line: 9, scope: !29)
!102 = !DILocalVariable(name: "x", arg: 1, scope: !42, file: !43, line: 234, type: !"{&{str}}")
!103 = !DILocation(line: 234, scope: !42, inlinedAt: !104)
!104 = distinct !DILocation(line: 219, scope: !105)
!105 = distinct !DILexicalBlock(scope: !32, file: !33, line: 210, column: 81)
!106 = !DILocalVariable(name: "msg", arg: 1, scope: !32, file: !33, line: 210, type: !"{&{str}}")
!107 = !DILocation(line: 210, scope: !32)
!108 = !DILocalVariable(name: "file_line", arg: 2, scope: !32, file: !33, line: 210, type: !39)
!109 = !DILocation(line: 219, scope: !105)
!110 = !{!111}
!111 = distinct !{!111, !112, !"_ZN5alloc5boxed30_$LT$impl$u20$Box$LT$T$GT$$GT$3new17hb54ed1ee8f87fcb7E: argument 0"}
!112 = distinct !{!112, !"_ZN5alloc5boxed30_$LT$impl$u20$Box$LT$T$GT$$GT$3new17hb54ed1ee8f87fcb7E"}
!113 = !DILocation(line: 235, scope: !114, inlinedAt: !104)
!114 = distinct !DILexicalBlock(scope: !42, file: !43, line: 234, column: 31)
!115 = !DILocalVariable(name: "size", arg: 1, scope: !49, file: !50, line: 133, type: !10)
!116 = !DILocation(line: 133, scope: !49)
!117 = !DILocalVariable(name: "align", arg: 2, scope: !49, file: !50, line: 133, type: !10)
!118 = !DILocation(line: 134, scope: !119)
!119 = distinct !DILexicalBlock(scope: !49, file: !50, line: 133, column: 64)
!120 = !DILocation(line: 135, scope: !121)
!121 = distinct !DILexicalBlock(scope: !119, file: !50, line: 134, column: 17)
!122 = !DILocation(line: 137, scope: !123)
!123 = distinct !DILexicalBlock(scope: !119, file: !50, line: 136, column: 11)
!124 = !DILocalVariable(name: "ptr", scope: !123, file: !50, line: 137, type: !54)
!125 = !DILocation(line: 138, scope: !123)
!126 = !{i8 0, i8 2}
!127 = !DILocation(line: 139, scope: !128)
!128 = distinct !DILexicalBlock(scope: !123, file: !50, line: 138, column: 25)
!129 = !DILocation(line: 141, scope: !123)
!130 = !DILocalVariable(name: "size", arg: 1, scope: !56, file: !50, line: 37, type: !10)
!131 = !DILocation(line: 37, scope: !56, inlinedAt: !132)
!132 = distinct !DILocation(line: 58, scope: !133)
!133 = distinct !DILexicalBlock(scope: !55, file: !50, line: 57, column: 61)
!134 = !DILocalVariable(name: "align", arg: 2, scope: !56, file: !50, line: 37, type: !10)
!135 = !DILocalVariable(name: "size", arg: 1, scope: !55, file: !50, line: 57, type: !10)
!136 = !DILocation(line: 57, scope: !55)
!137 = !DILocalVariable(name: "align", arg: 2, scope: !55, file: !50, line: 57, type: !10)
!138 = !DILocation(line: 58, scope: !133)
!139 = !DILocation(line: 59, scope: !133)
!140 = !DILocalVariable(name: "self", arg: 1, scope: !59, file: !60, line: 326, type: !54)
!141 = !DILocation(line: 326, scope: !59)
!142 = !DILocation(line: 327, scope: !143)
!143 = distinct !DILexicalBlock(scope: !59, file: !60, line: 326, column: 48)
!144 = !DILocalVariable(name: "self", arg: 1, scope: !66, file: !67, line: 103, type: !72)
!145 = !DILocation(line: 103, scope: !66)
!146 = !DILocation(line: 103, scope: !147)
!147 = distinct !DILexicalBlock(scope: !66, file: !67, line: 103, column: 36)
!148 = !DILocation(line: 227, scope: !149)
!149 = distinct !DILexicalBlock(scope: !150, file: !67, line: 227, column: 15)
!150 = distinct !DILexicalBlock(scope: !73, file: !67, line: 225, column: 57)
!151 = !DILocation(line: 225, scope: !73)
!152 = !DILocation(line: 1, scope: !153)
!153 = distinct !DILexicalBlock(scope: !78, file: !24, line: 1)
!154 = !DILocation(line: 1, scope: !78)
pub fn sum(a: i32, b: i32) -> i32 {
return a + b;
}
#[test]
fn foo_test_sum() {
assert!(sum(3, 4) == 7);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment