Created
February 21, 2019 16:37
-
-
Save alexcrichton/f0098f0505ce1476a2bef944b03ff06e 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
set -ex | |
rm -f foo.wasm | |
# export PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/stage2/bin:$PATH | |
# export LD_LIBRARY_PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/stage2/lib | |
# rustc src/lib.rs -O --target wasm32-unknown-unknown --crate-type cdylib \ | |
# -o foo.ll \ | |
# -C codegen-units=1 \ | |
# -C lto \ | |
# --emit llvm-ir | |
export PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/llvm/bin:$PATH | |
export PATH=$HOME/code/rust3/build/x86_64-unknown-linux-gnu/lld/bin:$PATH | |
llc foo.ll -o foo.o -O2 -thread-model=single -filetype=obj \ | |
-opt-bisect-limit=243 | |
wasm-ld foo.o -o foo.wasm --no-entry --allow-undefined --export-dynamic | |
node foo.js |
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
const fs = require('fs'); | |
const bytes = fs.readFileSync('foo.wasm'); | |
const m = new WebAssembly.Module(bytes); | |
let memory = null; | |
const i = new WebAssembly.Instance(m, { | |
env: { | |
dlog: console.log, | |
memcpy: (a, b, c) => { | |
const view = new Uint8Array(memory.buffer); | |
const dest = view.subarray(a, a + c); | |
const src = view.subarray(b, b + c); | |
dest.set(src); | |
return a; | |
}, | |
} | |
}); | |
memory = i.exports.memory; | |
i.exports.run_test(); |
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 = 'lib.3a1fbbbh-cgu.0' | |
source_filename = "lib.3a1fbbbh-cgu.0" | |
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" | |
target triple = "wasm32-unknown-unknown" | |
%"alloc::string::String" = type { [0 x i32], %"alloc::vec::Vec<u8>", [0 x i32] } | |
%"alloc::vec::Vec<u8>" = type { [0 x i32], { i8*, i32 }, [0 x i32], i32, [0 x i32] } | |
%"core::fmt::Arguments" = type { [0 x i32], { [0 x { [0 x i8]*, i32 }]*, i32 }, [0 x i32], { i32*, i32 }, [0 x i32], { [0 x { i8*, i8* }]*, i32 }, [0 x i32] } | |
%"core::fmt::Formatter" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], { i32, i32 }, [0 x i32], { i32, i32 }, [0 x i32], { {}*, [3 x i32]* }, [0 x i32], { i32*, i32* }, [0 x i32], { [0 x { i8*, i8* }]*, i32 }, [0 x i8], i8, [3 x i8] } | |
%"core::panic::PanicInfo" = type { [0 x i32], { {}*, [3 x i32]* }, [0 x i32], i32*, [0 x i32], %"core::panic::Location", [0 x i32] } | |
%"core::panic::Location" = type { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] } | |
%"dlmalloc::dlmalloc::Chunk" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32] } | |
%"dlmalloc::dlmalloc::TreeChunk" = type { [0 x i32], %"dlmalloc::dlmalloc::Chunk", [0 x i32], [2 x %"dlmalloc::dlmalloc::TreeChunk"*], [0 x i32], %"dlmalloc::dlmalloc::TreeChunk"*, [0 x i32], i32, [0 x i32] } | |
%"dlmalloc::dlmalloc::Dlmalloc" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], [66 x %"dlmalloc::dlmalloc::Chunk"*], [0 x i32], [32 x %"dlmalloc::dlmalloc::TreeChunk"*], [0 x i32], i32, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32], %"dlmalloc::dlmalloc::Chunk"*, [0 x i32], i32, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Segment", [0 x i32], i32, [0 x i32], i8*, [0 x i32], i32, [0 x i32] } | |
%"dlmalloc::dlmalloc::Segment" = type { [0 x i32], i8*, [0 x i32], i32, [0 x i32], %"dlmalloc::dlmalloc::Segment"*, [0 x i32], i32, [0 x i32] } | |
%"fmt::rt::v1::Argument" = type { [0 x i32], { i32, i32 }, [0 x i32], %"fmt::rt::v1::FormatSpec", [0 x i32] } | |
%"fmt::rt::v1::FormatSpec" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], { i32, i32 }, [0 x i32], { i32, i32 }, [0 x i8], i8, [3 x i8] } | |
%"core::fmt::Void.187" = type { [0 x i8], {}, [0 x i8], {}, [0 x i8] } | |
@0 = private unnamed_addr constant <{ [2 x i8] }> <{ [2 x i8] c"()" }>, align 1 | |
@1 = private unnamed_addr constant <{ [10 x i8] }> <{ [10 x i8] c"x_offset: " }>, align 1 | |
@2 = private unnamed_addr constant <{ [6 x i8] }> <{ [6 x i8] c", yi: " }>, align 1 | |
@3 = private unnamed_addr constant <{ [8 x i8] }> <{ [8 x i8] c", cols: " }>, align 1 | |
@4 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [4 x i8], i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [10 x i8] }>, <{ [10 x i8] }>* @1, i32 0, i32 0, i32 0), [4 x i8] c"\0A\00\00\00", i8* getelementptr inbounds (<{ [6 x i8] }>, <{ [6 x i8] }>* @2, i32 0, i32 0, i32 0), [4 x i8] c"\06\00\00\00", i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @3, i32 0, i32 0, i32 0), [4 x i8] c"\08\00\00\00" }>, align 4 | |
@5 = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c"*\00\00\00" }>, align 4 | |
@6 = private unnamed_addr constant <{ i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0, i32 0), [4 x i8] zeroinitializer }>, align 4 | |
@_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E = internal unnamed_addr global <{ [8 x i8] }> zeroinitializer, align 8 | |
@_ZN3std9panicking9HOOK_LOCK17hd2940cb5218d3756E = internal unnamed_addr global <{ [4 x i8] }> zeroinitializer, align 4 | |
@_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E = internal global <{ [452 x i8] }> zeroinitializer, align 4 | |
@_ZN3std5alloc4HOOK17h764bafd5839a31b5E = internal unnamed_addr constant <{ [4 x i8] }> zeroinitializer, align 4 | |
@anon.744bfa4edaa14c29caacdd024c6ee3e0.0.llvm.12840304214050579564 = internal unnamed_addr constant { void (%"alloc::string::String"**)*, i32, i32, i1 (%"alloc::string::String"**, [0 x i8]*, i32)*, i1 (%"alloc::string::String"**, i32)*, i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* } { void (%"alloc::string::String"**)* bitcast (void (%"alloc::vec::Vec<u8>"**)* @_ZN4core3ptr18real_drop_in_place17h11f9a8883a7a2a93E to void (%"alloc::string::String"**)*), i32 4, i32 4, i1 (%"alloc::string::String"**, [0 x i8]*, i32)* @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_str17hd2f7186c6afb8473E", i1 (%"alloc::string::String"**, i32)* @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$10write_char17h3421ff6923860a71E", i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_fmt17h6116dc4b2b375d0dE" }, align 4 | |
@anon.3159f7bfd756b91e03039f83b95d896b.1 = private unnamed_addr constant <{ [23 x i8] }> <{ [23 x i8] c"src/liballoc/raw_vec.rs" }>, align 1 | |
@anon.3159f7bfd756b91e03039f83b95d896b.6.llvm.13677019499217490248 = internal unnamed_addr constant <{ i8*, [4 x i8], i8*, [12 x i8] }> <{ i8* getelementptr inbounds (<{ [17 x i8] }>, <{ [17 x i8] }>* @anon.3159f7bfd756b91e03039f83b95d896b.5, i32 0, i32 0, i32 0), [4 x i8] c"\11\00\00\00", i8* getelementptr inbounds (<{ [23 x i8] }>, <{ [23 x i8] }>* @anon.3159f7bfd756b91e03039f83b95d896b.1, i32 0, i32 0, i32 0), [12 x i8] c"\17\00\00\00\EA\02\00\00\05\00\00\00" }>, align 4 | |
@anon.3159f7bfd756b91e03039f83b95d896b.5 = private unnamed_addr constant <{ [17 x i8] }> <{ [17 x i8] c"capacity overflow" }>, align 1 | |
@anon.4607067c643420ef3dad7445f19d8a9e.2 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0, i32 0), [4 x i8] zeroinitializer, i8* getelementptr inbounds (<{ [2 x i8] }>, <{ [2 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.1, i32 0, i32 0, i32 0), [4 x i8] c"\02\00\00\00" }>, align 4 | |
@anon.4607067c643420ef3dad7445f19d8a9e.4 = private unnamed_addr constant <{ i8*, [12 x i8] }> <{ i8* getelementptr inbounds (<{ [21 x i8] }>, <{ [21 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.3, i32 0, i32 0, i32 0), [12 x i8] c"\15\00\00\00\E5\03\00\00\05\00\00\00" }>, align 4 | |
@anon.4607067c643420ef3dad7445f19d8a9e.3 = private unnamed_addr constant <{ [21 x i8] }> <{ [21 x i8] c"src/libcore/result.rs" }>, align 1 | |
@anon.4607067c643420ef3dad7445f19d8a9e.1 = private unnamed_addr constant <{ [2 x i8] }> <{ [2 x i8] c": " }>, align 1 | |
@anon.df567034a751418bb1907aa1d09cab77.0 = private unnamed_addr constant { { [0 x i8]*, i32 }, i32, i32 } { { [0 x i8]*, i32 } { [0 x i8]* bitcast ([44 x i8]* @str.0.314 to [0 x i8]*), i32 44 }, i32 355, i32 19 }, align 4 | |
@anon.df567034a751418bb1907aa1d09cab77.2 = private unnamed_addr constant <{ [51 x i8] }> <{ [51 x i8] c"a formatting trait implementation returned an error" }>, align 1 | |
@str.0.314 = internal constant [44 x i8] c"/home/alex/code/rust3/src/libcore/fmt/mod.rs" | |
@anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376 = internal unnamed_addr constant <{ [200 x i8] }> <{ [200 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899" }>, align 1 | |
@anon.136c3a089fa491cfa7e187c04edf4986.16 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [4 x i8] }> <{ i8* getelementptr inbounds (<{ [32 x i8] }>, <{ [32 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.14, i32 0, i32 0, i32 0), [4 x i8] c" \00\00\00", i8* getelementptr inbounds (<{ [18 x i8] }>, <{ [18 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.15, i32 0, i32 0, i32 0), [4 x i8] c"\12\00\00\00" }>, align 4 | |
@anon.136c3a089fa491cfa7e187c04edf4986.6 = private unnamed_addr constant <{ [0 x i8] }> zeroinitializer, align 4 | |
@anon.136c3a089fa491cfa7e187c04edf4986.7 = private unnamed_addr constant { void ({}*)*, i32, i32, i64 ({}*)* } { void ({}*)* @_ZN4core3ptr18real_drop_in_place17h026a842523523ee8E, i32 0, i32 1, i64 ({}*)* @"_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h6d1bf52e02a96543E" }, align 4 | |
@anon.136c3a089fa491cfa7e187c04edf4986.14 = private unnamed_addr constant <{ [32 x i8] }> <{ [32 x i8] c"index out of bounds: the len is " }>, align 1 | |
@anon.136c3a089fa491cfa7e187c04edf4986.15 = private unnamed_addr constant <{ [18 x i8] }> <{ [18 x i8] c" but the index is " }>, align 1 | |
@anon.9b00575310d81673ea82acb70d8d8f85.11 = private unnamed_addr constant { { [0 x i8]*, i32 }, i32, i32 } { { [0 x i8]*, i32 } { [0 x i8]* bitcast ([22 x i8]* @str.0.501 to [0 x i8]*), i32 22 }, i32 1087, i32 17 }, align 4 | |
@anon.9b00575310d81673ea82acb70d8d8f85.8 = private unnamed_addr constant <{ i8*, [4 x i8], i8*, [12 x i8] }> <{ i8* getelementptr inbounds (<{ [43 x i8] }>, <{ [43 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.6, i32 0, i32 0, i32 0), [4 x i8] c"+\00\00\00", i8* getelementptr inbounds (<{ [21 x i8] }>, <{ [21 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.7, i32 0, i32 0, i32 0), [12 x i8] c"\15\00\00\00Y\01\00\00\15\00\00\00" }>, align 4 | |
@anon.9b00575310d81673ea82acb70d8d8f85.10 = private unnamed_addr constant { { [0 x i8]*, i32 }, i32, i32 } { { [0 x i8]*, i32 } { [0 x i8]* bitcast ([22 x i8]* @str.0.501 to [0 x i8]*), i32 22 }, i32 1075, i32 40 }, align 4 | |
@str.0.501 = internal constant [22 x i8] c"src/libcore/fmt/mod.rs" | |
@anon.9b00575310d81673ea82acb70d8d8f85.6 = private unnamed_addr constant <{ [43 x i8] }> <{ [43 x i8] c"called `Option::unwrap()` on a `None` value" }>, align 1 | |
@anon.9b00575310d81673ea82acb70d8d8f85.7 = private unnamed_addr constant <{ [21 x i8] }> <{ [21 x i8] c"src/libcore/option.rs" }>, align 1 | |
@anon.9b00575310d81673ea82acb70d8d8f85.22 = private unnamed_addr constant <{ [5 x i8] }> <{ [5 x i8] c"Error" }>, align 1 | |
; <() as core::fmt::Debug>::fmt | |
; Function Attrs: inlinehint nounwind | |
define internal zeroext i1 @"_ZN45_$LT$$LP$$RP$$u20$as$u20$core..fmt..Debug$GT$3fmt17h48da19805960fda2E"({}* noalias nocapture nonnull readonly align 1 %self, %"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52) %f) unnamed_addr #0 { | |
start: | |
; call core::fmt::Formatter::pad | |
%0 = tail call fastcc zeroext i1 @_ZN4core3fmt9Formatter3pad17hbc71133907d50792E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %f, [0 x i8]* noalias nonnull readonly align 1 bitcast (<{ [2 x i8] }>* @0 to [0 x i8]*), i32 2) | |
ret i1 %0 | |
} | |
; Function Attrs: nounwind | |
define void @run_test() unnamed_addr #1 { | |
start: | |
%_33 = alloca [3 x { i8*, i8* }], align 4 | |
%_26 = alloca %"core::fmt::Arguments", align 4 | |
%_25 = alloca %"alloc::string::String", align 4 | |
%x_offset = alloca i32, align 4 | |
%cols = alloca i32, align 4 | |
%0 = bitcast i32* %cols to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) | |
store i32 7, i32* %cols, align 4 | |
%1 = bitcast i32* %x_offset to i8* | |
%2 = bitcast %"core::fmt::Arguments"* %_26 to i8* | |
%3 = bitcast [3 x { i8*, i8* }]* %_33 to i8* | |
%4 = bitcast [3 x { i8*, i8* }]* %_33 to i32** | |
%5 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 0, i32 1 | |
%6 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 1, i32 0 | |
%7 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 1, i32 1 | |
%8 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 2, i32 0 | |
%9 = bitcast i8** %8 to i32** | |
%10 = getelementptr inbounds [3 x { i8*, i8* }], [3 x { i8*, i8* }]* %_33, i32 0, i32 2, i32 1 | |
%11 = bitcast %"core::fmt::Arguments"* %_26 to [0 x { [0 x i8]*, i32 }]** | |
%12 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 1, i32 1 | |
%13 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 3, i32 0 | |
%14 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 5, i32 0 | |
%15 = bitcast [0 x { i8*, i8* }]** %14 to [3 x { i8*, i8* }]** | |
%16 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_26, i32 0, i32 5, i32 1 | |
%17 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %_25, i32 0, i32 1, i32 1, i32 1 | |
%18 = bitcast %"alloc::string::String"* %_25 to i8** | |
br label %bb4.i | |
bb4.i: ; preds = %bb37, %start | |
%prev_x_offset.042 = phi i32 [ -1, %start ], [ %25, %bb37 ] | |
%iter.sroa.0.041 = phi i32 [ 0, %start ], [ %spec.select, %bb37 ] | |
%19 = icmp ult i32 %iter.sroa.0.041, 3 | |
%20 = zext i1 %19 to i32 | |
%spec.select = add i32 %iter.sroa.0.041, %20 | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %1) | |
%.urem = and i32 %iter.sroa.0.041, 1 | |
%21 = icmp ne i32 %.urem, 0 | |
%storemerge = select i1 %21, i32 23, i32 0 | |
store i32 %storemerge, i32* %x_offset, align 4 | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %2) | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %3) | |
store i32* %x_offset, i32** %4, align 4 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE" to i8*), i8** %5, align 4 | |
store i8* getelementptr inbounds (<{ [4 x i8] }>, <{ [4 x i8] }>* @5, i32 0, i32 0, i32 0), i8** %6, align 4 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE" to i8*), i8** %7, align 4 | |
store i32* %cols, i32** %9, align 4 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE" to i8*), i8** %10, align 4 | |
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8], i8*, [4 x i8], i8*, [4 x i8] }>* @4 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %11, align 4, !alias.scope !0, !noalias !3 | |
store i32 3, i32* %12, align 4, !alias.scope !0, !noalias !3 | |
store i32* null, i32** %13, align 4, !alias.scope !0, !noalias !3 | |
store [3 x { i8*, i8* }]* %_33, [3 x { i8*, i8* }]** %15, align 4, !alias.scope !0, !noalias !3 | |
store i32 3, i32* %16, align 4, !alias.scope !0, !noalias !3 | |
; call alloc::fmt::format | |
call fastcc void @_ZN5alloc3fmt6format17h80561ab88cfa3a4eE(%"alloc::string::String"* noalias nocapture nonnull dereferenceable(12) %_25, %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %_26) | |
%22 = load i32, i32* %17, align 4, !alias.scope !6 | |
%23 = icmp eq i32 %22, 0 | |
br i1 %23, label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit, label %bb4.i.i.i.i.i | |
bb5: ; preds = %bb37 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) | |
ret void | |
bb4.i.i.i.i.i: ; preds = %bb4.i | |
%24 = load i8*, i8** %18, align 4, !nonnull !9 | |
call fastcc void @__rust_dealloc(i8* nonnull %24) #4 | |
br label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit | |
_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit: ; preds = %bb4.i, %bb4.i.i.i.i.i | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %2) | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %3) | |
%25 = load i32, i32* %x_offset, align 4 | |
%26 = icmp eq i32 %.urem, 0 | |
br i1 %26, label %bb24, label %bb30 | |
bb24: ; preds = %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit | |
; call lib::effects | |
call fastcc void @_ZN3lib7effects17hb67e83165c3118ccE() | |
br label %bb30 | |
bb30: ; preds = %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit, %bb24 | |
%27 = load i32, i32* %cols, align 4 | |
%28 = icmp eq i32 %27, 1 | |
%_62.0.off0 = and i1 %21, %28 | |
br i1 %_62.0.off0, label %bb31, label %bb32 | |
bb31: ; preds = %bb30 | |
; call lib::effects | |
call fastcc void @_ZN3lib7effects17hb67e83165c3118ccE() | |
br label %bb32 | |
bb32: ; preds = %bb31, %bb30 | |
call void @dlog(i32 1000000) | |
call void @dlog(i32 %prev_x_offset.042) | |
call void @dlog(i32 %25) | |
%29 = icmp eq i32 %prev_x_offset.042, %25 | |
br i1 %29, label %bb36, label %bb37 | |
bb36: ; preds = %bb32 | |
call void @llvm.trap() #4 | |
unreachable | |
bb37: ; preds = %bb32 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %1) | |
br i1 %19, label %bb4.i, label %bb5 | |
} | |
; lib::effects | |
; Function Attrs: noinline nounwind | |
define internal fastcc void @_ZN3lib7effects17hb67e83165c3118ccE() unnamed_addr #2 { | |
start: | |
%_9 = alloca [1 x { i8*, i8* }], align 4 | |
%_2 = alloca %"core::fmt::Arguments", align 4 | |
%_1 = alloca %"alloc::string::String", align 4 | |
%0 = bitcast %"core::fmt::Arguments"* %_2 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %0) | |
%1 = bitcast [1 x { i8*, i8* }]* %_9 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %1) | |
%2 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %_9, i32 0, i32 0, i32 0 | |
store i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0, i32 0), i8** %2, align 4 | |
%3 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %_9, i32 0, i32 0, i32 1 | |
store i8* bitcast (i1 ({}*, %"core::fmt::Formatter"*)* @"_ZN45_$LT$$LP$$RP$$u20$as$u20$core..fmt..Debug$GT$3fmt17h48da19805960fda2E" to i8*), i8** %3, align 4 | |
%4 = bitcast %"core::fmt::Arguments"* %_2 to [0 x { [0 x i8]*, i32 }]** | |
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8] }>* @6 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %4, align 4, !alias.scope !10, !noalias !13 | |
%5 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 1, i32 1 | |
store i32 1, i32* %5, align 4, !alias.scope !10, !noalias !13 | |
%6 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 3, i32 0 | |
store i32* null, i32** %6, align 4, !alias.scope !10, !noalias !13 | |
%7 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 5, i32 0 | |
%8 = bitcast [0 x { i8*, i8* }]** %7 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %_9, [1 x { i8*, i8* }]** %8, align 4, !alias.scope !10, !noalias !13 | |
%9 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_2, i32 0, i32 5, i32 1 | |
store i32 1, i32* %9, align 4, !alias.scope !10, !noalias !13 | |
; call alloc::fmt::format | |
call fastcc void @_ZN5alloc3fmt6format17h80561ab88cfa3a4eE(%"alloc::string::String"* noalias nocapture nonnull dereferenceable(12) %_1, %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %_2) | |
%10 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %_1, i32 0, i32 1, i32 1, i32 1 | |
%11 = load i32, i32* %10, align 4, !alias.scope !16 | |
%12 = icmp eq i32 %11, 0 | |
br i1 %12, label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit, label %bb4.i.i.i.i.i | |
bb4.i.i.i.i.i: ; preds = %start | |
%13 = bitcast %"alloc::string::String"* %_1 to i8** | |
%14 = load i8*, i8** %13, align 4, !nonnull !9 | |
call fastcc void @__rust_dealloc(i8* nonnull %14) #4 | |
br label %_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit | |
_ZN4core3ptr18real_drop_in_place17hc21d501749c0e62aE.exit: ; preds = %start, %bb4.i.i.i.i.i | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %0) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %1) | |
ret void | |
} | |
; Function Attrs: nounwind | |
declare void @dlog(i32) unnamed_addr #1 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #3 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #3 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) #3 | |
; Function Attrs: nounwind | |
declare void @llvm.assume(i1) #4 | |
; std::panicking::rust_panic_with_hook | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @_ZN3std9panicking20rust_panic_with_hook17hc07e9a843d13ed77E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(16)) unnamed_addr #5 { | |
%2 = load i32, i32* bitcast (<{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E to i32*), align 8, !range !19, !noalias !20 | |
%3 = icmp eq i32 %2, 1 | |
br i1 %3, label %5, label %4 | |
; <label>:4: ; preds = %1 | |
store i64 4294967297, i64* bitcast (<{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E to i64*), align 8, !noalias !27 | |
br label %10 | |
; <label>:5: ; preds = %1 | |
%6 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E, i32 0, i32 0, i32 4) to i32*), align 4, !noalias !30 | |
%7 = add i32 %6, 1 | |
store i32 %7, i32* bitcast (i8* getelementptr inbounds (<{ [8 x i8] }>, <{ [8 x i8] }>* @_ZN3std9panicking18update_panic_count11PANIC_COUNT7__getit5__KEY17hed108aba8152b0a5E, i32 0, i32 0, i32 4) to i32*), align 4, !noalias !33 | |
%8 = icmp ugt i32 %7, 2 | |
br i1 %8, label %9, label %10 | |
; <label>:9: ; preds = %5 | |
tail call void @llvm.trap() | |
unreachable | |
; <label>:10: ; preds = %5, %4 | |
%11 = phi i32 [ 1, %4 ], [ %7, %5 ] | |
%12 = load i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std9panicking9HOOK_LOCK17hd2940cb5218d3756E to i32*), align 4 | |
%13 = icmp sgt i32 %12, -1 | |
br i1 %13, label %15, label %14 | |
; <label>:14: ; preds = %10 | |
tail call void @llvm.trap() #4 | |
unreachable | |
; <label>:15: ; preds = %10 | |
store i32 %12, i32* bitcast (<{ [4 x i8] }>* @_ZN3std9panicking9HOOK_LOCK17hd2940cb5218d3756E to i32*), align 4 | |
%16 = icmp ugt i32 %11, 1 | |
br i1 %16, label %17, label %18 | |
; <label>:17: ; preds = %15 | |
call void @llvm.trap() | |
unreachable | |
; <label>:18: ; preds = %15 | |
call fastcc void @rust_panic() | |
unreachable | |
} | |
; Function Attrs: cold noreturn nounwind | |
declare void @llvm.trap() #6 | |
; Function Attrs: noinline noreturn nounwind | |
define internal fastcc void @rust_panic() unnamed_addr #7 { | |
call void @llvm.trap() #4 | |
unreachable | |
} | |
; std::panicking::continue_panic_fmt | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @_ZN3std9panicking18continue_panic_fmt17h90572875f905dcb1E(%"core::panic::PanicInfo"* noalias nocapture readonly align 4 dereferenceable(28)) unnamed_addr #5 { | |
%2 = alloca { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, align 4 | |
%3 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 0 | |
%4 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 3 | |
%5 = load i32*, i32** %4, align 4, !alias.scope !34 | |
; call <core::option::Option<T>>::unwrap | |
%6 = tail call fastcc align 4 dereferenceable(24) %"core::fmt::Arguments"* @"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17he251937fb4799819E"(i32* noalias readonly align 4 dereferenceable_or_null(24) %5) | |
%7 = bitcast { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %7) | |
%8 = load i32, i32* %3, align 4, !range !37, !alias.scope !38 | |
%9 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 1 | |
%10 = load i32, i32* %9, align 4, !alias.scope !38 | |
%11 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 2 | |
%12 = load i32, i32* %11, align 4, !alias.scope !41 | |
%13 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %0, i32 0, i32 5, i32 0, i32 3 | |
%14 = load i32, i32* %13, align 4, !alias.scope !44 | |
%15 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 0, i32 0 | |
store i32 %8, i32* %15, align 4 | |
%16 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 1, i32 1 | |
store i32 %10, i32* %16, align 4 | |
%17 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 3 | |
store i32 %12, i32* %17, align 4 | |
%18 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 5 | |
store i32 %14, i32* %18, align 4 | |
; call std::panicking::rust_panic_with_hook | |
call fastcc void @_ZN3std9panicking20rust_panic_with_hook17hc07e9a843d13ed77E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nonnull readonly align 4 dereferenceable(16) %2) | |
unreachable | |
} | |
; <core::option::Option<T>>::unwrap | |
; Function Attrs: inlinehint nounwind | |
define internal fastcc align 4 dereferenceable(24) %"core::fmt::Arguments"* @"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$6unwrap17he251937fb4799819E"(i32* noalias readonly align 4 dereferenceable_or_null(24)) unnamed_addr #0 { | |
%2 = icmp eq i32* %0, null | |
br i1 %2, label %3, label %4 | |
; <label>:3: ; preds = %1 | |
; call core::panicking::panic | |
tail call fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(24) bitcast (<{ i8*, [4 x i8], i8*, [12 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.8 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
; <label>:4: ; preds = %1 | |
%5 = bitcast i32* %0 to %"core::fmt::Arguments"* | |
ret %"core::fmt::Arguments"* %5 | |
} | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @rust_begin_unwind(%"core::panic::PanicInfo"* noalias nocapture readonly align 4 dereferenceable(28)) unnamed_addr #5 { | |
; call std::panicking::continue_panic_fmt | |
tail call fastcc void @_ZN3std9panicking18continue_panic_fmt17h90572875f905dcb1E(%"core::panic::PanicInfo"* noalias nonnull readonly align 4 dereferenceable(28) %0) | |
unreachable | |
} | |
; Function Attrs: nounwind readnone speculatable | |
declare { i32, i1 } @llvm.umul.with.overflow.i32(i32, i32) #8 | |
; Function Attrs: nounwind readnone speculatable | |
declare { i32, i1 } @llvm.uadd.with.overflow.i32(i32, i32) #8 | |
; Function Attrs: nounwind readnone speculatable | |
declare i32 @llvm.ctlz.i32(i32, i1) #8 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #3 | |
; Function Attrs: nounwind | |
define internal fastcc i8* @__rdl_alloc(i32, i32) unnamed_addr #1 { | |
%3 = icmp ugt i32 %1, 8 | |
br i1 %3, label %6, label %4 | |
; <label>:4: ; preds = %2 | |
; call dlmalloc::dlmalloc::Dlmalloc::malloc | |
%5 = tail call fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32 %0) #4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit | |
; <label>:6: ; preds = %2 | |
%7 = icmp ugt i32 %1, 16 | |
%8 = select i1 %7, i32 %1, i32 16 | |
%9 = sub i32 -64, %8 | |
%10 = icmp ugt i32 %9, %0 | |
br i1 %10, label %11, label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit | |
; <label>:11: ; preds = %6 | |
%12 = icmp ult i32 %0, 11 | |
%13 = add i32 %0, 11 | |
%14 = and i32 %13, -8 | |
%15 = select i1 %12, i32 16, i32 %14 | |
%16 = add i32 %8, 12 | |
%17 = add i32 %16, %15 | |
; call dlmalloc::dlmalloc::Dlmalloc::malloc | |
%18 = tail call fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32 %17) #4 | |
%19 = icmp eq i8* %18, null | |
br i1 %19, label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit, label %20 | |
; <label>:20: ; preds = %11 | |
%21 = getelementptr inbounds i8, i8* %18, i32 -8 | |
%22 = bitcast i8* %21 to %"dlmalloc::dlmalloc::Chunk"* | |
%23 = ptrtoint i8* %18 to i32 | |
%24 = add i32 %8, -1 | |
%25 = and i32 %24, %23 | |
%26 = icmp eq i32 %25, 0 | |
br i1 %26, label %74, label %27 | |
; <label>:27: ; preds = %20 | |
%28 = add i32 %24, %23 | |
%29 = sub i32 0, %8 | |
%30 = and i32 %28, %29 | |
%31 = inttoptr i32 %30 to i8* | |
%32 = getelementptr inbounds i8, i8* %31, i32 -8 | |
%33 = ptrtoint i8* %32 to i32 | |
%34 = ptrtoint i8* %21 to i32 | |
%35 = sub i32 %33, %34 | |
%36 = icmp ugt i32 %35, 16 | |
%37 = getelementptr inbounds i8, i8* %32, i32 %8 | |
%38 = select i1 %36, i8* %32, i8* %37 | |
%39 = bitcast i8* %38 to %"dlmalloc::dlmalloc::Chunk"* | |
%40 = ptrtoint i8* %38 to i32 | |
%41 = sub i32 %40, %34 | |
%42 = getelementptr inbounds i8, i8* %18, i32 -4 | |
%43 = bitcast i8* %42 to i32* | |
%44 = load i32, i32* %43, align 4 | |
%45 = and i32 %44, -8 | |
%46 = sub i32 %45, %41 | |
%47 = and i32 %44, 3 | |
%48 = icmp eq i32 %47, 0 | |
br i1 %48, label %49, label %56 | |
; <label>:49: ; preds = %27 | |
%50 = bitcast i8* %21 to i32* | |
%51 = load i32, i32* %50, align 4 | |
%52 = bitcast i8* %38 to i32* | |
%53 = add i32 %51, %41 | |
store i32 %53, i32* %52, align 4 | |
%54 = getelementptr inbounds i8, i8* %38, i32 4 | |
%55 = bitcast i8* %54 to i32* | |
store i32 %46, i32* %55, align 4 | |
br label %74 | |
; <label>:56: ; preds = %27 | |
%57 = getelementptr inbounds i8, i8* %38, i32 4 | |
%58 = bitcast i8* %57 to i32* | |
%59 = load i32, i32* %58, align 4 | |
%60 = and i32 %59, 1 | |
%61 = or i32 %46, %60 | |
%62 = or i32 %61, 2 | |
store i32 %62, i32* %58, align 4 | |
%63 = getelementptr inbounds i8, i8* %38, i32 %46 | |
%64 = getelementptr inbounds i8, i8* %63, i32 4 | |
%65 = bitcast i8* %64 to i32* | |
%66 = load i32, i32* %65, align 4 | |
%67 = or i32 %66, 1 | |
store i32 %67, i32* %65, align 4 | |
%68 = load i32, i32* %43, align 4 | |
%69 = and i32 %68, 1 | |
%70 = or i32 %41, %69 | |
%71 = or i32 %70, 2 | |
store i32 %71, i32* %43, align 4 | |
%72 = load i32, i32* %58, align 4 | |
%73 = or i32 %72, 1 | |
store i32 %73, i32* %58, align 4 | |
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* nonnull %22, i32 %41) #4 | |
br label %74 | |
; <label>:74: ; preds = %56, %49, %20 | |
%75 = phi i8* [ %21, %20 ], [ %38, %56 ], [ %38, %49 ] | |
%76 = phi %"dlmalloc::dlmalloc::Chunk"* [ %22, %20 ], [ %39, %56 ], [ %39, %49 ] | |
%77 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %76, i32 0, i32 3 | |
%78 = load i32, i32* %77, align 4 | |
%79 = and i32 %78, 3 | |
%80 = icmp eq i32 %79, 0 | |
br i1 %80, label %100, label %81 | |
; <label>:81: ; preds = %74 | |
%82 = and i32 %78, -8 | |
%83 = add i32 %15, 16 | |
%84 = icmp ugt i32 %82, %83 | |
br i1 %84, label %85, label %100 | |
; <label>:85: ; preds = %81 | |
%86 = sub i32 %82, %15 | |
%87 = getelementptr inbounds i8, i8* %75, i32 %15 | |
%88 = bitcast i8* %87 to %"dlmalloc::dlmalloc::Chunk"* | |
%89 = and i32 %78, 1 | |
%90 = or i32 %15, %89 | |
%91 = or i32 %90, 2 | |
store i32 %91, i32* %77, align 4 | |
%92 = getelementptr inbounds i8, i8* %87, i32 4 | |
%93 = bitcast i8* %92 to i32* | |
%94 = or i32 %86, 3 | |
store i32 %94, i32* %93, align 4 | |
%95 = getelementptr inbounds i8, i8* %75, i32 %82 | |
%96 = getelementptr inbounds i8, i8* %95, i32 4 | |
%97 = bitcast i8* %96 to i32* | |
%98 = load i32, i32* %97, align 4 | |
%99 = or i32 %98, 1 | |
store i32 %99, i32* %97, align 4 | |
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* %88, i32 %86) #4 | |
br label %100 | |
; <label>:100: ; preds = %85, %81, %74 | |
%101 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %76, i32 0, i32 5 | |
%102 = bitcast %"dlmalloc::dlmalloc::Chunk"** %101 to i8* | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit | |
_ZN8dlmalloc8dlmalloc8Dlmalloc8memalign17h3b28b3c6efaa12a4E.exit: ; preds = %100, %11, %6, %4 | |
%103 = phi i8* [ %5, %4 ], [ %102, %100 ], [ null, %11 ], [ null, %6 ] | |
ret i8* %103 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc void @__rdl_dealloc(i8*) unnamed_addr #1 { | |
; call dlmalloc::dlmalloc::Dlmalloc::free | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc4free17he8b0435c3a66c50fE(i8* %0) #4 | |
ret void | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i8* @__rdl_realloc(i8*, i32) unnamed_addr #1 { | |
%3 = icmp ult i32 %1, -64 | |
br i1 %3, label %4, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
; <label>:4: ; preds = %2 | |
%5 = icmp ult i32 %1, 11 | |
%6 = add i32 %1, 11 | |
%7 = and i32 %6, -8 | |
%8 = select i1 %5, i32 16, i32 %7 | |
%9 = getelementptr inbounds i8, i8* %0, i32 -8 | |
%10 = getelementptr inbounds i8, i8* %0, i32 -4 | |
%11 = bitcast i8* %10 to i32* | |
%12 = load i32, i32* %11, align 4 | |
%13 = and i32 %12, -8 | |
%14 = getelementptr inbounds i8, i8* %9, i32 %13 | |
%15 = bitcast i8* %14 to %"dlmalloc::dlmalloc::Chunk"* | |
%16 = and i32 %12, 3 | |
%17 = icmp eq i32 %16, 0 | |
br i1 %17, label %18, label %26 | |
; <label>:18: ; preds = %4 | |
%19 = icmp ult i32 %8, 256 | |
br i1 %19, label %157, label %20 | |
; <label>:20: ; preds = %18 | |
%21 = or i32 %8, 4 | |
%22 = icmp uge i32 %13, %21 | |
%23 = sub i32 %13, %8 | |
%24 = icmp ult i32 %23, 131073 | |
%25 = and i1 %22, %24 | |
br i1 %25, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit, label %157 | |
; <label>:26: ; preds = %4 | |
%27 = icmp ult i32 %13, %8 | |
br i1 %27, label %31, label %28 | |
; <label>:28: ; preds = %26 | |
%29 = sub i32 %13, %8 | |
%30 = icmp ult i32 %29, 16 | |
br i1 %30, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit, label %34 | |
; <label>:31: ; preds = %26 | |
%32 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%33 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %32, %15 | |
br i1 %33, label %47, label %51 | |
; <label>:34: ; preds = %28 | |
%35 = getelementptr inbounds i8, i8* %9, i32 %8 | |
%36 = bitcast i8* %35 to %"dlmalloc::dlmalloc::Chunk"* | |
%37 = and i32 %12, 1 | |
%38 = or i32 %8, %37 | |
%39 = or i32 %38, 2 | |
store i32 %39, i32* %11, align 4 | |
%40 = getelementptr inbounds i8, i8* %35, i32 4 | |
%41 = bitcast i8* %40 to i32* | |
%42 = or i32 %29, 3 | |
store i32 %42, i32* %41, align 4 | |
%43 = getelementptr inbounds i8, i8* %14, i32 4 | |
%44 = bitcast i8* %43 to i32* | |
%45 = load i32, i32* %44, align 4 | |
%46 = or i32 %45, 1 | |
store i32 %46, i32* %44, align 4 | |
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* nonnull %36, i32 %29) #4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
; <label>:47: ; preds = %31 | |
%48 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%49 = add i32 %48, %13 | |
%50 = icmp ugt i32 %49, %8 | |
br i1 %50, label %54, label %157 | |
; <label>:51: ; preds = %31 | |
%52 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%53 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %52, %15 | |
br i1 %53, label %63, label %67 | |
; <label>:54: ; preds = %47 | |
%55 = sub i32 %49, %8 | |
%56 = getelementptr inbounds i8, i8* %9, i32 %8 | |
%57 = and i32 %12, 1 | |
%58 = or i32 %8, %57 | |
%59 = or i32 %58, 2 | |
store i32 %59, i32* %11, align 4 | |
%60 = getelementptr inbounds i8, i8* %56, i32 4 | |
%61 = bitcast i8* %60 to i32* | |
%62 = or i32 %55, 1 | |
store i32 %62, i32* %61, align 4 | |
store i8* %56, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
store i32 %55, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
; <label>:63: ; preds = %51 | |
%64 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%65 = add i32 %64, %13 | |
%66 = icmp ult i32 %65, %8 | |
br i1 %66, label %157, label %73 | |
; <label>:67: ; preds = %51 | |
%68 = getelementptr inbounds i8, i8* %14, i32 4 | |
%69 = bitcast i8* %68 to i32* | |
%70 = load i32, i32* %69, align 4 | |
%71 = and i32 %70, 2 | |
%72 = icmp eq i32 %71, 0 | |
br i1 %72, label %103, label %157 | |
; <label>:73: ; preds = %63 | |
%74 = sub i32 %65, %8 | |
%75 = icmp ult i32 %74, 16 | |
br i1 %75, label %91, label %76 | |
; <label>:76: ; preds = %73 | |
%77 = getelementptr inbounds i8, i8* %9, i32 %8 | |
%78 = bitcast i8* %77 to %"dlmalloc::dlmalloc::Chunk"* | |
%79 = getelementptr inbounds i8, i8* %9, i32 %65 | |
%80 = and i32 %12, 1 | |
%81 = or i32 %8, %80 | |
%82 = or i32 %81, 2 | |
store i32 %82, i32* %11, align 4 | |
%83 = getelementptr inbounds i8, i8* %77, i32 4 | |
%84 = bitcast i8* %83 to i32* | |
%85 = or i32 %74, 1 | |
store i32 %85, i32* %84, align 4 | |
%86 = bitcast i8* %79 to i32* | |
store i32 %74, i32* %86, align 4 | |
%87 = getelementptr inbounds i8, i8* %79, i32 4 | |
%88 = bitcast i8* %87 to i32* | |
%89 = load i32, i32* %88, align 4 | |
%90 = and i32 %89, -2 | |
store i32 %90, i32* %88, align 4 | |
br label %100 | |
; <label>:91: ; preds = %73 | |
%92 = and i32 %12, 1 | |
%93 = or i32 %92, %65 | |
%94 = or i32 %93, 2 | |
store i32 %94, i32* %11, align 4 | |
%95 = getelementptr inbounds i8, i8* %9, i32 %65 | |
%96 = getelementptr inbounds i8, i8* %95, i32 4 | |
%97 = bitcast i8* %96 to i32* | |
%98 = load i32, i32* %97, align 4 | |
%99 = or i32 %98, 1 | |
store i32 %99, i32* %97, align 4 | |
br label %100 | |
; <label>:100: ; preds = %91, %76 | |
%101 = phi i32 [ %74, %76 ], [ 0, %91 ] | |
%102 = phi %"dlmalloc::dlmalloc::Chunk"* [ %78, %76 ], [ null, %91 ] | |
store i32 %101, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* %102, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
; <label>:103: ; preds = %67 | |
%104 = and i32 %70, -8 | |
%105 = add i32 %104, %13 | |
%106 = icmp ult i32 %105, %8 | |
br i1 %106, label %157, label %107 | |
; <label>:107: ; preds = %103 | |
%108 = sub i32 %105, %8 | |
%109 = icmp ult i32 %104, 256 | |
br i1 %109, label %110, label %128 | |
; <label>:110: ; preds = %107 | |
%111 = getelementptr inbounds i8, i8* %14, i32 8 | |
%112 = bitcast i8* %111 to %"dlmalloc::dlmalloc::Chunk"** | |
%113 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %112, align 4 | |
%114 = getelementptr inbounds i8, i8* %14, i32 12 | |
%115 = bitcast i8* %114 to %"dlmalloc::dlmalloc::Chunk"** | |
%116 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %115, align 4 | |
%117 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %116, %113 | |
br i1 %117, label %118, label %125 | |
; <label>:118: ; preds = %110 | |
%119 = lshr i32 %70, 3 | |
%120 = and i32 %119, 31 | |
%121 = shl i32 1, %120 | |
%122 = xor i32 %121, -1 | |
%123 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%124 = and i32 %123, %122 | |
store i32 %124, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %130 | |
; <label>:125: ; preds = %110 | |
%126 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %113, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %116, %"dlmalloc::dlmalloc::Chunk"** %126, align 4 | |
%127 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %116, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %113, %"dlmalloc::dlmalloc::Chunk"** %127, align 4 | |
br label %130 | |
; <label>:128: ; preds = %107 | |
%129 = bitcast i8* %14 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %129) #4 | |
br label %130 | |
; <label>:130: ; preds = %128, %125, %118 | |
%131 = icmp ult i32 %108, 16 | |
br i1 %131, label %132, label %142 | |
; <label>:132: ; preds = %130 | |
%133 = load i32, i32* %11, align 4 | |
%134 = and i32 %133, 1 | |
%135 = or i32 %105, %134 | |
%136 = or i32 %135, 2 | |
store i32 %136, i32* %11, align 4 | |
%137 = getelementptr inbounds i8, i8* %9, i32 %105 | |
%138 = getelementptr inbounds i8, i8* %137, i32 4 | |
%139 = bitcast i8* %138 to i32* | |
%140 = load i32, i32* %139, align 4 | |
%141 = or i32 %140, 1 | |
store i32 %141, i32* %139, align 4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
; <label>:142: ; preds = %130 | |
%143 = getelementptr inbounds i8, i8* %9, i32 %8 | |
%144 = bitcast i8* %143 to %"dlmalloc::dlmalloc::Chunk"* | |
%145 = load i32, i32* %11, align 4 | |
%146 = and i32 %145, 1 | |
%147 = or i32 %8, %146 | |
%148 = or i32 %147, 2 | |
store i32 %148, i32* %11, align 4 | |
%149 = getelementptr inbounds i8, i8* %143, i32 4 | |
%150 = bitcast i8* %149 to i32* | |
%151 = or i32 %108, 3 | |
store i32 %151, i32* %150, align 4 | |
%152 = getelementptr inbounds i8, i8* %9, i32 %105 | |
%153 = getelementptr inbounds i8, i8* %152, i32 4 | |
%154 = bitcast i8* %153 to i32* | |
%155 = load i32, i32* %154, align 4 | |
%156 = or i32 %155, 1 | |
store i32 %156, i32* %154, align 4 | |
; call dlmalloc::dlmalloc::Dlmalloc::dispose_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"* nonnull %144, i32 %108) #4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
; <label>:157: ; preds = %103, %67, %63, %47, %20, %18 | |
; call dlmalloc::dlmalloc::Dlmalloc::malloc | |
%158 = tail call fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32 %1) #4 | |
%159 = icmp eq i8* %158, null | |
br i1 %159, label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit, label %160 | |
; <label>:160: ; preds = %157 | |
%161 = load i32, i32* %11, align 4 | |
%162 = and i32 %161, -8 | |
%163 = and i32 %161, 3 | |
%164 = icmp eq i32 %163, 0 | |
%165 = select i1 %164, i32 8, i32 4 | |
%166 = sub i32 %162, %165 | |
%167 = icmp ugt i32 %166, %1 | |
%168 = select i1 %167, i32 %1, i32 %166 | |
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %158, i8* nonnull align 1 %0, i32 %168, i1 false) #4 | |
; call dlmalloc::dlmalloc::Dlmalloc::free | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc4free17he8b0435c3a66c50fE(i8* nonnull %0) #4 | |
br label %_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit | |
_ZN8dlmalloc8dlmalloc8Dlmalloc7realloc17h43143c4766c56a41E.exit: ; preds = %160, %157, %142, %132, %100, %54, %34, %28, %20, %2 | |
%169 = phi i8* [ null, %157 ], [ %158, %160 ], [ null, %2 ], [ %0, %142 ], [ %0, %132 ], [ %0, %100 ], [ %0, %54 ], [ %0, %34 ], [ %0, %28 ], [ %0, %20 ] | |
ret i8* %169 | |
} | |
; dlmalloc::dlmalloc::Dlmalloc::malloc | |
; Function Attrs: nounwind | |
define internal fastcc i8* @_ZN8dlmalloc8dlmalloc8Dlmalloc6malloc17h13d93c13f84e2f04E(i32) unnamed_addr #1 { | |
%2 = icmp ult i32 %0, 245 | |
br i1 %2, label %3, label %14 | |
; <label>:3: ; preds = %1 | |
%4 = icmp ult i32 %0, 11 | |
%5 = add i32 %0, 11 | |
%6 = and i32 %5, -8 | |
%7 = select i1 %4, i32 16, i32 %6 | |
%8 = lshr exact i32 %7, 3 | |
%9 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%10 = and i32 %8, 31 | |
%11 = lshr i32 %9, %10 | |
%12 = and i32 %11, 3 | |
%13 = icmp eq i32 %12, 0 | |
br i1 %13, label %47, label %16 | |
; <label>:14: ; preds = %1 | |
%15 = icmp ult i32 %0, -64 | |
br i1 %15, label %201, label %50 | |
; <label>:16: ; preds = %3 | |
%17 = and i32 %11, 1 | |
%18 = xor i32 %17, 1 | |
%19 = add nuw nsw i32 %18, %8 | |
%20 = shl nuw nsw i32 %19, 1 | |
%21 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %20 | |
%22 = bitcast %"dlmalloc::dlmalloc::Chunk"** %21 to %"dlmalloc::dlmalloc::Chunk"* | |
%23 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %21, i32 2 | |
%24 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %23, align 4 | |
%25 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %24, i32 0, i32 5 | |
%26 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %25, align 4 | |
%27 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %26, %22 | |
br i1 %27, label %28, label %33 | |
; <label>:28: ; preds = %16 | |
%29 = and i32 %19, 31 | |
%30 = shl i32 1, %29 | |
%31 = xor i32 %30, -1 | |
%32 = and i32 %9, %31 | |
store i32 %32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %36 | |
; <label>:33: ; preds = %16 | |
%34 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %26, i32 0, i32 7 | |
%35 = bitcast %"dlmalloc::dlmalloc::Chunk"** %34 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %21, %"dlmalloc::dlmalloc::Chunk"*** %35, align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* %26, %"dlmalloc::dlmalloc::Chunk"** %23, align 4 | |
br label %36 | |
; <label>:36: ; preds = %33, %28 | |
%37 = shl i32 %19, 3 | |
%38 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %24, i32 0, i32 3 | |
%39 = or i32 %37, 3 | |
store i32 %39, i32* %38, align 4 | |
%40 = bitcast %"dlmalloc::dlmalloc::Chunk"* %24 to i8* | |
%41 = getelementptr inbounds i8, i8* %40, i32 %37 | |
%42 = getelementptr inbounds i8, i8* %41, i32 4 | |
%43 = bitcast i8* %42 to i32* | |
%44 = load i32, i32* %43, align 4 | |
%45 = or i32 %44, 1 | |
store i32 %45, i32* %43, align 4 | |
%46 = bitcast %"dlmalloc::dlmalloc::Chunk"** %25 to i8* | |
br label %50 | |
; <label>:47: ; preds = %3 | |
%48 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%49 = icmp ugt i32 %7, %48 | |
br i1 %49, label %52, label %368 | |
; <label>:50: ; preds = %705, %702, %618, %421, %415, %403, %398, %365, %198, %116, %36, %14 | |
%51 = phi i8* [ %402, %398 ], [ %414, %403 ], [ %367, %365 ], [ %46, %36 ], [ %117, %116 ], [ %200, %198 ], [ null, %14 ], [ %716, %705 ], [ %619, %618 ], [ null, %421 ], [ null, %702 ], [ null, %415 ] | |
ret i8* %51 | |
; <label>:52: ; preds = %47 | |
%53 = icmp eq i32 %11, 0 | |
br i1 %53, label %118, label %54 | |
; <label>:54: ; preds = %52 | |
%55 = shl i32 %11, %10 | |
%56 = shl i32 2, %10 | |
%57 = sub i32 0, %56 | |
%58 = or i32 %56, %57 | |
%59 = and i32 %55, %58 | |
%60 = sub i32 0, %59 | |
%61 = and i32 %59, %60 | |
%62 = tail call i32 @llvm.cttz.i32(i32 %61, i1 false) #4, !range !47 | |
%63 = shl nuw nsw i32 %62, 1 | |
%64 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %63 | |
%65 = bitcast %"dlmalloc::dlmalloc::Chunk"** %64 to %"dlmalloc::dlmalloc::Chunk"* | |
%66 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %64, i32 2 | |
%67 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %66, align 4 | |
%68 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %67, i32 0, i32 5 | |
%69 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %68, align 4 | |
%70 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %69, %65 | |
br i1 %70, label %71, label %76 | |
; <label>:71: ; preds = %54 | |
%72 = and i32 %62, 31 | |
%73 = shl i32 1, %72 | |
%74 = xor i32 %73, -1 | |
%75 = and i32 %9, %74 | |
store i32 %75, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %79 | |
; <label>:76: ; preds = %54 | |
%77 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %69, i32 0, i32 7 | |
%78 = bitcast %"dlmalloc::dlmalloc::Chunk"** %77 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %64, %"dlmalloc::dlmalloc::Chunk"*** %78, align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* %69, %"dlmalloc::dlmalloc::Chunk"** %66, align 4 | |
br label %79 | |
; <label>:79: ; preds = %76, %71 | |
%80 = shl nuw nsw i32 %62, 3 | |
%81 = sub i32 %80, %7 | |
%82 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %67, i32 0, i32 3 | |
%83 = or i32 %7, 3 | |
store i32 %83, i32* %82, align 4 | |
%84 = bitcast %"dlmalloc::dlmalloc::Chunk"* %67 to i8* | |
%85 = getelementptr inbounds i8, i8* %84, i32 %7 | |
%86 = getelementptr inbounds i8, i8* %85, i32 4 | |
%87 = bitcast i8* %86 to i32* | |
%88 = or i32 %81, 1 | |
store i32 %88, i32* %87, align 4 | |
%89 = getelementptr inbounds i8, i8* %84, i32 %80 | |
%90 = bitcast i8* %89 to i32* | |
store i32 %81, i32* %90, align 4 | |
%91 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%92 = icmp eq i32 %91, 0 | |
br i1 %92, label %116, label %93 | |
; <label>:93: ; preds = %79 | |
%94 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%95 = lshr i32 %91, 3 | |
%96 = shl nuw nsw i32 %95, 1 | |
%97 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %96 | |
%98 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !48 | |
%99 = and i32 %95, 31 | |
%100 = shl i32 1, %99 | |
%101 = and i32 %98, %100 | |
%102 = icmp eq i32 %101, 0 | |
br i1 %102, label %103, label %106 | |
; <label>:103: ; preds = %93 | |
%104 = bitcast %"dlmalloc::dlmalloc::Chunk"** %97 to %"dlmalloc::dlmalloc::Chunk"* | |
%105 = or i32 %98, %100 | |
store i32 %105, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %109 | |
; <label>:106: ; preds = %93 | |
%107 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %97, i32 2 | |
%108 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %107, align 4 | |
br label %109 | |
; <label>:109: ; preds = %106, %103 | |
%110 = phi %"dlmalloc::dlmalloc::Chunk"* [ %104, %103 ], [ %108, %106 ] | |
%111 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %97, i32 2 | |
store %"dlmalloc::dlmalloc::Chunk"* %94, %"dlmalloc::dlmalloc::Chunk"** %111, align 4 | |
%112 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %110, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %94, %"dlmalloc::dlmalloc::Chunk"** %112, align 4 | |
%113 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %94, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %110, %"dlmalloc::dlmalloc::Chunk"** %113, align 4 | |
%114 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %94, i32 0, i32 7 | |
%115 = bitcast %"dlmalloc::dlmalloc::Chunk"** %114 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %97, %"dlmalloc::dlmalloc::Chunk"*** %115, align 4 | |
br label %116 | |
; <label>:116: ; preds = %109, %79 | |
store i32 %81, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store i8* %85, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4 | |
%117 = bitcast %"dlmalloc::dlmalloc::Chunk"** %68 to i8* | |
br label %50 | |
; <label>:118: ; preds = %52 | |
%119 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4 | |
%120 = icmp eq i32 %119, 0 | |
br i1 %120, label %368, label %121 | |
; <label>:121: ; preds = %118 | |
%122 = sub i32 0, %119 | |
%123 = and i32 %119, %122 | |
%124 = tail call i32 @llvm.cttz.i32(i32 %123, i1 false) #4, !range !47 | |
%125 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %124 | |
%126 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %125, align 4 | |
%127 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %126, i32 0, i32 1, i32 3 | |
%128 = load i32, i32* %127, align 4 | |
%129 = and i32 %128, -8 | |
%130 = sub i32 %129, %7 | |
br label %131 | |
; <label>:131: ; preds = %146, %121 | |
%132 = phi i32 [ %130, %121 ], [ %153, %146 ] | |
%133 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %126, %121 ], [ %147, %146 ] | |
%134 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %126, %121 ], [ %154, %146 ] | |
%135 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %133, i32 0, i32 3, i32 0 | |
%136 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %135, align 4 | |
%137 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %136, null | |
br i1 %137, label %138, label %146 | |
; <label>:138: ; preds = %131 | |
%139 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %133, i32 0, i32 3, i32 1 | |
%140 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %139, align 4 | |
%141 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %140, null | |
br i1 %141, label %142, label %146 | |
; <label>:142: ; preds = %138 | |
%143 = bitcast %"dlmalloc::dlmalloc::TreeChunk"* %134 to i8* | |
%144 = getelementptr inbounds i8, i8* %143, i32 %7 | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %134) #4 | |
%145 = icmp ult i32 %132, 16 | |
br i1 %145, label %155, label %164 | |
; <label>:146: ; preds = %138, %131 | |
%147 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %140, %138 ], [ %136, %131 ] | |
%148 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %147, i32 0, i32 1, i32 3 | |
%149 = load i32, i32* %148, align 4 | |
%150 = and i32 %149, -8 | |
%151 = sub i32 %150, %7 | |
%152 = icmp ult i32 %151, %132 | |
%153 = select i1 %152, i32 %151, i32 %132 | |
%154 = select i1 %152, %"dlmalloc::dlmalloc::TreeChunk"* %147, %"dlmalloc::dlmalloc::TreeChunk"* %134 | |
br label %131 | |
; <label>:155: ; preds = %142 | |
%156 = add i32 %132, %7 | |
%157 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %134, i32 0, i32 1, i32 3 | |
%158 = or i32 %156, 3 | |
store i32 %158, i32* %157, align 4 | |
%159 = getelementptr inbounds i8, i8* %143, i32 %156 | |
%160 = getelementptr inbounds i8, i8* %159, i32 4 | |
%161 = bitcast i8* %160 to i32* | |
%162 = load i32, i32* %161, align 4 | |
%163 = or i32 %162, 1 | |
store i32 %163, i32* %161, align 4 | |
br label %198 | |
; <label>:164: ; preds = %142 | |
%165 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %134, i32 0, i32 1, i32 3 | |
%166 = or i32 %7, 3 | |
store i32 %166, i32* %165, align 4 | |
%167 = getelementptr inbounds i8, i8* %144, i32 4 | |
%168 = bitcast i8* %167 to i32* | |
%169 = or i32 %132, 1 | |
store i32 %169, i32* %168, align 4 | |
%170 = getelementptr inbounds i8, i8* %144, i32 %132 | |
%171 = bitcast i8* %170 to i32* | |
store i32 %132, i32* %171, align 4 | |
%172 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%173 = icmp eq i32 %172, 0 | |
br i1 %173, label %197, label %174 | |
; <label>:174: ; preds = %164 | |
%175 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%176 = lshr i32 %172, 3 | |
%177 = shl nuw nsw i32 %176, 1 | |
%178 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %177 | |
%179 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !51 | |
%180 = and i32 %176, 31 | |
%181 = shl i32 1, %180 | |
%182 = and i32 %179, %181 | |
%183 = icmp eq i32 %182, 0 | |
br i1 %183, label %184, label %187 | |
; <label>:184: ; preds = %174 | |
%185 = bitcast %"dlmalloc::dlmalloc::Chunk"** %178 to %"dlmalloc::dlmalloc::Chunk"* | |
%186 = or i32 %179, %181 | |
store i32 %186, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %190 | |
; <label>:187: ; preds = %174 | |
%188 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %178, i32 2 | |
%189 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %188, align 4 | |
br label %190 | |
; <label>:190: ; preds = %187, %184 | |
%191 = phi %"dlmalloc::dlmalloc::Chunk"* [ %185, %184 ], [ %189, %187 ] | |
%192 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %178, i32 2 | |
store %"dlmalloc::dlmalloc::Chunk"* %175, %"dlmalloc::dlmalloc::Chunk"** %192, align 4 | |
%193 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %191, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %175, %"dlmalloc::dlmalloc::Chunk"** %193, align 4 | |
%194 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %175, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %191, %"dlmalloc::dlmalloc::Chunk"** %194, align 4 | |
%195 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %175, i32 0, i32 7 | |
%196 = bitcast %"dlmalloc::dlmalloc::Chunk"** %195 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %178, %"dlmalloc::dlmalloc::Chunk"*** %196, align 4 | |
br label %197 | |
; <label>:197: ; preds = %190, %164 | |
store i32 %132, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store i8* %144, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4 | |
br label %198 | |
; <label>:198: ; preds = %197, %155 | |
%199 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %134, i32 0, i32 1, i32 5 | |
%200 = bitcast %"dlmalloc::dlmalloc::Chunk"** %199 to i8* | |
br label %50 | |
; <label>:201: ; preds = %14 | |
%202 = add i32 %0, 11 | |
%203 = and i32 %202, -8 | |
%204 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4 | |
%205 = icmp eq i32 %204, 0 | |
br i1 %205, label %368, label %206 | |
; <label>:206: ; preds = %201 | |
%207 = sub i32 0, %203 | |
%208 = lshr i32 %202, 8 | |
%209 = icmp eq i32 %208, 0 | |
br i1 %209, label %221, label %210 | |
; <label>:210: ; preds = %206 | |
%211 = icmp ugt i32 %203, 16777215 | |
br i1 %211, label %221, label %212 | |
; <label>:212: ; preds = %210 | |
%213 = tail call i32 @llvm.ctlz.i32(i32 %208, i1 false) #4, !range !47 | |
%214 = sub nsw i32 31, %213 | |
%215 = shl nsw i32 %214, 1 | |
%216 = add nsw i32 %214, 7 | |
%217 = and i32 %216, 31 | |
%218 = lshr i32 %203, %217 | |
%219 = and i32 %218, 1 | |
%220 = or i32 %219, %215 | |
br label %221 | |
; <label>:221: ; preds = %212, %210, %206 | |
%222 = phi i32 [ %220, %212 ], [ 0, %206 ], [ 31, %210 ] | |
%223 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %222 | |
%224 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %223, align 4 | |
%225 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %224, null | |
br i1 %225, label %269, label %226 | |
; <label>:226: ; preds = %221 | |
%227 = icmp eq i32 %222, 31 | |
%228 = lshr i32 %222, 1 | |
%229 = sub nsw i32 25, %228 | |
%230 = and i32 %229, 31 | |
%231 = select i1 %227, i32 0, i32 %230 | |
%232 = shl i32 %203, %231 | |
br label %233 | |
; <label>:233: ; preds = %248, %226 | |
%234 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ null, %226 ], [ %259, %248 ] | |
%235 = phi i32 [ %232, %226 ], [ %261, %248 ] | |
%236 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %224, %226 ], [ %255, %248 ] | |
%237 = phi i32 [ %207, %226 ], [ %249, %248 ] | |
%238 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ null, %226 ], [ %250, %248 ] | |
%239 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %236, i32 0, i32 1, i32 3 | |
%240 = load i32, i32* %239, align 4 | |
%241 = and i32 %240, -8 | |
%242 = icmp uge i32 %241, %203 | |
%243 = sub i32 %241, %203 | |
%244 = icmp ult i32 %243, %237 | |
%245 = and i1 %242, %244 | |
br i1 %245, label %246, label %248 | |
; <label>:246: ; preds = %233 | |
%247 = icmp eq i32 %243, 0 | |
br i1 %247, label %.loopexit2, label %248 | |
; <label>:248: ; preds = %246, %233 | |
%249 = phi i32 [ %243, %246 ], [ %237, %233 ] | |
%250 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %236, %246 ], [ %238, %233 ] | |
%251 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %236, i32 0, i32 3, i32 1 | |
%252 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %251, align 4 | |
%253 = lshr i32 %235, 31 | |
%254 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %236, i32 0, i32 3, i32 %253 | |
%255 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %254, align 4 | |
%256 = icmp ne %"dlmalloc::dlmalloc::TreeChunk"* %252, null | |
%257 = icmp ne %"dlmalloc::dlmalloc::TreeChunk"* %252, %255 | |
%258 = and i1 %256, %257 | |
%259 = select i1 %258, %"dlmalloc::dlmalloc::TreeChunk"* %252, %"dlmalloc::dlmalloc::TreeChunk"* %234 | |
%260 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %255, null | |
%261 = shl i32 %235, 1 | |
br i1 %260, label %262, label %233 | |
; <label>:262: ; preds = %248 | |
%263 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %259, null | |
br i1 %263, label %267, label %.loopexit2 | |
.loopexit2: ; preds = %246, %277, %262 | |
%264 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %250, %262 ], [ null, %277 ], [ %236, %246 ] | |
%265 = phi i32 [ %249, %262 ], [ %270, %277 ], [ 0, %246 ] | |
%266 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %259, %262 ], [ %282, %277 ], [ %236, %246 ] | |
br label %286 | |
; <label>:267: ; preds = %262 | |
%268 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %250, null | |
br i1 %268, label %269, label %308 | |
; <label>:269: ; preds = %267, %221 | |
%270 = phi i32 [ %249, %267 ], [ %207, %221 ] | |
%271 = and i32 %222, 31 | |
%272 = shl i32 2, %271 | |
%273 = sub i32 0, %272 | |
%274 = or i32 %272, %273 | |
%275 = and i32 %274, %204 | |
%276 = icmp eq i32 %275, 0 | |
br i1 %276, label %368, label %277 | |
; <label>:277: ; preds = %269 | |
%278 = sub i32 0, %275 | |
%279 = and i32 %275, %278 | |
%280 = tail call i32 @llvm.cttz.i32(i32 %279, i1 false) #4, !range !47 | |
%281 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %280 | |
%282 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %281, align 4 | |
%283 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %282, null | |
br i1 %283, label %368, label %.loopexit2 | |
; <label>:284: ; preds = %305 | |
%285 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %298, null | |
br i1 %285, label %368, label %308 | |
; <label>:286: ; preds = %305, %.loopexit2 | |
%287 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %298, %305 ], [ %264, %.loopexit2 ] | |
%288 = phi i32 [ %297, %305 ], [ %265, %.loopexit2 ] | |
%289 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %306, %305 ], [ %266, %.loopexit2 ] | |
%290 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %289, i32 0, i32 1, i32 3 | |
%291 = load i32, i32* %290, align 4 | |
%292 = and i32 %291, -8 | |
%293 = icmp uge i32 %292, %203 | |
%294 = sub i32 %292, %203 | |
%295 = icmp ult i32 %294, %288 | |
%296 = and i1 %293, %295 | |
%297 = select i1 %296, i32 %294, i32 %288 | |
%298 = select i1 %296, %"dlmalloc::dlmalloc::TreeChunk"* %289, %"dlmalloc::dlmalloc::TreeChunk"* %287 | |
%299 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %289, i32 0, i32 3, i32 0 | |
%300 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %299, align 4 | |
%301 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %300, null | |
br i1 %301, label %302, label %305 | |
; <label>:302: ; preds = %286 | |
%303 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %289, i32 0, i32 3, i32 1 | |
%304 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %303, align 4 | |
br label %305 | |
; <label>:305: ; preds = %302, %286 | |
%306 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %304, %302 ], [ %300, %286 ] | |
%307 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %306, null | |
br i1 %307, label %284, label %286 | |
; <label>:308: ; preds = %284, %267 | |
%309 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %298, %284 ], [ %250, %267 ] | |
%310 = phi i32 [ %297, %284 ], [ %249, %267 ] | |
%311 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%312 = icmp uge i32 %311, %203 | |
%313 = sub i32 %311, %203 | |
%314 = icmp uge i32 %310, %313 | |
%315 = and i1 %312, %314 | |
br i1 %315, label %368, label %316 | |
; <label>:316: ; preds = %308 | |
%317 = bitcast %"dlmalloc::dlmalloc::TreeChunk"* %309 to i8* | |
%318 = getelementptr inbounds i8, i8* %317, i32 %203 | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %309) #4 | |
%319 = icmp ult i32 %310, 16 | |
br i1 %319, label %320, label %329 | |
; <label>:320: ; preds = %316 | |
%321 = add i32 %310, %203 | |
%322 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %309, i32 0, i32 1, i32 3 | |
%323 = or i32 %321, 3 | |
store i32 %323, i32* %322, align 4 | |
%324 = getelementptr inbounds i8, i8* %317, i32 %321 | |
%325 = getelementptr inbounds i8, i8* %324, i32 4 | |
%326 = bitcast i8* %325 to i32* | |
%327 = load i32, i32* %326, align 4 | |
%328 = or i32 %327, 1 | |
store i32 %328, i32* %326, align 4 | |
br label %365 | |
; <label>:329: ; preds = %316 | |
%330 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %309, i32 0, i32 1, i32 3 | |
%331 = or i32 %203, 3 | |
store i32 %331, i32* %330, align 4 | |
%332 = getelementptr inbounds i8, i8* %318, i32 4 | |
%333 = bitcast i8* %332 to i32* | |
%334 = or i32 %310, 1 | |
store i32 %334, i32* %333, align 4 | |
%335 = getelementptr inbounds i8, i8* %318, i32 %310 | |
%336 = bitcast i8* %335 to i32* | |
store i32 %310, i32* %336, align 4 | |
%337 = icmp ult i32 %310, 256 | |
br i1 %337, label %338, label %363 | |
; <label>:338: ; preds = %329 | |
%339 = lshr i32 %310, 3 | |
%340 = shl nuw nsw i32 %339, 1 | |
%341 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %340 | |
%342 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !54 | |
%343 = and i32 %339, 31 | |
%344 = shl i32 1, %343 | |
%345 = and i32 %342, %344 | |
%346 = icmp eq i32 %345, 0 | |
br i1 %346, label %347, label %350 | |
; <label>:347: ; preds = %338 | |
%348 = bitcast %"dlmalloc::dlmalloc::Chunk"** %341 to %"dlmalloc::dlmalloc::Chunk"* | |
%349 = or i32 %342, %344 | |
store i32 %349, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %353 | |
; <label>:350: ; preds = %338 | |
%351 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %341, i32 2 | |
%352 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %351, align 4 | |
br label %353 | |
; <label>:353: ; preds = %350, %347 | |
%354 = phi %"dlmalloc::dlmalloc::Chunk"* [ %348, %347 ], [ %352, %350 ] | |
%355 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %341, i32 2 | |
%356 = bitcast %"dlmalloc::dlmalloc::Chunk"** %355 to i8** | |
store i8* %318, i8** %356, align 4 | |
%357 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %354, i32 0, i32 7 | |
%358 = bitcast %"dlmalloc::dlmalloc::Chunk"** %357 to i8** | |
store i8* %318, i8** %358, align 4 | |
%359 = getelementptr inbounds i8, i8* %318, i32 8 | |
%360 = bitcast i8* %359 to %"dlmalloc::dlmalloc::Chunk"** | |
store %"dlmalloc::dlmalloc::Chunk"* %354, %"dlmalloc::dlmalloc::Chunk"** %360, align 4 | |
%361 = getelementptr inbounds i8, i8* %318, i32 12 | |
%362 = bitcast i8* %361 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %341, %"dlmalloc::dlmalloc::Chunk"*** %362, align 4 | |
br label %365 | |
; <label>:363: ; preds = %329 | |
%364 = bitcast i8* %318 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %364, i32 %310) #4 | |
br label %365 | |
; <label>:365: ; preds = %363, %353, %320 | |
%366 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %309, i32 0, i32 1, i32 5 | |
%367 = bitcast %"dlmalloc::dlmalloc::Chunk"** %366 to i8* | |
br label %50 | |
; <label>:368: ; preds = %308, %284, %277, %269, %201, %118, %47 | |
%369 = phi i32 [ %203, %201 ], [ %7, %118 ], [ %7, %47 ], [ %203, %284 ], [ %203, %308 ], [ %203, %277 ], [ %203, %269 ] | |
%370 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%371 = icmp ult i32 %370, %369 | |
br i1 %371, label %376, label %372 | |
; <label>:372: ; preds = %368 | |
%373 = sub i32 %370, %369 | |
%374 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%375 = icmp ult i32 %373, 16 | |
br i1 %375, label %389, label %379 | |
; <label>:376: ; preds = %368 | |
%377 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%378 = icmp ugt i32 %377, %369 | |
br i1 %378, label %403, label %415 | |
; <label>:379: ; preds = %372 | |
%380 = bitcast %"dlmalloc::dlmalloc::Chunk"* %374 to i8* | |
%381 = getelementptr inbounds i8, i8* %380, i32 %369 | |
store i8* %381, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4 | |
store i32 %373, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%382 = getelementptr inbounds i8, i8* %381, i32 4 | |
%383 = bitcast i8* %382 to i32* | |
%384 = or i32 %373, 1 | |
store i32 %384, i32* %383, align 4 | |
%385 = getelementptr inbounds i8, i8* %380, i32 %370 | |
%386 = bitcast i8* %385 to i32* | |
store i32 %373, i32* %386, align 4 | |
%387 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %374, i32 0, i32 3 | |
%388 = or i32 %369, 3 | |
br label %398 | |
; <label>:389: ; preds = %372 | |
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* null, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%390 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %374, i32 0, i32 3 | |
%391 = or i32 %370, 3 | |
store i32 %391, i32* %390, align 4 | |
%392 = bitcast %"dlmalloc::dlmalloc::Chunk"* %374 to i8* | |
%393 = getelementptr inbounds i8, i8* %392, i32 %370 | |
%394 = getelementptr inbounds i8, i8* %393, i32 4 | |
%395 = bitcast i8* %394 to i32* | |
%396 = load i32, i32* %395, align 4 | |
%397 = or i32 %396, 1 | |
br label %398 | |
; <label>:398: ; preds = %389, %379 | |
%399 = phi i32* [ %395, %389 ], [ %387, %379 ] | |
%400 = phi i32 [ %397, %389 ], [ %388, %379 ] | |
store i32 %400, i32* %399, align 4 | |
%401 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %374, i32 0, i32 5 | |
%402 = bitcast %"dlmalloc::dlmalloc::Chunk"** %401 to i8* | |
br label %50 | |
; <label>:403: ; preds = %376 | |
%404 = sub i32 %377, %369 | |
store i32 %404, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%405 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%406 = bitcast %"dlmalloc::dlmalloc::Chunk"* %405 to i8* | |
%407 = getelementptr inbounds i8, i8* %406, i32 %369 | |
store i8* %407, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
%408 = getelementptr inbounds i8, i8* %407, i32 4 | |
%409 = bitcast i8* %408 to i32* | |
%410 = or i32 %404, 1 | |
store i32 %410, i32* %409, align 4 | |
%411 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %405, i32 0, i32 3 | |
%412 = or i32 %369, 3 | |
store i32 %412, i32* %411, align 4 | |
%413 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %405, i32 0, i32 5 | |
%414 = bitcast %"dlmalloc::dlmalloc::Chunk"** %413 to i8* | |
br label %50 | |
; <label>:415: ; preds = %376 | |
%416 = add i32 %369, 65583 | |
%417 = and i32 %416, -65536 | |
%418 = lshr i32 %416, 16 | |
%419 = tail call i32 @llvm.wasm.memory.grow.i32(i32 0, i32 %418) #4, !noalias !57 | |
%420 = icmp eq i32 %419, -1 | |
br i1 %420, label %50, label %421 | |
; <label>:421: ; preds = %415 | |
%422 = shl i32 %419, 16 | |
%423 = inttoptr i32 %422 to i8* | |
%424 = icmp eq i32 %422, 0 | |
br i1 %424, label %50, label %425 | |
; <label>:425: ; preds = %421 | |
%426 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 416) to i32*), align 4 | |
%427 = add i32 %426, %417 | |
store i32 %427, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 416) to i32*), align 4 | |
%428 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 420) to i32*), align 4 | |
%429 = icmp ult i32 %427, %428 | |
%430 = select i1 %429, i32 %428, i32 %427 | |
store i32 %430, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 420) to i32*), align 4 | |
%431 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%432 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %431, null | |
%433 = bitcast %"dlmalloc::dlmalloc::Chunk"* %431 to i8* | |
br i1 %432, label %434, label %459 | |
; <label>:434: ; preds = %425 | |
%435 = load i8*, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4 | |
%436 = icmp eq i8* %435, null | |
%437 = icmp ugt i8* %435, %423 | |
%438 = or i1 %436, %437 | |
br i1 %438, label %439, label %440 | |
; <label>:439: ; preds = %434 | |
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4 | |
br label %440 | |
; <label>:440: ; preds = %439, %434 | |
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to i8**), align 4 | |
store i32 %417, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 428) to i32*), align 4 | |
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 436) to i32*), align 4 | |
store i32 4095, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4 | |
br label %441 | |
; <label>:441: ; preds = %441, %440 | |
%442 = phi i32 [ %443, %441 ], [ 0, %440 ] | |
%443 = add nuw nsw i32 %442, 1 | |
%444 = shl nuw i32 %442, 1 | |
%445 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %444 | |
%446 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %445, i32 3 | |
%447 = bitcast %"dlmalloc::dlmalloc::Chunk"** %446 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %445, %"dlmalloc::dlmalloc::Chunk"*** %447, align 4 | |
%448 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %445, i32 2 | |
%449 = bitcast %"dlmalloc::dlmalloc::Chunk"** %448 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %445, %"dlmalloc::dlmalloc::Chunk"*** %449, align 4 | |
%450 = icmp eq i32 %443, 32 | |
br i1 %450, label %451, label %441 | |
; <label>:451: ; preds = %441 | |
%452 = add i32 %417, -40 | |
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
store i32 %452, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%453 = getelementptr inbounds i8, i8* %423, i32 4 | |
%454 = bitcast i8* %453 to i32* | |
%455 = or i32 %452, 1 | |
store i32 %455, i32* %454, align 4 | |
%456 = getelementptr inbounds i8, i8* %423, i32 %452 | |
%457 = getelementptr inbounds i8, i8* %456, i32 4 | |
%458 = bitcast i8* %457 to i32* | |
store i32 40, i32* %458, align 4 | |
store i32 2097152, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4 | |
br label %702 | |
; <label>:459: ; preds = %425, %467 | |
%460 = phi %"dlmalloc::dlmalloc::Segment"* [ %469, %467 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %425 ] | |
%461 = bitcast %"dlmalloc::dlmalloc::Segment"* %460 to i8** | |
%462 = load i8*, i8** %461, align 4 | |
%463 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %460, i32 0, i32 3 | |
%464 = load i32, i32* %463, align 4 | |
%465 = getelementptr inbounds i8, i8* %462, i32 %464 | |
%466 = icmp eq i8* %465, %423 | |
br i1 %466, label %475, label %467 | |
; <label>:467: ; preds = %459 | |
%468 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %460, i32 0, i32 5 | |
%469 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %468, align 4 | |
%470 = icmp eq %"dlmalloc::dlmalloc::Segment"* %469, null | |
br i1 %470, label %.loopexit1, label %459 | |
; <label>:471: ; preds = %475 | |
%472 = icmp ule i8* %462, %433 | |
%473 = icmp ugt i8* %423, %433 | |
%474 = and i1 %473, %472 | |
br i1 %474, label %479, label %.loopexit1 | |
; <label>:475: ; preds = %459 | |
%476 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %460, i32 0, i32 7 | |
%477 = load i32, i32* %476, align 4 | |
%478 = icmp eq i32 %477, 0 | |
br i1 %478, label %471, label %.loopexit1 | |
; <label>:479: ; preds = %471 | |
%480 = add i32 %464, %417 | |
store i32 %480, i32* %463, align 4 | |
%481 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%482 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%483 = add i32 %482, %417 | |
%484 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %481, i32 0, i32 5 | |
%485 = ptrtoint %"dlmalloc::dlmalloc::Chunk"** %484 to i32 | |
%486 = add i32 %485, 7 | |
%487 = and i32 %486, -8 | |
%488 = sub i32 %487, %485 | |
%489 = bitcast %"dlmalloc::dlmalloc::Chunk"* %481 to i8* | |
%490 = getelementptr inbounds i8, i8* %489, i32 %488 | |
%491 = sub i32 %483, %488 | |
store i8* %490, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
store i32 %491, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%492 = getelementptr inbounds i8, i8* %490, i32 4 | |
%493 = bitcast i8* %492 to i32* | |
%494 = or i32 %491, 1 | |
store i32 %494, i32* %493, align 4 | |
%495 = getelementptr inbounds i8, i8* %489, i32 %483 | |
%496 = getelementptr inbounds i8, i8* %495, i32 4 | |
%497 = bitcast i8* %496 to i32* | |
store i32 40, i32* %497, align 4 | |
store i32 2097152, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4 | |
br label %702 | |
.loopexit1: ; preds = %467, %475, %471 | |
%498 = load i8*, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4 | |
%499 = icmp ult i8* %498, %423 | |
%500 = select i1 %499, i8* %498, i8* %423 | |
store i8* %500, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 444) to i8**), align 4 | |
%501 = getelementptr inbounds i8, i8* %423, i32 %417 | |
br label %502 | |
; <label>:502: ; preds = %507, %.loopexit1 | |
%503 = phi %"dlmalloc::dlmalloc::Segment"* [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %.loopexit1 ], [ %509, %507 ] | |
%504 = bitcast %"dlmalloc::dlmalloc::Segment"* %503 to i8** | |
%505 = load i8*, i8** %504, align 4 | |
%506 = icmp eq i8* %505, %501 | |
br i1 %506, label %511, label %507 | |
; <label>:507: ; preds = %502 | |
%508 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %503, i32 0, i32 5 | |
%509 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %508, align 4 | |
%510 = icmp eq %"dlmalloc::dlmalloc::Segment"* %509, null | |
br i1 %510, label %.loopexit, label %502 | |
; <label>:511: ; preds = %502 | |
%512 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %503, i32 0, i32 7 | |
%513 = load i32, i32* %512, align 4 | |
%514 = icmp eq i32 %513, 0 | |
br i1 %514, label %515, label %.loopexit | |
.loopexit: ; preds = %507, %511 | |
br label %620 | |
; <label>:515: ; preds = %511 | |
store i8* %423, i8** %504, align 4 | |
%516 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %503, i32 0, i32 3 | |
%517 = load i32, i32* %516, align 4 | |
%518 = add i32 %517, %417 | |
store i32 %518, i32* %516, align 4 | |
%519 = bitcast i8* %501 to %"dlmalloc::dlmalloc::Chunk"* | |
%520 = ptrtoint i8* %501 to i32 | |
%521 = sub i32 %520, %422 | |
%522 = getelementptr inbounds i8, i8* %423, i32 %369 | |
%523 = sub i32 %521, %369 | |
%524 = getelementptr inbounds i8, i8* %423, i32 4 | |
%525 = bitcast i8* %524 to i32* | |
%526 = or i32 %369, 3 | |
store i32 %526, i32* %525, align 4 | |
%527 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%528 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %527, %519 | |
br i1 %528, label %529, label %535 | |
; <label>:529: ; preds = %515 | |
%530 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%531 = add i32 %530, %523 | |
store i32 %531, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
store i8* %522, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
%532 = getelementptr inbounds i8, i8* %522, i32 4 | |
%533 = bitcast i8* %532 to i32* | |
%534 = or i32 %531, 1 | |
store i32 %534, i32* %533, align 4 | |
br label %618 | |
; <label>:535: ; preds = %515 | |
%536 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%537 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %536, %519 | |
br i1 %537, label %538, label %546 | |
; <label>:538: ; preds = %535 | |
%539 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%540 = add i32 %539, %523 | |
store i32 %540, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store i8* %522, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4 | |
%541 = getelementptr inbounds i8, i8* %522, i32 4 | |
%542 = bitcast i8* %541 to i32* | |
%543 = or i32 %540, 1 | |
store i32 %543, i32* %542, align 4 | |
%544 = getelementptr inbounds i8, i8* %522, i32 %540 | |
%545 = bitcast i8* %544 to i32* | |
store i32 %540, i32* %545, align 4 | |
br label %618 | |
; <label>:546: ; preds = %535 | |
%547 = getelementptr inbounds i8, i8* %501, i32 4 | |
%548 = bitcast i8* %547 to i32* | |
%549 = load i32, i32* %548, align 4 | |
%550 = and i32 %549, 3 | |
%551 = icmp eq i32 %550, 1 | |
br i1 %551, label %552, label %579 | |
; <label>:552: ; preds = %546 | |
%553 = and i32 %549, -8 | |
%554 = icmp ult i32 %553, 256 | |
br i1 %554, label %555, label %573 | |
; <label>:555: ; preds = %552 | |
%556 = getelementptr inbounds i8, i8* %501, i32 8 | |
%557 = bitcast i8* %556 to %"dlmalloc::dlmalloc::Chunk"** | |
%558 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %557, align 8 | |
%559 = getelementptr inbounds i8, i8* %501, i32 12 | |
%560 = bitcast i8* %559 to %"dlmalloc::dlmalloc::Chunk"** | |
%561 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %560, align 4 | |
%562 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %561, %558 | |
br i1 %562, label %563, label %570 | |
; <label>:563: ; preds = %555 | |
%564 = lshr i32 %549, 3 | |
%565 = and i32 %564, 31 | |
%566 = shl i32 1, %565 | |
%567 = xor i32 %566, -1 | |
%568 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%569 = and i32 %568, %567 | |
store i32 %569, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %575 | |
; <label>:570: ; preds = %555 | |
%571 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %558, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %561, %"dlmalloc::dlmalloc::Chunk"** %571, align 4 | |
%572 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %561, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %558, %"dlmalloc::dlmalloc::Chunk"** %572, align 4 | |
br label %575 | |
; <label>:573: ; preds = %552 | |
%574 = bitcast i8* %501 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %574) #4 | |
br label %575 | |
; <label>:575: ; preds = %573, %570, %563 | |
%576 = getelementptr inbounds i8, i8* %501, i32 %553 | |
%577 = bitcast i8* %576 to %"dlmalloc::dlmalloc::Chunk"* | |
%578 = add i32 %553, %523 | |
br label %579 | |
; <label>:579: ; preds = %575, %546 | |
%580 = phi i32 [ %578, %575 ], [ %523, %546 ] | |
%581 = phi %"dlmalloc::dlmalloc::Chunk"* [ %577, %575 ], [ %519, %546 ] | |
%582 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %581, i32 0, i32 3 | |
%583 = load i32, i32* %582, align 4 | |
%584 = and i32 %583, -2 | |
store i32 %584, i32* %582, align 4 | |
%585 = getelementptr inbounds i8, i8* %522, i32 4 | |
%586 = bitcast i8* %585 to i32* | |
%587 = or i32 %580, 1 | |
store i32 %587, i32* %586, align 4 | |
%588 = getelementptr inbounds i8, i8* %522, i32 %580 | |
%589 = bitcast i8* %588 to i32* | |
store i32 %580, i32* %589, align 4 | |
%590 = icmp ult i32 %580, 256 | |
br i1 %590, label %591, label %616 | |
; <label>:591: ; preds = %579 | |
%592 = lshr i32 %580, 3 | |
%593 = shl nuw nsw i32 %592, 1 | |
%594 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %593 | |
%595 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !60 | |
%596 = and i32 %592, 31 | |
%597 = shl i32 1, %596 | |
%598 = and i32 %595, %597 | |
%599 = icmp eq i32 %598, 0 | |
br i1 %599, label %600, label %603 | |
; <label>:600: ; preds = %591 | |
%601 = bitcast %"dlmalloc::dlmalloc::Chunk"** %594 to %"dlmalloc::dlmalloc::Chunk"* | |
%602 = or i32 %595, %597 | |
store i32 %602, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %606 | |
; <label>:603: ; preds = %591 | |
%604 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %594, i32 2 | |
%605 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %604, align 4 | |
br label %606 | |
; <label>:606: ; preds = %603, %600 | |
%607 = phi %"dlmalloc::dlmalloc::Chunk"* [ %601, %600 ], [ %605, %603 ] | |
%608 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %594, i32 2 | |
%609 = bitcast %"dlmalloc::dlmalloc::Chunk"** %608 to i8** | |
store i8* %522, i8** %609, align 4 | |
%610 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %607, i32 0, i32 7 | |
%611 = bitcast %"dlmalloc::dlmalloc::Chunk"** %610 to i8** | |
store i8* %522, i8** %611, align 4 | |
%612 = getelementptr inbounds i8, i8* %522, i32 8 | |
%613 = bitcast i8* %612 to %"dlmalloc::dlmalloc::Chunk"** | |
store %"dlmalloc::dlmalloc::Chunk"* %607, %"dlmalloc::dlmalloc::Chunk"** %613, align 4 | |
%614 = getelementptr inbounds i8, i8* %522, i32 12 | |
%615 = bitcast i8* %614 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %594, %"dlmalloc::dlmalloc::Chunk"*** %615, align 4 | |
br label %618 | |
; <label>:616: ; preds = %579 | |
%617 = bitcast i8* %522 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %617, i32 %580) #4 | |
br label %618 | |
; <label>:618: ; preds = %616, %606, %538, %529 | |
%619 = getelementptr inbounds i8, i8* %423, i32 8 | |
br label %50 | |
; <label>:620: ; preds = %630, %.loopexit | |
%621 = phi i8** [ %633, %630 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to i8**), %.loopexit ] | |
%622 = phi %"dlmalloc::dlmalloc::Segment"* [ %632, %630 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %.loopexit ] | |
%623 = load i8*, i8** %621, align 4 | |
%624 = icmp ugt i8* %623, %433 | |
br i1 %624, label %630, label %625 | |
; <label>:625: ; preds = %620 | |
%626 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %622, i32 0, i32 3 | |
%627 = load i32, i32* %626, align 4 | |
%628 = getelementptr inbounds i8, i8* %623, i32 %627 | |
%629 = icmp ugt i8* %628, %433 | |
br i1 %629, label %634, label %630 | |
; <label>:630: ; preds = %625, %620 | |
%631 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %622, i32 0, i32 5 | |
%632 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %631, align 4 | |
%633 = bitcast %"dlmalloc::dlmalloc::Segment"* %632 to i8** | |
br label %620 | |
; <label>:634: ; preds = %625 | |
%635 = getelementptr inbounds i8, i8* %628, i32 -47 | |
%636 = getelementptr inbounds i8, i8* %635, i32 8 | |
%637 = ptrtoint i8* %636 to i32 | |
%638 = add i32 %637, 7 | |
%639 = and i32 %638, -8 | |
%640 = sub i32 %639, %637 | |
%641 = getelementptr inbounds i8, i8* %635, i32 %640 | |
%642 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 1 | |
%643 = bitcast %"dlmalloc::dlmalloc::Chunk"* %642 to i8* | |
%644 = icmp ult i8* %641, %643 | |
%645 = select i1 %644, i8* %433, i8* %641 | |
%646 = getelementptr inbounds i8, i8* %645, i32 8 | |
%647 = getelementptr inbounds i8, i8* %645, i32 24 | |
%648 = add i32 %417, -40 | |
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
store i32 %648, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%649 = getelementptr inbounds i8, i8* %423, i32 4 | |
%650 = bitcast i8* %649 to i32* | |
%651 = or i32 %648, 1 | |
store i32 %651, i32* %650, align 4 | |
%652 = getelementptr inbounds i8, i8* %423, i32 %648 | |
%653 = getelementptr inbounds i8, i8* %652, i32 4 | |
%654 = bitcast i8* %653 to i32* | |
store i32 40, i32* %654, align 4 | |
store i32 2097152, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4 | |
%655 = getelementptr inbounds i8, i8* %645, i32 4 | |
%656 = bitcast i8* %655 to i32* | |
store i32 27, i32* %656, align 4 | |
tail call void @llvm.memmove.p0i8.p0i8.i32(i8* nonnull align 4 %646, i8* nonnull align 4 getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424), i32 16, i1 false) #4 | |
store i8* %423, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to i8**), align 4 | |
store i32 %417, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 428) to i32*), align 4 | |
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 436) to i32*), align 4 | |
store i8* %646, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 432) to i8**), align 4 | |
br label %657 | |
; <label>:657: ; preds = %657, %634 | |
%658 = phi i8* [ %647, %634 ], [ %659, %657 ] | |
%659 = getelementptr inbounds i8, i8* %658, i32 4 | |
%660 = bitcast i8* %659 to i32* | |
store i32 7, i32* %660, align 4 | |
%661 = getelementptr inbounds i8, i8* %658, i32 8 | |
%662 = icmp ugt i8* %628, %661 | |
br i1 %662, label %657, label %663 | |
; <label>:663: ; preds = %657 | |
%664 = icmp eq i8* %645, %433 | |
br i1 %664, label %702, label %665 | |
; <label>:665: ; preds = %663 | |
%666 = ptrtoint i8* %645 to i32 | |
%667 = ptrtoint %"dlmalloc::dlmalloc::Chunk"* %431 to i32 | |
%668 = sub i32 %666, %667 | |
%669 = getelementptr inbounds i8, i8* %433, i32 %668 | |
%670 = getelementptr inbounds i8, i8* %669, i32 4 | |
%671 = bitcast i8* %670 to i32* | |
%672 = load i32, i32* %671, align 4 | |
%673 = and i32 %672, -2 | |
store i32 %673, i32* %671, align 4 | |
%674 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 0, i32 3 | |
%675 = or i32 %668, 1 | |
store i32 %675, i32* %674, align 4 | |
%676 = bitcast i8* %669 to i32* | |
store i32 %668, i32* %676, align 4 | |
%677 = icmp ult i32 %668, 256 | |
br i1 %677, label %678, label %700 | |
; <label>:678: ; preds = %665 | |
%679 = lshr i32 %668, 3 | |
%680 = shl nuw nsw i32 %679, 1 | |
%681 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %680 | |
%682 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !63 | |
%683 = and i32 %679, 31 | |
%684 = shl i32 1, %683 | |
%685 = and i32 %682, %684 | |
%686 = icmp eq i32 %685, 0 | |
br i1 %686, label %687, label %690 | |
; <label>:687: ; preds = %678 | |
%688 = bitcast %"dlmalloc::dlmalloc::Chunk"** %681 to %"dlmalloc::dlmalloc::Chunk"* | |
%689 = or i32 %682, %684 | |
store i32 %689, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %693 | |
; <label>:690: ; preds = %678 | |
%691 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %681, i32 2 | |
%692 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %691, align 4 | |
br label %693 | |
; <label>:693: ; preds = %690, %687 | |
%694 = phi %"dlmalloc::dlmalloc::Chunk"* [ %688, %687 ], [ %692, %690 ] | |
%695 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %681, i32 2 | |
store %"dlmalloc::dlmalloc::Chunk"* %431, %"dlmalloc::dlmalloc::Chunk"** %695, align 4 | |
%696 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %694, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %431, %"dlmalloc::dlmalloc::Chunk"** %696, align 4 | |
%697 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %694, %"dlmalloc::dlmalloc::Chunk"** %697, align 4 | |
%698 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %431, i32 0, i32 7 | |
%699 = bitcast %"dlmalloc::dlmalloc::Chunk"** %698 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %681, %"dlmalloc::dlmalloc::Chunk"*** %699, align 4 | |
br label %702 | |
; <label>:700: ; preds = %665 | |
%701 = bitcast %"dlmalloc::dlmalloc::Chunk"* %431 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %701, i32 %668) #4 | |
br label %702 | |
; <label>:702: ; preds = %700, %693, %663, %479, %451 | |
%703 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%704 = icmp ugt i32 %703, %369 | |
br i1 %704, label %705, label %50 | |
; <label>:705: ; preds = %702 | |
%706 = sub i32 %703, %369 | |
store i32 %706, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%707 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%708 = bitcast %"dlmalloc::dlmalloc::Chunk"* %707 to i8* | |
%709 = getelementptr inbounds i8, i8* %708, i32 %369 | |
store i8* %709, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to i8**), align 4 | |
%710 = getelementptr inbounds i8, i8* %709, i32 4 | |
%711 = bitcast i8* %710 to i32* | |
%712 = or i32 %706, 1 | |
store i32 %712, i32* %711, align 4 | |
%713 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %707, i32 0, i32 3 | |
%714 = or i32 %369, 3 | |
store i32 %714, i32* %713, align 4 | |
%715 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %707, i32 0, i32 5 | |
%716 = bitcast %"dlmalloc::dlmalloc::Chunk"** %715 to i8* | |
br label %50 | |
} | |
; Function Attrs: nounwind readnone speculatable | |
declare i32 @llvm.cttz.i32(i32, i1) #8 | |
; dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
; Function Attrs: norecurse nounwind | |
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"*) unnamed_addr #9 { | |
%2 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5 | |
%3 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %2, align 4 | |
%4 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7 | |
%5 = bitcast %"dlmalloc::dlmalloc::Chunk"** %4 to %"dlmalloc::dlmalloc::TreeChunk"** | |
%6 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %5, align 4 | |
%7 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %6, %0 | |
br i1 %7, label %16, label %8 | |
; <label>:8: ; preds = %1 | |
%9 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5 | |
%10 = bitcast %"dlmalloc::dlmalloc::Chunk"** %9 to %"dlmalloc::dlmalloc::TreeChunk"** | |
%11 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %10, align 4 | |
%12 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %11, i32 0, i32 1, i32 7 | |
%13 = bitcast %"dlmalloc::dlmalloc::Chunk"** %12 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %6, %"dlmalloc::dlmalloc::TreeChunk"** %13, align 4 | |
%14 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %6, i32 0, i32 1, i32 5 | |
%15 = bitcast %"dlmalloc::dlmalloc::Chunk"** %14 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %11, %"dlmalloc::dlmalloc::TreeChunk"** %15, align 4 | |
br label %37 | |
; <label>:16: ; preds = %1 | |
%17 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 1 | |
%18 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %17, align 4 | |
%19 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %18, null | |
%20 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 0 | |
%21 = select i1 %19, %"dlmalloc::dlmalloc::TreeChunk"** %20, %"dlmalloc::dlmalloc::TreeChunk"** %17 | |
%22 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %21, align 4 | |
%23 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %22, null | |
br i1 %23, label %37, label %.preheader | |
.preheader: ; preds = %16, %32 | |
%24 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %33, %32 ], [ %22, %16 ] | |
%25 = phi %"dlmalloc::dlmalloc::TreeChunk"** [ %34, %32 ], [ %21, %16 ] | |
%26 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %24, i32 0, i32 3, i32 1 | |
%27 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %26, align 4 | |
%28 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %27, null | |
br i1 %28, label %29, label %32 | |
; <label>:29: ; preds = %.preheader | |
%30 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %24, i32 0, i32 3, i32 0 | |
%31 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %30, align 4 | |
br label %32 | |
; <label>:32: ; preds = %29, %.preheader | |
%33 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %31, %29 ], [ %27, %.preheader ] | |
%34 = phi %"dlmalloc::dlmalloc::TreeChunk"** [ %30, %29 ], [ %26, %.preheader ] | |
%35 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %33, null | |
br i1 %35, label %36, label %.preheader | |
; <label>:36: ; preds = %32 | |
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %25, align 4 | |
br label %37 | |
; <label>:37: ; preds = %36, %16, %8 | |
%38 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %6, %8 ], [ %24, %36 ], [ null, %16 ] | |
%39 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %3, null | |
br i1 %39, label %46, label %40 | |
; <label>:40: ; preds = %37 | |
%41 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 7 | |
%42 = load i32, i32* %41, align 4 | |
%43 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %42 | |
%44 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %43, align 4 | |
%45 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %44, %0 | |
br i1 %45, label %47, label %56 | |
; <label>:46: ; preds = %75, %71, %56, %49, %37 | |
ret void | |
; <label>:47: ; preds = %40 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %43, align 4 | |
%48 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %38, null | |
br i1 %48, label %49, label %63 | |
; <label>:49: ; preds = %47 | |
%50 = load i32, i32* %41, align 4 | |
%51 = and i32 %50, 31 | |
%52 = shl i32 1, %51 | |
%53 = xor i32 %52, -1 | |
%54 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4 | |
%55 = and i32 %54, %53 | |
store i32 %55, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4 | |
br label %46 | |
; <label>:56: ; preds = %40 | |
%57 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %3, i32 0, i32 3, i32 0 | |
%58 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %57, align 4 | |
%59 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %58, %0 | |
%60 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %3, i32 0, i32 3, i32 1 | |
%61 = select i1 %59, %"dlmalloc::dlmalloc::TreeChunk"** %57, %"dlmalloc::dlmalloc::TreeChunk"** %60 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %61, align 4 | |
%62 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %38, null | |
br i1 %62, label %46, label %63 | |
; <label>:63: ; preds = %56, %47 | |
%64 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %38, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %3, %"dlmalloc::dlmalloc::TreeChunk"** %64, align 4 | |
%65 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 0 | |
%66 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %65, align 4 | |
%67 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %66, null | |
br i1 %67, label %71, label %68 | |
; <label>:68: ; preds = %63 | |
%69 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %38, i32 0, i32 3, i32 0 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %66, %"dlmalloc::dlmalloc::TreeChunk"** %69, align 4 | |
%70 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %66, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %70, align 4 | |
br label %71 | |
; <label>:71: ; preds = %68, %63 | |
%72 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 1 | |
%73 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %72, align 4 | |
%74 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %73, null | |
br i1 %74, label %46, label %75 | |
; <label>:75: ; preds = %71 | |
%76 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %38, i32 0, i32 3, i32 1 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %73, %"dlmalloc::dlmalloc::TreeChunk"** %76, align 4 | |
%77 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %73, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %38, %"dlmalloc::dlmalloc::TreeChunk"** %77, align 4 | |
br label %46 | |
} | |
; dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk | |
; Function Attrs: nounwind | |
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"*, i32) unnamed_addr #1 { | |
%3 = lshr i32 %1, 8 | |
%4 = icmp eq i32 %3, 0 | |
br i1 %4, label %16, label %5 | |
; <label>:5: ; preds = %2 | |
%6 = icmp ugt i32 %1, 16777215 | |
br i1 %6, label %16, label %7 | |
; <label>:7: ; preds = %5 | |
%8 = tail call i32 @llvm.ctlz.i32(i32 %3, i1 false) #4, !range !47 | |
%9 = sub nsw i32 31, %8 | |
%10 = shl nsw i32 %9, 1 | |
%11 = add nsw i32 %9, 7 | |
%12 = and i32 %11, 31 | |
%13 = lshr i32 %1, %12 | |
%14 = and i32 %13, 1 | |
%15 = or i32 %14, %10 | |
br label %16 | |
; <label>:16: ; preds = %7, %5, %2 | |
%17 = phi i32 [ %15, %7 ], [ 0, %2 ], [ 31, %5 ] | |
%18 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 7, i32 %17 | |
%19 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 7 | |
store i32 %17, i32* %19, align 4 | |
%20 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 0 | |
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %20, align 4 | |
%21 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 3, i32 1 | |
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %21, align 4 | |
%22 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4, !alias.scope !66 | |
%23 = and i32 %17, 31 | |
%24 = shl i32 1, %23 | |
%25 = and i32 %22, %24 | |
%26 = icmp eq i32 %25, 0 | |
br i1 %26, label %27, label %35 | |
; <label>:27: ; preds = %16 | |
%28 = or i32 %22, %24 | |
store i32 %28, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 4) to i32*), align 4 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %18, align 4 | |
%29 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5 | |
%30 = bitcast %"dlmalloc::dlmalloc::TreeChunk"** %29 to %"dlmalloc::dlmalloc::TreeChunk"*** | |
store %"dlmalloc::dlmalloc::TreeChunk"** %18, %"dlmalloc::dlmalloc::TreeChunk"*** %30, align 4 | |
%31 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7 | |
%32 = bitcast %"dlmalloc::dlmalloc::Chunk"** %31 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %32, align 4 | |
%33 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5 | |
%34 = bitcast %"dlmalloc::dlmalloc::Chunk"** %33 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %34, align 4 | |
br label %77 | |
; <label>:35: ; preds = %16 | |
%36 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %18, align 4 | |
%37 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %36, i32 0, i32 1, i32 3 | |
%38 = load i32, i32* %37, align 4 | |
%39 = and i32 %38, -8 | |
%40 = icmp eq i32 %39, %1 | |
br i1 %40, label %.loopexit, label %41 | |
; <label>:41: ; preds = %35 | |
%42 = icmp eq i32 %17, 31 | |
%43 = lshr i32 %17, 1 | |
%44 = sub nsw i32 25, %43 | |
%45 = and i32 %44, 31 | |
%46 = select i1 %42, i32 0, i32 %45 | |
%47 = shl i32 %1, %46 | |
br label %54 | |
; <label>:48: ; preds = %54 | |
%49 = shl i32 %56, 1 | |
%50 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %59, i32 0, i32 1, i32 3 | |
%51 = load i32, i32* %50, align 4 | |
%52 = and i32 %51, -8 | |
%53 = icmp eq i32 %52, %1 | |
br i1 %53, label %.loopexit, label %54 | |
; <label>:54: ; preds = %48, %41 | |
%55 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %59, %48 ], [ %36, %41 ] | |
%56 = phi i32 [ %49, %48 ], [ %47, %41 ] | |
%57 = lshr i32 %56, 31 | |
%58 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %55, i32 0, i32 3, i32 %57 | |
%59 = load %"dlmalloc::dlmalloc::TreeChunk"*, %"dlmalloc::dlmalloc::TreeChunk"** %58, align 4 | |
%60 = icmp eq %"dlmalloc::dlmalloc::TreeChunk"* %59, null | |
br i1 %60, label %71, label %48 | |
.loopexit: ; preds = %48, %35 | |
%61 = phi %"dlmalloc::dlmalloc::TreeChunk"* [ %36, %35 ], [ %59, %48 ] | |
%62 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %61, i32 0, i32 1, i32 5 | |
%63 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %62, align 4 | |
%64 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %63, i32 0, i32 7 | |
%65 = bitcast %"dlmalloc::dlmalloc::Chunk"** %64 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %65, align 4 | |
%66 = bitcast %"dlmalloc::dlmalloc::Chunk"** %62 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %66, align 4 | |
%67 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %63, %"dlmalloc::dlmalloc::Chunk"** %67, align 4 | |
%68 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7 | |
%69 = bitcast %"dlmalloc::dlmalloc::Chunk"** %68 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %61, %"dlmalloc::dlmalloc::TreeChunk"** %69, align 4 | |
%70 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::TreeChunk"* null, %"dlmalloc::dlmalloc::TreeChunk"** %70, align 4 | |
br label %77 | |
; <label>:71: ; preds = %54 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %58, align 4 | |
%72 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::TreeChunk"* %55, %"dlmalloc::dlmalloc::TreeChunk"** %72, align 4 | |
%73 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 7 | |
%74 = bitcast %"dlmalloc::dlmalloc::Chunk"** %73 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %74, align 4 | |
%75 = getelementptr inbounds %"dlmalloc::dlmalloc::TreeChunk", %"dlmalloc::dlmalloc::TreeChunk"* %0, i32 0, i32 1, i32 5 | |
%76 = bitcast %"dlmalloc::dlmalloc::Chunk"** %75 to %"dlmalloc::dlmalloc::TreeChunk"** | |
store %"dlmalloc::dlmalloc::TreeChunk"* %0, %"dlmalloc::dlmalloc::TreeChunk"** %76, align 4 | |
br label %77 | |
; <label>:77: ; preds = %71, %.loopexit, %27 | |
ret void | |
} | |
; Function Attrs: nounwind | |
declare i32 @llvm.wasm.memory.grow.i32(i32, i32) unnamed_addr #4 | |
; dlmalloc::dlmalloc::Dlmalloc::dispose_chunk | |
; Function Attrs: nounwind | |
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc13dispose_chunk17hf69abf6addffae32E(%"dlmalloc::dlmalloc::Chunk"*, i32) unnamed_addr #1 { | |
%3 = bitcast %"dlmalloc::dlmalloc::Chunk"* %0 to i8* | |
%4 = getelementptr inbounds i8, i8* %3, i32 %1 | |
%5 = bitcast i8* %4 to %"dlmalloc::dlmalloc::Chunk"* | |
%6 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %0, i32 0, i32 3 | |
%7 = load i32, i32* %6, align 4 | |
%8 = and i32 %7, 1 | |
%9 = icmp eq i32 %8, 0 | |
br i1 %9, label %10, label %58 | |
; <label>:10: ; preds = %2 | |
%11 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %0, i32 0, i32 0, i32 0 | |
%12 = load i32, i32* %11, align 4 | |
%13 = and i32 %7, 3 | |
%14 = icmp eq i32 %13, 0 | |
br i1 %14, label %22, label %15 | |
; <label>:15: ; preds = %10 | |
%16 = sub i32 0, %12 | |
%17 = getelementptr inbounds i8, i8* %3, i32 %16 | |
%18 = bitcast i8* %17 to %"dlmalloc::dlmalloc::Chunk"* | |
%19 = add i32 %12, %1 | |
%20 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%21 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %20, %18 | |
br i1 %21, label %45, label %23 | |
; <label>:22: ; preds = %153, %146, %127, %87, %86, %76, %51, %10 | |
ret void | |
; <label>:23: ; preds = %15 | |
%24 = icmp ult i32 %12, 256 | |
br i1 %24, label %25, label %43 | |
; <label>:25: ; preds = %23 | |
%26 = getelementptr inbounds i8, i8* %17, i32 8 | |
%27 = bitcast i8* %26 to %"dlmalloc::dlmalloc::Chunk"** | |
%28 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %27, align 4 | |
%29 = getelementptr inbounds i8, i8* %17, i32 12 | |
%30 = bitcast i8* %29 to %"dlmalloc::dlmalloc::Chunk"** | |
%31 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %30, align 4 | |
%32 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %31, %28 | |
br i1 %32, label %33, label %40 | |
; <label>:33: ; preds = %25 | |
%34 = lshr i32 %12, 3 | |
%35 = and i32 %34, 31 | |
%36 = shl i32 1, %35 | |
%37 = xor i32 %36, -1 | |
%38 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%39 = and i32 %38, %37 | |
store i32 %39, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %58 | |
; <label>:40: ; preds = %25 | |
%41 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %28, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %31, %"dlmalloc::dlmalloc::Chunk"** %41, align 4 | |
%42 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %31, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %28, %"dlmalloc::dlmalloc::Chunk"** %42, align 4 | |
br label %58 | |
; <label>:43: ; preds = %23 | |
%44 = bitcast i8* %17 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %44) #4 | |
br label %58 | |
; <label>:45: ; preds = %15 | |
%46 = getelementptr inbounds i8, i8* %4, i32 4 | |
%47 = bitcast i8* %46 to i32* | |
%48 = load i32, i32* %47, align 4 | |
%49 = and i32 %48, 3 | |
%50 = icmp eq i32 %49, 3 | |
br i1 %50, label %51, label %58 | |
; <label>:51: ; preds = %45 | |
store i32 %19, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%52 = load i32, i32* %47, align 4 | |
%53 = and i32 %52, -2 | |
store i32 %53, i32* %47, align 4 | |
%54 = getelementptr inbounds i8, i8* %17, i32 4 | |
%55 = bitcast i8* %54 to i32* | |
%56 = or i32 %19, 1 | |
store i32 %56, i32* %55, align 4 | |
%57 = bitcast i8* %4 to i32* | |
store i32 %19, i32* %57, align 4 | |
br label %22 | |
; <label>:58: ; preds = %45, %43, %40, %33, %2 | |
%59 = phi i32 [ %19, %45 ], [ %1, %2 ], [ %19, %33 ], [ %19, %40 ], [ %19, %43 ] | |
%60 = phi %"dlmalloc::dlmalloc::Chunk"* [ %18, %45 ], [ %0, %2 ], [ %18, %33 ], [ %18, %40 ], [ %18, %43 ] | |
%61 = getelementptr inbounds i8, i8* %4, i32 4 | |
%62 = bitcast i8* %61 to i32* | |
%63 = load i32, i32* %62, align 4 | |
%64 = and i32 %63, 2 | |
%65 = icmp eq i32 %64, 0 | |
br i1 %65, label %66, label %69 | |
; <label>:66: ; preds = %58 | |
%67 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%68 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %67, %5 | |
br i1 %68, label %76, label %83 | |
; <label>:69: ; preds = %58 | |
%70 = and i32 %63, -2 | |
store i32 %70, i32* %62, align 4 | |
%71 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3 | |
%72 = or i32 %59, 1 | |
store i32 %72, i32* %71, align 4 | |
%73 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to i8* | |
%74 = getelementptr inbounds i8, i8* %73, i32 %59 | |
%75 = bitcast i8* %74 to i32* | |
store i32 %59, i32* %75, align 4 | |
br label %128 | |
; <label>:76: ; preds = %66 | |
%77 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%78 = add i32 %77, %59 | |
store i32 %78, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%79 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3 | |
%80 = or i32 %78, 1 | |
store i32 %80, i32* %79, align 4 | |
%81 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%82 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %60, %81 | |
br i1 %82, label %86, label %22 | |
; <label>:83: ; preds = %66 | |
%84 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%85 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %84, %5 | |
br i1 %85, label %87, label %95 | |
; <label>:86: ; preds = %76 | |
store %"dlmalloc::dlmalloc::Chunk"* null, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
br label %22 | |
; <label>:87: ; preds = %83 | |
%88 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%89 = add i32 %88, %59 | |
store i32 %89, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%90 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3 | |
%91 = or i32 %89, 1 | |
store i32 %91, i32* %90, align 4 | |
%92 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to i8* | |
%93 = getelementptr inbounds i8, i8* %92, i32 %89 | |
%94 = bitcast i8* %93 to i32* | |
store i32 %89, i32* %94, align 4 | |
br label %22 | |
; <label>:95: ; preds = %83 | |
%96 = and i32 %63, -8 | |
%97 = add i32 %96, %59 | |
%98 = icmp ult i32 %96, 256 | |
br i1 %98, label %99, label %117 | |
; <label>:99: ; preds = %95 | |
%100 = getelementptr inbounds i8, i8* %4, i32 8 | |
%101 = bitcast i8* %100 to %"dlmalloc::dlmalloc::Chunk"** | |
%102 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %101, align 4 | |
%103 = getelementptr inbounds i8, i8* %4, i32 12 | |
%104 = bitcast i8* %103 to %"dlmalloc::dlmalloc::Chunk"** | |
%105 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %104, align 4 | |
%106 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %105, %102 | |
br i1 %106, label %107, label %114 | |
; <label>:107: ; preds = %99 | |
%108 = lshr i32 %63, 3 | |
%109 = and i32 %108, 31 | |
%110 = shl i32 1, %109 | |
%111 = xor i32 %110, -1 | |
%112 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%113 = and i32 %112, %111 | |
store i32 %113, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %119 | |
; <label>:114: ; preds = %99 | |
%115 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %102, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %105, %"dlmalloc::dlmalloc::Chunk"** %115, align 4 | |
%116 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %105, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %102, %"dlmalloc::dlmalloc::Chunk"** %116, align 4 | |
br label %119 | |
; <label>:117: ; preds = %95 | |
%118 = bitcast i8* %4 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* %118) #4 | |
br label %119 | |
; <label>:119: ; preds = %117, %114, %107 | |
%120 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 3 | |
%121 = or i32 %97, 1 | |
store i32 %121, i32* %120, align 4 | |
%122 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to i8* | |
%123 = getelementptr inbounds i8, i8* %122, i32 %97 | |
%124 = bitcast i8* %123 to i32* | |
store i32 %97, i32* %124, align 4 | |
%125 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%126 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %60, %125 | |
br i1 %126, label %127, label %128 | |
; <label>:127: ; preds = %119 | |
store i32 %97, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
br label %22 | |
; <label>:128: ; preds = %119, %69 | |
%129 = phi i32 [ %97, %119 ], [ %59, %69 ] | |
%130 = icmp ult i32 %129, 256 | |
br i1 %130, label %131, label %153 | |
; <label>:131: ; preds = %128 | |
%132 = lshr i32 %129, 3 | |
%133 = shl nuw nsw i32 %132, 1 | |
%134 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %133 | |
%135 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !69 | |
%136 = and i32 %132, 31 | |
%137 = shl i32 1, %136 | |
%138 = and i32 %135, %137 | |
%139 = icmp eq i32 %138, 0 | |
br i1 %139, label %140, label %143 | |
; <label>:140: ; preds = %131 | |
%141 = bitcast %"dlmalloc::dlmalloc::Chunk"** %134 to %"dlmalloc::dlmalloc::Chunk"* | |
%142 = or i32 %135, %137 | |
store i32 %142, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %146 | |
; <label>:143: ; preds = %131 | |
%144 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %134, i32 2 | |
%145 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %144, align 4 | |
br label %146 | |
; <label>:146: ; preds = %143, %140 | |
%147 = phi %"dlmalloc::dlmalloc::Chunk"* [ %141, %140 ], [ %145, %143 ] | |
%148 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %134, i32 2 | |
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** %148, align 4 | |
%149 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %147, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %60, %"dlmalloc::dlmalloc::Chunk"** %149, align 4 | |
%150 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %147, %"dlmalloc::dlmalloc::Chunk"** %150, align 4 | |
%151 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %60, i32 0, i32 7 | |
%152 = bitcast %"dlmalloc::dlmalloc::Chunk"** %151 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %134, %"dlmalloc::dlmalloc::Chunk"*** %152, align 4 | |
br label %22 | |
; <label>:153: ; preds = %128 | |
%154 = bitcast %"dlmalloc::dlmalloc::Chunk"* %60 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %154, i32 %129) #4 | |
br label %22 | |
} | |
; dlmalloc::dlmalloc::Dlmalloc::free | |
; Function Attrs: nounwind | |
define internal fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc4free17he8b0435c3a66c50fE(i8*) unnamed_addr #1 { | |
%2 = getelementptr inbounds i8, i8* %0, i32 -8 | |
%3 = bitcast i8* %2 to %"dlmalloc::dlmalloc::Chunk"* | |
%4 = getelementptr inbounds i8, i8* %0, i32 -4 | |
%5 = bitcast i8* %4 to i32* | |
%6 = load i32, i32* %5, align 4 | |
%7 = and i32 %6, -8 | |
%8 = getelementptr inbounds i8, i8* %2, i32 %7 | |
%9 = bitcast i8* %8 to %"dlmalloc::dlmalloc::Chunk"* | |
%10 = and i32 %6, 1 | |
%11 = icmp eq i32 %10, 0 | |
br i1 %11, label %12, label %61 | |
; <label>:12: ; preds = %1 | |
%13 = bitcast i8* %2 to i32* | |
%14 = load i32, i32* %13, align 4 | |
%15 = and i32 %6, 3 | |
%16 = icmp eq i32 %15, 0 | |
br i1 %16, label %24, label %17 | |
; <label>:17: ; preds = %12 | |
%18 = sub i32 0, %14 | |
%19 = getelementptr inbounds i8, i8* %2, i32 %18 | |
%20 = bitcast i8* %19 to %"dlmalloc::dlmalloc::Chunk"* | |
%21 = add i32 %14, %7 | |
%22 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%23 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %22, %20 | |
br i1 %23, label %47, label %25 | |
; <label>:24: ; preds = %212, %195, %186, %167, %129, %128, %125, %93, %90, %53, %12 | |
ret void | |
; <label>:25: ; preds = %17 | |
%26 = icmp ult i32 %14, 256 | |
br i1 %26, label %27, label %45 | |
; <label>:27: ; preds = %25 | |
%28 = getelementptr inbounds i8, i8* %19, i32 8 | |
%29 = bitcast i8* %28 to %"dlmalloc::dlmalloc::Chunk"** | |
%30 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %29, align 4 | |
%31 = getelementptr inbounds i8, i8* %19, i32 12 | |
%32 = bitcast i8* %31 to %"dlmalloc::dlmalloc::Chunk"** | |
%33 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %32, align 4 | |
%34 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %33, %30 | |
br i1 %34, label %35, label %42 | |
; <label>:35: ; preds = %27 | |
%36 = lshr i32 %14, 3 | |
%37 = and i32 %36, 31 | |
%38 = shl i32 1, %37 | |
%39 = xor i32 %38, -1 | |
%40 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%41 = and i32 %40, %39 | |
store i32 %41, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %61 | |
; <label>:42: ; preds = %27 | |
%43 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %30, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %33, %"dlmalloc::dlmalloc::Chunk"** %43, align 4 | |
%44 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %33, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %30, %"dlmalloc::dlmalloc::Chunk"** %44, align 4 | |
br label %61 | |
; <label>:45: ; preds = %25 | |
%46 = bitcast i8* %19 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %46) #4 | |
br label %61 | |
; <label>:47: ; preds = %17 | |
%48 = getelementptr inbounds i8, i8* %8, i32 4 | |
%49 = bitcast i8* %48 to i32* | |
%50 = load i32, i32* %49, align 4 | |
%51 = and i32 %50, 3 | |
%52 = icmp eq i32 %51, 3 | |
br i1 %52, label %53, label %61 | |
; <label>:53: ; preds = %47 | |
store i32 %21, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%54 = load i32, i32* %49, align 4 | |
%55 = and i32 %54, -2 | |
store i32 %55, i32* %49, align 4 | |
%56 = getelementptr inbounds i8, i8* %19, i32 4 | |
%57 = bitcast i8* %56 to i32* | |
%58 = or i32 %21, 1 | |
store i32 %58, i32* %57, align 4 | |
%59 = getelementptr inbounds i8, i8* %19, i32 %21 | |
%60 = bitcast i8* %59 to i32* | |
store i32 %21, i32* %60, align 4 | |
br label %24 | |
; <label>:61: ; preds = %47, %45, %42, %35, %1 | |
%62 = phi i32 [ %21, %47 ], [ %7, %1 ], [ %21, %35 ], [ %21, %42 ], [ %21, %45 ] | |
%63 = phi i8* [ %19, %47 ], [ %2, %1 ], [ %19, %35 ], [ %19, %42 ], [ %19, %45 ] | |
%64 = phi %"dlmalloc::dlmalloc::Chunk"* [ %20, %47 ], [ %3, %1 ], [ %20, %35 ], [ %20, %42 ], [ %20, %45 ] | |
%65 = getelementptr inbounds i8, i8* %8, i32 4 | |
%66 = bitcast i8* %65 to i32* | |
%67 = load i32, i32* %66, align 4 | |
%68 = and i32 %67, 2 | |
%69 = icmp eq i32 %68, 0 | |
br i1 %69, label %70, label %73 | |
; <label>:70: ; preds = %61 | |
%71 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%72 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %71, %9 | |
br i1 %72, label %79, label %86 | |
; <label>:73: ; preds = %61 | |
%74 = and i32 %67, -2 | |
store i32 %74, i32* %66, align 4 | |
%75 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3 | |
%76 = or i32 %62, 1 | |
store i32 %76, i32* %75, align 4 | |
%77 = getelementptr inbounds i8, i8* %63, i32 %62 | |
%78 = bitcast i8* %77 to i32* | |
store i32 %62, i32* %78, align 4 | |
br label %168 | |
; <label>:79: ; preds = %70 | |
%80 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%81 = add i32 %80, %62 | |
store i32 %81, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
store %"dlmalloc::dlmalloc::Chunk"* %64, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%82 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3 | |
%83 = or i32 %81, 1 | |
store i32 %83, i32* %82, align 4 | |
%84 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%85 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %64, %84 | |
br i1 %85, label %89, label %90 | |
; <label>:86: ; preds = %70 | |
%87 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%88 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %87, %9 | |
br i1 %88, label %129, label %136 | |
; <label>:89: ; preds = %79 | |
store %"dlmalloc::dlmalloc::Chunk"* null, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
store i32 0, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
br label %90 | |
; <label>:90: ; preds = %89, %79 | |
%91 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4, !alias.scope !72 | |
%92 = icmp ult i32 %91, %81 | |
br i1 %92, label %93, label %24 | |
; <label>:93: ; preds = %90 | |
%94 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 412) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%95 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %94, null | |
%96 = bitcast %"dlmalloc::dlmalloc::Chunk"* %94 to i8* | |
br i1 %95, label %24, label %97 | |
; <label>:97: ; preds = %93 | |
%98 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 404) to i32*), align 4 | |
%99 = icmp ugt i32 %98, 40 | |
br i1 %99, label %100, label %.loopexit | |
; <label>:100: ; preds = %97, %110 | |
%101 = phi %"dlmalloc::dlmalloc::Segment"* [ %112, %110 ], [ bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 424) to %"dlmalloc::dlmalloc::Segment"*), %97 ] | |
%102 = bitcast %"dlmalloc::dlmalloc::Segment"* %101 to i8** | |
%103 = load i8*, i8** %102, align 4 | |
%104 = icmp ugt i8* %103, %96 | |
br i1 %104, label %110, label %105 | |
; <label>:105: ; preds = %100 | |
%106 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %101, i32 0, i32 3 | |
%107 = load i32, i32* %106, align 4 | |
%108 = getelementptr inbounds i8, i8* %103, i32 %107 | |
%109 = icmp ugt i8* %108, %96 | |
br i1 %109, label %.loopexit, label %110 | |
; <label>:110: ; preds = %105, %100 | |
%111 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %101, i32 0, i32 5 | |
%112 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %111, align 4 | |
%113 = icmp eq %"dlmalloc::dlmalloc::Segment"* %112, null | |
br i1 %113, label %.loopexit, label %100 | |
.loopexit: ; preds = %110, %105, %97 | |
%114 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 432) to %"dlmalloc::dlmalloc::Segment"**), align 4 | |
%115 = icmp eq %"dlmalloc::dlmalloc::Segment"* %114, null | |
br i1 %115, label %125, label %.preheader | |
; <label>:116: ; preds = %.preheader | |
%117 = icmp ugt i32 %123, 4095 | |
%118 = select i1 %117, i32 %123, i32 4095 | |
br label %125 | |
.preheader: ; preds = %.loopexit, %.preheader | |
%119 = phi i32 [ %123, %.preheader ], [ 0, %.loopexit ] | |
%120 = phi %"dlmalloc::dlmalloc::Segment"* [ %122, %.preheader ], [ %114, %.loopexit ] | |
%121 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %120, i32 0, i32 5 | |
%122 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %121, align 4 | |
%123 = add i32 %119, 1 | |
%124 = icmp eq %"dlmalloc::dlmalloc::Segment"* %122, null | |
br i1 %124, label %116, label %.preheader | |
; <label>:125: ; preds = %116, %.loopexit | |
%126 = phi i32 [ 4095, %.loopexit ], [ %118, %116 ] | |
store i32 %126, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4 | |
%127 = icmp ugt i32 %98, %91 | |
br i1 %127, label %128, label %24 | |
; <label>:128: ; preds = %125 | |
store i32 -1, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 440) to i32*), align 4 | |
br label %24 | |
; <label>:129: ; preds = %86 | |
%130 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
%131 = add i32 %130, %62 | |
store i32 %131, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
store i8* %63, i8** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to i8**), align 4 | |
%132 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3 | |
%133 = or i32 %131, 1 | |
store i32 %133, i32* %132, align 4 | |
%134 = getelementptr inbounds i8, i8* %63, i32 %131 | |
%135 = bitcast i8* %134 to i32* | |
store i32 %131, i32* %135, align 4 | |
br label %24 | |
; <label>:136: ; preds = %86 | |
%137 = and i32 %67, -8 | |
%138 = add i32 %137, %62 | |
%139 = icmp ult i32 %137, 256 | |
br i1 %139, label %140, label %158 | |
; <label>:140: ; preds = %136 | |
%141 = getelementptr inbounds i8, i8* %8, i32 8 | |
%142 = bitcast i8* %141 to %"dlmalloc::dlmalloc::Chunk"** | |
%143 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %142, align 4 | |
%144 = getelementptr inbounds i8, i8* %8, i32 12 | |
%145 = bitcast i8* %144 to %"dlmalloc::dlmalloc::Chunk"** | |
%146 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %145, align 4 | |
%147 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %146, %143 | |
br i1 %147, label %148, label %155 | |
; <label>:148: ; preds = %140 | |
%149 = lshr i32 %67, 3 | |
%150 = and i32 %149, 31 | |
%151 = shl i32 1, %150 | |
%152 = xor i32 %151, -1 | |
%153 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
%154 = and i32 %153, %152 | |
store i32 %154, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %160 | |
; <label>:155: ; preds = %140 | |
%156 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %143, i32 0, i32 7 | |
store %"dlmalloc::dlmalloc::Chunk"* %146, %"dlmalloc::dlmalloc::Chunk"** %156, align 4 | |
%157 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %146, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %143, %"dlmalloc::dlmalloc::Chunk"** %157, align 4 | |
br label %160 | |
; <label>:158: ; preds = %136 | |
%159 = bitcast i8* %8 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18unlink_large_chunk17h0d2f29932abe7976E(%"dlmalloc::dlmalloc::TreeChunk"* nonnull %159) #4 | |
br label %160 | |
; <label>:160: ; preds = %158, %155, %148 | |
%161 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 3 | |
%162 = or i32 %138, 1 | |
store i32 %162, i32* %161, align 4 | |
%163 = getelementptr inbounds i8, i8* %63, i32 %138 | |
%164 = bitcast i8* %163 to i32* | |
store i32 %138, i32* %164, align 4 | |
%165 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 408) to %"dlmalloc::dlmalloc::Chunk"**), align 4 | |
%166 = icmp eq %"dlmalloc::dlmalloc::Chunk"* %64, %165 | |
br i1 %166, label %167, label %168 | |
; <label>:167: ; preds = %160 | |
store i32 %138, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 400) to i32*), align 4 | |
br label %24 | |
; <label>:168: ; preds = %160, %73 | |
%169 = phi i32 [ %138, %160 ], [ %62, %73 ] | |
%170 = icmp ult i32 %169, 256 | |
br i1 %170, label %171, label %195 | |
; <label>:171: ; preds = %168 | |
%172 = lshr i32 %169, 3 | |
%173 = shl nuw nsw i32 %172, 1 | |
%174 = getelementptr inbounds %"dlmalloc::dlmalloc::Dlmalloc", %"dlmalloc::dlmalloc::Dlmalloc"* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to %"dlmalloc::dlmalloc::Dlmalloc"*), i32 0, i32 5, i32 %173 | |
%175 = load i32, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4, !alias.scope !75 | |
%176 = and i32 %172, 31 | |
%177 = shl i32 1, %176 | |
%178 = and i32 %175, %177 | |
%179 = icmp eq i32 %178, 0 | |
br i1 %179, label %180, label %183 | |
; <label>:180: ; preds = %171 | |
%181 = bitcast %"dlmalloc::dlmalloc::Chunk"** %174 to %"dlmalloc::dlmalloc::Chunk"* | |
%182 = or i32 %175, %177 | |
store i32 %182, i32* bitcast (<{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E to i32*), align 4 | |
br label %186 | |
; <label>:183: ; preds = %171 | |
%184 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %174, i32 2 | |
%185 = load %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %184, align 4 | |
br label %186 | |
; <label>:186: ; preds = %183, %180 | |
%187 = phi %"dlmalloc::dlmalloc::Chunk"* [ %181, %180 ], [ %185, %183 ] | |
%188 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk"*, %"dlmalloc::dlmalloc::Chunk"** %174, i32 2 | |
%189 = bitcast %"dlmalloc::dlmalloc::Chunk"** %188 to i8** | |
store i8* %63, i8** %189, align 4 | |
%190 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %187, i32 0, i32 7 | |
%191 = bitcast %"dlmalloc::dlmalloc::Chunk"** %190 to i8** | |
store i8* %63, i8** %191, align 4 | |
%192 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 5 | |
store %"dlmalloc::dlmalloc::Chunk"* %187, %"dlmalloc::dlmalloc::Chunk"** %192, align 4 | |
%193 = getelementptr inbounds %"dlmalloc::dlmalloc::Chunk", %"dlmalloc::dlmalloc::Chunk"* %64, i32 0, i32 7 | |
%194 = bitcast %"dlmalloc::dlmalloc::Chunk"** %193 to %"dlmalloc::dlmalloc::Chunk"*** | |
store %"dlmalloc::dlmalloc::Chunk"** %174, %"dlmalloc::dlmalloc::Chunk"*** %194, align 4 | |
br label %24 | |
; <label>:195: ; preds = %168 | |
%196 = bitcast %"dlmalloc::dlmalloc::Chunk"* %64 to %"dlmalloc::dlmalloc::TreeChunk"* | |
; call dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk | |
tail call fastcc void @_ZN8dlmalloc8dlmalloc8Dlmalloc18insert_large_chunk17hbd16eea70af7b236E(%"dlmalloc::dlmalloc::TreeChunk"* %196, i32 %169) | |
%197 = load i32, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4 | |
%198 = add i32 %197, -1 | |
store i32 %198, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4 | |
%199 = icmp eq i32 %198, 0 | |
br i1 %199, label %200, label %24 | |
; <label>:200: ; preds = %195 | |
%201 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 432) to %"dlmalloc::dlmalloc::Segment"**), align 4 | |
%202 = icmp eq %"dlmalloc::dlmalloc::Segment"* %201, null | |
br i1 %202, label %212, label %.preheader1 | |
; <label>:203: ; preds = %.preheader1 | |
%204 = icmp ugt i32 %210, 4095 | |
%205 = select i1 %204, i32 %210, i32 4095 | |
br label %212 | |
.preheader1: ; preds = %200, %.preheader1 | |
%206 = phi i32 [ %210, %.preheader1 ], [ 0, %200 ] | |
%207 = phi %"dlmalloc::dlmalloc::Segment"* [ %209, %.preheader1 ], [ %201, %200 ] | |
%208 = getelementptr inbounds %"dlmalloc::dlmalloc::Segment", %"dlmalloc::dlmalloc::Segment"* %207, i32 0, i32 5 | |
%209 = load %"dlmalloc::dlmalloc::Segment"*, %"dlmalloc::dlmalloc::Segment"** %208, align 4 | |
%210 = add i32 %206, 1 | |
%211 = icmp eq %"dlmalloc::dlmalloc::Segment"* %209, null | |
br i1 %211, label %203, label %.preheader1 | |
; <label>:212: ; preds = %203, %200 | |
%213 = phi i32 [ 4095, %200 ], [ %205, %203 ] | |
store i32 %213, i32* bitcast (i8* getelementptr inbounds (<{ [452 x i8] }>, <{ [452 x i8] }>* @_ZN3std3sys4wasm5alloc8DLMALLOC17hfba9cb284e4413a2E, i32 0, i32 0, i32 448) to i32*), align 4 | |
br label %24 | |
} | |
; core::ptr::real_drop_in_place | |
; Function Attrs: norecurse nounwind readnone | |
define internal void @_ZN4core3ptr18real_drop_in_place17h11f9a8883a7a2a93E(%"alloc::vec::Vec<u8>"** nocapture align 4 dereferenceable(4)) unnamed_addr #10 { | |
ret void | |
} | |
; <&mut W as core::fmt::Write>::write_str | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_str17hd2f7186c6afb8473E"(%"alloc::string::String"** nocapture readonly align 4 dereferenceable(4), [0 x i8]* noalias nocapture nonnull readonly align 1, i32) unnamed_addr #1 { | |
%4 = bitcast %"alloc::string::String"** %0 to %"alloc::vec::Vec<u8>"** | |
%5 = load %"alloc::vec::Vec<u8>"*, %"alloc::vec::Vec<u8>"** %4, align 4, !nonnull !9 | |
%6 = getelementptr inbounds %"alloc::vec::Vec<u8>", %"alloc::vec::Vec<u8>"* %5, i32 0, i32 3 | |
%7 = load i32, i32* %6, align 4 | |
%8 = getelementptr inbounds %"alloc::vec::Vec<u8>", %"alloc::vec::Vec<u8>"* %5, i32 0, i32 1, i32 1 | |
%9 = load i32, i32* %8, align 4, !alias.scope !78 | |
%10 = sub i32 %9, %7 | |
%11 = icmp ult i32 %10, %2 | |
br i1 %11, label %12, label %._crit_edge | |
._crit_edge: ; preds = %3 | |
%.phi.trans.insert = bitcast %"alloc::vec::Vec<u8>"* %5 to i8** | |
%.pre1 = load i8*, i8** %.phi.trans.insert, align 4, !alias.scope !81, !noalias !84 | |
br label %37 | |
; <label>:12: ; preds = %3 | |
%13 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %7, i32 %2) #4 | |
%14 = extractvalue { i32, i1 } %13, 0 | |
%15 = extractvalue { i32, i1 } %13, 1 | |
br i1 %15, label %36, label %16 | |
; <label>:16: ; preds = %12 | |
%17 = shl i32 %9, 1 | |
%18 = icmp ult i32 %14, %17 | |
%19 = select i1 %18, i32 %17, i32 %14 | |
%20 = icmp sgt i32 %19, -1 | |
br i1 %20, label %21, label %36 | |
; <label>:21: ; preds = %16 | |
%22 = icmp eq i32 %9, 0 | |
br i1 %22, label %23, label %25 | |
; <label>:23: ; preds = %21 | |
%24 = tail call fastcc i8* @__rust_alloc(i32 %19, i32 1) #4 | |
br label %29 | |
; <label>:25: ; preds = %21 | |
%26 = bitcast %"alloc::vec::Vec<u8>"* %5 to i8** | |
%27 = load i8*, i8** %26, align 4, !nonnull !9 | |
%28 = tail call fastcc i8* @__rust_realloc(i8* nonnull %27, i32 %19) #4 | |
br label %29 | |
; <label>:29: ; preds = %25, %23 | |
%30 = phi i8* [ %24, %23 ], [ %28, %25 ] | |
%31 = icmp eq i8* %30, null | |
br i1 %31, label %32, label %34 | |
; <label>:32: ; preds = %29 | |
%33 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4 | |
tail call void @llvm.trap() #4 | |
unreachable | |
; <label>:34: ; preds = %29 | |
%35 = bitcast %"alloc::vec::Vec<u8>"* %5 to i8** | |
store i8* %30, i8** %35, align 4 | |
store i32 %19, i32* %8, align 4 | |
%.pre = load i32, i32* %6, align 4, !alias.scope !87, !noalias !84 | |
br label %37 | |
; <label>:36: ; preds = %12, %16 | |
; call alloc::raw_vec::capacity_overflow | |
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() #4 | |
unreachable | |
; <label>:37: ; preds = %._crit_edge, %34 | |
%38 = phi i8* [ %30, %34 ], [ %.pre1, %._crit_edge ] | |
%39 = phi i32 [ %.pre, %34 ], [ %7, %._crit_edge ] | |
%40 = add i32 %39, %2 | |
store i32 %40, i32* %6, align 4, !noalias !84 | |
%41 = getelementptr inbounds i8, i8* %38, i32 %39 | |
%42 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 0 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %41, i8* nonnull align 1 %42, i32 %2, i1 false) #4 | |
ret i1 false | |
} | |
; <&mut W as core::fmt::Write>::write_char | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$10write_char17h3421ff6923860a71E"(%"alloc::string::String"** nocapture readonly align 4 dereferenceable(4), i32) unnamed_addr #1 { | |
%3 = alloca i32, align 4 | |
%4 = load %"alloc::string::String"*, %"alloc::string::String"** %0, align 4, !nonnull !9 | |
%5 = icmp ult i32 %1, 1114112 | |
tail call void @llvm.assume(i1 %5) #4 | |
%6 = icmp ult i32 %1, 128 | |
br i1 %6, label %9, label %7 | |
; <label>:7: ; preds = %2 | |
%8 = icmp ult i32 %1, 2048 | |
%.0.sroa_cast4 = bitcast i32* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* %.0.sroa_cast4) | |
store i32 0, i32* %3, align 4 | |
br i1 %8, label %48, label %56 | |
; <label>:9: ; preds = %2 | |
%10 = trunc i32 %1 to i8 | |
%11 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 3 | |
%12 = load i32, i32* %11, align 4 | |
%13 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 1, i32 1 | |
%14 = load i32, i32* %13, align 4, !alias.scope !90 | |
%15 = icmp eq i32 %12, %14 | |
br i1 %15, label %16, label %41 | |
; <label>:16: ; preds = %9 | |
%17 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %12, i32 1) #4 | |
%18 = extractvalue { i32, i1 } %17, 0 | |
%19 = extractvalue { i32, i1 } %17, 1 | |
br i1 %19, label %40, label %20 | |
; <label>:20: ; preds = %16 | |
%21 = shl i32 %12, 1 | |
%22 = icmp ult i32 %18, %21 | |
%23 = select i1 %22, i32 %21, i32 %18 | |
%24 = icmp sgt i32 %23, -1 | |
br i1 %24, label %25, label %40 | |
; <label>:25: ; preds = %20 | |
%26 = icmp eq i32 %12, 0 | |
br i1 %26, label %27, label %29 | |
; <label>:27: ; preds = %25 | |
%28 = tail call fastcc i8* @__rust_alloc(i32 %23, i32 1) #4 | |
br label %33 | |
; <label>:29: ; preds = %25 | |
%30 = bitcast %"alloc::string::String"* %4 to i8** | |
%31 = load i8*, i8** %30, align 4, !nonnull !9 | |
%32 = tail call fastcc i8* @__rust_realloc(i8* nonnull %31, i32 %23) #4 | |
br label %33 | |
; <label>:33: ; preds = %29, %27 | |
%34 = phi i8* [ %28, %27 ], [ %32, %29 ] | |
%35 = icmp eq i8* %34, null | |
br i1 %35, label %36, label %38 | |
; <label>:36: ; preds = %33 | |
%37 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4 | |
tail call void @llvm.trap() #4 | |
unreachable | |
; <label>:38: ; preds = %33 | |
%39 = bitcast %"alloc::string::String"* %4 to i8** | |
store i8* %34, i8** %39, align 4 | |
store i32 %23, i32* %13, align 4 | |
%.pre14 = load i32, i32* %11, align 4 | |
br label %41 | |
; <label>:40: ; preds = %20, %16 | |
; call alloc::raw_vec::capacity_overflow | |
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() #4 | |
unreachable | |
; <label>:41: ; preds = %38, %9 | |
%42 = phi i32 [ %.pre14, %38 ], [ %12, %9 ] | |
%43 = bitcast %"alloc::string::String"* %4 to [0 x i8]** | |
%44 = load [0 x i8]*, [0 x i8]** %43, align 4, !alias.scope !93, !nonnull !9 | |
%45 = getelementptr inbounds [0 x i8], [0 x i8]* %44, i32 0, i32 %42 | |
store i8 %10, i8* %45, align 1 | |
%46 = load i32, i32* %11, align 4 | |
%47 = add i32 %46, 1 | |
store i32 %47, i32* %11, align 4 | |
br label %_ZN5alloc6string6String4push17h2ebd56547e69a48dE.llvm.12840304214050579564.exit | |
; <label>:48: ; preds = %7 | |
%49 = lshr i32 %1, 6 | |
%50 = trunc i32 %49 to i8 | |
%51 = and i8 %50, 31 | |
%52 = or i8 %51, -64 | |
store i8 %52, i8* %.0.sroa_cast4, align 4 | |
%53 = trunc i32 %1 to i8 | |
%54 = and i8 %53, 63 | |
%55 = or i8 %54, -128 | |
%.1.sroa_raw_idx9 = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 1 | |
store i8 %55, i8* %.1.sroa_raw_idx9, align 1 | |
br label %85 | |
; <label>:56: ; preds = %7 | |
%57 = icmp ult i32 %1, 65536 | |
br i1 %57, label %58, label %70 | |
; <label>:58: ; preds = %56 | |
%59 = lshr i32 %1, 12 | |
%60 = trunc i32 %59 to i8 | |
%61 = and i8 %60, 15 | |
%62 = or i8 %61, -32 | |
store i8 %62, i8* %.0.sroa_cast4, align 4 | |
%63 = lshr i32 %1, 6 | |
%64 = trunc i32 %63 to i8 | |
%65 = and i8 %64, 63 | |
%66 = or i8 %65, -128 | |
%.1.sroa_raw_idx7 = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 1 | |
store i8 %66, i8* %.1.sroa_raw_idx7, align 1 | |
%67 = trunc i32 %1 to i8 | |
%68 = and i8 %67, 63 | |
%69 = or i8 %68, -128 | |
%.2.sroa_raw_idx11 = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 2 | |
store i8 %69, i8* %.2.sroa_raw_idx11, align 2 | |
br label %85 | |
; <label>:70: ; preds = %56 | |
%71 = lshr i32 %1, 18 | |
%72 = trunc i32 %71 to i8 | |
%73 = or i8 %72, -16 | |
store i8 %73, i8* %.0.sroa_cast4, align 4 | |
%74 = lshr i32 %1, 12 | |
%75 = trunc i32 %74 to i8 | |
%76 = and i8 %75, 63 | |
%77 = or i8 %76, -128 | |
%.1.sroa_raw_idx = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 1 | |
store i8 %77, i8* %.1.sroa_raw_idx, align 1 | |
%78 = lshr i32 %1, 6 | |
%79 = trunc i32 %78 to i8 | |
%80 = and i8 %79, 63 | |
%81 = or i8 %80, -128 | |
%.2.sroa_raw_idx = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 2 | |
store i8 %81, i8* %.2.sroa_raw_idx, align 2 | |
%82 = trunc i32 %1 to i8 | |
%83 = and i8 %82, 63 | |
%84 = or i8 %83, -128 | |
%.3.sroa_raw_idx = getelementptr inbounds i8, i8* %.0.sroa_cast4, i32 3 | |
store i8 %84, i8* %.3.sroa_raw_idx, align 1 | |
br label %85 | |
; <label>:85: ; preds = %70, %58, %48 | |
%86 = phi i32 [ 2, %48 ], [ 3, %58 ], [ 4, %70 ] | |
%87 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 3 | |
%88 = load i32, i32* %87, align 4 | |
%89 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %4, i32 0, i32 1, i32 1, i32 1 | |
%90 = load i32, i32* %89, align 4, !alias.scope !96 | |
%91 = sub i32 %90, %88 | |
%92 = icmp ult i32 %91, %86 | |
br i1 %92, label %93, label %._crit_edge | |
._crit_edge: ; preds = %85 | |
%.phi.trans.insert = bitcast %"alloc::string::String"* %4 to i8** | |
%.pre12 = load i8*, i8** %.phi.trans.insert, align 4, !alias.scope !99, !noalias !102 | |
br label %118 | |
; <label>:93: ; preds = %85 | |
%94 = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %88, i32 %86) #4 | |
%95 = extractvalue { i32, i1 } %94, 0 | |
%96 = extractvalue { i32, i1 } %94, 1 | |
br i1 %96, label %117, label %97 | |
; <label>:97: ; preds = %93 | |
%98 = shl i32 %90, 1 | |
%99 = icmp ult i32 %95, %98 | |
%100 = select i1 %99, i32 %98, i32 %95 | |
%101 = icmp sgt i32 %100, -1 | |
br i1 %101, label %102, label %117 | |
; <label>:102: ; preds = %97 | |
%103 = icmp eq i32 %90, 0 | |
br i1 %103, label %104, label %106 | |
; <label>:104: ; preds = %102 | |
%105 = tail call fastcc i8* @__rust_alloc(i32 %100, i32 1) #4 | |
br label %110 | |
; <label>:106: ; preds = %102 | |
%107 = bitcast %"alloc::string::String"* %4 to i8** | |
%108 = load i8*, i8** %107, align 4, !nonnull !9 | |
%109 = tail call fastcc i8* @__rust_realloc(i8* nonnull %108, i32 %100) #4 | |
br label %110 | |
; <label>:110: ; preds = %106, %104 | |
%111 = phi i8* [ %105, %104 ], [ %109, %106 ] | |
%112 = icmp eq i8* %111, null | |
br i1 %112, label %113, label %115 | |
; <label>:113: ; preds = %110 | |
%114 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4 | |
tail call void @llvm.trap() #4 | |
unreachable | |
; <label>:115: ; preds = %110 | |
%116 = bitcast %"alloc::string::String"* %4 to i8** | |
store i8* %111, i8** %116, align 4 | |
store i32 %100, i32* %89, align 4 | |
%.pre = load i32, i32* %87, align 4, !alias.scope !105, !noalias !102 | |
br label %118 | |
; <label>:117: ; preds = %97, %93 | |
; call alloc::raw_vec::capacity_overflow | |
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() #4 | |
unreachable | |
; <label>:118: ; preds = %._crit_edge, %115 | |
%119 = phi i8* [ %111, %115 ], [ %.pre12, %._crit_edge ] | |
%120 = phi i32 [ %.pre, %115 ], [ %88, %._crit_edge ] | |
%121 = add i32 %120, %86 | |
store i32 %121, i32* %87, align 4, !noalias !102 | |
%122 = getelementptr inbounds i8, i8* %119, i32 %120 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %122, i8* nonnull align 4 %.0.sroa_cast4, i32 %86, i1 false) #4 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* %.0.sroa_cast4) | |
br label %_ZN5alloc6string6String4push17h2ebd56547e69a48dE.llvm.12840304214050579564.exit | |
_ZN5alloc6string6String4push17h2ebd56547e69a48dE.llvm.12840304214050579564.exit: ; preds = %41, %118 | |
ret i1 false | |
} | |
; <&mut W as core::fmt::Write>::write_fmt | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write$GT$9write_fmt17h6116dc4b2b375d0dE"(%"alloc::string::String"** nocapture readonly align 4 dereferenceable(4), %"core::fmt::Arguments"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #1 { | |
%3 = alloca %"core::fmt::Arguments", align 4 | |
%4 = alloca %"alloc::string::String"*, align 4 | |
%5 = bitcast %"alloc::string::String"** %0 to i32* | |
%6 = load i32, i32* %5, align 4, !range !37 | |
%7 = bitcast %"core::fmt::Arguments"* %1 to i8* | |
%8 = bitcast %"alloc::string::String"** %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %8) | |
%9 = bitcast %"alloc::string::String"** %4 to i32* | |
store i32 %6, i32* %9, align 4, !noalias !108 | |
%10 = bitcast %"alloc::string::String"** %4 to {}* | |
%11 = bitcast %"core::fmt::Arguments"* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %11) #4, !noalias !108 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 %11, i8* nonnull align 4 %7, i32 24, i1 false) | |
; call core::fmt::write | |
%12 = call fastcc zeroext i1 @_ZN4core3fmt5write17h18d01890e24e0492E({}* nonnull align 1 %10, [3 x i32]* noalias readonly align 4 dereferenceable(12) bitcast ({ void (%"alloc::string::String"**)*, i32, i32, i1 (%"alloc::string::String"**, [0 x i8]*, i32)*, i1 (%"alloc::string::String"**, i32)*, i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* }* @anon.744bfa4edaa14c29caacdd024c6ee3e0.0.llvm.12840304214050579564 to [3 x i32]*), %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %3) #4, !noalias !108 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %11) #4, !noalias !108 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %8) | |
ret i1 %12 | |
} | |
; <alloc::raw_vec::RawVec<T, A>>::allocate_in::{{closure}} | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$11allocate_in28_$u7b$$u7b$closure$u7d$$u7d$17h4914b36e41593c37E.llvm.13677019499217490248"() unnamed_addr #5 { | |
; call alloc::raw_vec::capacity_overflow | |
tail call fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() | |
unreachable | |
} | |
; alloc::raw_vec::capacity_overflow | |
; Function Attrs: noreturn nounwind | |
define internal fastcc void @_ZN5alloc7raw_vec17capacity_overflow17ha8fe5d46cd26d32bE() unnamed_addr #5 { | |
; call core::panicking::panic | |
tail call fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(24) bitcast (<{ i8*, [4 x i8], i8*, [12 x i8] }>* @anon.3159f7bfd756b91e03039f83b95d896b.6.llvm.13677019499217490248 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
} | |
; core::result::unwrap_failed | |
; Function Attrs: cold noinline noreturn nounwind | |
define internal fastcc void @_ZN4core6result13unwrap_failed17hdaafde7dc2e93beeE() unnamed_addr #11 { | |
%1 = alloca {}, align 1 | |
%2 = alloca [2 x { i8*, i8* }], align 4 | |
%3 = alloca %"core::fmt::Arguments", align 4 | |
%4 = alloca { [0 x i8]*, i32 }, align 4 | |
%5 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %4, i32 0, i32 0 | |
store [0 x i8]* bitcast (<{ [51 x i8] }>* @anon.df567034a751418bb1907aa1d09cab77.2 to [0 x i8]*), [0 x i8]** %5, align 4 | |
%6 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %4, i32 0, i32 1 | |
store i32 51, i32* %6, align 4 | |
%7 = bitcast %"core::fmt::Arguments"* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %7) | |
%8 = bitcast [2 x { i8*, i8* }]* %2 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %8) | |
%9 = bitcast [2 x { i8*, i8* }]* %2 to { [0 x i8]*, i32 }** | |
store { [0 x i8]*, i32 }* %4, { [0 x i8]*, i32 }** %9, align 4 | |
%10 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %2, i32 0, i32 0, i32 1 | |
store i8* bitcast (i1 ({ [0 x i8]*, i32 }*, %"core::fmt::Formatter"*)* @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h55db9f6e3c3fdf96E" to i8*), i8** %10, align 4 | |
%11 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %2, i32 0, i32 1, i32 0 | |
%12 = bitcast i8** %11 to {}** | |
store {}* %1, {}** %12, align 4 | |
%13 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %2, i32 0, i32 1, i32 1 | |
store i8* bitcast (i1 ({}*, %"core::fmt::Formatter"*)* @"_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h5c867cfdf324d2bdE" to i8*), i8** %13, align 4 | |
%14 = bitcast %"core::fmt::Arguments"* %3 to [0 x { [0 x i8]*, i32 }]** | |
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8], i8*, [4 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.2 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %14, align 4, !alias.scope !111, !noalias !114 | |
%15 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 1, i32 1 | |
store i32 2, i32* %15, align 4, !alias.scope !111, !noalias !114 | |
%16 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 3, i32 0 | |
store i32* null, i32** %16, align 4, !alias.scope !111, !noalias !114 | |
%17 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 5, i32 0 | |
%18 = bitcast [0 x { i8*, i8* }]** %17 to [2 x { i8*, i8* }]** | |
store [2 x { i8*, i8* }]* %2, [2 x { i8*, i8* }]** %18, align 4, !alias.scope !111, !noalias !114 | |
%19 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %3, i32 0, i32 5, i32 1 | |
store i32 2, i32* %19, align 4, !alias.scope !111, !noalias !114 | |
; call core::panicking::panic_fmt | |
call fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %3, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast (<{ i8*, [12 x i8] }>* @anon.4607067c643420ef3dad7445f19d8a9e.4 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
} | |
; <&T as core::fmt::Display>::fmt | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h55db9f6e3c3fdf96E"({ [0 x i8]*, i32 }* noalias nocapture readonly align 4 dereferenceable(8), %"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52)) unnamed_addr #1 { | |
%3 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %0, i32 0, i32 0 | |
%4 = load [0 x i8]*, [0 x i8]** %3, align 4, !nonnull !9 | |
%5 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %0, i32 0, i32 1 | |
%6 = load i32, i32* %5, align 4 | |
; call core::fmt::Formatter::pad | |
%7 = tail call fastcc zeroext i1 @_ZN4core3fmt9Formatter3pad17hbc71133907d50792E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %6) #4 | |
ret i1 %7 | |
} | |
; alloc::fmt::format | |
; Function Attrs: nounwind | |
define internal fastcc void @_ZN5alloc3fmt6format17h80561ab88cfa3a4eE(%"alloc::string::String"* noalias nocapture dereferenceable(12), %"core::fmt::Arguments"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #1 { | |
%3 = alloca %"core::fmt::Arguments", align 4 | |
%4 = alloca %"alloc::string::String"*, align 4 | |
%5 = alloca %"alloc::string::String", align 4 | |
%6 = bitcast %"core::fmt::Arguments"* %1 to [0 x { [0 x i8]*, i32 }]** | |
%7 = load [0 x { [0 x i8]*, i32 }]*, [0 x { [0 x i8]*, i32 }]** %6, align 4, !alias.scope !116, !nonnull !9 | |
%8 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %1, i32 0, i32 1, i32 1 | |
%9 = load i32, i32* %8, align 4, !alias.scope !116 | |
%10 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %7, i32 0, i32 %9 | |
%11 = bitcast { [0 x i8]*, i32 }* %10 to i32* | |
%12 = bitcast { [0 x i8]*, i32 }* %10 to [0 x { [0 x i8]*, i32 }]* | |
%13 = icmp eq [0 x { [0 x i8]*, i32 }]* %7, %12 | |
br i1 %13, label %.loopexit, label %14 | |
; <label>:14: ; preds = %2 | |
%15 = bitcast [0 x { [0 x i8]*, i32 }]* %7 to i32* | |
br label %16 | |
; <label>:16: ; preds = %16, %14 | |
%17 = phi i32 [ %22, %16 ], [ 0, %14 ] | |
%18 = phi i32* [ %19, %16 ], [ %15, %14 ] | |
%19 = getelementptr inbounds i32, i32* %18, i32 2 | |
%20 = getelementptr inbounds i32, i32* %18, i32 1 | |
%21 = load i32, i32* %20, align 4, !alias.scope !119, !noalias !116 | |
%22 = add i32 %21, %17 | |
%23 = icmp eq i32* %19, %11 | |
br i1 %23, label %.loopexit, label %16 | |
.loopexit: ; preds = %16, %2 | |
%24 = phi i32 [ 0, %2 ], [ %22, %16 ] | |
%25 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %1, i32 0, i32 5, i32 1 | |
%26 = load i32, i32* %25, align 4, !alias.scope !116 | |
%27 = icmp eq i32 %26, 0 | |
br i1 %27, label %43, label %28 | |
; <label>:28: ; preds = %.loopexit | |
%29 = icmp eq i32 %9, 0 | |
br i1 %29, label %40, label %30, !prof !124 | |
; <label>:30: ; preds = %28 | |
%31 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %7, i32 0, i32 0, i32 1 | |
%32 = load i32, i32* %31, align 4, !alias.scope !125, !noalias !116 | |
%33 = icmp eq i32 %32, 0 | |
%34 = icmp ult i32 %24, 16 | |
%35 = and i1 %33, %34 | |
br i1 %35, label %41, label %36 | |
; <label>:36: ; preds = %30 | |
%37 = tail call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %24, i32 2) #4 | |
%38 = extractvalue { i32, i1 } %37, 0 | |
%39 = extractvalue { i32, i1 } %37, 1 | |
br i1 %39, label %41, label %43 | |
; <label>:40: ; preds = %28 | |
; call core::panicking::panic_bounds_check | |
tail call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.df567034a751418bb1907aa1d09cab77.0 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 0, i32 0) #4, !noalias !116 | |
unreachable | |
; <label>:41: ; preds = %36, %30 | |
%42 = bitcast %"alloc::string::String"* %5 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 12, i8* nonnull %42) | |
br label %55 | |
; <label>:43: ; preds = %36, %.loopexit | |
%44 = phi i32 [ %24, %.loopexit ], [ %38, %36 ] | |
%45 = bitcast %"alloc::string::String"* %5 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 12, i8* nonnull %45) | |
%46 = icmp sgt i32 %44, -1 | |
br i1 %46, label %48, label %47 | |
; <label>:47: ; preds = %43 | |
; call <alloc::raw_vec::RawVec<T, A>>::allocate_in::{{closure}} | |
tail call fastcc void @"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$11allocate_in28_$u7b$$u7b$closure$u7d$$u7d$17h4914b36e41593c37E.llvm.13677019499217490248"() #4 | |
unreachable | |
; <label>:48: ; preds = %43 | |
%49 = icmp eq i32 %44, 0 | |
br i1 %49, label %55, label %50 | |
; <label>:50: ; preds = %48 | |
%51 = tail call fastcc i8* @__rust_alloc(i32 %44, i32 1) #4 | |
%52 = icmp eq i8* %51, null | |
br i1 %52, label %53, label %55 | |
; <label>:53: ; preds = %50 | |
%54 = load atomic i32, i32* bitcast (<{ [4 x i8] }>* @_ZN3std5alloc4HOOK17h764bafd5839a31b5E to i32*) seq_cst, align 4 | |
tail call void @llvm.trap() #4 | |
unreachable | |
; <label>:55: ; preds = %50, %48, %41 | |
%56 = phi i8* [ %45, %48 ], [ %45, %50 ], [ %42, %41 ] | |
%57 = phi i32 [ 0, %48 ], [ %44, %50 ], [ 0, %41 ] | |
%58 = phi i8* [ inttoptr (i32 1 to i8*), %48 ], [ %51, %50 ], [ inttoptr (i32 1 to i8*), %41 ] | |
%59 = bitcast %"alloc::string::String"* %5 to i8** | |
store i8* %58, i8** %59, align 4, !alias.scope !128 | |
%60 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %5, i32 0, i32 1, i32 1, i32 1 | |
store i32 %57, i32* %60, align 4, !alias.scope !128 | |
%61 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %5, i32 0, i32 1, i32 3 | |
store i32 0, i32* %61, align 4, !alias.scope !128 | |
%62 = bitcast %"core::fmt::Arguments"* %1 to i8* | |
%63 = bitcast %"alloc::string::String"** %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %63) | |
store %"alloc::string::String"* %5, %"alloc::string::String"** %4, align 4, !noalias !131 | |
%64 = bitcast %"alloc::string::String"** %4 to {}* | |
%65 = bitcast %"core::fmt::Arguments"* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %65) #4, !noalias !131 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 %65, i8* nonnull align 4 %62, i32 24, i1 false) | |
; call core::fmt::write | |
%66 = call fastcc zeroext i1 @_ZN4core3fmt5write17h18d01890e24e0492E({}* nonnull align 1 %64, [3 x i32]* noalias readonly align 4 dereferenceable(12) bitcast ({ void (%"alloc::string::String"**)*, i32, i32, i1 (%"alloc::string::String"**, [0 x i8]*, i32)*, i1 (%"alloc::string::String"**, i32)*, i1 (%"alloc::string::String"**, %"core::fmt::Arguments"*)* }* @anon.744bfa4edaa14c29caacdd024c6ee3e0.0.llvm.12840304214050579564 to [3 x i32]*), %"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %3) #4, !noalias !131 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %65) #4, !noalias !131 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %63) | |
br i1 %66, label %67, label %68 | |
; <label>:67: ; preds = %55 | |
; call core::result::unwrap_failed | |
call fastcc void @_ZN4core6result13unwrap_failed17hdaafde7dc2e93beeE() #4 | |
unreachable | |
; <label>:68: ; preds = %55 | |
%69 = bitcast %"alloc::string::String"* %0 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 4 %69, i8* nonnull align 4 %56, i32 12, i1 false) | |
call void @llvm.lifetime.end.p0i8(i64 12, i8* nonnull %56) | |
ret void | |
} | |
; core::fmt::num::<impl core::fmt::Display for i32>::fmt | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h5c1f9ab69dc6586bE"(i32* noalias nocapture readonly align 4 dereferenceable(4), %"core::fmt::Formatter"* align 4 dereferenceable(52)) unnamed_addr #1 { | |
%3 = alloca [39 x i8], align 1 | |
%4 = load i32, i32* %0, align 4 | |
%5 = icmp sgt i32 %4, -1 | |
%6 = sub i32 0, %4 | |
%7 = select i1 %5, i32 %4, i32 %6 | |
%8 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 0 | |
call void @llvm.lifetime.start.p0i8(i64 39, i8* nonnull %8) | |
%9 = icmp ugt i32 %7, 9999 | |
br i1 %9, label %.preheader, label %.loopexit | |
.preheader: ; preds = %2, %.preheader | |
%10 = phi i32 [ %12, %.preheader ], [ %7, %2 ] | |
%11 = phi i32 [ %20, %.preheader ], [ 39, %2 ] | |
%12 = udiv i32 %10, 10000 | |
%13 = mul i32 %12, -10000 | |
%14 = add i32 %10, %13 | |
%15 = udiv i32 %14, 100 | |
%16 = shl nuw nsw i32 %15, 1 | |
%17 = mul i32 %15, -100 | |
%18 = add i32 %14, %17 | |
%19 = shl nuw nsw i32 %18, 1 | |
%20 = add i32 %11, -4 | |
%21 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %16 | |
%22 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %20 | |
%23 = bitcast i8* %21 to i16* | |
%24 = bitcast i8* %22 to i16* | |
%25 = load i16, i16* %23, align 1 | |
store i16 %25, i16* %24, align 1 | |
%26 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %19 | |
%27 = add nsw i32 %11, -2 | |
%28 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %27 | |
%29 = bitcast i8* %26 to i16* | |
%30 = bitcast i8* %28 to i16* | |
%31 = load i16, i16* %29, align 1 | |
store i16 %31, i16* %30, align 1 | |
%32 = icmp ugt i32 %10, 99999999 | |
br i1 %32, label %.preheader, label %.loopexit | |
.loopexit: ; preds = %.preheader, %2 | |
%33 = phi i32 [ 39, %2 ], [ %20, %.preheader ] | |
%34 = phi i32 [ %7, %2 ], [ %12, %.preheader ] | |
%35 = icmp sgt i32 %34, 99 | |
br i1 %35, label %36, label %50 | |
; <label>:36: ; preds = %.loopexit | |
%37 = trunc i32 %34 to i16 | |
%38 = udiv i16 %37, 100 | |
%39 = mul i16 %38, -100 | |
%40 = add i16 %39, %37 | |
%41 = shl nuw nsw i16 %40, 1 | |
%42 = zext i16 %41 to i32 | |
%43 = zext i16 %38 to i32 | |
%44 = add i32 %33, -2 | |
%45 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %42 | |
%46 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %44 | |
%47 = bitcast i8* %45 to i16* | |
%48 = bitcast i8* %46 to i16* | |
%49 = load i16, i16* %47, align 1 | |
store i16 %49, i16* %48, align 1 | |
br label %50 | |
; <label>:50: ; preds = %36, %.loopexit | |
%51 = phi i32 [ %43, %36 ], [ %34, %.loopexit ] | |
%52 = phi i32 [ %44, %36 ], [ %33, %.loopexit ] | |
%53 = icmp slt i32 %51, 10 | |
br i1 %53, label %54, label %59 | |
; <label>:54: ; preds = %50 | |
%55 = add i32 %52, -1 | |
%56 = trunc i32 %51 to i8 | |
%57 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %55 | |
%58 = add i8 %56, 48 | |
store i8 %58, i8* %57, align 1 | |
br label %67 | |
; <label>:59: ; preds = %50 | |
%60 = shl i32 %51, 1 | |
%61 = add i32 %52, -2 | |
%62 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %60 | |
%63 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %61 | |
%64 = bitcast i8* %62 to i16* | |
%65 = bitcast i8* %63 to i16* | |
%66 = load i16, i16* %64, align 1 | |
store i16 %66, i16* %65, align 1 | |
br label %67 | |
; <label>:67: ; preds = %59, %54 | |
%68 = phi i32 [ %55, %54 ], [ %61, %59 ] | |
%69 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %68 | |
%70 = sub i32 39, %68 | |
%71 = bitcast i8* %69 to [0 x i8]* | |
; call core::fmt::Formatter::pad_integral | |
%72 = call fastcc zeroext i1 @_ZN4core3fmt9Formatter12pad_integral17h34cff05b06e579e3E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1, i1 zeroext %5, [0 x i8]* noalias nonnull readonly align 1 getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0), i32 0, [0 x i8]* noalias nonnull readonly align 1 %71, i32 %70) | |
call void @llvm.lifetime.end.p0i8(i64 39, i8* nonnull %8) | |
ret i1 %72 | |
} | |
; core::fmt::num::<impl core::fmt::Display for u32>::fmt | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E"(i32* noalias nocapture readonly align 4 dereferenceable(4), %"core::fmt::Formatter"* align 4 dereferenceable(52)) unnamed_addr #1 { | |
%3 = alloca [39 x i8], align 1 | |
%4 = load i32, i32* %0, align 4, !alias.scope !134 | |
%5 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 0 | |
call void @llvm.lifetime.start.p0i8(i64 39, i8* nonnull %5) | |
%6 = icmp ugt i32 %4, 9999 | |
br i1 %6, label %.preheader, label %.loopexit | |
.preheader: ; preds = %2, %.preheader | |
%7 = phi i32 [ %9, %.preheader ], [ %4, %2 ] | |
%8 = phi i32 [ %17, %.preheader ], [ 39, %2 ] | |
%9 = udiv i32 %7, 10000 | |
%10 = mul i32 %9, -10000 | |
%11 = add i32 %7, %10 | |
%12 = udiv i32 %11, 100 | |
%13 = shl nuw nsw i32 %12, 1 | |
%14 = mul i32 %12, -100 | |
%15 = add i32 %11, %14 | |
%16 = shl nuw nsw i32 %15, 1 | |
%17 = add i32 %8, -4 | |
%18 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %13 | |
%19 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %17 | |
%20 = bitcast i8* %18 to i16* | |
%21 = bitcast i8* %19 to i16* | |
%22 = load i16, i16* %20, align 1 | |
store i16 %22, i16* %21, align 1 | |
%23 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %16 | |
%24 = add nsw i32 %8, -2 | |
%25 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %24 | |
%26 = bitcast i8* %23 to i16* | |
%27 = bitcast i8* %25 to i16* | |
%28 = load i16, i16* %26, align 1 | |
store i16 %28, i16* %27, align 1 | |
%29 = icmp ugt i32 %7, 99999999 | |
br i1 %29, label %.preheader, label %.loopexit | |
.loopexit: ; preds = %.preheader, %2 | |
%30 = phi i32 [ 39, %2 ], [ %17, %.preheader ] | |
%31 = phi i32 [ %4, %2 ], [ %9, %.preheader ] | |
%32 = icmp sgt i32 %31, 99 | |
br i1 %32, label %33, label %47 | |
; <label>:33: ; preds = %.loopexit | |
%34 = trunc i32 %31 to i16 | |
%35 = udiv i16 %34, 100 | |
%36 = mul i16 %35, -100 | |
%37 = add i16 %36, %34 | |
%38 = shl nuw nsw i16 %37, 1 | |
%39 = zext i16 %38 to i32 | |
%40 = zext i16 %35 to i32 | |
%41 = add i32 %30, -2 | |
%42 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %39 | |
%43 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %41 | |
%44 = bitcast i8* %42 to i16* | |
%45 = bitcast i8* %43 to i16* | |
%46 = load i16, i16* %44, align 1 | |
store i16 %46, i16* %45, align 1 | |
br label %47 | |
; <label>:47: ; preds = %33, %.loopexit | |
%48 = phi i32 [ %40, %33 ], [ %31, %.loopexit ] | |
%49 = phi i32 [ %41, %33 ], [ %30, %.loopexit ] | |
%50 = icmp slt i32 %48, 10 | |
br i1 %50, label %51, label %56 | |
; <label>:51: ; preds = %47 | |
%52 = add i32 %49, -1 | |
%53 = trunc i32 %48 to i8 | |
%54 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %52 | |
%55 = add i8 %53, 48 | |
store i8 %55, i8* %54, align 1 | |
br label %64 | |
; <label>:56: ; preds = %47 | |
%57 = shl i32 %48, 1 | |
%58 = add i32 %49, -2 | |
%59 = getelementptr inbounds <{ [200 x i8] }>, <{ [200 x i8] }>* @anon.708fca5ccd446fbb872f5ba40770e462.15.llvm.3542408450613910376, i32 0, i32 0, i32 %57 | |
%60 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %58 | |
%61 = bitcast i8* %59 to i16* | |
%62 = bitcast i8* %60 to i16* | |
%63 = load i16, i16* %61, align 1 | |
store i16 %63, i16* %62, align 1 | |
br label %64 | |
; <label>:64: ; preds = %56, %51 | |
%65 = phi i32 [ %52, %51 ], [ %58, %56 ] | |
%66 = getelementptr inbounds [39 x i8], [39 x i8]* %3, i32 0, i32 %65 | |
%67 = sub i32 39, %65 | |
%68 = bitcast i8* %66 to [0 x i8]* | |
; call core::fmt::Formatter::pad_integral | |
%69 = call fastcc zeroext i1 @_ZN4core3fmt9Formatter12pad_integral17h34cff05b06e579e3E(%"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1, i1 zeroext true, [0 x i8]* noalias nonnull readonly align 1 getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6, i32 0, i32 0), i32 0, [0 x i8]* noalias nonnull readonly align 1 %68, i32 %67) | |
call void @llvm.lifetime.end.p0i8(i64 39, i8* nonnull %5) | |
ret i1 %69 | |
} | |
; core::panicking::panic_bounds_check | |
; Function Attrs: cold noinline noreturn nounwind | |
define internal fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(16), i32, i32) unnamed_addr #11 { | |
%4 = alloca [2 x { i8*, i8* }], align 4 | |
%5 = alloca %"core::fmt::Arguments", align 4 | |
%6 = alloca i32, align 4 | |
%7 = alloca i32, align 4 | |
store i32 %1, i32* %7, align 4 | |
store i32 %2, i32* %6, align 4 | |
%8 = bitcast %"core::fmt::Arguments"* %5 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %8) | |
%9 = bitcast [2 x { i8*, i8* }]* %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %9) | |
%10 = bitcast [2 x { i8*, i8* }]* %4 to i32** | |
store i32* %6, i32** %10, align 4 | |
%11 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %4, i32 0, i32 0, i32 1 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E" to i8*), i8** %11, align 4 | |
%12 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %4, i32 0, i32 1, i32 0 | |
%13 = bitcast i8** %12 to i32** | |
store i32* %7, i32** %13, align 4 | |
%14 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %4, i32 0, i32 1, i32 1 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E" to i8*), i8** %14, align 4 | |
%15 = bitcast %"core::fmt::Arguments"* %5 to [0 x { [0 x i8]*, i32 }]** | |
store [0 x { [0 x i8]*, i32 }]* bitcast (<{ i8*, [4 x i8], i8*, [4 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.16 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %15, align 4, !alias.scope !137, !noalias !140 | |
%16 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 1, i32 1 | |
store i32 2, i32* %16, align 4, !alias.scope !137, !noalias !140 | |
%17 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 3, i32 0 | |
store i32* null, i32** %17, align 4, !alias.scope !137, !noalias !140 | |
%18 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 5, i32 0 | |
%19 = bitcast [0 x { i8*, i8* }]** %18 to [2 x { i8*, i8* }]** | |
store [2 x { i8*, i8* }]* %4, [2 x { i8*, i8* }]** %19, align 4, !alias.scope !137, !noalias !140 | |
%20 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %5, i32 0, i32 5, i32 1 | |
store i32 2, i32* %20, align 4, !alias.scope !137, !noalias !140 | |
; call core::panicking::panic_fmt | |
call fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %5, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nonnull readonly align 4 dereferenceable(16) %0) | |
unreachable | |
} | |
; core::panicking::panic_fmt | |
; Function Attrs: cold noinline noreturn nounwind | |
define internal fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture dereferenceable(24), { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(16)) unnamed_addr #11 { | |
%3 = alloca %"core::panic::PanicInfo", align 4 | |
%4 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 0, i32 0 | |
%5 = load i32, i32* %4, align 4, !range !37 | |
%6 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 1, i32 1 | |
%7 = load i32, i32* %6, align 4 | |
%8 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 3 | |
%9 = load i32, i32* %8, align 4 | |
%10 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %1, i32 0, i32 5 | |
%11 = load i32, i32* %10, align 4 | |
%12 = bitcast %"core::panic::PanicInfo"* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 28, i8* nonnull %12) | |
%13 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %0, i32 0, i32 0, i32 0 | |
%14 = bitcast %"core::panic::PanicInfo"* %3 to {}** | |
store {}* bitcast (<{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6 to {}*), {}** %14, align 4, !alias.scope !143, !noalias !146 | |
%15 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 1, i32 1 | |
store [3 x i32]* bitcast ({ void ({}*)*, i32, i32, i64 ({}*)* }* @anon.136c3a089fa491cfa7e187c04edf4986.7 to [3 x i32]*), [3 x i32]** %15, align 4, !alias.scope !143, !noalias !146 | |
%16 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 3 | |
store i32* %13, i32** %16, align 4, !alias.scope !143, !noalias !146 | |
%17 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 0, i32 0 | |
store i32 %5, i32* %17, align 4, !alias.scope !149, !noalias !150 | |
%18 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 1, i32 1 | |
store i32 %7, i32* %18, align 4, !alias.scope !149, !noalias !150 | |
%19 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 3 | |
store i32 %9, i32* %19, align 4, !alias.scope !149, !noalias !150 | |
%20 = getelementptr inbounds %"core::panic::PanicInfo", %"core::panic::PanicInfo"* %3, i32 0, i32 5, i32 5 | |
store i32 %11, i32* %20, align 4, !alias.scope !149, !noalias !150 | |
call fastcc void @rust_begin_unwind(%"core::panic::PanicInfo"* noalias nonnull readonly align 4 dereferenceable(28) %3) | |
unreachable | |
} | |
; core::ptr::real_drop_in_place | |
; Function Attrs: norecurse nounwind readnone | |
define internal void @_ZN4core3ptr18real_drop_in_place17h026a842523523ee8E({}* nocapture nonnull align 1) unnamed_addr #10 { | |
ret void | |
} | |
; <T as core::any::Any>::type_id | |
; Function Attrs: norecurse nounwind readnone | |
define internal i64 @"_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h6d1bf52e02a96543E"({}* noalias nocapture nonnull readonly align 1) unnamed_addr #10 { | |
ret i64 -5817800046755366305 | |
} | |
; core::panicking::panic | |
; Function Attrs: cold noinline noreturn nounwind | |
define internal fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nocapture readonly align 4 dereferenceable(24)) unnamed_addr #11 { | |
%2 = alloca { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, align 4 | |
%3 = alloca [1 x { [0 x i8]*, i32 }], align 4 | |
%4 = alloca %"core::fmt::Arguments", align 4 | |
%5 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 0, i32 0 | |
%6 = load i32, i32* %5, align 4, !range !37 | |
%7 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 1, i32 1 | |
%8 = load i32, i32* %7, align 4 | |
%9 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 3 | |
%10 = bitcast { [0 x i8]*, i32 }* %9 to i32* | |
%11 = load i32, i32* %10, align 4, !range !37 | |
%12 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 3, i32 1 | |
%13 = load i32, i32* %12, align 4 | |
%14 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 5 | |
%15 = load i32, i32* %14, align 4 | |
%16 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %0, i32 0, i32 7 | |
%17 = load i32, i32* %16, align 4 | |
%18 = bitcast %"core::fmt::Arguments"* %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %18) | |
%19 = bitcast [1 x { [0 x i8]*, i32 }]* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %19) | |
%20 = bitcast [1 x { [0 x i8]*, i32 }]* %3 to i32* | |
store i32 %6, i32* %20, align 4 | |
%21 = getelementptr inbounds [1 x { [0 x i8]*, i32 }], [1 x { [0 x i8]*, i32 }]* %3, i32 0, i32 0, i32 1 | |
store i32 %8, i32* %21, align 4 | |
%22 = bitcast %"core::fmt::Arguments"* %4 to [1 x { [0 x i8]*, i32 }]** | |
store [1 x { [0 x i8]*, i32 }]* %3, [1 x { [0 x i8]*, i32 }]** %22, align 4, !alias.scope !151, !noalias !154 | |
%23 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 1, i32 1 | |
store i32 1, i32* %23, align 4, !alias.scope !151, !noalias !154 | |
%24 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 3, i32 0 | |
store i32* null, i32** %24, align 4, !alias.scope !151, !noalias !154 | |
%25 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 5, i32 0 | |
store [0 x { i8*, i8* }]* bitcast (<{ [0 x i8] }>* @anon.136c3a089fa491cfa7e187c04edf4986.6 to [0 x { i8*, i8* }]*), [0 x { i8*, i8* }]** %25, align 4, !alias.scope !151, !noalias !154 | |
%26 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %4, i32 0, i32 5, i32 1 | |
store i32 0, i32* %26, align 4, !alias.scope !151, !noalias !154 | |
%27 = bitcast { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %27) | |
%28 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 0, i32 0 | |
store i32 %11, i32* %28, align 4 | |
%29 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 1, i32 1 | |
store i32 %13, i32* %29, align 4 | |
%30 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 3 | |
store i32 %15, i32* %30, align 4 | |
%31 = getelementptr inbounds { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* %2, i32 0, i32 5 | |
store i32 %17, i32* %31, align 4 | |
; call core::panicking::panic_fmt | |
call fastcc void @_ZN4core9panicking9panic_fmt17hfb43ac5c635991beE(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(24) %4, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias nonnull readonly align 4 dereferenceable(16) %2) | |
unreachable | |
} | |
; core::fmt::ArgumentV1::show_usize | |
; Function Attrs: noinline nounwind | |
define internal zeroext i1 @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446(i32* noalias nocapture readonly align 4 dereferenceable(4), %"core::fmt::Formatter"* align 4 dereferenceable(52)) unnamed_addr #2 { | |
; call core::fmt::num::<impl core::fmt::Display for u32>::fmt | |
%3 = tail call zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h9b86ba6311b485c2E"(i32* noalias nonnull readonly align 4 dereferenceable(4) %0, %"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %1) | |
ret i1 %3 | |
} | |
; core::fmt::write | |
; Function Attrs: nounwind | |
define internal fastcc zeroext i1 @_ZN4core3fmt5write17h18d01890e24e0492E({}* nonnull align 1, [3 x i32]* noalias readonly align 4 dereferenceable(12), %"core::fmt::Arguments"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #1 { | |
%4 = alloca %"core::fmt::Formatter", align 4 | |
%5 = bitcast %"core::fmt::Formatter"* %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 52, i8* nonnull %5) | |
%6 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 5, i32 0 | |
%7 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %6, align 4, !nonnull !9 | |
%8 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 5, i32 1 | |
%9 = load i32, i32* %8, align 4 | |
%10 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %7, i32 0, i32 %9 | |
%11 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 0, i32 0 | |
store i32 0, i32* %11, align 4 | |
%12 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 3 | |
store i32 32, i32* %12, align 4 | |
%13 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 15 | |
store i8 3, i8* %13, align 4 | |
%14 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 5, i32 0 | |
store i32 0, i32* %14, align 4 | |
%15 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 7, i32 0 | |
store i32 0, i32* %15, align 4 | |
%16 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 9, i32 0 | |
store {}* %0, {}** %16, align 4 | |
%17 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 9, i32 1 | |
store [3 x i32]* %1, [3 x i32]** %17, align 4 | |
%18 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 11, i32 0 | |
%19 = bitcast i32** %18 to [0 x { i8*, i8* }]** | |
store [0 x { i8*, i8* }]* %7, [0 x { i8*, i8* }]** %19, align 4 | |
%20 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 11, i32 1 | |
%21 = bitcast i32** %20 to { i8*, i8* }** | |
store { i8*, i8* }* %10, { i8*, i8* }** %21, align 4 | |
%22 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 13, i32 0 | |
store [0 x { i8*, i8* }]* %7, [0 x { i8*, i8* }]** %22, align 4 | |
%23 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 13, i32 1 | |
store i32 %9, i32* %23, align 4 | |
%24 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 3 | |
%25 = bitcast { i32*, i32 }* %24 to {}** | |
%26 = load {}*, {}** %25, align 4 | |
%27 = icmp eq {}* %26, null | |
br i1 %27, label %28, label %46 | |
; <label>:28: ; preds = %3 | |
%29 = bitcast %"core::fmt::Arguments"* %2 to [0 x { [0 x i8]*, i32 }]** | |
%30 = load [0 x { [0 x i8]*, i32 }]*, [0 x { [0 x i8]*, i32 }]** %29, align 4, !nonnull !9 | |
%31 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 1, i32 1 | |
%32 = load i32, i32* %31, align 4 | |
%33 = icmp ugt i32 %9, %32 | |
%34 = select i1 %33, i32 %32, i32 %9 | |
%35 = icmp eq i32 %34, 0 | |
br i1 %35, label %.loopexit19, label %36 | |
; <label>:36: ; preds = %28 | |
%37 = bitcast [3 x i32]** %17 to i1 ({}*, [0 x i8]*, i32)*** | |
%38 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 0, i32 0 | |
%39 = load [0 x i8]*, [0 x i8]** %38, align 4, !nonnull !9 | |
%40 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 0, i32 1 | |
%41 = load i32, i32* %40, align 4 | |
%42 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 3 | |
%43 = bitcast i32* %42 to i1 ({}*, [0 x i8]*, i32)** | |
%44 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %43, align 4, !invariant.load !9, !nonnull !9 | |
%45 = call zeroext i1 %44({}* nonnull align 1 %0, [0 x i8]* noalias nonnull readonly align 1 %39, i32 %41) #4 | |
br i1 %45, label %.loopexit, label %.preheader | |
; <label>:46: ; preds = %3 | |
%47 = bitcast {}* %26 to [0 x %"fmt::rt::v1::Argument"]* | |
%48 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 3, i32 1 | |
%49 = load i32, i32* %48, align 4 | |
%50 = getelementptr inbounds [0 x %"fmt::rt::v1::Argument"], [0 x %"fmt::rt::v1::Argument"]* %47, i32 0, i32 %49, i32 0, i32 0 | |
%51 = bitcast %"core::fmt::Arguments"* %2 to [0 x { [0 x i8]*, i32 }]** | |
%52 = load [0 x { [0 x i8]*, i32 }]*, [0 x { [0 x i8]*, i32 }]** %51, align 4, !nonnull !9 | |
%53 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %2, i32 0, i32 1, i32 1 | |
%54 = load i32, i32* %53, align 4 | |
%55 = ptrtoint {}* %26 to i32 | |
%56 = ptrtoint i32* %50 to i32 | |
%57 = sub i32 %56, %55 | |
%58 = udiv i32 %57, 36 | |
%59 = icmp ugt i32 %58, %54 | |
%60 = select i1 %59, i32 %54, i32 %58 | |
%61 = icmp eq i32 %60, 0 | |
br i1 %61, label %.loopexit19, label %62 | |
; <label>:62: ; preds = %46 | |
%63 = bitcast [3 x i32]** %17 to i1 ({}*, [0 x i8]*, i32)*** | |
%64 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 11 | |
%65 = bitcast { i32*, i32* }* %64 to { i8*, i8* }** | |
%66 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 5, i32 1 | |
%67 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %4, i32 0, i32 7, i32 1 | |
%68 = bitcast {}* %26 to %"fmt::rt::v1::Argument"* | |
%69 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 0, i32 0 | |
%70 = load [0 x i8]*, [0 x i8]** %69, align 4, !nonnull !9 | |
%71 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 0, i32 1 | |
%72 = load i32, i32* %71, align 4 | |
%73 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 3 | |
%74 = bitcast i32* %73 to i1 ({}*, [0 x i8]*, i32)** | |
%75 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %74, align 4, !invariant.load !9, !nonnull !9 | |
%76 = call zeroext i1 %75({}* nonnull align 1 %0, [0 x i8]* noalias nonnull readonly align 1 %70, i32 %72) #4 | |
br i1 %76, label %.loopexit, label %.preheader20 | |
.loopexit19: ; preds = %223, %92, %46, %28 | |
%77 = phi i32 [ %32, %28 ], [ %54, %46 ], [ %32, %92 ], [ %54, %223 ] | |
%78 = phi [0 x { [0 x i8]*, i32 }]* [ %30, %28 ], [ %52, %46 ], [ %30, %92 ], [ %52, %223 ] | |
%79 = phi i32 [ 0, %28 ], [ 0, %46 ], [ %81, %92 ], [ %105, %223 ] | |
%80 = icmp ugt i32 %77, %79 | |
br i1 %80, label %236, label %247 | |
.preheader: ; preds = %36, %94 | |
%81 = phi i32 [ %97, %94 ], [ 1, %36 ] | |
%82 = phi i32 [ %81, %94 ], [ 0, %36 ] | |
%83 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %7, i32 0, i32 %82 | |
%84 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %7, i32 0, i32 %82, i32 1 | |
%85 = bitcast i8** %84 to i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)** | |
%86 = load i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)*, i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)** %85, align 4, !nonnull !9 | |
%87 = bitcast { i8*, i8* }* %83 to %"core::fmt::Void.187"** | |
%88 = load %"core::fmt::Void.187"*, %"core::fmt::Void.187"** %87, align 4, !nonnull !9 | |
%89 = call zeroext i1 %86(%"core::fmt::Void.187"* noalias nonnull readonly align 1 %88, %"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %4) #4 | |
br i1 %89, label %.loopexit, label %92 | |
; <label>:90: ; preds = %247, %.loopexit | |
%91 = phi i1 [ false, %247 ], [ true, %.loopexit ] | |
ret i1 %91 | |
.loopexit: ; preds = %225, %215, %94, %.preheader, %236, %62, %36 | |
call void @llvm.lifetime.end.p0i8(i64 52, i8* nonnull %5) | |
br label %90 | |
; <label>:92: ; preds = %.preheader | |
%93 = icmp ult i32 %81, %34 | |
br i1 %93, label %94, label %.loopexit19 | |
; <label>:94: ; preds = %92 | |
%95 = load {}*, {}** %16, align 4 | |
%96 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %37, align 4 | |
%97 = add nuw i32 %81, 1 | |
%98 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 %81, i32 0 | |
%99 = load [0 x i8]*, [0 x i8]** %98, align 4, !nonnull !9 | |
%100 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %30, i32 0, i32 %81, i32 1 | |
%101 = load i32, i32* %100, align 4 | |
%102 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %96, i32 3 | |
%103 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %102, align 4, !invariant.load !9, !nonnull !9 | |
%104 = call zeroext i1 %103({}* nonnull align 1 %95, [0 x i8]* noalias nonnull readonly align 1 %99, i32 %101) #4 | |
br i1 %104, label %.loopexit, label %.preheader | |
.preheader20: ; preds = %62, %225 | |
%105 = phi i32 [ %228, %225 ], [ 1, %62 ] | |
%106 = phi i32 [ %105, %225 ], [ 0, %62 ] | |
%107 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 0, i32 0 | |
%108 = load i32, i32* %107, align 4, !range !157, !alias.scope !158 | |
store i32 %108, i32* %12, align 4, !noalias !158 | |
%109 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 9 | |
%110 = load i8, i8* %109, align 4, !range !161, !alias.scope !158 | |
store i8 %110, i8* %13, align 4, !noalias !158 | |
%111 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 3 | |
%112 = load i32, i32* %111, align 4, !alias.scope !158 | |
store i32 %112, i32* %11, align 4, !noalias !158 | |
%113 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 7, i32 0 | |
%114 = load i32, i32* %113, align 4, !range !162, !alias.scope !163 | |
switch i32 %114, label %119 [ | |
i32 0, label %120 | |
i32 1, label %123 | |
i32 2, label %115 | |
i32 3, label %150 | |
] | |
; <label>:115: ; preds = %.preheader20 | |
%116 = load { i8*, i8* }*, { i8*, i8* }** %65, align 4, !noalias !163, !nonnull !9 | |
%117 = load { i8*, i8* }*, { i8*, i8* }** %21, align 4, !noalias !163, !nonnull !9 | |
%118 = icmp eq { i8*, i8* }* %116, %117 | |
br i1 %118, label %150, label %139 | |
; <label>:119: ; preds = %.preheader20 | |
unreachable | |
; <label>:120: ; preds = %.preheader20 | |
%121 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 7, i32 1 | |
%122 = load i32, i32* %121, align 4, !alias.scope !163 | |
br label %150 | |
; <label>:123: ; preds = %.preheader20 | |
%124 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 7, i32 1 | |
%125 = load i32, i32* %124, align 4, !alias.scope !163 | |
%126 = load i32, i32* %23, align 4, !noalias !163 | |
%127 = icmp ult i32 %125, %126 | |
br i1 %127, label %128, label %149, !prof !166 | |
; <label>:128: ; preds = %123 | |
%129 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %22, align 4, !noalias !163, !nonnull !9 | |
%130 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %129, i32 0, i32 %125, i32 1 | |
%131 = bitcast i8** %130 to i32* | |
%132 = load i32, i32* %131, align 4, !range !37, !alias.scope !167, !noalias !163 | |
%133 = icmp eq i32 %132, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32) | |
br i1 %133, label %134, label %150 | |
; <label>:134: ; preds = %128 | |
%135 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %129, i32 0, i32 %125 | |
%136 = bitcast { i8*, i8* }* %135 to i32** | |
%137 = load i32*, i32** %136, align 4, !alias.scope !167, !noalias !163, !nonnull !9 | |
%138 = load i32, i32* %137, align 4, !noalias !170 | |
br label %150 | |
; <label>:139: ; preds = %115 | |
%140 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %116, i32 1 | |
store { i8*, i8* }* %140, { i8*, i8* }** %65, align 4, !noalias !163 | |
%141 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %116, i32 0, i32 1 | |
%142 = bitcast i8** %141 to i32* | |
%143 = load i32, i32* %142, align 4, !range !37, !alias.scope !171, !noalias !163 | |
%144 = icmp eq i32 %143, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32) | |
br i1 %144, label %145, label %150 | |
; <label>:145: ; preds = %139 | |
%146 = bitcast { i8*, i8* }* %116 to i32** | |
%147 = load i32*, i32** %146, align 4, !alias.scope !171, !noalias !163, !nonnull !9 | |
%148 = load i32, i32* %147, align 4, !noalias !174 | |
br label %150 | |
; <label>:149: ; preds = %123 | |
; call core::panicking::panic_bounds_check | |
call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.9b00575310d81673ea82acb70d8d8f85.11 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 %125, i32 %126) #4, !noalias !163 | |
unreachable | |
; <label>:150: ; preds = %145, %139, %134, %128, %120, %115, %.preheader20 | |
%151 = phi i32 [ %122, %120 ], [ undef, %.preheader20 ], [ %138, %134 ], [ undef, %128 ], [ %148, %145 ], [ undef, %139 ], [ undef, %115 ] | |
%152 = phi i32 [ 1, %120 ], [ 0, %.preheader20 ], [ 1, %134 ], [ 0, %128 ], [ 1, %145 ], [ 0, %139 ], [ 0, %115 ] | |
store i32 %152, i32* %14, align 4, !noalias !158 | |
store i32 %151, i32* %66, align 4, !noalias !158 | |
%153 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 5, i32 0 | |
%154 = load i32, i32* %153, align 4, !range !162, !alias.scope !175 | |
switch i32 %154, label %159 [ | |
i32 0, label %160 | |
i32 1, label %163 | |
i32 2, label %155 | |
i32 3, label %190 | |
] | |
; <label>:155: ; preds = %150 | |
%156 = load { i8*, i8* }*, { i8*, i8* }** %65, align 4, !noalias !175, !nonnull !9 | |
%157 = load { i8*, i8* }*, { i8*, i8* }** %21, align 4, !noalias !175, !nonnull !9 | |
%158 = icmp eq { i8*, i8* }* %156, %157 | |
br i1 %158, label %190, label %179 | |
; <label>:159: ; preds = %150 | |
unreachable | |
; <label>:160: ; preds = %150 | |
%161 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 5, i32 1 | |
%162 = load i32, i32* %161, align 4, !alias.scope !175 | |
br label %190 | |
; <label>:163: ; preds = %150 | |
%164 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 3, i32 5, i32 1 | |
%165 = load i32, i32* %164, align 4, !alias.scope !175 | |
%166 = load i32, i32* %23, align 4, !noalias !175 | |
%167 = icmp ult i32 %165, %166 | |
br i1 %167, label %168, label %189, !prof !166 | |
; <label>:168: ; preds = %163 | |
%169 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %22, align 4, !noalias !175, !nonnull !9 | |
%170 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %169, i32 0, i32 %165, i32 1 | |
%171 = bitcast i8** %170 to i32* | |
%172 = load i32, i32* %171, align 4, !range !37, !alias.scope !178, !noalias !175 | |
%173 = icmp eq i32 %172, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32) | |
br i1 %173, label %174, label %190 | |
; <label>:174: ; preds = %168 | |
%175 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %169, i32 0, i32 %165 | |
%176 = bitcast { i8*, i8* }* %175 to i32** | |
%177 = load i32*, i32** %176, align 4, !alias.scope !178, !noalias !175, !nonnull !9 | |
%178 = load i32, i32* %177, align 4, !noalias !181 | |
br label %190 | |
; <label>:179: ; preds = %155 | |
%180 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %156, i32 1 | |
store { i8*, i8* }* %180, { i8*, i8* }** %65, align 4, !noalias !175 | |
%181 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %156, i32 0, i32 1 | |
%182 = bitcast i8** %181 to i32* | |
%183 = load i32, i32* %182, align 4, !range !37, !alias.scope !182, !noalias !175 | |
%184 = icmp eq i32 %183, ptrtoint (i1 (i32*, %"core::fmt::Formatter"*)* @_ZN4core3fmt10ArgumentV110show_usize17hf9b214840b3f7f17E.llvm.6613669124243277446 to i32) | |
br i1 %184, label %185, label %190 | |
; <label>:185: ; preds = %179 | |
%186 = bitcast { i8*, i8* }* %156 to i32** | |
%187 = load i32*, i32** %186, align 4, !alias.scope !182, !noalias !175, !nonnull !9 | |
%188 = load i32, i32* %187, align 4, !noalias !185 | |
br label %190 | |
; <label>:189: ; preds = %163 | |
; call core::panicking::panic_bounds_check | |
call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.9b00575310d81673ea82acb70d8d8f85.11 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 %165, i32 %166) #4, !noalias !175 | |
unreachable | |
; <label>:190: ; preds = %185, %179, %174, %168, %160, %155, %150 | |
%191 = phi i32 [ %162, %160 ], [ undef, %150 ], [ %178, %174 ], [ undef, %168 ], [ %188, %185 ], [ undef, %179 ], [ undef, %155 ] | |
%192 = phi i32 [ 1, %160 ], [ 0, %150 ], [ 1, %174 ], [ 0, %168 ], [ 1, %185 ], [ 0, %179 ], [ 0, %155 ] | |
store i32 %192, i32* %15, align 4, !noalias !158 | |
store i32 %191, i32* %67, align 4, !noalias !158 | |
%193 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 0, i32 0 | |
%194 = load i32, i32* %193, align 4, !range !19, !alias.scope !158 | |
%195 = icmp eq i32 %194, 1 | |
br i1 %195, label %205, label %196 | |
; <label>:196: ; preds = %190 | |
%197 = load { i8*, i8* }*, { i8*, i8* }** %65, align 4, !noalias !158, !nonnull !9 | |
%198 = load { i8*, i8* }*, { i8*, i8* }** %21, align 4, !noalias !158, !nonnull !9 | |
%199 = icmp eq { i8*, i8* }* %197, %198 | |
br i1 %199, label %200, label %201 | |
; <label>:200: ; preds = %196 | |
; call core::panicking::panic | |
call fastcc void @_ZN4core9panicking5panic17hf05582941268164eE({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(24) bitcast (<{ i8*, [4 x i8], i8*, [12 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.8 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) #4, !noalias !158 | |
unreachable | |
; <label>:201: ; preds = %196 | |
%202 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %197, i32 1 | |
store { i8*, i8* }* %202, { i8*, i8* }** %65, align 4, !noalias !158 | |
%203 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %197, i32 0, i32 0 | |
%204 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %197, i32 0, i32 1 | |
br label %215 | |
; <label>:205: ; preds = %190 | |
%206 = getelementptr inbounds %"fmt::rt::v1::Argument", %"fmt::rt::v1::Argument"* %68, i32 %106, i32 1, i32 1 | |
%207 = load i32, i32* %206, align 4, !alias.scope !158 | |
%208 = load i32, i32* %23, align 4, !noalias !158 | |
%209 = icmp ult i32 %207, %208 | |
br i1 %209, label %210, label %214, !prof !166 | |
; <label>:210: ; preds = %205 | |
%211 = load [0 x { i8*, i8* }]*, [0 x { i8*, i8* }]** %22, align 4, !noalias !158, !nonnull !9 | |
%212 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %211, i32 0, i32 %207, i32 0 | |
%213 = getelementptr inbounds [0 x { i8*, i8* }], [0 x { i8*, i8* }]* %211, i32 0, i32 %207, i32 1 | |
br label %215 | |
; <label>:214: ; preds = %205 | |
; call core::panicking::panic_bounds_check | |
call fastcc void @_ZN4core9panicking18panic_bounds_check17h3184dd5731c53754E({ [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly align 4 dereferenceable(16) bitcast ({ { [0 x i8]*, i32 }, i32, i32 }* @anon.9b00575310d81673ea82acb70d8d8f85.10 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i32 %207, i32 %208) #4, !noalias !158 | |
unreachable | |
; <label>:215: ; preds = %210, %201 | |
%216 = phi i8** [ %204, %201 ], [ %213, %210 ] | |
%217 = phi i8** [ %203, %201 ], [ %212, %210 ] | |
%218 = bitcast i8** %217 to %"core::fmt::Void.187"** | |
%219 = load %"core::fmt::Void.187"*, %"core::fmt::Void.187"** %218, align 4, !noalias !158, !nonnull !9 | |
%220 = bitcast i8** %216 to i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)** | |
%221 = load i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)*, i1 (%"core::fmt::Void.187"*, %"core::fmt::Formatter"*)** %220, align 4, !noalias !158, !nonnull !9 | |
%222 = call zeroext i1 %221(%"core::fmt::Void.187"* noalias nonnull readonly align 1 %219, %"core::fmt::Formatter"* nonnull align 4 dereferenceable(52) %4) #4, !noalias !158 | |
br i1 %222, label %.loopexit, label %223 | |
; <label>:223: ; preds = %215 | |
%224 = icmp ult i32 %105, %60 | |
br i1 %224, label %225, label %.loopexit19 | |
; <label>:225: ; preds = %223 | |
%226 = load {}*, {}** %16, align 4 | |
%227 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %63, align 4 | |
%228 = add nuw nsw i32 %105, 1 | |
%229 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 %105, i32 0 | |
%230 = load [0 x i8]*, [0 x i8]** %229, align 4, !nonnull !9 | |
%231 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %52, i32 0, i32 %105, i32 1 | |
%232 = load i32, i32* %231, align 4 | |
%233 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %227, i32 3 | |
%234 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %233, align 4, !invariant.load !9, !nonnull !9 | |
%235 = call zeroext i1 %234({}* nonnull align 1 %226, [0 x i8]* noalias nonnull readonly align 1 %230, i32 %232) #4 | |
br i1 %235, label %.loopexit, label %.preheader20 | |
; <label>:236: ; preds = %.loopexit19 | |
%237 = load {}*, {}** %16, align 4, !nonnull !9 | |
%238 = bitcast [3 x i32]** %17 to i1 ({}*, [0 x i8]*, i32)*** | |
%239 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %238, align 4, !nonnull !9 | |
%240 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %78, i32 0, i32 %79, i32 0 | |
%241 = load [0 x i8]*, [0 x i8]** %240, align 4, !nonnull !9 | |
%242 = getelementptr inbounds [0 x { [0 x i8]*, i32 }], [0 x { [0 x i8]*, i32 }]* %78, i32 0, i32 %79, i32 1 | |
%243 = load i32, i32* %242, align 4 | |
%244 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %239, i32 3 | |
%245 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %244, align 4, !invariant.load !9, !nonnull !9 | |
%246 = call zeroext i1 %245({}* nonnull align 1 %237, [0 x i8]* noalias nonnull readonly align 1 %241, i32 %243) #4 | |
br i1 %246, label %.loopexit, label %247 | |
; <label>:247: ; preds = %236, %.loopexit19 | |
call void @llvm.lifetime.end.p0i8(i64 52, i8* nonnull %5) | |
br label %90 | |
} | |
; core::fmt::Formatter::pad_integral | |
; Function Attrs: nounwind | |
define internal fastcc zeroext i1 @_ZN4core3fmt9Formatter12pad_integral17h34cff05b06e579e3E(%"core::fmt::Formatter"* align 4 dereferenceable(52), i1 zeroext, [0 x i8]* noalias nonnull readonly align 1, i32, [0 x i8]* noalias nonnull readonly align 1, i32) unnamed_addr #1 { | |
%7 = alloca i32, align 4 | |
%8 = alloca i32, align 4 | |
br i1 %1, label %13, label %9 | |
; <label>:9: ; preds = %6 | |
%10 = add i32 %5, 1 | |
%11 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 0, i32 0 | |
%12 = load i32, i32* %11, align 4, !alias.scope !186 | |
br label %20 | |
; <label>:13: ; preds = %6 | |
%14 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 0, i32 0 | |
%15 = load i32, i32* %14, align 4, !alias.scope !189 | |
%16 = and i32 %15, 1 | |
%17 = icmp eq i32 %16, 0 | |
%18 = select i1 %17, i32 1114112, i32 43 | |
%19 = add i32 %16, %5 | |
br label %20 | |
; <label>:20: ; preds = %13, %9 | |
%21 = phi i32 [ %12, %9 ], [ %15, %13 ] | |
%22 = phi i32 [ 45, %9 ], [ %18, %13 ] | |
%23 = phi i32 [ %10, %9 ], [ %19, %13 ] | |
%24 = and i32 %21, 4 | |
%25 = icmp eq i32 %24, 0 | |
%26 = lshr exact i32 %24, 2 | |
%27 = trunc i32 %26 to i8 | |
br i1 %25, label %46, label %28 | |
; <label>:28: ; preds = %20 | |
%29 = getelementptr inbounds [0 x i8], [0 x i8]* %2, i32 0, i32 %3 | |
%30 = icmp eq i32 %3, 0 | |
br i1 %30, label %.loopexit, label %31 | |
; <label>:31: ; preds = %28 | |
%32 = getelementptr inbounds [0 x i8], [0 x i8]* %2, i32 0, i32 0 | |
br label %33 | |
; <label>:33: ; preds = %33, %31 | |
%34 = phi i32 [ %41, %33 ], [ 0, %31 ] | |
%35 = phi i8* [ %36, %33 ], [ %32, %31 ] | |
%36 = getelementptr inbounds i8, i8* %35, i32 1 | |
%37 = load i8, i8* %35, align 1 | |
%38 = and i8 %37, -64 | |
%39 = icmp eq i8 %38, -128 | |
%40 = zext i1 %39 to i32 | |
%41 = add i32 %34, %40 | |
%42 = icmp eq i8* %36, %29 | |
br i1 %42, label %.loopexit, label %33 | |
.loopexit: ; preds = %33, %28 | |
%43 = phi i32 [ 0, %28 ], [ %41, %33 ] | |
%44 = add i32 %23, %3 | |
%45 = sub i32 %44, %43 | |
br label %46 | |
; <label>:46: ; preds = %.loopexit, %20 | |
%47 = phi i32 [ %45, %.loopexit ], [ %23, %20 ] | |
%48 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 0 | |
%49 = load i32, i32* %48, align 4, !range !19 | |
%50 = icmp eq i32 %49, 1 | |
br i1 %50, label %195, label %51 | |
; <label>:51: ; preds = %46 | |
%52 = icmp eq i32 %22, 1114112 | |
br i1 %52, label %62, label %53 | |
; <label>:53: ; preds = %51 | |
%54 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%55 = load {}*, {}** %54, align 4, !noalias !192, !nonnull !9 | |
%56 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%57 = bitcast [3 x i32]** %56 to i1 ({}*, i32)*** | |
%58 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %57, align 4, !noalias !192, !nonnull !9 | |
%59 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %58, i32 4 | |
%60 = load i1 ({}*, i32)*, i1 ({}*, i32)** %59, align 4, !invariant.load !9, !noalias !192, !nonnull !9 | |
%61 = tail call zeroext i1 %60({}* nonnull align 1 %55, i32 %22) #4, !noalias !192 | |
br i1 %61, label %253, label %62 | |
; <label>:62: ; preds = %53, %51 | |
%63 = icmp eq i8 %27, 0 | |
br i1 %63, label %._crit_edge, label %64 | |
; <label>:64: ; preds = %62 | |
%65 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%66 = load {}*, {}** %65, align 4, !noalias !192, !nonnull !9 | |
%67 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%68 = bitcast [3 x i32]** %67 to i1 ({}*, [0 x i8]*, i32)*** | |
%69 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %68, align 4, !noalias !192, !nonnull !9 | |
%70 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %69, i32 3 | |
%71 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %70, align 4, !invariant.load !9, !noalias !192, !nonnull !9 | |
%72 = tail call zeroext i1 %71({}* nonnull align 1 %66, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !192 | |
br i1 %72, label %253, label %._crit_edge | |
; <label>:73: ; preds = %195 | |
%74 = and i32 %21, 8 | |
%75 = icmp eq i32 %74, 0 | |
br i1 %75, label %76, label %221 | |
; <label>:76: ; preds = %73 | |
%77 = sub i32 %197, %47 | |
%78 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 15 | |
%79 = load i8, i8* %78, align 4, !range !161, !noalias !195 | |
%80 = icmp eq i8 %79, 3 | |
%81 = trunc i8 %79 to i2 | |
%82 = select i1 %80, i2 1, i2 %81 | |
switch i2 %82, label %84 [ | |
i2 0, label %85 | |
i2 1, label %83 | |
i2 -2, label %145 | |
i2 -1, label %83 | |
] | |
; <label>:83: ; preds = %76, %76 | |
br label %85 | |
; <label>:84: ; preds = %76 | |
unreachable | |
; <label>:85: ; preds = %145, %83, %76 | |
%86 = phi i32 [ %148, %145 ], [ 0, %83 ], [ %77, %76 ] | |
%87 = phi i32 [ %146, %145 ], [ %77, %83 ], [ 0, %76 ] | |
%88 = bitcast i32* %7 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195 | |
store i32 0, i32* %7, align 4, !noalias !195 | |
%89 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 3 | |
%90 = load i32, i32* %89, align 4, !range !157, !noalias !195 | |
%91 = bitcast i32* %7 to [0 x i8]* | |
%92 = icmp ult i32 %90, 128 | |
br i1 %92, label %93, label %95 | |
; <label>:93: ; preds = %85 | |
%94 = trunc i32 %90 to i8 | |
store i8 %94, i8* %88, align 4, !noalias !195 | |
br label %140 | |
; <label>:95: ; preds = %85 | |
%96 = icmp ult i32 %90, 2048 | |
br i1 %96, label %97, label %106 | |
; <label>:97: ; preds = %95 | |
%98 = lshr i32 %90, 6 | |
%99 = trunc i32 %98 to i8 | |
%100 = and i8 %99, 31 | |
%101 = or i8 %100, -64 | |
store i8 %101, i8* %88, align 4, !noalias !195 | |
%102 = trunc i32 %90 to i8 | |
%103 = and i8 %102, 63 | |
%104 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 1 | |
%105 = or i8 %103, -128 | |
store i8 %105, i8* %104, align 1, !noalias !195 | |
br label %140 | |
; <label>:106: ; preds = %95 | |
%107 = icmp ult i32 %90, 65536 | |
br i1 %107, label %108, label %122 | |
; <label>:108: ; preds = %106 | |
%109 = lshr i32 %90, 12 | |
%110 = trunc i32 %109 to i8 | |
%111 = and i8 %110, 15 | |
%112 = or i8 %111, -32 | |
store i8 %112, i8* %88, align 4, !noalias !195 | |
%113 = lshr i32 %90, 6 | |
%114 = trunc i32 %113 to i8 | |
%115 = and i8 %114, 63 | |
%116 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 1 | |
%117 = or i8 %115, -128 | |
store i8 %117, i8* %116, align 1, !noalias !195 | |
%118 = trunc i32 %90 to i8 | |
%119 = and i8 %118, 63 | |
%120 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 2 | |
%121 = or i8 %119, -128 | |
store i8 %121, i8* %120, align 2, !noalias !195 | |
br label %140 | |
; <label>:122: ; preds = %106 | |
%123 = lshr i32 %90, 18 | |
%124 = trunc i32 %123 to i8 | |
%125 = or i8 %124, -16 | |
store i8 %125, i8* %88, align 4, !noalias !195 | |
%126 = lshr i32 %90, 12 | |
%127 = trunc i32 %126 to i8 | |
%128 = and i8 %127, 63 | |
%129 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 1 | |
%130 = or i8 %128, -128 | |
store i8 %130, i8* %129, align 1, !noalias !195 | |
%131 = lshr i32 %90, 6 | |
%132 = trunc i32 %131 to i8 | |
%133 = and i8 %132, 63 | |
%134 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 2 | |
%135 = or i8 %133, -128 | |
store i8 %135, i8* %134, align 2, !noalias !195 | |
%136 = trunc i32 %90 to i8 | |
%137 = and i8 %136, 63 | |
%138 = getelementptr inbounds [0 x i8], [0 x i8]* %91, i32 0, i32 3 | |
%139 = or i8 %137, -128 | |
store i8 %139, i8* %138, align 1, !noalias !195 | |
br label %140 | |
; <label>:140: ; preds = %122, %108, %97, %93 | |
%141 = phi i32 [ 1, %93 ], [ 2, %97 ], [ 3, %108 ], [ 4, %122 ] | |
%142 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%143 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%144 = bitcast [3 x i32]** %143 to i1 ({}*, [0 x i8]*, i32)*** | |
br label %149 | |
; <label>:145: ; preds = %76 | |
%146 = lshr i32 %77, 1 | |
%147 = add i32 %77, 1 | |
%148 = lshr i32 %147, 1 | |
br label %85 | |
; <label>:149: ; preds = %175, %140 | |
%150 = phi i32 [ 0, %140 ], [ %176, %175 ] | |
%151 = icmp ult i32 %150, %87 | |
br i1 %151, label %175, label %152 | |
; <label>:152: ; preds = %149 | |
%153 = icmp eq i32 %22, 1114112 | |
br i1 %153, label %161, label %154 | |
; <label>:154: ; preds = %152 | |
%155 = load {}*, {}** %142, align 4, !noalias !199, !nonnull !9 | |
%156 = bitcast [3 x i32]** %143 to i1 ({}*, i32)*** | |
%157 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %156, align 4, !noalias !199, !nonnull !9 | |
%158 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %157, i32 4 | |
%159 = load i1 ({}*, i32)*, i1 ({}*, i32)** %158, align 4, !invariant.load !9, !noalias !199, !nonnull !9 | |
%160 = call zeroext i1 %159({}* nonnull align 1 %155, i32 %22) #4, !noalias !199 | |
br i1 %160, label %183, label %161 | |
; <label>:161: ; preds = %154, %152 | |
%162 = icmp eq i8 %27, 0 | |
br i1 %162, label %169, label %163 | |
; <label>:163: ; preds = %161 | |
%164 = load {}*, {}** %142, align 4, !noalias !199, !nonnull !9 | |
%165 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !199, !nonnull !9 | |
%166 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %165, i32 3 | |
%167 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %166, align 4, !invariant.load !9, !noalias !199, !nonnull !9 | |
%168 = call zeroext i1 %167({}* nonnull align 1 %164, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !199 | |
br i1 %168, label %183, label %169 | |
; <label>:169: ; preds = %163, %161 | |
%170 = load {}*, {}** %142, align 4, !noalias !205, !nonnull !9 | |
%171 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !205, !nonnull !9 | |
%172 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %171, i32 3 | |
%173 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %172, align 4, !invariant.load !9, !noalias !205, !nonnull !9 | |
%174 = call zeroext i1 %173({}* nonnull align 1 %170, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4, !noalias !205 | |
br i1 %174, label %183, label %.preheader | |
; <label>:175: ; preds = %149 | |
%176 = add i32 %150, 1 | |
%177 = load {}*, {}** %142, align 4, !noalias !195, !nonnull !9 | |
%178 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !195, !nonnull !9 | |
%179 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %178, i32 3 | |
%180 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %179, align 4, !invariant.load !9, !noalias !195, !nonnull !9 | |
%181 = call zeroext i1 %180({}* nonnull align 1 %177, [0 x i8]* noalias nonnull readonly align 1 %91, i32 %141) #4, !noalias !195 | |
br i1 %181, label %182, label %149 | |
; <label>:182: ; preds = %175 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195 | |
br label %253 | |
; <label>:183: ; preds = %169, %163, %154 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195 | |
br label %253 | |
.preheader: ; preds = %169, %187 | |
%184 = phi i32 [ %188, %187 ], [ 0, %169 ] | |
%185 = icmp ult i32 %184, %86 | |
br i1 %185, label %187, label %186 | |
; <label>:186: ; preds = %.preheader | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195 | |
br label %253 | |
; <label>:187: ; preds = %.preheader | |
%188 = add i32 %184, 1 | |
%189 = load {}*, {}** %142, align 4, !noalias !195, !nonnull !9 | |
%190 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %144, align 4, !noalias !195, !nonnull !9 | |
%191 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %190, i32 3 | |
%192 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %191, align 4, !invariant.load !9, !noalias !195, !nonnull !9 | |
%193 = call zeroext i1 %192({}* nonnull align 1 %189, [0 x i8]* noalias nonnull readonly align 1 %91, i32 %141) #4, !noalias !195 | |
br i1 %193, label %194, label %.preheader | |
; <label>:194: ; preds = %187 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %88) #4, !noalias !195 | |
br label %253 | |
; <label>:195: ; preds = %46 | |
%196 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 1 | |
%197 = load i32, i32* %196, align 4 | |
%198 = icmp ugt i32 %197, %47 | |
br i1 %198, label %73, label %199 | |
; <label>:199: ; preds = %195 | |
%200 = icmp eq i32 %22, 1114112 | |
br i1 %200, label %210, label %201 | |
; <label>:201: ; preds = %199 | |
%202 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%203 = load {}*, {}** %202, align 4, !noalias !206, !nonnull !9 | |
%204 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%205 = bitcast [3 x i32]** %204 to i1 ({}*, i32)*** | |
%206 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %205, align 4, !noalias !206, !nonnull !9 | |
%207 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %206, i32 4 | |
%208 = load i1 ({}*, i32)*, i1 ({}*, i32)** %207, align 4, !invariant.load !9, !noalias !206, !nonnull !9 | |
%209 = tail call zeroext i1 %208({}* nonnull align 1 %203, i32 %22) #4, !noalias !206 | |
br i1 %209, label %253, label %210 | |
; <label>:210: ; preds = %201, %199 | |
%211 = icmp eq i8 %27, 0 | |
br i1 %211, label %._crit_edge12, label %212 | |
; <label>:212: ; preds = %210 | |
%213 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%214 = load {}*, {}** %213, align 4, !noalias !206, !nonnull !9 | |
%215 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%216 = bitcast [3 x i32]** %215 to i1 ({}*, [0 x i8]*, i32)*** | |
%217 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %216, align 4, !noalias !206, !nonnull !9 | |
%218 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %217, i32 3 | |
%219 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %218, align 4, !invariant.load !9, !noalias !206, !nonnull !9 | |
%220 = tail call zeroext i1 %219({}* nonnull align 1 %214, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !206 | |
br i1 %220, label %253, label %._crit_edge12 | |
; <label>:221: ; preds = %73 | |
%222 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 3 | |
store i32 48, i32* %222, align 4 | |
%223 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 15 | |
store i8 1, i8* %223, align 4 | |
%224 = icmp eq i32 %22, 1114112 | |
br i1 %224, label %234, label %225 | |
; <label>:225: ; preds = %221 | |
%226 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%227 = load {}*, {}** %226, align 4, !noalias !209, !nonnull !9 | |
%228 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%229 = bitcast [3 x i32]** %228 to i1 ({}*, i32)*** | |
%230 = load i1 ({}*, i32)**, i1 ({}*, i32)*** %229, align 4, !noalias !209, !nonnull !9 | |
%231 = getelementptr inbounds i1 ({}*, i32)*, i1 ({}*, i32)** %230, i32 4 | |
%232 = load i1 ({}*, i32)*, i1 ({}*, i32)** %231, align 4, !invariant.load !9, !noalias !209, !nonnull !9 | |
%233 = tail call zeroext i1 %232({}* nonnull align 1 %227, i32 %22) #4, !noalias !209 | |
br i1 %233, label %253, label %234 | |
; <label>:234: ; preds = %225, %221 | |
%235 = icmp eq i8 %27, 0 | |
br i1 %235, label %263, label %236 | |
; <label>:236: ; preds = %234 | |
%237 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%238 = load {}*, {}** %237, align 4, !noalias !209, !nonnull !9 | |
%239 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%240 = bitcast [3 x i32]** %239 to i1 ({}*, [0 x i8]*, i32)*** | |
%241 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %240, align 4, !noalias !209, !nonnull !9 | |
%242 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %241, i32 3 | |
%243 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %242, align 4, !invariant.load !9, !noalias !209, !nonnull !9 | |
%244 = tail call zeroext i1 %243({}* nonnull align 1 %238, [0 x i8]* noalias nonnull readonly align 1 %2, i32 %3) #4, !noalias !209 | |
br i1 %244, label %253, label %263 | |
._crit_edge: ; preds = %62, %64 | |
%245 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%246 = load {}*, {}** %245, align 4, !nonnull !9 | |
%247 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%248 = bitcast [3 x i32]** %247 to i1 ({}*, [0 x i8]*, i32)*** | |
%249 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %248, align 4, !nonnull !9 | |
%250 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %249, i32 3 | |
%251 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %250, align 4, !invariant.load !9, !nonnull !9 | |
%252 = tail call zeroext i1 %251({}* nonnull align 1 %246, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4 | |
br label %253 | |
; <label>:253: ; preds = %362, %354, %351, %350, %._crit_edge12, %._crit_edge, %236, %225, %212, %201, %194, %186, %183, %182, %64, %53 | |
%254 = phi i1 [ %252, %._crit_edge ], [ %262, %._crit_edge12 ], [ false, %186 ], [ true, %182 ], [ true, %194 ], [ true, %183 ], [ true, %64 ], [ true, %212 ], [ false, %354 ], [ true, %350 ], [ true, %362 ], [ true, %351 ], [ true, %236 ], [ true, %53 ], [ true, %201 ], [ true, %225 ] | |
ret i1 %254 | |
._crit_edge12: ; preds = %210, %212 | |
%255 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%256 = load {}*, {}** %255, align 4, !nonnull !9 | |
%257 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%258 = bitcast [3 x i32]** %257 to i1 ({}*, [0 x i8]*, i32)*** | |
%259 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %258, align 4, !nonnull !9 | |
%260 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %259, i32 3 | |
%261 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %260, align 4, !invariant.load !9, !nonnull !9 | |
%262 = tail call zeroext i1 %261({}* nonnull align 1 %256, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4 | |
br label %253 | |
; <label>:263: ; preds = %236, %234 | |
%264 = sub i32 %197, %47 | |
%265 = load i8, i8* %223, align 4, !range !161, !noalias !212 | |
%266 = icmp eq i8 %265, 3 | |
%267 = trunc i8 %265 to i2 | |
%268 = select i1 %266, i2 1, i2 %267 | |
switch i2 %268, label %270 [ | |
i2 0, label %271 | |
i2 1, label %269 | |
i2 -2, label %330 | |
i2 -1, label %269 | |
] | |
; <label>:269: ; preds = %263, %263 | |
br label %271 | |
; <label>:270: ; preds = %263 | |
unreachable | |
; <label>:271: ; preds = %330, %269, %263 | |
%272 = phi i32 [ %333, %330 ], [ 0, %269 ], [ %264, %263 ] | |
%273 = phi i32 [ %331, %330 ], [ %264, %269 ], [ 0, %263 ] | |
%274 = bitcast i32* %8 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212 | |
store i32 0, i32* %8, align 4, !noalias !212 | |
%275 = load i32, i32* %222, align 4, !range !157, !noalias !212 | |
%276 = bitcast i32* %8 to [0 x i8]* | |
%277 = icmp ult i32 %275, 128 | |
br i1 %277, label %278, label %280 | |
; <label>:278: ; preds = %271 | |
%279 = trunc i32 %275 to i8 | |
store i8 %279, i8* %274, align 4, !noalias !212 | |
br label %325 | |
; <label>:280: ; preds = %271 | |
%281 = icmp ult i32 %275, 2048 | |
br i1 %281, label %282, label %291 | |
; <label>:282: ; preds = %280 | |
%283 = lshr i32 %275, 6 | |
%284 = trunc i32 %283 to i8 | |
%285 = and i8 %284, 31 | |
%286 = or i8 %285, -64 | |
store i8 %286, i8* %274, align 4, !noalias !212 | |
%287 = trunc i32 %275 to i8 | |
%288 = and i8 %287, 63 | |
%289 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 1 | |
%290 = or i8 %288, -128 | |
store i8 %290, i8* %289, align 1, !noalias !212 | |
br label %325 | |
; <label>:291: ; preds = %280 | |
%292 = icmp ult i32 %275, 65536 | |
br i1 %292, label %293, label %307 | |
; <label>:293: ; preds = %291 | |
%294 = lshr i32 %275, 12 | |
%295 = trunc i32 %294 to i8 | |
%296 = and i8 %295, 15 | |
%297 = or i8 %296, -32 | |
store i8 %297, i8* %274, align 4, !noalias !212 | |
%298 = lshr i32 %275, 6 | |
%299 = trunc i32 %298 to i8 | |
%300 = and i8 %299, 63 | |
%301 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 1 | |
%302 = or i8 %300, -128 | |
store i8 %302, i8* %301, align 1, !noalias !212 | |
%303 = trunc i32 %275 to i8 | |
%304 = and i8 %303, 63 | |
%305 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 2 | |
%306 = or i8 %304, -128 | |
store i8 %306, i8* %305, align 2, !noalias !212 | |
br label %325 | |
; <label>:307: ; preds = %291 | |
%308 = lshr i32 %275, 18 | |
%309 = trunc i32 %308 to i8 | |
%310 = or i8 %309, -16 | |
store i8 %310, i8* %274, align 4, !noalias !212 | |
%311 = lshr i32 %275, 12 | |
%312 = trunc i32 %311 to i8 | |
%313 = and i8 %312, 63 | |
%314 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 1 | |
%315 = or i8 %313, -128 | |
store i8 %315, i8* %314, align 1, !noalias !212 | |
%316 = lshr i32 %275, 6 | |
%317 = trunc i32 %316 to i8 | |
%318 = and i8 %317, 63 | |
%319 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 2 | |
%320 = or i8 %318, -128 | |
store i8 %320, i8* %319, align 2, !noalias !212 | |
%321 = trunc i32 %275 to i8 | |
%322 = and i8 %321, 63 | |
%323 = getelementptr inbounds [0 x i8], [0 x i8]* %276, i32 0, i32 3 | |
%324 = or i8 %322, -128 | |
store i8 %324, i8* %323, align 1, !noalias !212 | |
br label %325 | |
; <label>:325: ; preds = %307, %293, %282, %278 | |
%326 = phi i32 [ 1, %278 ], [ 2, %282 ], [ 3, %293 ], [ 4, %307 ] | |
%327 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%328 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%329 = bitcast [3 x i32]** %328 to i1 ({}*, [0 x i8]*, i32)*** | |
br label %334 | |
; <label>:330: ; preds = %263 | |
%331 = lshr i32 %264, 1 | |
%332 = add i32 %264, 1 | |
%333 = lshr i32 %332, 1 | |
br label %271 | |
; <label>:334: ; preds = %343, %325 | |
%335 = phi i32 [ 0, %325 ], [ %344, %343 ] | |
%336 = icmp ult i32 %335, %273 | |
br i1 %336, label %343, label %337 | |
; <label>:337: ; preds = %334 | |
%338 = load {}*, {}** %327, align 4, !noalias !215, !nonnull !9 | |
%339 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %329, align 4, !noalias !215, !nonnull !9 | |
%340 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %339, i32 3 | |
%341 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %340, align 4, !invariant.load !9, !noalias !215, !nonnull !9 | |
%342 = call zeroext i1 %341({}* nonnull align 1 %338, [0 x i8]* noalias nonnull readonly align 1 %4, i32 %5) #4, !noalias !215 | |
br i1 %342, label %351, label %.preheader11 | |
; <label>:343: ; preds = %334 | |
%344 = add i32 %335, 1 | |
%345 = load {}*, {}** %327, align 4, !noalias !212, !nonnull !9 | |
%346 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %329, align 4, !noalias !212, !nonnull !9 | |
%347 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %346, i32 3 | |
%348 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %347, align 4, !invariant.load !9, !noalias !212, !nonnull !9 | |
%349 = call zeroext i1 %348({}* nonnull align 1 %345, [0 x i8]* noalias nonnull readonly align 1 %276, i32 %326) #4, !noalias !212 | |
br i1 %349, label %350, label %334 | |
; <label>:350: ; preds = %343 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212 | |
br label %253 | |
; <label>:351: ; preds = %337 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212 | |
br label %253 | |
.preheader11: ; preds = %337, %355 | |
%352 = phi i32 [ %356, %355 ], [ 0, %337 ] | |
%353 = icmp ult i32 %352, %272 | |
br i1 %353, label %355, label %354 | |
; <label>:354: ; preds = %.preheader11 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212 | |
br label %253 | |
; <label>:355: ; preds = %.preheader11 | |
%356 = add i32 %352, 1 | |
%357 = load {}*, {}** %327, align 4, !noalias !212, !nonnull !9 | |
%358 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %329, align 4, !noalias !212, !nonnull !9 | |
%359 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %358, i32 3 | |
%360 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %359, align 4, !invariant.load !9, !noalias !212, !nonnull !9 | |
%361 = call zeroext i1 %360({}* nonnull align 1 %357, [0 x i8]* noalias nonnull readonly align 1 %276, i32 %326) #4, !noalias !212 | |
br i1 %361, label %362, label %.preheader11 | |
; <label>:362: ; preds = %355 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %274) #4, !noalias !212 | |
br label %253 | |
} | |
; core::fmt::Formatter::pad | |
; Function Attrs: nounwind | |
define internal fastcc zeroext i1 @_ZN4core3fmt9Formatter3pad17hbc71133907d50792E(%"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52), [0 x i8]* noalias nonnull readonly align 1, i32) unnamed_addr #1 { | |
%4 = alloca i32, align 4 | |
%5 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 0 | |
%6 = load i32, i32* %5, align 4, !range !19, !alias.scope !218 | |
%7 = icmp eq i32 %6, 1 | |
%8 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 7, i32 0 | |
%9 = load i32, i32* %8, align 4, !range !19 | |
%10 = icmp eq i32 %9, 1 | |
br i1 %7, label %21, label %11 | |
; <label>:11: ; preds = %3 | |
br i1 %10, label %24, label %12 | |
; <label>:12: ; preds = %11 | |
%13 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%14 = load {}*, {}** %13, align 4, !nonnull !9 | |
%15 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%16 = bitcast [3 x i32]** %15 to i1 ({}*, [0 x i8]*, i32)*** | |
%17 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %16, align 4, !nonnull !9 | |
%18 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %17, i32 3 | |
%19 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %18, align 4, !invariant.load !9, !nonnull !9 | |
%20 = tail call zeroext i1 %19({}* nonnull align 1 %14, [0 x i8]* noalias nonnull readonly align 1 %1, i32 %2) #4 | |
br label %22 | |
; <label>:21: ; preds = %3 | |
br i1 %10, label %24, label %315 | |
; <label>:22: ; preds = %337, %314, %306, %303, %302, %192, %12 | |
%23 = phi i1 [ %20, %12 ], [ %201, %192 ], [ %345, %337 ], [ false, %306 ], [ true, %302 ], [ true, %314 ], [ true, %303 ] | |
ret i1 %23 | |
; <label>:24: ; preds = %21, %11 | |
%25 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 7, i32 1 | |
%26 = load i32, i32* %25, align 4 | |
%27 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 0 | |
%28 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 %2 | |
%29 = ptrtoint [0 x i8]* %1 to i32 | |
%30 = icmp eq i32 %2, 0 | |
br i1 %30, label %.loopexit24, label %31 | |
; <label>:31: ; preds = %24 | |
%32 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 1 | |
%33 = ptrtoint i8* %32 to i32 | |
%34 = load i8, i8* %27, align 1 | |
%35 = icmp sgt i8 %34, -1 | |
br i1 %35, label %36, label %38 | |
; <label>:36: ; preds = %31 | |
%37 = zext i8 %34 to i32 | |
br label %89 | |
; <label>:38: ; preds = %31 | |
%39 = and i8 %34, 31 | |
%40 = zext i8 %39 to i32 | |
%41 = icmp eq i32 %2, 1 | |
br i1 %41, label %48, label %42 | |
; <label>:42: ; preds = %38 | |
%43 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 2 | |
%44 = ptrtoint i8* %43 to i32 | |
%45 = load i8, i8* %32, align 1, !alias.scope !223 | |
%46 = and i8 %45, 63 | |
%47 = zext i8 %46 to i32 | |
br label %48 | |
; <label>:48: ; preds = %42, %38 | |
%49 = phi i32 [ %33, %38 ], [ %44, %42 ] | |
%50 = phi i8* [ %28, %38 ], [ %43, %42 ] | |
%51 = phi i32 [ 0, %38 ], [ %47, %42 ] | |
%52 = shl nuw nsw i32 %40, 6 | |
%53 = or i32 %51, %52 | |
%54 = icmp ugt i8 %34, -33 | |
br i1 %54, label %55, label %89 | |
; <label>:55: ; preds = %48 | |
%56 = icmp eq i8* %50, %28 | |
br i1 %56, label %63, label %57 | |
; <label>:57: ; preds = %55 | |
%58 = getelementptr inbounds i8, i8* %50, i32 1 | |
%59 = ptrtoint i8* %58 to i32 | |
%60 = load i8, i8* %50, align 1, !alias.scope !226 | |
%61 = and i8 %60, 63 | |
%62 = zext i8 %61 to i32 | |
br label %63 | |
; <label>:63: ; preds = %57, %55 | |
%64 = phi i32 [ %49, %55 ], [ %59, %57 ] | |
%65 = phi i8* [ %28, %55 ], [ %58, %57 ] | |
%66 = phi i32 [ 0, %55 ], [ %62, %57 ] | |
%67 = shl nuw nsw i32 %51, 6 | |
%68 = or i32 %66, %67 | |
%69 = shl nuw nsw i32 %40, 12 | |
%70 = or i32 %68, %69 | |
%71 = icmp ugt i8 %34, -17 | |
br i1 %71, label %72, label %89 | |
; <label>:72: ; preds = %63 | |
%73 = icmp eq i8* %65, %28 | |
br i1 %73, label %80, label %74 | |
; <label>:74: ; preds = %72 | |
%75 = getelementptr inbounds i8, i8* %65, i32 1 | |
%76 = ptrtoint i8* %75 to i32 | |
%77 = load i8, i8* %65, align 1, !alias.scope !229 | |
%78 = and i8 %77, 63 | |
%79 = zext i8 %78 to i32 | |
br label %80 | |
; <label>:80: ; preds = %74, %72 | |
%81 = phi i32 [ %64, %72 ], [ %76, %74 ] | |
%82 = phi i32 [ 0, %72 ], [ %79, %74 ] | |
%83 = shl nuw nsw i32 %40, 18 | |
%84 = and i32 %83, 1835008 | |
%85 = shl nuw nsw i32 %68, 6 | |
%86 = or i32 %85, %84 | |
%87 = or i32 %86, %82 | |
%88 = icmp eq i32 %87, 1114112 | |
br i1 %88, label %.loopexit24, label %89 | |
; <label>:89: ; preds = %80, %63, %48, %36 | |
%90 = phi i32 [ %33, %36 ], [ %81, %80 ], [ %64, %63 ], [ %49, %48 ] | |
%91 = phi i32 [ %37, %36 ], [ %87, %80 ], [ %70, %63 ], [ %53, %48 ] | |
%92 = insertvalue { i32, i32 } { i32 0, i32 undef }, i32 %91, 1 | |
%93 = icmp eq i32 %26, 0 | |
br i1 %93, label %172, label %94 | |
; <label>:94: ; preds = %89 | |
%95 = sub i32 %90, %29 | |
br label %96 | |
; <label>:96: ; preds = %161, %94 | |
%97 = phi i32 [ %162, %161 ], [ %90, %94 ] | |
%98 = phi i32 [ %165, %161 ], [ %95, %94 ] | |
%99 = phi i32 [ %100, %161 ], [ %26, %94 ] | |
%100 = add i32 %99, -1 | |
%101 = inttoptr i32 %97 to i8* | |
%102 = icmp eq i8* %28, %101 | |
br i1 %102, label %.loopexit24, label %103 | |
; <label>:103: ; preds = %96 | |
%104 = getelementptr inbounds i8, i8* %101, i32 1 | |
%105 = ptrtoint i8* %104 to i32 | |
%106 = load i8, i8* %101, align 1 | |
%107 = icmp sgt i8 %106, -1 | |
br i1 %107, label %108, label %110 | |
; <label>:108: ; preds = %103 | |
%109 = zext i8 %106 to i32 | |
br label %161 | |
; <label>:110: ; preds = %103 | |
%111 = and i8 %106, 31 | |
%112 = zext i8 %111 to i32 | |
%113 = icmp eq i8* %104, %28 | |
br i1 %113, label %120, label %114 | |
; <label>:114: ; preds = %110 | |
%115 = getelementptr inbounds i8, i8* %101, i32 2 | |
%116 = ptrtoint i8* %115 to i32 | |
%117 = load i8, i8* %104, align 1, !alias.scope !232 | |
%118 = and i8 %117, 63 | |
%119 = zext i8 %118 to i32 | |
br label %120 | |
; <label>:120: ; preds = %114, %110 | |
%121 = phi i32 [ %105, %110 ], [ %116, %114 ] | |
%122 = phi i8* [ %28, %110 ], [ %115, %114 ] | |
%123 = phi i32 [ 0, %110 ], [ %119, %114 ] | |
%124 = shl nuw nsw i32 %112, 6 | |
%125 = or i32 %123, %124 | |
%126 = icmp ugt i8 %106, -33 | |
br i1 %126, label %127, label %161 | |
; <label>:127: ; preds = %120 | |
%128 = icmp eq i8* %122, %28 | |
br i1 %128, label %135, label %129 | |
; <label>:129: ; preds = %127 | |
%130 = getelementptr inbounds i8, i8* %122, i32 1 | |
%131 = ptrtoint i8* %130 to i32 | |
%132 = load i8, i8* %122, align 1, !alias.scope !235 | |
%133 = and i8 %132, 63 | |
%134 = zext i8 %133 to i32 | |
br label %135 | |
; <label>:135: ; preds = %129, %127 | |
%136 = phi i32 [ %121, %127 ], [ %131, %129 ] | |
%137 = phi i8* [ %28, %127 ], [ %130, %129 ] | |
%138 = phi i32 [ 0, %127 ], [ %134, %129 ] | |
%139 = shl nuw nsw i32 %123, 6 | |
%140 = or i32 %138, %139 | |
%141 = shl nuw nsw i32 %112, 12 | |
%142 = or i32 %140, %141 | |
%143 = icmp ugt i8 %106, -17 | |
br i1 %143, label %144, label %161 | |
; <label>:144: ; preds = %135 | |
%145 = icmp eq i8* %137, %28 | |
br i1 %145, label %152, label %146 | |
; <label>:146: ; preds = %144 | |
%147 = getelementptr inbounds i8, i8* %137, i32 1 | |
%148 = ptrtoint i8* %147 to i32 | |
%149 = load i8, i8* %137, align 1, !alias.scope !238 | |
%150 = and i8 %149, 63 | |
%151 = zext i8 %150 to i32 | |
br label %152 | |
; <label>:152: ; preds = %146, %144 | |
%153 = phi i32 [ %136, %144 ], [ %148, %146 ] | |
%154 = phi i32 [ 0, %144 ], [ %151, %146 ] | |
%155 = shl nuw nsw i32 %112, 18 | |
%156 = and i32 %155, 1835008 | |
%157 = shl nuw nsw i32 %140, 6 | |
%158 = or i32 %157, %156 | |
%159 = or i32 %158, %154 | |
%160 = icmp eq i32 %159, 1114112 | |
br i1 %160, label %.loopexit24, label %161 | |
; <label>:161: ; preds = %152, %135, %120, %108 | |
%162 = phi i32 [ %105, %108 ], [ %153, %152 ], [ %136, %135 ], [ %121, %120 ] | |
%163 = phi i32 [ %109, %108 ], [ %159, %152 ], [ %142, %135 ], [ %125, %120 ] | |
%164 = sub i32 %98, %97 | |
%165 = add i32 %164, %162 | |
%166 = icmp eq i32 %100, 0 | |
br i1 %166, label %169, label %96 | |
.loopexit24: ; preds = %152, %96, %185, %80, %24 | |
%167 = phi i32 [ %189, %185 ], [ %2, %80 ], [ 0, %24 ], [ %2, %96 ], [ %2, %152 ] | |
%168 = phi [0 x i8]* [ %190, %185 ], [ %1, %80 ], [ %1, %24 ], [ %1, %96 ], [ %1, %152 ] | |
br i1 %7, label %315, label %192 | |
; <label>:169: ; preds = %161 | |
%170 = insertvalue { i32, i32 } undef, i32 %98, 0 | |
%171 = insertvalue { i32, i32 } %170, i32 %163, 1 | |
br label %172 | |
; <label>:172: ; preds = %169, %89 | |
%173 = phi { i32, i32 } [ %92, %89 ], [ %171, %169 ] | |
%174 = extractvalue { i32, i32 } %173, 0 | |
%175 = icmp eq i32 %174, 0 | |
%176 = icmp eq i32 %174, %2 | |
%177 = or i1 %175, %176 | |
br i1 %177, label %184, label %178 | |
; <label>:178: ; preds = %172 | |
%179 = icmp ult i32 %174, %2 | |
br i1 %179, label %180, label %185 | |
; <label>:180: ; preds = %178 | |
%181 = getelementptr inbounds [0 x i8], [0 x i8]* %1, i32 0, i32 %174 | |
%182 = load i8, i8* %181, align 1, !alias.scope !241 | |
%183 = icmp sgt i8 %182, -65 | |
br i1 %183, label %184, label %185 | |
; <label>:184: ; preds = %180, %172 | |
br label %185 | |
; <label>:185: ; preds = %184, %180, %178 | |
%186 = phi i8* [ %27, %184 ], [ null, %180 ], [ null, %178 ] | |
%187 = icmp eq i8* %186, null | |
%188 = bitcast i8* %186 to [0 x i8]* | |
%189 = select i1 %187, i32 %2, i32 %174 | |
%190 = select i1 %187, [0 x i8]* %1, [0 x i8]* %188 | |
%191 = icmp ne [0 x i8]* %190, null | |
tail call void @llvm.assume(i1 %191) #4 | |
br label %.loopexit24 | |
; <label>:192: ; preds = %.loopexit24 | |
%193 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%194 = load {}*, {}** %193, align 4, !nonnull !9 | |
%195 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%196 = bitcast [3 x i32]** %195 to i1 ({}*, [0 x i8]*, i32)*** | |
%197 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %196, align 4, !nonnull !9 | |
%198 = icmp ne [0 x i8]* %168, null | |
tail call void @llvm.assume(i1 %198) | |
%199 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %197, i32 3 | |
%200 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %199, align 4, !invariant.load !9, !nonnull !9 | |
%201 = tail call zeroext i1 %200({}* nonnull align 1 %194, [0 x i8]* noalias nonnull readonly align 1 %168, i32 %167) #4 | |
br label %22 | |
; <label>:202: ; preds = %.loopexit23 | |
br i1 %323, label %.loopexit, label %.preheader21 | |
.preheader21: ; preds = %202, %.preheader21 | |
%203 = phi i32 [ %210, %.preheader21 ], [ 0, %202 ] | |
%204 = phi i8* [ %205, %.preheader21 ], [ %320, %202 ] | |
%205 = getelementptr inbounds i8, i8* %204, i32 1 | |
%206 = load i8, i8* %204, align 1 | |
%207 = and i8 %206, -64 | |
%208 = icmp eq i8 %207, -128 | |
%209 = zext i1 %208 to i32 | |
%210 = add i32 %203, %209 | |
%211 = icmp eq i8* %205, %321 | |
br i1 %211, label %.loopexit, label %.preheader21 | |
.loopexit: ; preds = %.preheader21, %202 | |
%212 = phi i32 [ 0, %202 ], [ %210, %.preheader21 ] | |
%213 = sub i32 %212, %317 | |
%214 = add i32 %213, %335 | |
%215 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 15 | |
%216 = load i8, i8* %215, align 4, !range !161, !noalias !248 | |
%217 = icmp eq i8 %216, 3 | |
%218 = trunc i8 %216 to i2 | |
%219 = select i1 %217, i2 0, i2 %218 | |
switch i2 %219, label %221 [ | |
i2 0, label %222 | |
i2 1, label %220 | |
i2 -2, label %282 | |
i2 -1, label %220 | |
] | |
; <label>:220: ; preds = %.loopexit, %.loopexit | |
br label %222 | |
; <label>:221: ; preds = %.loopexit | |
unreachable | |
; <label>:222: ; preds = %282, %220, %.loopexit | |
%223 = phi i32 [ %285, %282 ], [ 0, %220 ], [ %214, %.loopexit ] | |
%224 = phi i32 [ %283, %282 ], [ %214, %220 ], [ 0, %.loopexit ] | |
%225 = bitcast i32* %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248 | |
store i32 0, i32* %4, align 4, !noalias !248 | |
%226 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 3 | |
%227 = load i32, i32* %226, align 4, !range !157, !noalias !248 | |
%228 = bitcast i32* %4 to [0 x i8]* | |
%229 = icmp ult i32 %227, 128 | |
br i1 %229, label %230, label %232 | |
; <label>:230: ; preds = %222 | |
%231 = trunc i32 %227 to i8 | |
store i8 %231, i8* %225, align 4, !noalias !248 | |
br label %277 | |
; <label>:232: ; preds = %222 | |
%233 = icmp ult i32 %227, 2048 | |
br i1 %233, label %234, label %243 | |
; <label>:234: ; preds = %232 | |
%235 = lshr i32 %227, 6 | |
%236 = trunc i32 %235 to i8 | |
%237 = and i8 %236, 31 | |
%238 = or i8 %237, -64 | |
store i8 %238, i8* %225, align 4, !noalias !248 | |
%239 = trunc i32 %227 to i8 | |
%240 = and i8 %239, 63 | |
%241 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 1 | |
%242 = or i8 %240, -128 | |
store i8 %242, i8* %241, align 1, !noalias !248 | |
br label %277 | |
; <label>:243: ; preds = %232 | |
%244 = icmp ult i32 %227, 65536 | |
br i1 %244, label %245, label %259 | |
; <label>:245: ; preds = %243 | |
%246 = lshr i32 %227, 12 | |
%247 = trunc i32 %246 to i8 | |
%248 = and i8 %247, 15 | |
%249 = or i8 %248, -32 | |
store i8 %249, i8* %225, align 4, !noalias !248 | |
%250 = lshr i32 %227, 6 | |
%251 = trunc i32 %250 to i8 | |
%252 = and i8 %251, 63 | |
%253 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 1 | |
%254 = or i8 %252, -128 | |
store i8 %254, i8* %253, align 1, !noalias !248 | |
%255 = trunc i32 %227 to i8 | |
%256 = and i8 %255, 63 | |
%257 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 2 | |
%258 = or i8 %256, -128 | |
store i8 %258, i8* %257, align 2, !noalias !248 | |
br label %277 | |
; <label>:259: ; preds = %243 | |
%260 = lshr i32 %227, 18 | |
%261 = trunc i32 %260 to i8 | |
%262 = or i8 %261, -16 | |
store i8 %262, i8* %225, align 4, !noalias !248 | |
%263 = lshr i32 %227, 12 | |
%264 = trunc i32 %263 to i8 | |
%265 = and i8 %264, 63 | |
%266 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 1 | |
%267 = or i8 %265, -128 | |
store i8 %267, i8* %266, align 1, !noalias !248 | |
%268 = lshr i32 %227, 6 | |
%269 = trunc i32 %268 to i8 | |
%270 = and i8 %269, 63 | |
%271 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 2 | |
%272 = or i8 %270, -128 | |
store i8 %272, i8* %271, align 2, !noalias !248 | |
%273 = trunc i32 %227 to i8 | |
%274 = and i8 %273, 63 | |
%275 = getelementptr inbounds [0 x i8], [0 x i8]* %228, i32 0, i32 3 | |
%276 = or i8 %274, -128 | |
store i8 %276, i8* %275, align 1, !noalias !248 | |
br label %277 | |
; <label>:277: ; preds = %259, %245, %234, %230 | |
%278 = phi i32 [ 1, %230 ], [ 2, %234 ], [ 3, %245 ], [ 4, %259 ] | |
%279 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%280 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%281 = bitcast [3 x i32]** %280 to i1 ({}*, [0 x i8]*, i32)*** | |
br label %286 | |
; <label>:282: ; preds = %.loopexit | |
%283 = lshr i32 %214, 1 | |
%284 = add i32 %214, 1 | |
%285 = lshr i32 %284, 1 | |
br label %222 | |
; <label>:286: ; preds = %295, %277 | |
%287 = phi i32 [ 0, %277 ], [ %296, %295 ] | |
%288 = icmp ult i32 %287, %224 | |
br i1 %288, label %295, label %289 | |
; <label>:289: ; preds = %286 | |
%290 = load {}*, {}** %279, align 4, !noalias !251, !nonnull !9 | |
%291 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %281, align 4, !noalias !251, !nonnull !9 | |
%292 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %291, i32 3 | |
%293 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %292, align 4, !invariant.load !9, !noalias !251, !nonnull !9 | |
%294 = call zeroext i1 %293({}* nonnull align 1 %290, [0 x i8]* noalias nonnull readonly align 1 %316, i32 %317) #4, !noalias !251 | |
br i1 %294, label %303, label %.preheader | |
; <label>:295: ; preds = %286 | |
%296 = add i32 %287, 1 | |
%297 = load {}*, {}** %279, align 4, !noalias !248, !nonnull !9 | |
%298 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %281, align 4, !noalias !248, !nonnull !9 | |
%299 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %298, i32 3 | |
%300 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %299, align 4, !invariant.load !9, !noalias !248, !nonnull !9 | |
%301 = call zeroext i1 %300({}* nonnull align 1 %297, [0 x i8]* noalias nonnull readonly align 1 %228, i32 %278) #4, !noalias !248 | |
br i1 %301, label %302, label %286 | |
; <label>:302: ; preds = %295 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248 | |
br label %22 | |
; <label>:303: ; preds = %289 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248 | |
br label %22 | |
.preheader: ; preds = %289, %307 | |
%304 = phi i32 [ %308, %307 ], [ 0, %289 ] | |
%305 = icmp ult i32 %304, %223 | |
br i1 %305, label %307, label %306 | |
; <label>:306: ; preds = %.preheader | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248 | |
br label %22 | |
; <label>:307: ; preds = %.preheader | |
%308 = add i32 %304, 1 | |
%309 = load {}*, {}** %279, align 4, !noalias !248, !nonnull !9 | |
%310 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %281, align 4, !noalias !248, !nonnull !9 | |
%311 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %310, i32 3 | |
%312 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %311, align 4, !invariant.load !9, !noalias !248, !nonnull !9 | |
%313 = call zeroext i1 %312({}* nonnull align 1 %309, [0 x i8]* noalias nonnull readonly align 1 %228, i32 %278) #4, !noalias !248 | |
br i1 %313, label %314, label %.preheader | |
; <label>:314: ; preds = %307 | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %225) #4, !noalias !248 | |
br label %22 | |
; <label>:315: ; preds = %.loopexit24, %21 | |
%316 = phi [0 x i8]* [ %168, %.loopexit24 ], [ %1, %21 ] | |
%317 = phi i32 [ %167, %.loopexit24 ], [ %2, %21 ] | |
%318 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 5, i32 1 | |
%319 = icmp ne [0 x i8]* %316, null | |
tail call void @llvm.assume(i1 %319) | |
%320 = getelementptr inbounds [0 x i8], [0 x i8]* %316, i32 0, i32 0 | |
%321 = getelementptr inbounds [0 x i8], [0 x i8]* %316, i32 0, i32 %317 | |
%322 = icmp ne i8* %321, null | |
tail call void @llvm.assume(i1 %322) #4 | |
%323 = icmp eq i32 %317, 0 | |
br i1 %323, label %.loopexit23, label %.preheader22 | |
.preheader22: ; preds = %315, %.preheader22 | |
%324 = phi i32 [ %331, %.preheader22 ], [ 0, %315 ] | |
%325 = phi i8* [ %326, %.preheader22 ], [ %320, %315 ] | |
%326 = getelementptr inbounds i8, i8* %325, i32 1 | |
%327 = load i8, i8* %325, align 1 | |
%328 = and i8 %327, -64 | |
%329 = icmp eq i8 %328, -128 | |
%330 = zext i1 %329 to i32 | |
%331 = add i32 %324, %330 | |
%332 = icmp eq i8* %326, %321 | |
br i1 %332, label %.loopexit23, label %.preheader22 | |
.loopexit23: ; preds = %.preheader22, %315 | |
%333 = phi i32 [ 0, %315 ], [ %331, %.preheader22 ] | |
%334 = sub i32 %317, %333 | |
%335 = load i32, i32* %318, align 4 | |
%336 = icmp ult i32 %334, %335 | |
br i1 %336, label %202, label %337 | |
; <label>:337: ; preds = %.loopexit23 | |
%338 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 0 | |
%339 = load {}*, {}** %338, align 4, !nonnull !9 | |
%340 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %0, i32 0, i32 9, i32 1 | |
%341 = bitcast [3 x i32]** %340 to i1 ({}*, [0 x i8]*, i32)*** | |
%342 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %341, align 4, !nonnull !9 | |
%343 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %342, i32 3 | |
%344 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %343, align 4, !invariant.load !9, !nonnull !9 | |
%345 = tail call zeroext i1 %344({}* nonnull align 1 %339, [0 x i8]* noalias nonnull readonly align 1 %316, i32 %317) #4 | |
br label %22 | |
} | |
; <core::fmt::Error as core::fmt::Debug>::fmt | |
; Function Attrs: nounwind | |
define internal zeroext i1 @"_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h5c867cfdf324d2bdE"({}* noalias nocapture nonnull readonly align 1, %"core::fmt::Formatter"* nocapture readonly align 4 dereferenceable(52)) unnamed_addr #1 { | |
%3 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %1, i32 0, i32 9, i32 0 | |
%4 = load {}*, {}** %3, align 4, !noalias !254, !nonnull !9 | |
%5 = getelementptr inbounds %"core::fmt::Formatter", %"core::fmt::Formatter"* %1, i32 0, i32 9, i32 1 | |
%6 = bitcast [3 x i32]** %5 to i1 ({}*, [0 x i8]*, i32)*** | |
%7 = load i1 ({}*, [0 x i8]*, i32)**, i1 ({}*, [0 x i8]*, i32)*** %6, align 4, !noalias !254, !nonnull !9 | |
%8 = getelementptr inbounds i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %7, i32 3 | |
%9 = load i1 ({}*, [0 x i8]*, i32)*, i1 ({}*, [0 x i8]*, i32)** %8, align 4, !invariant.load !9, !noalias !254, !nonnull !9 | |
%10 = tail call zeroext i1 %9({}* nonnull align 1 %4, [0 x i8]* noalias nonnull readonly align 1 bitcast (<{ [5 x i8] }>* @anon.9b00575310d81673ea82acb70d8d8f85.22 to [0 x i8]*), i32 5) #4, !noalias !260 | |
ret i1 %10 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i8* @__rust_alloc(i32, i32) unnamed_addr #4 { | |
entry: | |
%2 = tail call fastcc i8* @__rdl_alloc(i32 %0, i32 %1) | |
ret i8* %2 | |
} | |
; Function Attrs: nounwind | |
define internal fastcc void @__rust_dealloc(i8*) unnamed_addr #4 { | |
entry: | |
tail call fastcc void @__rdl_dealloc(i8* %0) | |
ret void | |
} | |
; Function Attrs: nounwind | |
define internal fastcc i8* @__rust_realloc(i8*, i32) unnamed_addr #4 { | |
entry: | |
%2 = tail call fastcc i8* @__rdl_realloc(i8* %0, i32 %1) | |
ret i8* %2 | |
} | |
attributes #0 = { inlinehint nounwind "target-cpu"="generic" } | |
attributes #1 = { nounwind "target-cpu"="generic" } | |
attributes #2 = { noinline nounwind "target-cpu"="generic" } | |
attributes #3 = { argmemonly nounwind } | |
attributes #4 = { nounwind } | |
attributes #5 = { noreturn nounwind "target-cpu"="generic" } | |
attributes #6 = { cold noreturn nounwind } | |
attributes #7 = { noinline noreturn nounwind "target-cpu"="generic" } | |
attributes #8 = { nounwind readnone speculatable } | |
attributes #9 = { norecurse nounwind "target-cpu"="generic" } | |
attributes #10 = { norecurse nounwind readnone "target-cpu"="generic" } | |
attributes #11 = { cold noinline noreturn nounwind "target-cpu"="generic" } | |
!0 = !{!1} | |
!1 = distinct !{!1, !2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"} | |
!2 = distinct !{!2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"} | |
!3 = !{!4, !5} | |
!4 = distinct !{!4, !2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %pieces.0"} | |
!5 = distinct !{!5, !2, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %args.0"} | |
!6 = !{!7} | |
!7 = distinct !{!7, !8, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E: %self"} | |
!8 = distinct !{!8, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E"} | |
!9 = !{} | |
!10 = !{!11} | |
!11 = distinct !{!11, !12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"} | |
!12 = distinct !{!12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"} | |
!13 = !{!14, !15} | |
!14 = distinct !{!14, !12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %pieces.0"} | |
!15 = distinct !{!15, !12, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: %args.0"} | |
!16 = !{!17} | |
!17 = distinct !{!17, !18, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E: %self"} | |
!18 = distinct !{!18, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17hf7580f58c8f93926E"} | |
!19 = !{i32 0, i32 2} | |
!20 = !{!21, !23, !24, !26} | |
!21 = distinct !{!21, !22, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$8try_with17h82bfa0b121ac4c4aE: argument 0"} | |
!22 = distinct !{!22, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$8try_with17h82bfa0b121ac4c4aE"} | |
!23 = distinct !{!23, !22, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$8try_with17h82bfa0b121ac4c4aE: argument 1"} | |
!24 = distinct !{!24, !25, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4with17hf83daf2cffb08deeE: argument 0"} | |
!25 = distinct !{!25, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4with17hf83daf2cffb08deeE"} | |
!26 = distinct !{!26, !25, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4with17hf83daf2cffb08deeE: argument 1"} | |
!27 = !{!28, !21, !23, !24, !26} | |
!28 = distinct !{!28, !29, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4init17h0fe460223fe04d28E: argument 0"} | |
!29 = distinct !{!29, !"_ZN46_$LT$std..thread..local..LocalKey$LT$T$GT$$GT$4init17h0fe460223fe04d28E"} | |
!30 = !{!31, !21, !23, !24, !26} | |
!31 = distinct !{!31, !32, !"_ZN3std9panicking18update_panic_count28_$u7b$$u7b$closure$u7d$$u7d$17hc1656fc1536464cfE: argument 0"} | |
!32 = distinct !{!32, !"_ZN3std9panicking18update_panic_count28_$u7b$$u7b$closure$u7d$$u7d$17hc1656fc1536464cfE"} | |
!33 = !{!24, !26} | |
!34 = !{!35} | |
!35 = distinct !{!35, !36, !"_ZN4core5panic9PanicInfo7message17hce969df3937206a2E: argument 0"} | |
!36 = distinct !{!36, !"_ZN4core5panic9PanicInfo7message17hce969df3937206a2E"} | |
!37 = !{i32 1, i32 0} | |
!38 = !{!39} | |
!39 = distinct !{!39, !40, !"_ZN4core5panic8Location4file17h24340291a6e967f8E: argument 0"} | |
!40 = distinct !{!40, !"_ZN4core5panic8Location4file17h24340291a6e967f8E"} | |
!41 = !{!42} | |
!42 = distinct !{!42, !43, !"_ZN4core5panic8Location4line17h38dfa2bd51f0c4c8E: argument 0"} | |
!43 = distinct !{!43, !"_ZN4core5panic8Location4line17h38dfa2bd51f0c4c8E"} | |
!44 = !{!45} | |
!45 = distinct !{!45, !46, !"_ZN4core5panic8Location6column17h763d234016bdcc0aE: argument 0"} | |
!46 = distinct !{!46, !"_ZN4core5panic8Location6column17h763d234016bdcc0aE"} | |
!47 = !{i32 0, i32 33} | |
!48 = !{!49} | |
!49 = distinct !{!49, !50, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!50 = distinct !{!50, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!51 = !{!52} | |
!52 = distinct !{!52, !53, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!53 = distinct !{!53, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!54 = !{!55} | |
!55 = distinct !{!55, !56, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!56 = distinct !{!56, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!57 = !{!58} | |
!58 = distinct !{!58, !59, !"_ZN8dlmalloc3sys5alloc17h958bd67403221364E: argument 0"} | |
!59 = distinct !{!59, !"_ZN8dlmalloc3sys5alloc17h958bd67403221364E"} | |
!60 = !{!61} | |
!61 = distinct !{!61, !62, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!62 = distinct !{!62, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!63 = !{!64} | |
!64 = distinct !{!64, !65, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!65 = distinct !{!65, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!66 = !{!67} | |
!67 = distinct !{!67, !68, !"_ZN8dlmalloc8dlmalloc8Dlmalloc17treemap_is_marked17h20f4a9d2665ca407E: argument 0"} | |
!68 = distinct !{!68, !"_ZN8dlmalloc8dlmalloc8Dlmalloc17treemap_is_marked17h20f4a9d2665ca407E"} | |
!69 = !{!70} | |
!70 = distinct !{!70, !71, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!71 = distinct !{!71, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!72 = !{!73} | |
!73 = distinct !{!73, !74, !"_ZN8dlmalloc8dlmalloc8Dlmalloc11should_trim17h8d376d2ce92977f1E: argument 0"} | |
!74 = distinct !{!74, !"_ZN8dlmalloc8dlmalloc8Dlmalloc11should_trim17h8d376d2ce92977f1E"} | |
!75 = !{!76} | |
!76 = distinct !{!76, !77, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E: argument 0"} | |
!77 = distinct !{!77, !"_ZN8dlmalloc8dlmalloc8Dlmalloc18smallmap_is_marked17hb65f1572210bda84E"} | |
!78 = !{!79} | |
!79 = distinct !{!79, !80, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E: argument 0"} | |
!80 = distinct !{!80, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E"} | |
!81 = !{!82} | |
!82 = distinct !{!82, !83, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E: argument 0"} | |
!83 = distinct !{!83, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E"} | |
!84 = !{!85} | |
!85 = distinct !{!85, !86, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E: argument 0"} | |
!86 = distinct !{!86, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E"} | |
!87 = !{!88} | |
!88 = distinct !{!88, !89, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE: argument 0"} | |
!89 = distinct !{!89, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE"} | |
!90 = !{!91} | |
!91 = distinct !{!91, !92, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E: argument 0"} | |
!92 = distinct !{!92, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E"} | |
!93 = !{!94} | |
!94 = distinct !{!94, !95, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E: argument 0"} | |
!95 = distinct !{!95, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E"} | |
!96 = !{!97} | |
!97 = distinct !{!97, !98, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E: argument 0"} | |
!98 = distinct !{!98, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3cap17hc57c175f364caa26E"} | |
!99 = !{!100} | |
!100 = distinct !{!100, !101, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E: argument 0"} | |
!101 = distinct !{!101, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h1f9f77b0b863e720E"} | |
!102 = !{!103} | |
!103 = distinct !{!103, !104, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E: argument 0"} | |
!104 = distinct !{!104, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$17extend_from_slice17hcbbb30cc01bf9108E"} | |
!105 = !{!106} | |
!106 = distinct !{!106, !107, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE: argument 0"} | |
!107 = distinct !{!107, !"_ZN33_$LT$alloc..vec..Vec$LT$T$GT$$GT$3len17h502e64cf72557acdE"} | |
!108 = !{!109} | |
!109 = distinct !{!109, !110, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E: argument 0"} | |
!110 = distinct !{!110, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E"} | |
!111 = !{!112} | |
!112 = distinct !{!112, !113, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"} | |
!113 = distinct !{!113, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"} | |
!114 = !{!115} | |
!115 = distinct !{!115, !113, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 1"} | |
!116 = !{!117} | |
!117 = distinct !{!117, !118, !"_ZN4core3fmt9Arguments18estimated_capacity17h468767b57b71e79bE: argument 0"} | |
!118 = distinct !{!118, !"_ZN4core3fmt9Arguments18estimated_capacity17h468767b57b71e79bE"} | |
!119 = !{!120, !122} | |
!120 = distinct !{!120, !121, !"_ZN4core3fmt9Arguments18estimated_capacity28_$u7b$$u7b$closure$u7d$$u7d$17h231f2b63cc4c3715E: argument 0"} | |
!121 = distinct !{!121, !"_ZN4core3fmt9Arguments18estimated_capacity28_$u7b$$u7b$closure$u7d$$u7d$17h231f2b63cc4c3715E"} | |
!122 = distinct !{!122, !123, !"_ZN102_$LT$core..iter..adapters..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17h0f74f50d687bd3f4E: argument 0"} | |
!123 = distinct !{!123, !"_ZN102_$LT$core..iter..adapters..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17h0f74f50d687bd3f4E"} | |
!124 = !{!"branch_weights", i32 1, i32 2000} | |
!125 = !{!126} | |
!126 = distinct !{!126, !127, !"_ZN4core3cmp5impls91_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$$u27$b$u20$B$GT$$u20$for$u20$$RF$$u27$a$u20$A$GT$2eq17h441244a45f0b265bE: argument 0"} | |
!127 = distinct !{!127, !"_ZN4core3cmp5impls91_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$$u27$b$u20$B$GT$$u20$for$u20$$RF$$u27$a$u20$A$GT$2eq17h441244a45f0b265bE"} | |
!128 = !{!129} | |
!129 = distinct !{!129, !130, !"_ZN5alloc6string6String13with_capacity17h92ca86ba564c8f72E: argument 0"} | |
!130 = distinct !{!130, !"_ZN5alloc6string6String13with_capacity17h92ca86ba564c8f72E"} | |
!131 = !{!132} | |
!132 = distinct !{!132, !133, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E: argument 0"} | |
!133 = distinct !{!133, !"_ZN4core3fmt5Write9write_fmt17h09805a80d476d7a1E"} | |
!134 = !{!135} | |
!135 = distinct !{!135, !136, !"_ZN43_$LT$u32$u20$as$u20$core..fmt..num..Int$GT$6to_u3217hd39e0a53218d2980E: argument 0"} | |
!136 = distinct !{!136, !"_ZN43_$LT$u32$u20$as$u20$core..fmt..num..Int$GT$6to_u3217hd39e0a53218d2980E"} | |
!137 = !{!138} | |
!138 = distinct !{!138, !139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"} | |
!139 = distinct !{!139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"} | |
!140 = !{!141, !142} | |
!141 = distinct !{!141, !139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 1"} | |
!142 = distinct !{!142, !139, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 2"} | |
!143 = !{!144} | |
!144 = distinct !{!144, !145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E: argument 0"} | |
!145 = distinct !{!145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E"} | |
!146 = !{!147, !148} | |
!147 = distinct !{!147, !145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E: argument 1"} | |
!148 = distinct !{!148, !145, !"_ZN4core5panic9PanicInfo20internal_constructor17h931ba11e1e21d5e4E: argument 2"} | |
!149 = !{!144, !148} | |
!150 = !{!147} | |
!151 = !{!152} | |
!152 = distinct !{!152, !153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 0"} | |
!153 = distinct !{!153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E"} | |
!154 = !{!155, !156} | |
!155 = distinct !{!155, !153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 1"} | |
!156 = distinct !{!156, !153, !"_ZN4core3fmt9Arguments6new_v117he081a3a845da4034E: argument 2"} | |
!157 = !{i32 0, i32 1114112} | |
!158 = !{!159} | |
!159 = distinct !{!159, !160, !"_ZN4core3fmt9Formatter3run17h335739a4c2b4acaeE: argument 0"} | |
!160 = distinct !{!160, !"_ZN4core3fmt9Formatter3run17h335739a4c2b4acaeE"} | |
!161 = !{i8 0, i8 4} | |
!162 = !{i32 0, i32 4} | |
!163 = !{!164, !159} | |
!164 = distinct !{!164, !165, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E: argument 0"} | |
!165 = distinct !{!165, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E"} | |
!166 = !{!"branch_weights", i32 2000, i32 1} | |
!167 = !{!168} | |
!168 = distinct !{!168, !169, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"} | |
!169 = distinct !{!169, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"} | |
!170 = !{!168, !164, !159} | |
!171 = !{!172} | |
!172 = distinct !{!172, !173, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"} | |
!173 = distinct !{!173, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"} | |
!174 = !{!172, !164, !159} | |
!175 = !{!176, !159} | |
!176 = distinct !{!176, !177, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E: argument 0"} | |
!177 = distinct !{!177, !"_ZN4core3fmt9Formatter8getcount17hca2de6d73d41b408E"} | |
!178 = !{!179} | |
!179 = distinct !{!179, !180, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"} | |
!180 = distinct !{!180, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"} | |
!181 = !{!179, !176, !159} | |
!182 = !{!183} | |
!183 = distinct !{!183, !184, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E: argument 0"} | |
!184 = distinct !{!184, !"_ZN4core3fmt10ArgumentV18as_usize17h60a5daffb0cf8a12E"} | |
!185 = !{!183, !176, !159} | |
!186 = !{!187} | |
!187 = distinct !{!187, !188, !"_ZN4core3fmt9Formatter9alternate17h331bb5f796e3e427E: argument 0"} | |
!188 = distinct !{!188, !"_ZN4core3fmt9Formatter9alternate17h331bb5f796e3e427E"} | |
!189 = !{!190} | |
!190 = distinct !{!190, !191, !"_ZN4core3fmt9Formatter9sign_plus17hfa16ab2e9f1a7dedE: argument 0"} | |
!191 = distinct !{!191, !"_ZN4core3fmt9Formatter9sign_plus17hfa16ab2e9f1a7dedE"} | |
!192 = !{!193} | |
!193 = distinct !{!193, !194, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"} | |
!194 = distinct !{!194, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"} | |
!195 = !{!196, !198} | |
!196 = distinct !{!196, !197, !"_ZN4core3fmt9Formatter12with_padding17h26c4c5b1ab7df27bE: argument 0"} | |
!197 = distinct !{!197, !"_ZN4core3fmt9Formatter12with_padding17h26c4c5b1ab7df27bE"} | |
!198 = distinct !{!198, !197, !"_ZN4core3fmt9Formatter12with_padding17h26c4c5b1ab7df27bE: argument 1"} | |
!199 = !{!200, !202, !204, !196, !198} | |
!200 = distinct !{!200, !201, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"} | |
!201 = distinct !{!201, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"} | |
!202 = distinct !{!202, !203, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hbaddf488de1728dcE: argument 0"} | |
!203 = distinct !{!203, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hbaddf488de1728dcE"} | |
!204 = distinct !{!204, !203, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hbaddf488de1728dcE: argument 1"} | |
!205 = !{!202, !204, !196, !198} | |
!206 = !{!207} | |
!207 = distinct !{!207, !208, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"} | |
!208 = distinct !{!208, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"} | |
!209 = !{!210} | |
!210 = distinct !{!210, !211, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E: argument 0"} | |
!211 = distinct !{!211, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hcc3bead7d7ae9a37E"} | |
!212 = !{!213} | |
!213 = distinct !{!213, !214, !"_ZN4core3fmt9Formatter12with_padding17h0087fc77e09428ceE: argument 0"} | |
!214 = distinct !{!214, !"_ZN4core3fmt9Formatter12with_padding17h0087fc77e09428ceE"} | |
!215 = !{!216, !213} | |
!216 = distinct !{!216, !217, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hf584b9f9c0b29b8fE: argument 0"} | |
!217 = distinct !{!217, !"_ZN4core3fmt9Formatter12pad_integral28_$u7b$$u7b$closure$u7d$$u7d$17hf584b9f9c0b29b8fE"} | |
!218 = !{!219, !221} | |
!219 = distinct !{!219, !220, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_some17h75952901945cb39bE: argument 0"} | |
!220 = distinct !{!220, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_some17h75952901945cb39bE"} | |
!221 = distinct !{!221, !222, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_none17h5f0d590a557d2c17E: argument 0"} | |
!222 = distinct !{!222, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$7is_none17h5f0d590a557d2c17E"} | |
!223 = !{!224} | |
!224 = distinct !{!224, !225, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"} | |
!225 = distinct !{!225, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"} | |
!226 = !{!227} | |
!227 = distinct !{!227, !228, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"} | |
!228 = distinct !{!228, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"} | |
!229 = !{!230} | |
!230 = distinct !{!230, !231, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"} | |
!231 = distinct !{!231, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"} | |
!232 = !{!233} | |
!233 = distinct !{!233, !234, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"} | |
!234 = distinct !{!234, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"} | |
!235 = !{!236} | |
!236 = distinct !{!236, !237, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"} | |
!237 = distinct !{!237, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"} | |
!238 = !{!239} | |
!239 = distinct !{!239, !240, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE: argument 0"} | |
!240 = distinct !{!240, !"_ZN4core3str11unwrap_or_017h0ce907afc2e6c4baE"} | |
!241 = !{!242, !244, !246} | |
!242 = distinct !{!242, !243, !"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hd18c1b2e068fd6bbE: argument 0"} | |
!243 = distinct !{!243, !"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hd18c1b2e068fd6bbE"} | |
!244 = distinct !{!244, !245, !"_ZN4core3str6traits103_$LT$impl$u20$core..slice..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17heda1f0357ea02631E: argument 0"} | |
!245 = distinct !{!245, !"_ZN4core3str6traits103_$LT$impl$u20$core..slice..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17heda1f0357ea02631E"} | |
!246 = distinct !{!246, !247, !"_ZN4core3str21_$LT$impl$u20$str$GT$3get17h28857d13a07e48f3E: argument 0"} | |
!247 = distinct !{!247, !"_ZN4core3str21_$LT$impl$u20$str$GT$3get17h28857d13a07e48f3E"} | |
!248 = !{!249} | |
!249 = distinct !{!249, !250, !"_ZN4core3fmt9Formatter12with_padding17h2aec15766f17c6a0E: argument 0"} | |
!250 = distinct !{!250, !"_ZN4core3fmt9Formatter12with_padding17h2aec15766f17c6a0E"} | |
!251 = !{!252, !249} | |
!252 = distinct !{!252, !253, !"_ZN4core3fmt9Formatter3pad28_$u7b$$u7b$closure$u7d$$u7d$17h75adbff73efb2ddcE: argument 0"} | |
!253 = distinct !{!253, !"_ZN4core3fmt9Formatter3pad28_$u7b$$u7b$closure$u7d$$u7d$17h75adbff73efb2ddcE"} | |
!254 = !{!255, !257, !259} | |
!255 = distinct !{!255, !256, !"_ZN4core3fmt9Formatter9write_str17h201d0b49adfd1599E: argument 0"} | |
!256 = distinct !{!256, !"_ZN4core3fmt9Formatter9write_str17h201d0b49adfd1599E"} | |
!257 = distinct !{!257, !258, !"_ZN4core3fmt8builders15debug_tuple_new17hcb6a0355b146c562E: argument 0"} | |
!258 = distinct !{!258, !"_ZN4core3fmt8builders15debug_tuple_new17hcb6a0355b146c562E"} | |
!259 = distinct !{!259, !258, !"_ZN4core3fmt8builders15debug_tuple_new17hcb6a0355b146c562E: argument 1"} | |
!260 = !{!257} |
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
extern { | |
fn dlog(a: i32); | |
} | |
#[no_mangle] | |
pub extern fn run_test() { | |
let cols = 7; | |
let mut current_x_offset; | |
let mut prev_x_offset = -1i32; | |
for yi in 0..=3 { | |
let xi = 0; | |
let x_offset = if yi % 2 == 1 { 23i32 } else { 0i32 }; | |
format!("x_offset: {}, yi: {}, cols: {}", x_offset, 42, cols); // FIXME: change 42 to `yi` and it no longer panics | |
current_x_offset = x_offset; | |
if yi % 2 == 0 && xi == 0 { | |
effects(); | |
} | |
if yi % 2 == 1 && xi == cols-1 { | |
effects(); | |
} | |
unsafe { dlog(1000000); } | |
unsafe { dlog(prev_x_offset); } | |
unsafe { dlog(current_x_offset); } | |
if prev_x_offset == current_x_offset { | |
std::process::abort(); | |
} | |
prev_x_offset = current_x_offset; | |
} | |
} | |
#[inline(never)] | |
fn effects() { | |
format!("{:?}", ()); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment