Created
October 24, 2016 19:11
-
-
Save stanislaw/b83e76f6ac1bdb6a562eda224792c111 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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