Skip to content

Instantly share code, notes, and snippets.

@tomaka
Created February 15, 2016 07:24
Show Gist options
  • Select an option

  • Save tomaka/b614d94b8f8df759ce87 to your computer and use it in GitHub Desktop.

Select an option

Save tomaka/b614d94b8f8df759ce87 to your computer and use it in GitHub Desktop.
; ModuleID = 'test.0.rs'
target datalayout = "e-p:32:32-i64:64-v128:32:128-n32-S128"
target triple = "asmjs-unknown-emscripten"
%str_slice = type { i8*, i32 }
%"2.core::fmt::Formatter" = type { i32, i32, i8, %"2.core::option::Option<usize>", %"2.core::option::Option<usize>", { i8*, void (i8*)** }, %"2.core::slice::Iter<core::fmt::ArgumentV1>", { %"2.core::fmt::ArgumentV1"*, i32 } }
%"2.core::option::Option<usize>" = type { i32, [0 x i32], [1 x i32] }
%"2.core::slice::Iter<core::fmt::ArgumentV1>" = type { %"2.core::fmt::ArgumentV1"*, %"2.core::fmt::ArgumentV1"*, %"2.core::marker::PhantomData<&'static core::fmt::ArgumentV1>" }
%"2.core::fmt::ArgumentV1" = type { %"2.core::fmt::Void"*, i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* }
%"2.core::fmt::Void" = type {}
%"2.core::marker::PhantomData<&'static core::fmt::ArgumentV1>" = type {}
%"1.std::ffi::c_str::CStr" = type { i8 }
%"2.core::fmt::Arguments" = type { { %str_slice*, i32 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>", { %"2.core::fmt::ArgumentV1"*, i32 } }
%"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" = type { { %"2.core::fmt::rt::v1::Argument"*, i32 } }
%"2.core::fmt::rt::v1::Argument" = type { %"2.core::fmt::rt::v1::Position", %"2.core::fmt::rt::v1::FormatSpec" }
%"2.core::fmt::rt::v1::Position" = type { i32, [0 x i32], [1 x i32] }
%"2.core::fmt::rt::v1::FormatSpec" = type { i32, i8, i32, %"2.core::fmt::rt::v1::Count", %"2.core::fmt::rt::v1::Count" }
%"2.core::fmt::rt::v1::Count" = type { i32, [0 x i32], [1 x i32] }
%"2.core::raw::Slice<u8>" = type { i8*, i32 }
%"2.core::result::Result<(), core::fmt::Error>" = type { i8, [0 x i8], [0 x i8] }
%"2.core::fmt::builders::DebugTuple" = type { %"2.core::fmt::Formatter"*, %"2.core::result::Result<(), core::fmt::Error>", i8 }
%"2.core::fmt::Error" = type {}
@const3753 = internal unnamed_addr constant i32 1, align 4
@byte_str3754 = internal unnamed_addr constant [4 x i8] c"foo\00", align 1
@const3755 = internal unnamed_addr constant { i8*, i32 } { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @byte_str3754, i32 0, i32 0), i32 4 }, align 4
@const3761 = internal unnamed_addr constant { { i8*, i8* } } zeroinitializer, align 4
@_ZN5hello15__STATIC_FMTSTR20h6e6939a1ecbfff0cDaaE = internal constant { %str_slice*, i32 } { %str_slice* getelementptr inbounds ([2 x %str_slice], [2 x %str_slice]* @ref3834, i32 0, i32 0), i32 2 }, align 4
@str3789 = internal constant [0 x i8] zeroinitializer
@const3790 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @str3789, i32 0, i32 0), i32 0 }, align 4
@const3791 = internal unnamed_addr constant i32 0, align 4
@const3802 = internal unnamed_addr constant i32 8, align 4
@str3811 = internal constant [31 x i8] c"arithmetic operation overflowed"
@str3813 = internal constant [25 x i8] c"../src/libcore/fmt/mod.rs"
@panic_loc3814 = internal unnamed_addr constant { %str_slice, %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @str3811, i32 0, i32 0), i32 31 }, %str_slice { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str3813, i32 0, i32 0), i32 25 }, i32 1400 }, align 4
@const3817 = internal unnamed_addr constant i32 4, align 4
@const3818 = internal unnamed_addr constant i32 2, align 4
@vtable3820 = internal unnamed_addr constant { void (i8*)*, i32, i32, i8 (i8**, %"2.core::fmt::Formatter"*)* } { void (i8*)* @_ZN2i89drop.379417h60152e166971643eE, i32 4, i32 4, i8 (i8**, %"2.core::fmt::Formatter"*)* @"_ZN3fmt22_$BP$const$u20$T.Debug3fmt21h11733994440652656744E" }, align 8
@panic_loc3821 = internal unnamed_addr constant { %str_slice, %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @str3811, i32 0, i32 0), i32 31 }, %str_slice { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str3813, i32 0, i32 0), i32 25 }, i32 1542 }, align 4
@vtable3823 = internal unnamed_addr constant { void (i8*)*, i32, i32, i8 (i32*, %"2.core::fmt::Formatter"*)* } { void (i8*)* @_ZN2i89drop.379417h60152e166971643eE, i32 4, i32 4, i8 (i32*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num16usize.fmt..Debug3fmt20hba0f09b094161cefI4UE }, align 8
@"_ZN3fmt29_$LP$T10$C$$u20$T11$RP$.Debug3fmt15__STATIC_FMTSTR20h93f0614df7a757bayZXE" = external global { %str_slice*, i32 }
@const3829 = internal unnamed_addr constant {} zeroinitializer, align 1
@const3832 = internal unnamed_addr constant i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)* @"_ZN3fmt29_$LP$T10$C$$u20$T11$RP$.Debug3fmt20h3221737791634511007E", align 4
@str3833 = internal constant [1 x i8] c"\0A"
@ref3834 = internal unnamed_addr constant [2 x %str_slice] [%str_slice { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @str3789, i32 0, i32 0), i32 0 }, %str_slice { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @str3833, i32 0, i32 0), i32 1 }], align 4
@__rustc_debug_gdb_scripts_section__ = linkonce_odr unnamed_addr constant [34 x i8] c"\01gdb_load_rust_pretty_printers.py\00", section ".debug_gdb_scripts", align 1
; Function Attrs: uwtable
define void @_ZN5hello20h406a76711e6db1cbgaaE() unnamed_addr #0 !dbg !197 {
entry-block:
%f = alloca { %"1.std::ffi::c_str::CStr"*, i32 }
%0 = alloca i8*
%1 = alloca %"2.core::fmt::Arguments"
%2 = alloca { %str_slice*, i32 }
%3 = alloca [1 x %"2.core::fmt::ArgumentV1"]
%4 = alloca { { i8*, i32 }* }
%5 = alloca { i8*, i32 }
%match = alloca { { i8*, i32 }* }
%6 = bitcast { { i8*, i32 }* }* %match to i8*
call void @llvm.memset.p0i8.i32(i8* %6, i8 29, i32 4, i32 4, i1 false)
%__llmatch = alloca { i8*, i32 }**
%__arg0 = alloca { i8*, i32 }*
%__coerce_target = alloca { %"2.core::fmt::ArgumentV1"*, i32 }
%7 = load i8*, i8** getelementptr inbounds ({ i8*, i32 }, { i8*, i32 }* @const3755, i32 0, i32 0)
%8 = load i32, i32* getelementptr inbounds ({ i8*, i32 }, { i8*, i32 }* @const3755, i32 0, i32 1)
%9 = call i8* @"_ZN5slice12_$u5b$T$u5d$6as_ptr21h13176187743955677561E"(i8* noalias nonnull readonly %7, i32 %8), !dbg !284
store i8* %9, i8** %0, align 4, !dbg !284
%10 = load i8*, i8** %0, align 4, !dbg !284
%11 = call { %"1.std::ffi::c_str::CStr"*, i32 } @_ZN3ffi5c_str4CStr8from_ptr20hcd4af70afe08fc0cKOeE(i8* %10), !dbg !284
%12 = extractvalue { %"1.std::ffi::c_str::CStr"*, i32 } %11, 0, !dbg !284
%13 = getelementptr inbounds { %"1.std::ffi::c_str::CStr"*, i32 }, { %"1.std::ffi::c_str::CStr"*, i32 }* %f, i32 0, i32 0, !dbg !284
store %"1.std::ffi::c_str::CStr"* %12, %"1.std::ffi::c_str::CStr"** %13, !dbg !284
%14 = extractvalue { %"1.std::ffi::c_str::CStr"*, i32 } %11, 1, !dbg !284
%15 = getelementptr inbounds { %"1.std::ffi::c_str::CStr"*, i32 }, { %"1.std::ffi::c_str::CStr"*, i32 }* %f, i32 0, i32 1, !dbg !284
store i32 %14, i32* %15, !dbg !284
call void @llvm.dbg.declare(metadata { %"1.std::ffi::c_str::CStr"*, i32 }* %f, metadata !287, metadata !289), !dbg !284
%16 = bitcast { %str_slice*, i32 }* %2 to i8*, !dbg !290
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %16, i8* bitcast ({ %str_slice*, i32 }* @_ZN5hello15__STATIC_FMTSTR20h6e6939a1ecbfff0cDaaE to i8*), i32 8, i32 4, i1 false)
%17 = getelementptr inbounds { %str_slice*, i32 }, { %str_slice*, i32 }* %2, i32 0, i32 0
%18 = load %str_slice*, %str_slice** %17
%19 = getelementptr inbounds { %str_slice*, i32 }, { %str_slice*, i32 }* %2, i32 0, i32 1
%20 = load i32, i32* %19
%21 = getelementptr inbounds { { i8*, i32 }* }, { { i8*, i32 }* }* %4, i32 0, i32 0, !dbg !292
%22 = bitcast { i8*, i32 }* %5 to { %"1.std::ffi::c_str::CStr"*, i32 }*, !dbg !293
%23 = getelementptr inbounds { %"1.std::ffi::c_str::CStr"*, i32 }, { %"1.std::ffi::c_str::CStr"*, i32 }* %f, i32 0, i32 0, !dbg !293
%24 = load %"1.std::ffi::c_str::CStr"*, %"1.std::ffi::c_str::CStr"** %23, !dbg !293
%25 = getelementptr inbounds { %"1.std::ffi::c_str::CStr"*, i32 }, { %"1.std::ffi::c_str::CStr"*, i32 }* %f, i32 0, i32 1, !dbg !293
%26 = load i32, i32* %25, !dbg !293
%27 = getelementptr inbounds { %"1.std::ffi::c_str::CStr"*, i32 }, { %"1.std::ffi::c_str::CStr"*, i32 }* %22, i32 0, i32 0, !dbg !293
store %"1.std::ffi::c_str::CStr"* %24, %"1.std::ffi::c_str::CStr"** %27, !dbg !293
%28 = getelementptr inbounds { %"1.std::ffi::c_str::CStr"*, i32 }, { %"1.std::ffi::c_str::CStr"*, i32 }* %22, i32 0, i32 1, !dbg !293
store i32 %26, i32* %28, !dbg !293
store { i8*, i32 }* %5, { i8*, i32 }** %21, align 4, !dbg !293
%29 = bitcast { { i8*, i32 }* }* %4 to i32*, !dbg !293
%30 = load i32, i32* %29, align 4, !dbg !293
%31 = bitcast { { i8*, i32 }* }* %match to i32*
store i32 %30, i32* %31, align 4
%32 = getelementptr inbounds { { i8*, i32 }* }, { { i8*, i32 }* }* %match, i32 0, i32 0
store { i8*, i32 }** %32, { i8*, i32 }*** %__llmatch
br label %case_body
case_body: ; preds = %entry-block
%33 = load { i8*, i32 }**, { i8*, i32 }*** %__llmatch
%34 = load { i8*, i32 }*, { i8*, i32 }** %33, align 4, !nonnull !139
store { i8*, i32 }* %34, { i8*, i32 }** %__arg0, align 4
call void @llvm.dbg.declare(metadata { i8*, i32 }** %__arg0, metadata !294, metadata !289), !dbg !296
%35 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"], [1 x %"2.core::fmt::ArgumentV1"]* %3, i32 0, i32 0, !dbg !297
%36 = getelementptr inbounds %"2.core::fmt::ArgumentV1", %"2.core::fmt::ArgumentV1"* %35, i32 0, !dbg !297
%37 = load { i8*, i32 }*, { i8*, i32 }** %__arg0, align 4, !dbg !298, !nonnull !139
call void @"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h7084378531969172119E"(%"2.core::fmt::ArgumentV1"* noalias nocapture sret dereferenceable(8) %36, { i8*, i32 }* noalias readonly dereferenceable(8) %37, i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)* @"_ZN3fmt29_$LP$T10$C$$u20$T11$RP$.Debug3fmt20h3221737791634511007E"), !dbg !299
br label %join
join: ; preds = %case_body
%38 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %3 to %"2.core::fmt::ArgumentV1"*
%39 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target, i32 0, i32 0
store %"2.core::fmt::ArgumentV1"* %38, %"2.core::fmt::ArgumentV1"** %39
%40 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target, i32 0, i32 1
store i32 1, i32* %40
%41 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target, i32 0, i32 0
%42 = load %"2.core::fmt::ArgumentV1"*, %"2.core::fmt::ArgumentV1"** %41
%43 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target, i32 0, i32 1
%44 = load i32, i32* %43
call void @"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120hac22e56c14d17949qIWE"(%"2.core::fmt::Arguments"* noalias nocapture sret dereferenceable(24) %1, %str_slice* noalias nonnull readonly %18, i32 %20, %"2.core::fmt::ArgumentV1"* noalias nonnull readonly %42, i32 %44), !dbg !300
call void @_ZN2io5stdio6_print20hf6ac04e6c9b27f2apbhE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(24) %1), !dbg !300
ret void, !dbg !301
}
declare { %"1.std::ffi::c_str::CStr"*, i32 } @_ZN3ffi5c_str4CStr8from_ptr20hcd4af70afe08fc0cKOeE(i8*) unnamed_addr #1
; Function Attrs: inlinehint uwtable
define internal i8* @"_ZN5slice12_$u5b$T$u5d$6as_ptr21h13176187743955677561E"(i8* noalias nonnull readonly, i32) unnamed_addr #2 !dbg !202 {
entry-block:
%self = alloca { i8*, i32 }
%2 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 0
store i8* %0, i8** %2
%3 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 1
store i32 %1, i32* %3
call void @llvm.dbg.declare(metadata { i8*, i32 }* %self, metadata !302, metadata !289), !dbg !303
%4 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 0, !dbg !304
%5 = load i8*, i8** %4, !dbg !304
%6 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 1, !dbg !304
%7 = load i32, i32* %6, !dbg !304
%8 = call i8* @"_ZN5slice21_$u5b$T$u5d$.SliceExt6as_ptr20h9868402847043000725E"(i8* noalias nonnull readonly %5, i32 %7), !dbg !304
ret i8* %8, !dbg !303
}
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #3
; Function Attrs: inlinehint uwtable
define internal i8* @"_ZN5slice21_$u5b$T$u5d$.SliceExt6as_ptr20h9868402847043000725E"(i8* noalias nonnull readonly, i32) unnamed_addr #2 !dbg !208 {
entry-block:
%self = alloca { i8*, i32 }
%2 = alloca %"2.core::raw::Slice<u8>"
%3 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 0
store i8* %0, i8** %3
%4 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 1
store i32 %1, i32* %4
call void @llvm.dbg.declare(metadata { i8*, i32 }* %self, metadata !306, metadata !289), !dbg !307
%5 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 0, !dbg !308
%6 = load i8*, i8** %5, !dbg !308
%7 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 1, !dbg !308
%8 = load i32, i32* %7, !dbg !308
call void @_ZN3raw4Repr4repr21h12845235909215387529E(%"2.core::raw::Slice<u8>"* noalias nocapture sret dereferenceable(8) %2, i8* noalias nonnull readonly %6, i32 %8), !dbg !308
%9 = getelementptr inbounds %"2.core::raw::Slice<u8>", %"2.core::raw::Slice<u8>"* %2, i32 0, i32 0, !dbg !308
%10 = load i8*, i8** %9, align 4, !dbg !308
ret i8* %10, !dbg !307
}
; Function Attrs: inlinehint uwtable
define internal void @_ZN3raw4Repr4repr21h12845235909215387529E(%"2.core::raw::Slice<u8>"* noalias nocapture sret dereferenceable(8), i8* noalias nonnull readonly, i32) unnamed_addr #2 !dbg !211 {
entry-block:
%self = alloca { i8*, i32 }
%3 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 0
store i8* %1, i8** %3
%4 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %self, i32 0, i32 1
store i32 %2, i32* %4
call void @llvm.dbg.declare(metadata { i8*, i32 }* %self, metadata !310, metadata !289), !dbg !311
call void @_ZN3mem14transmute_copy20h1607303316415011036E(%"2.core::raw::Slice<u8>"* noalias nocapture sret dereferenceable(8) %0, { i8*, i32 }* noalias readonly dereferenceable(8) %self), !dbg !312
ret void, !dbg !311
}
; Function Attrs: inlinehint uwtable
define internal void @_ZN3mem14transmute_copy20h1607303316415011036E(%"2.core::raw::Slice<u8>"* noalias nocapture sret dereferenceable(8), { i8*, i32 }* noalias readonly dereferenceable(8)) unnamed_addr #2 !dbg !219 {
entry-block:
%src.i = alloca %"2.core::raw::Slice<u8>"*
call void @llvm.dbg.declare(metadata %"2.core::raw::Slice<u8>"** %src.i, metadata !315, metadata !289), !dbg !316
%tmp.i = alloca %"2.core::raw::Slice<u8>"
call void @llvm.dbg.declare(metadata %"2.core::raw::Slice<u8>"* %tmp.i, metadata !319, metadata !289), !dbg !321
%src = alloca { i8*, i32 }*
store { i8*, i32 }* %1, { i8*, i32 }** %src, align 4
call void @llvm.dbg.declare(metadata { i8*, i32 }** %src, metadata !322, metadata !289), !dbg !323
%2 = load { i8*, i32 }*, { i8*, i32 }** %src, align 4, !dbg !324
%3 = bitcast { i8*, i32 }* %2 to %"2.core::raw::Slice<u8>"*, !dbg !324
store %"2.core::raw::Slice<u8>"* %3, %"2.core::raw::Slice<u8>"** %src.i, align 4, !dbg !324, !noalias !325
call void @_ZN3mem13uninitialized21h11253827444408775307E(%"2.core::raw::Slice<u8>"* noalias nocapture sret dereferenceable(8) %tmp.i), !dbg !321, !noalias !325
%4 = load %"2.core::raw::Slice<u8>"*, %"2.core::raw::Slice<u8>"** %src.i, align 4, !dbg !328, !noalias !325
%5 = bitcast %"2.core::raw::Slice<u8>"* %tmp.i to i8*, !dbg !328
%6 = bitcast %"2.core::raw::Slice<u8>"* %4 to i8*, !dbg !328
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %5, i8* %6, i32 8, i32 4, i1 false), !dbg !328, !noalias !325
%7 = bitcast %"2.core::raw::Slice<u8>"* %tmp.i to i8*, !dbg !329
%8 = bitcast %"2.core::raw::Slice<u8>"* %0 to i8*, !dbg !329
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %8, i8* %7, i32 8, i32 4, i1 false), !dbg !324
ret void, !dbg !323
}
; Function Attrs: inlinehint uwtable
define internal void @_ZN3mem13uninitialized21h11253827444408775307E(%"2.core::raw::Slice<u8>"* noalias nocapture sret dereferenceable(8)) unnamed_addr #2 !dbg !236 {
entry-block:
ret void, !dbg !330
}
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i32, i1) #4
declare void @_ZN2io5stdio6_print20hf6ac04e6c9b27f2apbhE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(24)) unnamed_addr #1
; Function Attrs: inlinehint uwtable
define internal void @"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120hac22e56c14d17949qIWE"(%"2.core::fmt::Arguments"* noalias nocapture sret dereferenceable(24), %str_slice* noalias nonnull readonly, i32, %"2.core::fmt::ArgumentV1"* noalias nonnull readonly, i32) unnamed_addr #2 !dbg !239 {
entry-block:
%pieces = alloca { %str_slice*, i32 }
%args = alloca { %"2.core::fmt::ArgumentV1"*, i32 }
%5 = getelementptr inbounds { %str_slice*, i32 }, { %str_slice*, i32 }* %pieces, i32 0, i32 0
store %str_slice* %1, %str_slice** %5
%6 = getelementptr inbounds { %str_slice*, i32 }, { %str_slice*, i32 }* %pieces, i32 0, i32 1
store i32 %2, i32* %6
call void @llvm.dbg.declare(metadata { %str_slice*, i32 }* %pieces, metadata !331, metadata !289), !dbg !332
%7 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %args, i32 0, i32 0
store %"2.core::fmt::ArgumentV1"* %3, %"2.core::fmt::ArgumentV1"** %7
%8 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %args, i32 0, i32 1
store i32 %4, i32* %8
call void @llvm.dbg.declare(metadata { %"2.core::fmt::ArgumentV1"*, i32 }* %args, metadata !333, metadata !289), !dbg !334
%9 = getelementptr inbounds %"2.core::fmt::Arguments", %"2.core::fmt::Arguments"* %0, i32 0, i32 0, !dbg !335
%10 = bitcast { %str_slice*, i32 }* %pieces to i8*, !dbg !337
%11 = bitcast { %str_slice*, i32 }* %9 to i8*, !dbg !337
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %11, i8* %10, i32 8, i32 4, i1 false)
%12 = getelementptr inbounds %"2.core::fmt::Arguments", %"2.core::fmt::Arguments"* %0, i32 0, i32 1
%13 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %12 to { { i8*, i8* } }*, !dbg !338
%14 = bitcast { { i8*, i8* } }* %13 to i8*, !dbg !338
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %14, i8* bitcast ({ { i8*, i8* } }* @const3761 to i8*), i32 8, i32 4, i1 false)
%15 = getelementptr inbounds %"2.core::fmt::Arguments", %"2.core::fmt::Arguments"* %0, i32 0, i32 2
%16 = bitcast { %"2.core::fmt::ArgumentV1"*, i32 }* %args to i8*, !dbg !339
%17 = bitcast { %"2.core::fmt::ArgumentV1"*, i32 }* %15 to i8*, !dbg !339
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %17, i8* %16, i32 8, i32 4, i1 false)
ret void, !dbg !334
}
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) #4
; Function Attrs: uwtable
define internal void @"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h7084378531969172119E"(%"2.core::fmt::ArgumentV1"* noalias nocapture sret dereferenceable(8), { i8*, i32 }* noalias readonly dereferenceable(8), i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)*) unnamed_addr #0 !dbg !245 {
entry-block:
%x = alloca { i8*, i32 }*
%f = alloca i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)*
store { i8*, i32 }* %1, { i8*, i32 }** %x, align 4
call void @llvm.dbg.declare(metadata { i8*, i32 }** %x, metadata !340, metadata !289), !dbg !341
store i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)* %2, i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)** %f, align 4
call void @llvm.dbg.declare(metadata i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)** %f, metadata !342, metadata !289), !dbg !343
%3 = getelementptr inbounds %"2.core::fmt::ArgumentV1", %"2.core::fmt::ArgumentV1"* %0, i32 0, i32 1, !dbg !344
%4 = load i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)*, i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)** %f, align 4, !dbg !347
%5 = bitcast i8 ({ i8*, i32 }*, %"2.core::fmt::Formatter"*)* %4 to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*, !dbg !347
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* %5, i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %3, !dbg !347
%6 = getelementptr inbounds %"2.core::fmt::ArgumentV1", %"2.core::fmt::ArgumentV1"* %0, i32 0, i32 0, !dbg !347
%7 = load { i8*, i32 }*, { i8*, i32 }** %x, align 4, !dbg !348, !nonnull !139
%8 = bitcast { i8*, i32 }* %7 to %"2.core::fmt::Void"*, !dbg !348
store %"2.core::fmt::Void"* %8, %"2.core::fmt::Void"** %6, !dbg !348
ret void, !dbg !343
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt29_$LP$T10$C$$u20$T11$RP$.Debug3fmt20h3221737791634511007E"({ i8*, i32 }* noalias readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(52)) unnamed_addr #0 !dbg !255 {
entry-block:
%sret_slot = alloca %"2.core::result::Result<(), core::fmt::Error>"
%self = alloca { i8*, i32 }*
%f = alloca %"2.core::fmt::Formatter"*
%builder = alloca %"2.core::fmt::builders::DebugTuple"
%T10 = alloca i8**
%T11 = alloca i32*
%n = alloca i32
%__coerce_target = alloca { i8*, void (i8*)** }
%__coerce_target1 = alloca { i8*, void (i8*)** }
%2 = alloca %"2.core::result::Result<(), core::fmt::Error>"
%3 = alloca %"2.core::fmt::Formatter"*
%4 = alloca %"2.core::fmt::Arguments"
%5 = alloca { %str_slice*, i32 }
%match = alloca {}
%6 = bitcast {}* %match to i8*
call void @llvm.memset.p0i8.i32(i8* %6, i8 29, i32 0, i32 1, i1 false)
%addr_of = alloca [0 x %"2.core::fmt::ArgumentV1"]
%7 = bitcast [0 x %"2.core::fmt::ArgumentV1"]* %addr_of to i8*
call void @llvm.memset.p0i8.i32(i8* %7, i8 29, i32 0, i32 4, i1 false)
%__coerce_target4 = alloca { %"2.core::fmt::ArgumentV1"*, i32 }
%match5 = alloca %"2.core::result::Result<(), core::fmt::Error>"
%8 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %match5 to i8*
call void @llvm.memset.p0i8.i32(i8* %8, i8 29, i32 1, i32 1, i1 false)
%__llmatch = alloca {}*
%val = alloca {}
%__llmatch8 = alloca %"2.core::fmt::Error"*
%err = alloca %"2.core::fmt::Error"
store { i8*, i32 }* %0, { i8*, i32 }** %self, align 4
call void @llvm.dbg.declare(metadata { i8*, i32 }** %self, metadata !349, metadata !289), !dbg !350
store %"2.core::fmt::Formatter"* %1, %"2.core::fmt::Formatter"** %f, align 4
call void @llvm.dbg.declare(metadata %"2.core::fmt::Formatter"** %f, metadata !351, metadata !289), !dbg !350
%9 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !352, !nonnull !139
%10 = load i8*, i8** getelementptr inbounds (%str_slice, %str_slice* @const3790, i32 0, i32 0), !dbg !352
%11 = load i32, i32* getelementptr inbounds (%str_slice, %str_slice* @const3790, i32 0, i32 1), !dbg !352
call void @"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h31ec381d7b1c0e74w9WE"(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(8) %builder, %"2.core::fmt::Formatter"* noalias dereferenceable(52) %9, i8* noalias nonnull readonly %10, i32 %11), !dbg !352
call void @llvm.dbg.declare(metadata %"2.core::fmt::builders::DebugTuple"* %builder, metadata !354, metadata !289), !dbg !352
%12 = load { i8*, i32 }*, { i8*, i32 }** %self, align 4, !dbg !355, !nonnull !139
%13 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %12, i32 0, i32 0, !dbg !355
store i8** %13, i8*** %T10
%14 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %12, i32 0, i32 1
store i32* %14, i32** %T11
call void @llvm.dbg.declare(metadata i8*** %T10, metadata !356, metadata !289), !dbg !355
call void @llvm.dbg.declare(metadata i32** %T11, metadata !357, metadata !289), !dbg !355
store i32 0, i32* %n, align 4, !dbg !359
call void @llvm.dbg.declare(metadata i32* %n, metadata !360, metadata !289), !dbg !359
%15 = load i8**, i8*** %T10, align 4, !dbg !362, !nonnull !139
%16 = bitcast i8** %15 to i8*
%17 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 0
store i8* %16, i8** %17
%18 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i32, i32, i8 (i8**, %"2.core::fmt::Formatter"*)* }, { void (i8*)*, i32, i32, i8 (i8**, %"2.core::fmt::Formatter"*)* }* @vtable3820, i32 0, i32 0), void (i8*)*** %18
%19 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 0
%20 = load i8*, i8** %19
%21 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target, i32 0, i32 1
%22 = load void (i8*)**, void (i8*)*** %21
%23 = call dereferenceable(8) %"2.core::fmt::builders::DebugTuple"* @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$5field20h3a13be82062f531b8aWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8) %builder, i8* nonnull %20, void (i8*)** nonnull %22), !dbg !363
%24 = load i32, i32* %n, align 4, !dbg !364
%25 = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %24, i32 1), !dbg !364
%26 = extractvalue { i32, i1 } %25, 0, !dbg !364
%27 = extractvalue { i32, i1 } %25, 1, !dbg !364
%28 = icmp eq i1 %27, true, !dbg !364
%29 = call i1 @llvm.expect.i1(i1 %28, i1 false), !dbg !364
br i1 %28, label %cond, label %next
next: ; preds = %entry-block
store i32 %26, i32* %n, align 4, !dbg !364
%30 = load i32*, i32** %T11, align 4, !dbg !362, !nonnull !139
%31 = bitcast i32* %30 to i8*
%32 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target1, i32 0, i32 0
store i8* %31, i8** %32
%33 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target1, i32 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i32, i32, i8 (i32*, %"2.core::fmt::Formatter"*)* }, { void (i8*)*, i32, i32, i8 (i32*, %"2.core::fmt::Formatter"*)* }* @vtable3823, i32 0, i32 0), void (i8*)*** %33
%34 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target1, i32 0, i32 0
%35 = load i8*, i8** %34
%36 = getelementptr inbounds { i8*, void (i8*)** }, { i8*, void (i8*)** }* %__coerce_target1, i32 0, i32 1
%37 = load void (i8*)**, void (i8*)*** %36
%38 = call dereferenceable(8) %"2.core::fmt::builders::DebugTuple"* @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$5field20h3a13be82062f531b8aWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8) %builder, i8* nonnull %35, void (i8*)** nonnull %37), !dbg !363
%39 = load i32, i32* %n, align 4, !dbg !364
%40 = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %39, i32 1), !dbg !364
%41 = extractvalue { i32, i1 } %40, 0, !dbg !364
%42 = extractvalue { i32, i1 } %40, 1, !dbg !364
%43 = icmp eq i1 %42, true, !dbg !364
%44 = call i1 @llvm.expect.i1(i1 %43, i1 false), !dbg !364
br i1 %43, label %cond3, label %next2
cond: ; preds = %entry-block
call void @_ZN9panicking5panic20ha43e303ff6444f51DXLE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(20) @panic_loc3821), !dbg !364
unreachable, !dbg !364
next2: ; preds = %next
store i32 %41, i32* %n, align 4, !dbg !364
%45 = load i32, i32* %n, align 4, !dbg !365
%46 = icmp eq i32 %45, 1, !dbg !365
br i1 %46, label %then-block-285-, label %next-block, !dbg !365
cond3: ; preds = %next
call void @_ZN9panicking5panic20ha43e303ff6444f51DXLE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(20) @panic_loc3821), !dbg !364
unreachable, !dbg !364
then-block-285-: ; preds = %next2
%47 = call dereferenceable(52) %"2.core::fmt::Formatter"* @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$9formatter20h46b5b139866ee5520eWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8) %builder), !dbg !366
store %"2.core::fmt::Formatter"* %47, %"2.core::fmt::Formatter"** %3, align 4, !dbg !366
%48 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %3, align 4, !dbg !366, !nonnull !139
%49 = bitcast { %str_slice*, i32 }* %5 to i8*, !dbg !368
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %49, i8* bitcast ({ %str_slice*, i32 }* @"_ZN3fmt29_$LP$T10$C$$u20$T11$RP$.Debug3fmt15__STATIC_FMTSTR20h93f0614df7a757bayZXE" to i8*), i32 8, i32 4, i1 false)
%50 = getelementptr inbounds { %str_slice*, i32 }, { %str_slice*, i32 }* %5, i32 0, i32 0
%51 = load %str_slice*, %str_slice** %50
%52 = getelementptr inbounds { %str_slice*, i32 }, { %str_slice*, i32 }* %5, i32 0, i32 1
%53 = load i32, i32* %52
br label %case_body
case_body: ; preds = %then-block-285-
br label %join
join: ; preds = %case_body
%54 = bitcast [0 x %"2.core::fmt::ArgumentV1"]* %addr_of to %"2.core::fmt::ArgumentV1"*
%55 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target4, i32 0, i32 0
store %"2.core::fmt::ArgumentV1"* %54, %"2.core::fmt::ArgumentV1"** %55
%56 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target4, i32 0, i32 1
store i32 0, i32* %56
%57 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target4, i32 0, i32 0
%58 = load %"2.core::fmt::ArgumentV1"*, %"2.core::fmt::ArgumentV1"** %57
%59 = getelementptr inbounds { %"2.core::fmt::ArgumentV1"*, i32 }, { %"2.core::fmt::ArgumentV1"*, i32 }* %__coerce_target4, i32 0, i32 1
%60 = load i32, i32* %59
call void @"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120hac22e56c14d17949qIWE"(%"2.core::fmt::Arguments"* noalias nocapture sret dereferenceable(24) %4, %str_slice* noalias nonnull readonly %51, i32 %53, %"2.core::fmt::ArgumentV1"* noalias nonnull readonly %58, i32 %60), !dbg !370
%61 = call i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$9write_fmt20hb6f0cef7dd286cfa36WE"(%"2.core::fmt::Formatter"* noalias dereferenceable(52) %48, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(24) %4), !dbg !366
%62 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %2 to i8*, !dbg !366
store i8 %61, i8* %62, align 1, !dbg !366
%63 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %2 to i8*, !dbg !366
%64 = load i8, i8* %63, align 1, !dbg !366
%65 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %match5 to i8*
store i8 %64, i8* %65, align 1
%66 = getelementptr inbounds %"2.core::result::Result<(), core::fmt::Error>", %"2.core::result::Result<(), core::fmt::Error>"* %match5, i32 0, i32 0
%67 = load i8, i8* %66, !range !371
switch i8 %67, label %match_else [
i8 0, label %match_case
i8 1, label %match_case9
]
case_body6: ; preds = %match_case
%68 = load {}*, {}** %__llmatch
call void @llvm.dbg.declare(metadata {}* %val, metadata !372, metadata !289), !dbg !375
br label %join10
case_body7: ; preds = %match_case9
%69 = load %"2.core::fmt::Error"*, %"2.core::fmt::Error"** %__llmatch8, !dbg !376
call void @llvm.dbg.declare(metadata %"2.core::fmt::Error"* %err, metadata !377, metadata !289), !dbg !379
%70 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to { i8, %"2.core::fmt::Error" }*, !dbg !380
%71 = getelementptr inbounds { i8, %"2.core::fmt::Error" }, { i8, %"2.core::fmt::Error" }* %70, i32 0, i32 1, !dbg !380
call void @"_ZN7convert15T.From$LT$T$GT$4from20h5774503560177119520E"(%"2.core::fmt::Error" undef), !dbg !380
%72 = getelementptr inbounds %"2.core::result::Result<(), core::fmt::Error>", %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot, i32 0, i32 0, !dbg !380
store i8 1, i8* %72, !dbg !380
br label %clean_custom_, !dbg !380
match_else: ; preds = %join
unreachable
match_case: ; preds = %join
%73 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %match5 to { i8, {} }*
%74 = getelementptr inbounds { i8, {} }, { i8, {} }* %73, i32 0, i32 1
store {}* %74, {}** %__llmatch
br label %case_body6
match_case9: ; preds = %join
%75 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %match5 to { i8, %"2.core::fmt::Error" }*
%76 = getelementptr inbounds { i8, %"2.core::fmt::Error" }, { i8, %"2.core::fmt::Error" }* %75, i32 0, i32 1
store %"2.core::fmt::Error"* %76, %"2.core::fmt::Error"** %__llmatch8
br label %case_body7
clean_ast_246_: ; preds = %clean_ast_286_
br label %return
clean_ast_286_: ; preds = %clean_custom_
br label %clean_ast_246_
clean_custom_: ; preds = %case_body7
br label %clean_ast_286_
join10: ; preds = %case_body6
br label %next-block
next-block: ; preds = %next2, %join10
%77 = call i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20hccbef59546eda54d0dWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8) %builder), !dbg !382
%78 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to i8*, !dbg !382
store i8 %77, i8* %78, align 1, !dbg !382
br label %return
return: ; preds = %next-block, %clean_ast_246_
%79 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to i8*
%80 = load i8, i8* %79, align 1
ret i8 %80, !dbg !350
}
; Function Attrs: inlinehint uwtable
define internal void @"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h31ec381d7b1c0e74w9WE"(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(52), i8* noalias nonnull readonly, i32) unnamed_addr #2 !dbg !257 {
entry-block:
%self = alloca %"2.core::fmt::Formatter"*
%name = alloca %str_slice
store %"2.core::fmt::Formatter"* %1, %"2.core::fmt::Formatter"** %self, align 4
call void @llvm.dbg.declare(metadata %"2.core::fmt::Formatter"** %self, metadata !383, metadata !289), !dbg !384
%4 = getelementptr inbounds %str_slice, %str_slice* %name, i32 0, i32 0
store i8* %2, i8** %4
%5 = getelementptr inbounds %str_slice, %str_slice* %name, i32 0, i32 1
store i32 %3, i32* %5
call void @llvm.dbg.declare(metadata %str_slice* %name, metadata !385, metadata !289), !dbg !384
%6 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %self, align 4, !dbg !386, !nonnull !139
%7 = getelementptr inbounds %str_slice, %str_slice* %name, i32 0, i32 0, !dbg !386
%8 = load i8*, i8** %7, !dbg !386
%9 = getelementptr inbounds %str_slice, %str_slice* %name, i32 0, i32 1, !dbg !386
%10 = load i32, i32* %9, !dbg !386
call void @_ZN3fmt8builders15debug_tuple_new20h63418a723509c8cfFaWE(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(8) %0, %"2.core::fmt::Formatter"* noalias dereferenceable(52) %6, i8* noalias nonnull readonly %8, i32 %10), !dbg !386
ret void, !dbg !384
}
declare void @_ZN3fmt8builders15debug_tuple_new20h63418a723509c8cfFaWE(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(52), i8* noalias nonnull readonly, i32) unnamed_addr #1
declare dereferenceable(8) %"2.core::fmt::builders::DebugTuple"* @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$5field20h3a13be82062f531b8aWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8), i8* nonnull, void (i8*)** nonnull) unnamed_addr #1
define internal void @_ZN2i89drop.379417h60152e166971643eE(i8*) unnamed_addr {
entry-block:
ret void
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt22_$BP$const$u20$T.Debug3fmt21h11733994440652656744E"(i8** noalias readonly dereferenceable(4), %"2.core::fmt::Formatter"* noalias dereferenceable(52)) unnamed_addr #0 !dbg !261 {
entry-block:
%sret_slot = alloca %"2.core::result::Result<(), core::fmt::Error>"
%self = alloca i8**
%f = alloca %"2.core::fmt::Formatter"*
store i8** %0, i8*** %self, align 4
call void @llvm.dbg.declare(metadata i8*** %self, metadata !388, metadata !289), !dbg !389
store %"2.core::fmt::Formatter"* %1, %"2.core::fmt::Formatter"** %f, align 4
call void @llvm.dbg.declare(metadata %"2.core::fmt::Formatter"** %f, metadata !390, metadata !289), !dbg !389
%2 = load i8**, i8*** %self, align 4, !dbg !391, !nonnull !139
%3 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !391, !nonnull !139
%4 = call i8 @"_ZN3fmt24_$BP$const$u20$T.Pointer3fmt21h12494368517381307680E"(i8** noalias readonly dereferenceable(4) %2, %"2.core::fmt::Formatter"* noalias dereferenceable(52) %3), !dbg !391
%5 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to i8*, !dbg !391
store i8 %4, i8* %5, align 1, !dbg !391
%6 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to i8*, !dbg !391
%7 = load i8, i8* %6, align 1, !dbg !391
ret i8 %7, !dbg !389
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt24_$BP$const$u20$T.Pointer3fmt21h12494368517381307680E"(i8** noalias readonly dereferenceable(4), %"2.core::fmt::Formatter"* noalias dereferenceable(52)) unnamed_addr #0 !dbg !266 {
entry-block:
%sret_slot = alloca %"2.core::result::Result<(), core::fmt::Error>"
%self = alloca i8**
%f = alloca %"2.core::fmt::Formatter"*
%old_width = alloca %"2.core::option::Option<usize>"
%old_flags = alloca i32
%2 = alloca i8
%3 = alloca %"2.core::option::Option<usize>"
%4 = alloca i32
%temp = alloca {}
%ret = alloca %"2.core::result::Result<(), core::fmt::Error>"
%addr_of = alloca i32
%5 = bitcast i32* %addr_of to i8*
call void @llvm.memset.p0i8.i32(i8* %5, i8 29, i32 4, i32 4, i1 false)
store i8** %0, i8*** %self, align 4
call void @llvm.dbg.declare(metadata i8*** %self, metadata !393, metadata !289), !dbg !394
store %"2.core::fmt::Formatter"* %1, %"2.core::fmt::Formatter"** %f, align 4
call void @llvm.dbg.declare(metadata %"2.core::fmt::Formatter"** %f, metadata !395, metadata !289), !dbg !394
%6 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !396, !nonnull !139
%7 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %6, i32 0, i32 3, !dbg !396
%8 = bitcast %"2.core::option::Option<usize>"* %7 to i8*, !dbg !396
%9 = bitcast %"2.core::option::Option<usize>"* %old_width to i8*, !dbg !396
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %9, i8* %8, i32 8, i32 4, i1 false)
call void @llvm.dbg.declare(metadata %"2.core::option::Option<usize>"* %old_width, metadata !398, metadata !289), !dbg !396
%10 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !399, !nonnull !139
%11 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %10, i32 0, i32 0, !dbg !399
%12 = load i32, i32* %11, align 4, !dbg !399
store i32 %12, i32* %old_flags, align 4, !dbg !399
call void @llvm.dbg.declare(metadata i32* %old_flags, metadata !400, metadata !289), !dbg !399
%13 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !401, !nonnull !139
%14 = call zeroext i1 @"_ZN3fmt23Formatter$LT$$u27$a$GT$9alternate20h36d47b5c29e7e9b9D8WE"(%"2.core::fmt::Formatter"* noalias readonly dereferenceable(52) %13), !dbg !401
%15 = zext i1 %14 to i8, !dbg !401
store i8 %15, i8* %2, align 1, !dbg !401
%16 = load i8, i8* %2, align 1, !dbg !401, !range !371
%17 = trunc i8 %16 to i1, !dbg !401
br i1 %17, label %then-block-389-, label %next-block, !dbg !401
then-block-389-: ; preds = %entry-block
%18 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !402, !nonnull !139
%19 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %18, i32 0, i32 0, !dbg !402
%20 = load i32, i32* %19, align 4, !dbg !402
%21 = or i32 %20, 8, !dbg !402
store i32 %21, i32* %19, align 4, !dbg !402
%22 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !404, !nonnull !139
%23 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %22, i32 0, i32 3, !dbg !404
%24 = getelementptr inbounds %"2.core::option::Option<usize>", %"2.core::option::Option<usize>"* %23, i32 0, i32 0, !dbg !404
%25 = load i32, i32* %24, !dbg !404, !range !405
switch i32 %25, label %match_else [
i32 0, label %match_case
], !dbg !404
case_body: ; preds = %match_case
%26 = bitcast %"2.core::option::Option<usize>"* %3 to { i32, i32 }*, !dbg !406
%27 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %26, i32 0, i32 1, !dbg !406
%28 = call i32 @_ZN3mem7size_of21h15834528596308225641E(), !dbg !406
store i32 %28, i32* %4, align 4, !dbg !406
%29 = load i32, i32* %4, align 4, !dbg !406
%30 = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %29, i32 8), !dbg !406
%31 = extractvalue { i32, i1 } %30, 0, !dbg !406
%32 = extractvalue { i32, i1 } %30, 1, !dbg !406
%33 = icmp eq i1 %32, true, !dbg !406
%34 = call i1 @llvm.expect.i1(i1 %33, i1 false), !dbg !406
br i1 %33, label %cond, label %next
case_body1: ; preds = %match_else
br label %join
match_else: ; preds = %then-block-389-
br label %case_body1
match_case: ; preds = %then-block-389-
br label %case_body
next: ; preds = %case_body
%35 = udiv i32 %31, 4, !dbg !406
%36 = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %35, i32 2), !dbg !406
%37 = extractvalue { i32, i1 } %36, 0, !dbg !406
%38 = extractvalue { i32, i1 } %36, 1, !dbg !406
%39 = icmp eq i1 %38, true, !dbg !406
%40 = call i1 @llvm.expect.i1(i1 %39, i1 false), !dbg !406
br i1 %39, label %cond3, label %next2
cond: ; preds = %case_body
call void @_ZN9panicking5panic20ha43e303ff6444f51DXLE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(20) @panic_loc3814), !dbg !406
unreachable, !dbg !406
next2: ; preds = %next
store i32 %37, i32* %27, align 4, !dbg !406
%41 = getelementptr inbounds %"2.core::option::Option<usize>", %"2.core::option::Option<usize>"* %3, i32 0, i32 0, !dbg !406
store i32 1, i32* %41, !dbg !406
%42 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !406, !nonnull !139
%43 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %42, i32 0, i32 3, !dbg !406
%44 = bitcast %"2.core::option::Option<usize>"* %3 to i8*, !dbg !406
%45 = bitcast %"2.core::option::Option<usize>"* %43 to i8*, !dbg !406
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %45, i8* %44, i32 8, i32 4, i1 false)
br label %join
cond3: ; preds = %next
call void @_ZN9panicking5panic20ha43e303ff6444f51DXLE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(20) @panic_loc3814), !dbg !406
unreachable, !dbg !406
join: ; preds = %case_body1, %next2
br label %next-block
next-block: ; preds = %entry-block, %join
%46 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !409, !nonnull !139
%47 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %46, i32 0, i32 0, !dbg !409
%48 = load i32, i32* %47, align 4, !dbg !409
%49 = or i32 %48, 4, !dbg !409
store i32 %49, i32* %47, align 4, !dbg !409
%50 = load i8**, i8*** %self, align 4, !dbg !410, !nonnull !139
%51 = load i8*, i8** %50, align 4, !dbg !410
%52 = bitcast i8* %51 to {}*, !dbg !410
%53 = ptrtoint {}* %52 to i32, !dbg !410
store i32 %53, i32* %addr_of, align 4
%54 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !410, !nonnull !139
%55 = call i8 @_ZN3fmt3num19usize.fmt..LowerHex3fmt20h81739668b85022a2b3UE(i32* noalias readonly dereferenceable(4) %addr_of, %"2.core::fmt::Formatter"* noalias dereferenceable(52) %54), !dbg !410
%56 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %ret to i8*, !dbg !410
store i8 %55, i8* %56, align 1, !dbg !410
call void @llvm.dbg.declare(metadata %"2.core::result::Result<(), core::fmt::Error>"* %ret, metadata !411, metadata !289), !dbg !410
%57 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !412, !nonnull !139
%58 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %57, i32 0, i32 3, !dbg !412
%59 = bitcast %"2.core::option::Option<usize>"* %old_width to i8*, !dbg !412
%60 = bitcast %"2.core::option::Option<usize>"* %58 to i8*, !dbg !412
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %60, i8* %59, i32 8, i32 4, i1 false)
%61 = load %"2.core::fmt::Formatter"*, %"2.core::fmt::Formatter"** %f, align 4, !dbg !413, !nonnull !139
%62 = getelementptr inbounds %"2.core::fmt::Formatter", %"2.core::fmt::Formatter"* %61, i32 0, i32 0, !dbg !413
%63 = load i32, i32* %old_flags, align 4, !dbg !413
store i32 %63, i32* %62, align 4, !dbg !413
%64 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %ret to i8*, !dbg !414
%65 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to i8*, !dbg !414
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %65, i8* %64, i32 1, i32 1, i1 false)
%66 = bitcast %"2.core::result::Result<(), core::fmt::Error>"* %sret_slot to i8*, !dbg !415
%67 = load i8, i8* %66, align 1, !dbg !415
ret i8 %67, !dbg !394
}
declare zeroext i1 @"_ZN3fmt23Formatter$LT$$u27$a$GT$9alternate20h36d47b5c29e7e9b9D8WE"(%"2.core::fmt::Formatter"* noalias readonly dereferenceable(52)) unnamed_addr #1
; Function Attrs: inlinehint uwtable
define internal i32 @_ZN3mem7size_of21h15834528596308225641E() unnamed_addr #2 !dbg !268 {
entry-block:
ret i32 4, !dbg !416
}
; Function Attrs: nounwind readnone
declare { i32, i1 } @llvm.umul.with.overflow.i32(i32, i32) #3
; Function Attrs: nounwind readnone
declare i1 @llvm.expect.i1(i1, i1) #3
; Function Attrs: cold noinline noreturn
declare void @_ZN9panicking5panic20ha43e303ff6444f51DXLE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(20)) unnamed_addr #5
; Function Attrs: nounwind readnone
declare { i32, i1 } @llvm.uadd.with.overflow.i32(i32, i32) #3
declare i8 @_ZN3fmt3num19usize.fmt..LowerHex3fmt20h81739668b85022a2b3UE(i32* noalias readonly dereferenceable(4), %"2.core::fmt::Formatter"* noalias dereferenceable(52)) unnamed_addr #1
; Function Attrs: nounwind readnone
declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) #3
declare i8 @_ZN3fmt3num16usize.fmt..Debug3fmt20hba0f09b094161cefI4UE(i32* noalias readonly dereferenceable(4), %"2.core::fmt::Formatter"* noalias dereferenceable(52)) unnamed_addr #1
declare i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$9write_fmt20hb6f0cef7dd286cfa36WE"(%"2.core::fmt::Formatter"* noalias dereferenceable(52), %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(24)) unnamed_addr #1
declare dereferenceable(52) %"2.core::fmt::Formatter"* @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$9formatter20h46b5b139866ee5520eWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8)) unnamed_addr #1
; Function Attrs: uwtable
define internal void @"_ZN7convert15T.From$LT$T$GT$4from20h5774503560177119520E"(%"2.core::fmt::Error") unnamed_addr #0 !dbg !273 {
entry-block:
%t = alloca %"2.core::fmt::Error"
call void @llvm.dbg.declare(metadata %"2.core::fmt::Error"* %t, metadata !417, metadata !289), !dbg !418
ret void, !dbg !418
}
declare i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20hccbef59546eda54d0dWE"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(8)) unnamed_addr #1
attributes #0 = { uwtable "no-frame-pointer-elim"="true" }
attributes #1 = { "no-frame-pointer-elim"="true" }
attributes #2 = { inlinehint uwtable "no-frame-pointer-elim"="true" }
attributes #3 = { nounwind readnone }
attributes #4 = { argmemonly nounwind }
attributes #5 = { cold noinline noreturn "no-frame-pointer-elim"="true" }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!283}
!0 = distinct !DICompileUnit(language: 36864, file: !1, producer: "rustc version 1.8.0-dev (b741e51d1 2016-02-14)", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !35, subprograms: !196, globals: !279)
!1 = !DIFile(filename: "./src/lib.rs", directory: "/home/pierre/Projets/test")
!2 = !{!3, !12, !19, !25, !30}
!3 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Position", scope: !4, baseType: !8, size: 32, align: 32, elements: !9)
!4 = !DINamespace(name: "v1", scope: !5)
!5 = !DINamespace(name: "rt", scope: !6)
!6 = !DINamespace(name: "fmt", scope: !7)
!7 = !DINamespace(name: "core", scope: null)
!8 = !DIBasicType(name: "u32", size: 32, align: 32, encoding: DW_ATE_unsigned)
!9 = !{!10, !11}
!10 = !DIEnumerator(name: "Next", value: 0)
!11 = !DIEnumerator(name: "At", value: 1)
!12 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Alignment", scope: !4, baseType: !13, size: 8, align: 8, elements: !14)
!13 = !DIBasicType(name: "u8", size: 8, align: 8, encoding: DW_ATE_unsigned)
!14 = !{!15, !16, !17, !18}
!15 = !DIEnumerator(name: "Left", value: 0)
!16 = !DIEnumerator(name: "Right", value: 1)
!17 = !DIEnumerator(name: "Center", value: 2)
!18 = !DIEnumerator(name: "Unknown", value: 3)
!19 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Count", scope: !4, baseType: !8, size: 32, align: 32, elements: !20)
!20 = !{!21, !22, !23, !24}
!21 = !DIEnumerator(name: "Is", value: 0)
!22 = !DIEnumerator(name: "Param", value: 1)
!23 = !DIEnumerator(name: "NextParam", value: 2)
!24 = !DIEnumerator(name: "Implied", value: 3)
!25 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Result", scope: !26, baseType: !13, size: 8, align: 8, elements: !27)
!26 = !DINamespace(name: "result", scope: !7)
!27 = !{!28, !29}
!28 = !DIEnumerator(name: "Ok", value: 0)
!29 = !DIEnumerator(name: "Err", value: 1)
!30 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Option", scope: !31, baseType: !8, size: 32, align: 32, elements: !32)
!31 = !DINamespace(name: "option", scope: !7)
!32 = !{!33, !34}
!33 = !DIEnumerator(name: "None", value: 0)
!34 = !DIEnumerator(name: "Some", value: 1)
!35 = !{!36, !42, !47, !56, !61, !65, !70, !74, !77, !81, !85, !88, !92, !100, !106, !110, !114, !117, !120, !125, !138, !133, !140, !145, !149, !150, !160, !164, !167, !171, !172, !179, !181, !185, !189}
!36 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[u8]", size: 64, align: 32, elements: !37, identifier: "{&{[]{u8}}}")
!37 = !{!38, !40}
!38 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !"{&{[]{u8}}}", baseType: !39, size: 32, align: 32)
!39 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const u8", baseType: !13, size: 32, align: 32)
!40 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !"{&{[]{u8}}}", baseType: !41, size: 32, align: 32, offset: 32)
!41 = !DIBasicType(name: "usize", size: 32, align: 32, encoding: DW_ATE_unsigned)
!42 = !DICompositeType(tag: DW_TAG_structure_type, name: "Slice<u8>", scope: !43, size: 64, align: 32, elements: !44, identifier: "{struct 64fff32a80fc4e5e/75e8<{u8},>}")
!43 = !DINamespace(name: "raw", scope: !7)
!44 = !{!45, !46}
!45 = !DIDerivedType(tag: DW_TAG_member, name: "data", scope: !"{struct 64fff32a80fc4e5e/75e8<{u8},>}", baseType: !39, size: 32, align: 32)
!46 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !"{struct 64fff32a80fc4e5e/75e8<{u8},>}", baseType: !41, size: 32, align: 32, offset: 32)
!47 = !DICompositeType(tag: DW_TAG_structure_type, name: "CStr", scope: !48, size: 8, align: 8, elements: !51, identifier: "{struct 406c24d45eb804fd/c13}")
!48 = !DINamespace(name: "c_str", scope: !49)
!49 = !DINamespace(name: "ffi", scope: !50)
!50 = !DINamespace(name: "std", scope: null)
!51 = !{!52}
!52 = !DIDerivedType(tag: DW_TAG_member, name: "inner", scope: !"{struct 406c24d45eb804fd/c13}", baseType: !53, size: 64, align: 32)
!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, align: 8, elements: !54)
!54 = !{!55}
!55 = !DISubrange(count: -1)
!56 = !DICompositeType(tag: DW_TAG_structure_type, name: "Arguments", scope: !6, size: 192, align: 32, elements: !57, identifier: "{struct 64fff32a80fc4e5e/8830}")
!57 = !{!58, !59, !60}
!58 = !DIDerivedType(tag: DW_TAG_member, name: "pieces", scope: !"{struct 64fff32a80fc4e5e/8830}", baseType: !"{&{[]{&{str}}}}", size: 64, align: 32)
!59 = !DIDerivedType(tag: DW_TAG_member, name: "fmt", scope: !"{struct 64fff32a80fc4e5e/8830}", baseType: !"{enum 64fff32a80fc4e5e/748a<{&{[]{struct 64fff32a80fc4e5e/8783}}},>}", size: 64, align: 32, offset: 64)
!60 = !DIDerivedType(tag: DW_TAG_member, name: "args", scope: !"{struct 64fff32a80fc4e5e/8830}", baseType: !"{&{[]{struct 64fff32a80fc4e5e/8802}}}", size: 64, align: 32, offset: 128)
!61 = !DICompositeType(tag: DW_TAG_structure_type, name: "&str", size: 64, align: 32, elements: !62, identifier: "{&{str}}")
!62 = !{!63, !64}
!63 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !"{&{str}}", baseType: !39, size: 32, align: 32)
!64 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !"{&{str}}", baseType: !41, size: 32, align: 32, offset: 32)
!65 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[&str]", size: 64, align: 32, elements: !66, identifier: "{&{[]{&{str}}}}")
!66 = !{!67, !69}
!67 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !"{&{[]{&{str}}}}", baseType: !68, size: 32, align: 32)
!68 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const &str", baseType: !"{&{str}}", size: 32, align: 32)
!69 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !"{&{[]{&{str}}}}", baseType: !41, size: 32, align: 32, offset: 32)
!70 = !DICompositeType(tag: DW_TAG_union_type, name: "Option<&[core::fmt::rt::v1::Argument]>", scope: !31, file: !71, size: 64, align: 32, elements: !72, identifier: "{enum 64fff32a80fc4e5e/748a<{&{[]{struct 64fff32a80fc4e5e/8783}}},>}")
!71 = !DIFile(filename: "<unknown>", directory: "")
!72 = !{!73}
!73 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENCODED$ENUM$0$0$None", scope: !"{enum 64fff32a80fc4e5e/748a<{&{[]{struct 64fff32a80fc4e5e/8783}}},>}", baseType: !"{enum 64fff32a80fc4e5e/748a<{&{[]{struct 64fff32a80fc4e5e/8783}}},>}::Some", size: 64, align: 32)
!74 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !31, size: 64, align: 32, elements: !75, identifier: "{enum 64fff32a80fc4e5e/748a<{&{[]{struct 64fff32a80fc4e5e/8783}}},>}::Some")
!75 = !{!76}
!76 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/748a<{&{[]{struct 64fff32a80fc4e5e/8783}}},>}::Some", baseType: !"{&{[]{struct 64fff32a80fc4e5e/8783}}}", size: 64, align: 32)
!77 = !DICompositeType(tag: DW_TAG_structure_type, name: "Argument", scope: !4, size: 288, align: 32, elements: !78, identifier: "{struct 64fff32a80fc4e5e/8783}")
!78 = !{!79, !80}
!79 = !DIDerivedType(tag: DW_TAG_member, name: "position", scope: !"{struct 64fff32a80fc4e5e/8783}", baseType: !"{enum 64fff32a80fc4e5e/87bc}", size: 64, align: 32)
!80 = !DIDerivedType(tag: DW_TAG_member, name: "format", scope: !"{struct 64fff32a80fc4e5e/8783}", baseType: !"{struct 64fff32a80fc4e5e/878c}", size: 224, align: 32, offset: 64)
!81 = !DICompositeType(tag: DW_TAG_union_type, name: "Position", scope: !4, file: !71, size: 64, align: 32, elements: !82, identifier: "{enum 64fff32a80fc4e5e/87bc}")
!82 = !{!83, !84}
!83 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/87bc}", baseType: !"{enum 64fff32a80fc4e5e/87bc}::Next", size: 32, align: 32)
!84 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/87bc}", baseType: !"{enum 64fff32a80fc4e5e/87bc}::At", size: 64, align: 32)
!85 = !DICompositeType(tag: DW_TAG_structure_type, name: "Next", scope: !4, size: 32, align: 32, elements: !86, identifier: "{enum 64fff32a80fc4e5e/87bc}::Next")
!86 = !{!87}
!87 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/87bc}::Next", baseType: !3, size: 32, align: 32)
!88 = !DICompositeType(tag: DW_TAG_structure_type, name: "At", scope: !4, size: 64, align: 32, elements: !89, identifier: "{enum 64fff32a80fc4e5e/87bc}::At")
!89 = !{!90, !91}
!90 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/87bc}::At", baseType: !3, size: 32, align: 32)
!91 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/87bc}::At", baseType: !41, size: 32, align: 32, offset: 32)
!92 = !DICompositeType(tag: DW_TAG_structure_type, name: "FormatSpec", scope: !4, size: 224, align: 32, elements: !93, identifier: "{struct 64fff32a80fc4e5e/878c}")
!93 = !{!94, !96, !97, !98, !99}
!94 = !DIDerivedType(tag: DW_TAG_member, name: "fill", scope: !"{struct 64fff32a80fc4e5e/878c}", baseType: !95, size: 32, align: 32)
!95 = !DIBasicType(name: "char", size: 32, align: 32, encoding: DW_ATE_unsigned_char)
!96 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !"{struct 64fff32a80fc4e5e/878c}", baseType: !12, size: 8, align: 8, offset: 32)
!97 = !DIDerivedType(tag: DW_TAG_member, name: "flags", scope: !"{struct 64fff32a80fc4e5e/878c}", baseType: !8, size: 32, align: 32, offset: 64)
!98 = !DIDerivedType(tag: DW_TAG_member, name: "precision", scope: !"{struct 64fff32a80fc4e5e/878c}", baseType: !"{enum 64fff32a80fc4e5e/87af}", size: 64, align: 32, offset: 96)
!99 = !DIDerivedType(tag: DW_TAG_member, name: "width", scope: !"{struct 64fff32a80fc4e5e/878c}", baseType: !"{enum 64fff32a80fc4e5e/87af}", size: 64, align: 32, offset: 160)
!100 = !DICompositeType(tag: DW_TAG_union_type, name: "Count", scope: !4, file: !71, size: 64, align: 32, elements: !101, identifier: "{enum 64fff32a80fc4e5e/87af}")
!101 = !{!102, !103, !104, !105}
!102 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/87af}", baseType: !"{enum 64fff32a80fc4e5e/87af}::Is", size: 64, align: 32)
!103 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/87af}", baseType: !"{enum 64fff32a80fc4e5e/87af}::Param", size: 64, align: 32)
!104 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/87af}", baseType: !"{enum 64fff32a80fc4e5e/87af}::NextParam", size: 32, align: 32)
!105 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/87af}", baseType: !"{enum 64fff32a80fc4e5e/87af}::Implied", size: 32, align: 32)
!106 = !DICompositeType(tag: DW_TAG_structure_type, name: "Is", scope: !4, size: 64, align: 32, elements: !107, identifier: "{enum 64fff32a80fc4e5e/87af}::Is")
!107 = !{!108, !109}
!108 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/87af}::Is", baseType: !19, size: 32, align: 32)
!109 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/87af}::Is", baseType: !41, size: 32, align: 32, offset: 32)
!110 = !DICompositeType(tag: DW_TAG_structure_type, name: "Param", scope: !4, size: 64, align: 32, elements: !111, identifier: "{enum 64fff32a80fc4e5e/87af}::Param")
!111 = !{!112, !113}
!112 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/87af}::Param", baseType: !19, size: 32, align: 32)
!113 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/87af}::Param", baseType: !41, size: 32, align: 32, offset: 32)
!114 = !DICompositeType(tag: DW_TAG_structure_type, name: "NextParam", scope: !4, size: 32, align: 32, elements: !115, identifier: "{enum 64fff32a80fc4e5e/87af}::NextParam")
!115 = !{!116}
!116 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/87af}::NextParam", baseType: !19, size: 32, align: 32)
!117 = !DICompositeType(tag: DW_TAG_structure_type, name: "Implied", scope: !4, size: 32, align: 32, elements: !118, identifier: "{enum 64fff32a80fc4e5e/87af}::Implied")
!118 = !{!119}
!119 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/87af}::Implied", baseType: !19, size: 32, align: 32)
!120 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[core::fmt::rt::v1::Argument]", size: 64, align: 32, elements: !121, identifier: "{&{[]{struct 64fff32a80fc4e5e/8783}}}")
!121 = !{!122, !124}
!122 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !"{&{[]{struct 64fff32a80fc4e5e/8783}}}", baseType: !123, size: 32, align: 32)
!123 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const core::fmt::rt::v1::Argument", baseType: !"{struct 64fff32a80fc4e5e/8783}", size: 32, align: 32)
!124 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !"{&{[]{struct 64fff32a80fc4e5e/8783}}}", baseType: !41, size: 32, align: 32, offset: 32)
!125 = !DICompositeType(tag: DW_TAG_structure_type, name: "ArgumentV1", scope: !6, size: 64, align: 32, elements: !126, identifier: "{struct 64fff32a80fc4e5e/8802}")
!126 = !{!127, !129}
!127 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !"{struct 64fff32a80fc4e5e/8802}", baseType: !128, size: 32, align: 32)
!128 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&core::fmt::Void", baseType: !"{enum 64fff32a80fc4e5e/8801}", size: 32, align: 32)
!129 = !DIDerivedType(tag: DW_TAG_member, name: "formatter", scope: !"{struct 64fff32a80fc4e5e/8802}", baseType: !130, size: 32, align: 32, offset: 32)
!130 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "fn(&core::fmt::Void, &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error>", baseType: !131, size: 32, align: 32)
!131 = !DISubroutineType(types: !132)
!132 = !{!133, !128, !137}
!133 = !DICompositeType(tag: DW_TAG_union_type, name: "Result<(), core::fmt::Error>", scope: !26, file: !71, size: 8, align: 8, elements: !134, identifier: "{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}")
!134 = !{!135, !136}
!135 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}", baseType: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Ok", size: 8, align: 8)
!136 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}", baseType: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Err", size: 8, align: 8)
!137 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&mut core::fmt::Formatter", baseType: !"{struct 64fff32a80fc4e5e/87f7}", size: 32, align: 32)
!138 = !DICompositeType(tag: DW_TAG_union_type, name: "Void", scope: !6, file: !71, align: 8, elements: !139, identifier: "{enum 64fff32a80fc4e5e/8801}")
!139 = !{}
!140 = !DICompositeType(tag: DW_TAG_structure_type, name: "Ok", scope: !26, size: 8, align: 8, elements: !141, identifier: "{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Ok")
!141 = !{!142, !143}
!142 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Ok", baseType: !25, size: 8, align: 8)
!143 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Ok", baseType: !144, align: 8, offset: 8)
!144 = !DIBasicType(name: "()", align: 8, encoding: DW_ATE_unsigned)
!145 = !DICompositeType(tag: DW_TAG_structure_type, name: "Err", scope: !26, size: 8, align: 8, elements: !146, identifier: "{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Err")
!146 = !{!147, !148}
!147 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Err", baseType: !25, size: 8, align: 8)
!148 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}::Err", baseType: !"{struct 64fff32a80fc4e5e/87c6}", align: 8, offset: 8)
!149 = !DICompositeType(tag: DW_TAG_structure_type, name: "Error", scope: !6, align: 8, elements: !139, identifier: "{struct 64fff32a80fc4e5e/87c6}")
!150 = !DICompositeType(tag: DW_TAG_structure_type, name: "Formatter", scope: !6, size: 416, align: 32, elements: !151, identifier: "{struct 64fff32a80fc4e5e/87f7}")
!151 = !{!152, !153, !154, !155, !156, !157, !158, !159}
!152 = !DIDerivedType(tag: DW_TAG_member, name: "flags", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !8, size: 32, align: 32)
!153 = !DIDerivedType(tag: DW_TAG_member, name: "fill", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !95, size: 32, align: 32, offset: 32)
!154 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !12, size: 8, align: 8, offset: 64)
!155 = !DIDerivedType(tag: DW_TAG_member, name: "width", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !"{enum 64fff32a80fc4e5e/748a<{usize},>}", size: 64, align: 32, offset: 96)
!156 = !DIDerivedType(tag: DW_TAG_member, name: "precision", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !"{enum 64fff32a80fc4e5e/748a<{usize},>}", size: 64, align: 32, offset: 160)
!157 = !DIDerivedType(tag: DW_TAG_member, name: "buf", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !"{&mut{trait 64fff32a80fc4e5e/87d1}}", size: 64, align: 32, offset: 224)
!158 = !DIDerivedType(tag: DW_TAG_member, name: "curarg", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !"{struct 64fff32a80fc4e5e/78d7<{struct 64fff32a80fc4e5e/8802},>}", size: 64, align: 32, offset: 288)
!159 = !DIDerivedType(tag: DW_TAG_member, name: "args", scope: !"{struct 64fff32a80fc4e5e/87f7}", baseType: !"{&{[]{struct 64fff32a80fc4e5e/8802}}}", size: 64, align: 32, offset: 352)
!160 = !DICompositeType(tag: DW_TAG_union_type, name: "Option<usize>", scope: !31, file: !71, size: 64, align: 32, elements: !161, identifier: "{enum 64fff32a80fc4e5e/748a<{usize},>}")
!161 = !{!162, !163}
!162 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/748a<{usize},>}", baseType: !"{enum 64fff32a80fc4e5e/748a<{usize},>}::None", size: 32, align: 32)
!163 = !DIDerivedType(tag: DW_TAG_member, scope: !"{enum 64fff32a80fc4e5e/748a<{usize},>}", baseType: !"{enum 64fff32a80fc4e5e/748a<{usize},>}::Some", size: 64, align: 32)
!164 = !DICompositeType(tag: DW_TAG_structure_type, name: "None", scope: !31, size: 32, align: 32, elements: !165, identifier: "{enum 64fff32a80fc4e5e/748a<{usize},>}::None")
!165 = !{!166}
!166 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/748a<{usize},>}::None", baseType: !30, size: 32, align: 32)
!167 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !31, size: 64, align: 32, elements: !168, identifier: "{enum 64fff32a80fc4e5e/748a<{usize},>}::Some")
!168 = !{!169, !170}
!169 = !DIDerivedType(tag: DW_TAG_member, name: "RUST$ENUM$DISR", scope: !"{enum 64fff32a80fc4e5e/748a<{usize},>}::Some", baseType: !30, size: 32, align: 32)
!170 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{enum 64fff32a80fc4e5e/748a<{usize},>}::Some", baseType: !41, size: 32, align: 32, offset: 32)
!171 = !DICompositeType(tag: DW_TAG_structure_type, name: "&mut Write", scope: !6, size: 64, align: 32, elements: !139, identifier: "{&mut{trait 64fff32a80fc4e5e/87d1}}")
!172 = !DICompositeType(tag: DW_TAG_structure_type, name: "Iter<core::fmt::ArgumentV1>", scope: !173, size: 64, align: 32, elements: !174, identifier: "{struct 64fff32a80fc4e5e/78d7<{struct 64fff32a80fc4e5e/8802},>}")
!173 = !DINamespace(name: "slice", scope: !7)
!174 = !{!175, !177, !178}
!175 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", scope: !"{struct 64fff32a80fc4e5e/78d7<{struct 64fff32a80fc4e5e/8802},>}", baseType: !176, size: 32, align: 32)
!176 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const core::fmt::ArgumentV1", baseType: !"{struct 64fff32a80fc4e5e/8802}", size: 32, align: 32)
!177 = !DIDerivedType(tag: DW_TAG_member, name: "end", scope: !"{struct 64fff32a80fc4e5e/78d7<{struct 64fff32a80fc4e5e/8802},>}", baseType: !176, size: 32, align: 32, offset: 32)
!178 = !DIDerivedType(tag: DW_TAG_member, name: "_marker", scope: !"{struct 64fff32a80fc4e5e/78d7<{struct 64fff32a80fc4e5e/8802},>}", baseType: !"{struct 64fff32a80fc4e5e/336e<{&{struct 64fff32a80fc4e5e/8802}},>}", align: 8, offset: 64)
!179 = !DICompositeType(tag: DW_TAG_structure_type, name: "PhantomData<&core::fmt::ArgumentV1>", scope: !180, align: 8, elements: !139, identifier: "{struct 64fff32a80fc4e5e/336e<{&{struct 64fff32a80fc4e5e/8802}},>}")
!180 = !DINamespace(name: "marker", scope: !7)
!181 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[core::fmt::ArgumentV1]", size: 64, align: 32, elements: !182, identifier: "{&{[]{struct 64fff32a80fc4e5e/8802}}}")
!182 = !{!183, !184}
!183 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !"{&{[]{struct 64fff32a80fc4e5e/8802}}}", baseType: !176, size: 32, align: 32)
!184 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !"{&{[]{struct 64fff32a80fc4e5e/8802}}}", baseType: !41, size: 32, align: 32, offset: 32)
!185 = !DICompositeType(tag: DW_TAG_structure_type, name: "(*const u8, usize)", size: 64, align: 32, elements: !186, identifier: "{tuple {*{u8}}{usize}}")
!186 = !{!187, !188}
!187 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !"{tuple {*{u8}}{usize}}", baseType: !39, size: 32, align: 32)
!188 = !DIDerivedType(tag: DW_TAG_member, name: "__1", scope: !"{tuple {*{u8}}{usize}}", baseType: !41, size: 32, align: 32, offset: 32)
!189 = !DICompositeType(tag: DW_TAG_structure_type, name: "DebugTuple", scope: !190, size: 64, align: 32, elements: !191, identifier: "{struct 64fff32a80fc4e5e/86d7}")
!190 = !DINamespace(name: "builders", scope: !6)
!191 = !{!192, !193, !194}
!192 = !DIDerivedType(tag: DW_TAG_member, name: "fmt", scope: !"{struct 64fff32a80fc4e5e/86d7}", baseType: !137, size: 32, align: 32)
!193 = !DIDerivedType(tag: DW_TAG_member, name: "result", scope: !"{struct 64fff32a80fc4e5e/86d7}", baseType: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}", size: 8, align: 8, offset: 32)
!194 = !DIDerivedType(tag: DW_TAG_member, name: "has_fields", scope: !"{struct 64fff32a80fc4e5e/86d7}", baseType: !195, size: 8, align: 8, offset: 40)
!195 = !DIBasicType(name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean)
!196 = !{!197, !202, !208, !211, !219, !228, !236, !239, !245, !255, !257, !261, !266, !268, !273}
!197 = distinct !DISubprogram(name: "hello", linkageName: "_ZN4test5helloE", scope: !199, file: !198, line: 4, type: !200, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!198 = !DIFile(filename: "src/lib.rs", directory: "/home/pierre/Projets/test")
!199 = !DINamespace(name: "test", scope: null)
!200 = !DISubroutineType(types: !201)
!201 = !{null}
!202 = distinct !DISubprogram(name: "as_ptr", linkageName: "_ZN4test5slice3[T]6as_ptrE", scope: !204, file: !203, line: 314, type: !206, isLocal: true, isDefinition: true, scopeLine: 314, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!203 = !DIFile(filename: "../src/libcollections/slice.rs", directory: "/home/pierre/Projets/test")
!204 = !DINamespace(name: "[T]", scope: !205)
!205 = !DINamespace(name: "slice", scope: !199)
!206 = !DISubroutineType(types: !207)
!207 = !{!39, !36}
!208 = distinct !DISubprogram(name: "as_ptr", linkageName: "_ZN4test5slice12[T].SliceExt6as_ptrE", scope: !210, file: !209, line: 290, type: !206, isLocal: true, isDefinition: true, scopeLine: 290, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!209 = !DIFile(filename: "../src/libcore/slice.rs", directory: "/home/pierre/Projets/test")
!210 = !DINamespace(name: "[T].SliceExt", scope: !205)
!211 = distinct !DISubprogram(name: "repr<[u8]>", linkageName: "_ZN4test3raw4Repr10repr<[u8]>E", scope: !213, file: !212, line: 159, type: !215, isLocal: true, isDefinition: true, scopeLine: 159, flags: DIFlagPrototyped, isOptimized: false, templateParams: !217, variables: !139)
!212 = !DIFile(filename: "../src/libcore/raw.rs", directory: "/home/pierre/Projets/test")
!213 = !DINamespace(name: "Repr", scope: !214)
!214 = !DINamespace(name: "raw", scope: !199)
!215 = !DISubroutineType(types: !216)
!216 = !{!42, !36}
!217 = !{!218}
!218 = !DITemplateTypeParameter(name: "Self", type: !53)
!219 = distinct !DISubprogram(name: "transmute_copy<&[u8],core::raw::Slice<u8>>", linkageName: "_ZN4test3mem42transmute_copy<&[u8],core::raw::Slice<u8>>E", scope: !221, file: !220, line: 580, type: !222, isLocal: true, isDefinition: true, scopeLine: 580, flags: DIFlagPrototyped, isOptimized: false, templateParams: !225, variables: !139)
!220 = !DIFile(filename: "../src/libcore/mem.rs", directory: "/home/pierre/Projets/test")
!221 = !DINamespace(name: "mem", scope: !199)
!222 = !DISubroutineType(types: !223)
!223 = !{!42, !224}
!224 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&&[u8]", baseType: !"{&{[]{u8}}}", size: 32, align: 32)
!225 = !{!226, !227}
!226 = !DITemplateTypeParameter(name: "T", type: !"{&{[]{u8}}}")
!227 = !DITemplateTypeParameter(name: "U", type: !"{struct 64fff32a80fc4e5e/75e8<{u8},>}")
!228 = distinct !DISubprogram(name: "read<core::raw::Slice<u8>>", linkageName: "_ZN4test3ptr26read<core::raw::Slice<u8>>E", scope: !230, file: !229, line: 124, type: !231, isLocal: true, isDefinition: true, scopeLine: 124, flags: DIFlagPrototyped, isOptimized: false, templateParams: !234, variables: !139)
!229 = !DIFile(filename: "../src/libcore/ptr.rs", directory: "/home/pierre/Projets/test")
!230 = !DINamespace(name: "ptr", scope: !199)
!231 = !DISubroutineType(types: !232)
!232 = !{!42, !233}
!233 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const core::raw::Slice<u8>", baseType: !"{struct 64fff32a80fc4e5e/75e8<{u8},>}", size: 32, align: 32)
!234 = !{!235}
!235 = !DITemplateTypeParameter(name: "T", type: !"{struct 64fff32a80fc4e5e/75e8<{u8},>}")
!236 = distinct !DISubprogram(name: "uninitialized<core::raw::Slice<u8>>", linkageName: "_ZN4test3mem35uninitialized<core::raw::Slice<u8>>E", scope: !221, file: !220, line: 342, type: !237, isLocal: true, isDefinition: true, scopeLine: 342, flags: DIFlagPrototyped, isOptimized: false, templateParams: !234, variables: !139)
!237 = !DISubroutineType(types: !238)
!238 = !{!42}
!239 = distinct !DISubprogram(name: "new_v1", linkageName: "_ZN4test3fmt13Arguments<'a>6new_v1E", scope: !241, file: !240, line: 236, type: !243, isLocal: true, isDefinition: true, scopeLine: 237, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!240 = !DIFile(filename: "../src/libcore/fmt/mod.rs", directory: "/home/pierre/Projets/test")
!241 = !DINamespace(name: "Arguments<'a>", scope: !242)
!242 = !DINamespace(name: "fmt", scope: !199)
!243 = !DISubroutineType(types: !244)
!244 = !{!56, !65, !181}
!245 = distinct !DISubprogram(name: "new<(*const u8, usize)>", linkageName: "_ZN4test3fmt14ArgumentV1<'a>23new<(*const u8, usize)>E", scope: !246, file: !240, line: 199, type: !247, isLocal: true, isDefinition: true, scopeLine: 200, flags: DIFlagPrototyped, isOptimized: false, templateParams: !253, variables: !139)
!246 = !DINamespace(name: "ArgumentV1<'a>", scope: !242)
!247 = !DISubroutineType(types: !248)
!248 = !{!125, !249, !250}
!249 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&(*const u8, usize)", baseType: !"{tuple {*{u8}}{usize}}", size: 32, align: 32)
!250 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "fn(&(*const u8, usize), &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error>", baseType: !251, size: 32, align: 32)
!251 = !DISubroutineType(types: !252)
!252 = !{!133, !249, !137}
!253 = !{!254}
!254 = !DITemplateTypeParameter(name: "T", type: !"{tuple {*{u8}}{usize}}")
!255 = distinct !DISubprogram(name: "fmt", linkageName: "_ZN4test3fmt16(T10, T11).Debug3fmtE", scope: !256, file: !240, line: 1536, type: !251, isLocal: true, isDefinition: true, scopeLine: 1536, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!256 = !DINamespace(name: "(T10, T11).Debug", scope: !242)
!257 = distinct !DISubprogram(name: "debug_tuple", linkageName: "_ZN4test3fmt13Formatter<'a>11debug_tupleE", scope: !258, file: !240, line: 1198, type: !259, isLocal: true, isDefinition: true, scopeLine: 1198, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!258 = !DINamespace(name: "Formatter<'a>", scope: !242)
!259 = !DISubroutineType(types: !260)
!260 = !{!189, !137, !61}
!261 = distinct !DISubprogram(name: "fmt", linkageName: "_ZN4test3fmt14*const T.Debug3fmtE", scope: !262, file: !240, line: 1519, type: !263, isLocal: true, isDefinition: true, scopeLine: 1519, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!262 = !DINamespace(name: "*const T.Debug", scope: !242)
!263 = !DISubroutineType(types: !264)
!264 = !{!133, !265, !137}
!265 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&*const u8", baseType: !39, size: 32, align: 32)
!266 = distinct !DISubprogram(name: "fmt", linkageName: "_ZN4test3fmt16*const T.Pointer3fmtE", scope: !267, file: !240, line: 1388, type: !263, isLocal: true, isDefinition: true, scopeLine: 1388, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!267 = !DINamespace(name: "*const T.Pointer", scope: !242)
!268 = distinct !DISubprogram(name: "size_of<usize>", linkageName: "_ZN4test3mem14size_of<usize>E", scope: !221, file: !220, line: 129, type: !269, isLocal: true, isDefinition: true, scopeLine: 129, flags: DIFlagPrototyped, isOptimized: false, templateParams: !271, variables: !139)
!269 = !DISubroutineType(types: !270)
!270 = !{!41}
!271 = !{!272}
!272 = !DITemplateTypeParameter(name: "T", type: !41)
!273 = distinct !DISubprogram(name: "from", linkageName: "_ZN4test7convert9T.From<T>4fromE", scope: !275, file: !274, line: 216, type: !277, isLocal: true, isDefinition: true, scopeLine: 216, flags: DIFlagPrototyped, isOptimized: false, templateParams: !139, variables: !139)
!274 = !DIFile(filename: "../src/libcore/convert.rs", directory: "/home/pierre/Projets/test")
!275 = !DINamespace(name: "T.From<T>", scope: !276)
!276 = !DINamespace(name: "convert", scope: !199)
!277 = !DISubroutineType(types: !278)
!278 = !{!149, !149}
!279 = !{!280}
!280 = !DIGlobalVariable(name: "__STATIC_FMTSTR", linkageName: "_ZN4test5hello15__STATIC_FMTSTRE", scope: !281, file: !282, line: 3, type: !"{&{[]{&{str}}}}", isLocal: true, isDefinition: true, variable: { %str_slice*, i32 }* @_ZN5hello15__STATIC_FMTSTR20h6e6939a1ecbfff0cDaaE)
!281 = !DINamespace(name: "hello", scope: !199)
!282 = !DIFile(filename: "<std macros>", directory: "/home/pierre/Projets/test")
!283 = !{i32 2, !"Debug Info Version", i32 3}
!284 = !DILocation(line: 6, scope: !285)
!285 = distinct !DILexicalBlock(scope: !286, file: !198, line: 5, column: 4)
!286 = distinct !DILexicalBlock(scope: !197, file: !198, line: 4, column: 15)
!287 = !DILocalVariable(name: "f", scope: !285, file: !198, line: 6, type: !288)
!288 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&std::ffi::c_str::CStr", baseType: !"{struct 406c24d45eb804fd/c13}", size: 64, align: 32)
!289 = !DIExpression()
!290 = !DILocation(line: 3, scope: !291)
!291 = distinct !DILexicalBlock(scope: !285, file: !282, line: 3, column: 10)
!292 = !DILocation(line: 3, scope: !285)
!293 = !DILocation(line: 7, scope: !285)
!294 = !DILocalVariable(name: "__arg0", scope: !295, file: !198, line: 1, type: !249)
!295 = distinct !DILexicalBlock(scope: !285, file: !282, line: 3, column: 10)
!296 = !DILocation(line: 1, scope: !295)
!297 = !DILocation(line: 3, scope: !295)
!298 = !DILocation(line: 7, scope: !295)
!299 = !DILocation(line: 2, scope: !295)
!300 = !DILocation(line: 2, scope: !285)
!301 = !DILocation(line: 9, scope: !197)
!302 = !DILocalVariable(name: "self", arg: 1, scope: !202, file: !203, line: 314, type: !"{&{[]{u8}}}")
!303 = !DILocation(line: 314, scope: !202)
!304 = !DILocation(line: 315, scope: !305)
!305 = distinct !DILexicalBlock(scope: !202, file: !203, line: 314, column: 37)
!306 = !DILocalVariable(name: "self", arg: 1, scope: !208, file: !209, line: 290, type: !"{&{[]{u8}}}")
!307 = !DILocation(line: 290, scope: !208)
!308 = !DILocation(line: 291, scope: !309)
!309 = distinct !DILexicalBlock(scope: !208, file: !209, line: 290, column: 33)
!310 = !DILocalVariable(name: "self", arg: 1, scope: !211, file: !212, line: 159, type: !"{&{[]{u8}}}")
!311 = !DILocation(line: 159, scope: !211)
!312 = !DILocation(line: 159, scope: !313)
!313 = distinct !DILexicalBlock(scope: !314, file: !212, line: 159, column: 26)
!314 = distinct !DILexicalBlock(scope: !211, file: !212, line: 159, column: 24)
!315 = !DILocalVariable(name: "src", arg: 1, scope: !228, file: !229, line: 124, type: !233)
!316 = !DILocation(line: 124, scope: !228, inlinedAt: !317)
!317 = distinct !DILocation(line: 581, scope: !318)
!318 = distinct !DILexicalBlock(scope: !219, file: !220, line: 580, column: 49)
!319 = !DILocalVariable(name: "tmp", scope: !320, file: !229, line: 125, type: !"{struct 64fff32a80fc4e5e/75e8<{u8},>}")
!320 = distinct !DILexicalBlock(scope: !228, file: !229, line: 124, column: 42)
!321 = !DILocation(line: 125, scope: !320, inlinedAt: !317)
!322 = !DILocalVariable(name: "src", arg: 1, scope: !219, file: !220, line: 580, type: !224)
!323 = !DILocation(line: 580, scope: !219)
!324 = !DILocation(line: 581, scope: !318)
!325 = !{!326}
!326 = distinct !{!326, !327, !"_ZN3ptr4read20h3401384673276317738E: argument 0"}
!327 = distinct !{!327, !"_ZN3ptr4read20h3401384673276317738E"}
!328 = !DILocation(line: 126, scope: !320, inlinedAt: !317)
!329 = !DILocation(line: 127, scope: !320, inlinedAt: !317)
!330 = !DILocation(line: 342, scope: !236)
!331 = !DILocalVariable(name: "pieces", arg: 1, scope: !239, file: !240, line: 236, type: !"{&{[]{&{str}}}}")
!332 = !DILocation(line: 236, scope: !239)
!333 = !DILocalVariable(name: "args", arg: 2, scope: !239, file: !240, line: 237, type: !"{&{[]{struct 64fff32a80fc4e5e/8802}}}")
!334 = !DILocation(line: 237, scope: !239)
!335 = !DILocation(line: 238, scope: !336)
!336 = distinct !DILexicalBlock(scope: !239, file: !240, line: 237, column: 63)
!337 = !DILocation(line: 239, scope: !336)
!338 = !DILocation(line: 240, scope: !336)
!339 = !DILocation(line: 241, scope: !336)
!340 = !DILocalVariable(name: "x", arg: 1, scope: !245, file: !240, line: 199, type: !249)
!341 = !DILocation(line: 199, scope: !245)
!342 = !DILocalVariable(name: "f", arg: 2, scope: !245, file: !240, line: 200, type: !250)
!343 = !DILocation(line: 200, scope: !245)
!344 = !DILocation(line: 202, scope: !345)
!345 = distinct !DILexicalBlock(scope: !346, file: !240, line: 201, column: 8)
!346 = distinct !DILexicalBlock(scope: !245, file: !240, line: 200, column: 77)
!347 = !DILocation(line: 203, scope: !345)
!348 = !DILocation(line: 204, scope: !345)
!349 = !DILocalVariable(name: "self", arg: 1, scope: !255, file: !240, line: 1536, type: !249)
!350 = !DILocation(line: 1536, scope: !255)
!351 = !DILocalVariable(name: "f", arg: 2, scope: !255, file: !240, line: 1536, type: !137)
!352 = !DILocation(line: 1537, scope: !353)
!353 = distinct !DILexicalBlock(scope: !255, file: !240, line: 1536, column: 55)
!354 = !DILocalVariable(name: "builder", scope: !353, file: !240, line: 1537, type: !"{struct 64fff32a80fc4e5e/86d7}")
!355 = !DILocation(line: 1538, scope: !353)
!356 = !DILocalVariable(name: "T10", scope: !353, file: !240, line: 1538, type: !265)
!357 = !DILocalVariable(name: "T11", scope: !353, file: !240, line: 1538, type: !358)
!358 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&usize", baseType: !41, size: 32, align: 32)
!359 = !DILocation(line: 1539, scope: !353)
!360 = !DILocalVariable(name: "n", scope: !353, file: !240, line: 1539, type: !361)
!361 = !DIBasicType(name: "i32", size: 32, align: 32, encoding: DW_ATE_signed)
!362 = !DILocation(line: 1527, scope: !353)
!363 = !DILocation(line: 1541, scope: !353)
!364 = !DILocation(line: 1542, scope: !353)
!365 = !DILocation(line: 1545, scope: !353)
!366 = !DILocation(line: 1546, scope: !367)
!367 = distinct !DILexicalBlock(scope: !353, file: !240, line: 1545, column: 26)
!368 = !DILocation(line: 1546, scope: !369)
!369 = distinct !DILexicalBlock(scope: !367, file: !240, line: 1546, column: 53)
!370 = !DILocation(line: 226, scope: !367)
!371 = !{i8 0, i8 2}
!372 = !DILocalVariable(name: "val", scope: !373, file: !374, line: 196, type: !144)
!373 = distinct !DILexicalBlock(scope: !367, file: !374, line: 196, column: 14)
!374 = !DIFile(filename: "../src/libcore/macros.rs", directory: "/home/pierre/Projets/test")
!375 = !DILocation(line: 196, scope: !373)
!376 = !DILocation(line: 195, scope: !367)
!377 = !DILocalVariable(name: "err", scope: !378, file: !374, line: 197, type: !"{struct 64fff32a80fc4e5e/87c6}")
!378 = distinct !DILexicalBlock(scope: !367, file: !374, line: 197, column: 14)
!379 = !DILocation(line: 197, scope: !378)
!380 = !DILocation(line: 198, scope: !381)
!381 = distinct !DILexicalBlock(scope: !378, file: !374, line: 197, column: 44)
!382 = !DILocation(line: 1549, scope: !353)
!383 = !DILocalVariable(name: "self", arg: 1, scope: !257, file: !240, line: 1198, type: !137)
!384 = !DILocation(line: 1198, scope: !257)
!385 = !DILocalVariable(name: "name", arg: 2, scope: !257, file: !240, line: 1198, type: !"{&{str}}")
!386 = !DILocation(line: 1199, scope: !387)
!387 = distinct !DILexicalBlock(scope: !257, file: !240, line: 1198, column: 75)
!388 = !DILocalVariable(name: "self", arg: 1, scope: !261, file: !240, line: 1519, type: !265)
!389 = !DILocation(line: 1519, scope: !261)
!390 = !DILocalVariable(name: "f", arg: 2, scope: !261, file: !240, line: 1519, type: !137)
!391 = !DILocation(line: 1519, scope: !392)
!392 = distinct !DILexicalBlock(scope: !261, file: !240, line: 1519, column: 47)
!393 = !DILocalVariable(name: "self", arg: 1, scope: !266, file: !240, line: 1388, type: !265)
!394 = !DILocation(line: 1388, scope: !266)
!395 = !DILocalVariable(name: "f", arg: 2, scope: !266, file: !240, line: 1388, type: !137)
!396 = !DILocation(line: 1389, scope: !397)
!397 = distinct !DILexicalBlock(scope: !266, file: !240, line: 1388, column: 47)
!398 = !DILocalVariable(name: "old_width", scope: !397, file: !240, line: 1389, type: !"{enum 64fff32a80fc4e5e/748a<{usize},>}")
!399 = !DILocation(line: 1390, scope: !397)
!400 = !DILocalVariable(name: "old_flags", scope: !397, file: !240, line: 1390, type: !8)
!401 = !DILocation(line: 1396, scope: !397)
!402 = !DILocation(line: 1397, scope: !403)
!403 = distinct !DILexicalBlock(scope: !397, file: !240, line: 1396, column: 25)
!404 = !DILocation(line: 1399, scope: !403)
!405 = !{i32 0, i32 2}
!406 = !DILocation(line: 1400, scope: !407)
!407 = distinct !DILexicalBlock(scope: !408, file: !240, line: 1399, column: 34)
!408 = distinct !DILexicalBlock(scope: !403, file: !240, line: 1399, column: 19)
!409 = !DILocation(line: 1403, scope: !397)
!410 = !DILocation(line: 1405, scope: !397)
!411 = !DILocalVariable(name: "ret", scope: !397, file: !240, line: 1405, type: !"{enum 64fff32a80fc4e5e/7609<{()},{struct 64fff32a80fc4e5e/87c6},>}")
!412 = !DILocation(line: 1407, scope: !397)
!413 = !DILocation(line: 1408, scope: !397)
!414 = !DILocation(line: 1410, scope: !397)
!415 = !DILocation(line: 1388, scope: !397)
!416 = !DILocation(line: 129, scope: !268)
!417 = !DILocalVariable(name: "t", arg: 1, scope: !273, file: !274, line: 216, type: !"{struct 64fff32a80fc4e5e/87c6}")
!418 = !DILocation(line: 216, scope: !273)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment