Created
May 10, 2019 04:34
-
-
Save sol-vin/4aee655c9a6ccbe0669b6cbecf352cf6 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 = 'test.c' | |
source_filename = "test.c" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-pc-linux-gnu" | |
@.str = private unnamed_addr constant [8 x i8] c"HELLO!\0A\00", align 1 | |
; Function Attrs: noinline nounwind optnone uwtable | |
define i32 @main() #0 { | |
%1 = alloca i32, align 4 | |
store i32 0, i32* %1, align 4 | |
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0)) | |
ret i32 0 | |
} | |
declare i32 @printf(i8*, ...) #1 | |
attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
!llvm.module.flags = !{!0} | |
!llvm.ident = !{!1} | |
!0 = !{i32 1, !"wchar_size", i32 4} | |
!1 = !{!"clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)"} |
This file has been truncated, but you can view the full file.
This file contains hidden or 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 = 'main_module' | |
source_filename = "main_module" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%String = type { i32, i32, i32, i8 } | |
%"Slice(UInt8)" = type { i32, i1, i8* } | |
%"Array(String)" = type { i32, i32, i32, %String** } | |
%"->" = type { i8*, i8* } | |
%"Thread::LinkedList(Fiber)" = type { %Fiber*, %Fiber*, %"Thread::Mutex"* } | |
%Fiber = type { i32, %"struct.Fiber::Context", i8*, %"(Crystal::Event | Nil)", i8*, %String*, %Fiber*, %Fiber*, i1, %"Atomic(Thread | Nil)", %"->" } | |
%"struct.Fiber::Context" = type { i8*, i64 } | |
%"(Crystal::Event | Nil)" = type { i32, [2 x i64] } | |
%"Atomic(Thread | Nil)" = type { %Thread* } | |
%Thread = type { i32, i64, i32*, %Fiber*, %Thread*, %Thread*, %"Atomic(UInt8)", %"->", %"Crystal::Scheduler"* } | |
%"Atomic(UInt8)" = type { i8 } | |
%"Crystal::Scheduler" = type { i32, %Fiber*, %Fiber*, %"Deque(Fiber)"* } | |
%"Deque(Fiber)" = type { i32, i32, i32, i32, %Fiber** } | |
%"Thread::Mutex" = type { i32, %"union.LibC::PthreadMutexT" } | |
%"union.LibC::PthreadMutexT" = type { i8*, [32 x i8] } | |
%"Fiber::StackPool" = type { i32, %"Deque(Pointer(Void))"* } | |
%"Deque(Pointer(Void))" = type { i32, i32, i32, i32, i8** } | |
%"Crystal::Event::Base" = type { i8* } | |
%"Thread::LinkedList(Thread)" = type { %Thread*, %Thread*, %"Thread::Mutex"* } | |
%"(UInt32 | UInt64 | Nil)" = type { i32, [1 x i64] } | |
%"(Debug::DWARF::LineNumbers | Nil)" = type { i32, [4 x i64] } | |
%"IO::FileDescriptor" = type { i32, %"(IO::EncodingOptions | Nil)", %"IO::Encoder"*, %"IO::Decoder"*, i32, i1, %"Slice(UInt8)", i32, i1, i1, i8*, i8*, %"(Time::Span | Nil)", %"(Time::Span | Nil)", %"Deque(Fiber)"*, %"Deque(Fiber)"*, %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)", i1, i1 } | |
%"(IO::EncodingOptions | Nil)" = type { i32, [3 x i64] } | |
%"IO::Encoder" = type { i32, %"IO::EncodingOptions", %Iconv, i1 } | |
%"IO::EncodingOptions" = type { %String*, %"(Symbol | Nil)" } | |
%"(Symbol | Nil)" = type { i32, [1 x i64] } | |
%Iconv = type { i1, i8* } | |
%"IO::Decoder" = type { i32, %"Slice(UInt8)", i8*, %"IO::EncodingOptions", %Iconv, %"Slice(UInt8)", i64, %"Slice(UInt8)", i1 } | |
%"(Time::Span | Nil)" = type { i32, [2 x i64] } | |
%"Array(Tuple(Int32, Int32, Int32))" = type { i32, i32, i32, %"Tuple(Int32, Int32, Int32)"* } | |
%"Tuple(Int32, Int32, Int32)" = type { i32, i32, i32 } | |
%"Hash(Int32, Tuple(Int32, Int32, Int32, Int32))" = type { i32, i32, i32, %"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))"*, %"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))"*, %"->", %"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))"** } | |
%"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))" = type { i32, i32, %"Tuple(Int32, Int32, Int32, Int32)", %"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))"*, %"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))"*, %"Hash::Entry(Int32, Tuple(Int32, Int32, Int32, Int32))"* } | |
%"Tuple(Int32, Int32, Int32, Int32)" = type { i32, i32, i32, i32 } | |
%"Array(Int32)" = type { i32, i32, i32, i32* } | |
%"Array(Tuple(Int32, Int32))" = type { i32, i32, i32, %"Tuple(Int32, Int32)"* } | |
%"Tuple(Int32, Int32)" = type { i32, i32 } | |
%"Array(Tuple(UInt64, UInt64, String))" = type { i32, i32, i32, %"Tuple(UInt64, UInt64, String)"* } | |
%"Tuple(UInt64, UInt64, String)" = type { i64, i64, %String* } | |
%"Array(Proc(Int32, (Exception+ | Nil), Nil))" = type { i32, i32, i32, %"->"* } | |
%File = type { i32, %"(IO::EncodingOptions | Nil)", %"IO::Encoder"*, %"IO::Decoder"*, i32, i1, %"Slice(UInt8)", i32, i1, i1, i8*, i8*, %"(Time::Span | Nil)", %"(Time::Span | Nil)", %"Deque(Fiber)"*, %"Deque(Fiber)"*, %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)", i1, i1, %String* } | |
%"Atomic(Int32)" = type { i32 } | |
%"struct.LibC::SigsetT" = type { [16 x i64] } | |
%"Tuple(IO::FileDescriptor+, IO::FileDescriptor+)" = type { i32*, i32* } | |
%"Hash(Signal, Proc(Signal, Nil))" = type { i32, i32, i32, %"Hash::Entry(Signal, Proc(Signal, Nil))"*, %"Hash::Entry(Signal, Proc(Signal, Nil))"*, %"->", %"Hash::Entry(Signal, Proc(Signal, Nil))"** } | |
%"Hash::Entry(Signal, Proc(Signal, Nil))" = type { i32, i32, %"->", %"Hash::Entry(Signal, Proc(Signal, Nil))"*, %"Hash::Entry(Signal, Proc(Signal, Nil))"*, %"Hash::Entry(Signal, Proc(Signal, Nil))"* } | |
%Mutex = type { i32, %Fiber*, i32, %"Deque(Fiber)"* } | |
%"Hash(Int32, Channel::Buffered(Int32))" = type { i32, i32, i32, %"Hash::Entry(Int32, Channel::Buffered(Int32))"*, %"Hash::Entry(Int32, Channel::Buffered(Int32))"*, %"->", %"Hash::Entry(Int32, Channel::Buffered(Int32))"** } | |
%"Hash::Entry(Int32, Channel::Buffered(Int32))" = type { i32, i32, %"Channel::Buffered(Int32)"*, %"Hash::Entry(Int32, Channel::Buffered(Int32))"*, %"Hash::Entry(Int32, Channel::Buffered(Int32))"*, %"Hash::Entry(Int32, Channel::Buffered(Int32))"* } | |
%"Channel::Buffered(Int32)" = type { i32, i1, %"Deque(Fiber)"*, %"Deque(Fiber)"*, i32, %"Deque(Int32)"* } | |
%"Deque(Int32)" = type { i32, i32, i32, i32, i32* } | |
%"Hash(Int32, Int32)" = type { i32, i32, i32, %"Hash::Entry(Int32, Int32)"*, %"Hash::Entry(Int32, Int32)"*, %"->", %"Hash::Entry(Int32, Int32)"** } | |
%"Hash::Entry(Int32, Int32)" = type { i32, i32, i32, %"Hash::Entry(Int32, Int32)"*, %"Hash::Entry(Int32, Int32)"*, %"Hash::Entry(Int32, Int32)"* } | |
%Nil = type {} | |
%"Hash(String, NamedTuple(time: Time, location: Time::Location))" = type { i32, i32, i32, %"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))"*, %"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))"*, %"->", %"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))"** } | |
%"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))" = type { i32, %String*, %"NamedTuple(time: Time, location: Time::Location)", %"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))"*, %"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))"*, %"Hash::Entry(String, NamedTuple(time: Time, location: Time::Location))"* } | |
%"NamedTuple(time: Time, location: Time::Location)" = type { %Time, %"Time::Location"* } | |
%Time = type { i64, i32, %"Time::Location"* } | |
%"Time::Location" = type { i32, %String*, %"Array(Time::Location::Zone)"*, %"Tuple(Int64, Int64)", %"Time::Location::Zone", %"Array(Time::Location::ZoneTransition)"* } | |
%"Array(Time::Location::Zone)" = type { i32, i32, i32, %"Time::Location::Zone"* } | |
%"Tuple(Int64, Int64)" = type { i64, i64 } | |
%"Time::Location::Zone" = type { i32, i1, %String* } | |
%"Array(Time::Location::ZoneTransition)" = type { i32, i32, i32, %"Time::Location::ZoneTransition"* } | |
%"Time::Location::ZoneTransition" = type { i64, i8, i1, i1 } | |
%"struct.LibUnwind::Exception" = type { i64, i64, i64, i64, i64, i32 } | |
%"/usr/share/crystal/src/raise.cr::LEBReader" = type { i8* } | |
%OverflowError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"(CallStack | Nil)" = type { i32, [2 x i64] } | |
%ArgumentError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%CallStack = type { %"Array(Pointer(Void))"*, %"Array(String)"* } | |
%"Array(Pointer(Void))" = type { i32, i32, i32, i8** } | |
%Exception = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%Errno = type { i32, %String*, i32*, %"(CallStack | Nil)", i32, %String* } | |
%"String::Builder" = type { i32, %"(IO::EncodingOptions | Nil)", %"IO::Encoder"*, %"IO::Decoder"*, i32, i32, i8*, i1 } | |
%"Tuple(UInt64, Int32)" = type { i64, i32 } | |
%"(UInt64 | Nil)" = type { i32, [1 x i64] } | |
%IndexError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"Tuple(StaticArray(UInt8, 4), Int32)" = type { [4 x i8], i32 } | |
%InvalidByteSequenceError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%DivisionByZeroError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"Tuple(Pointer(Void), Pointer(Void))" = type { i8*, i8* } | |
%"union.LibC::PthreadMutexattrT" = type { i32 } | |
%"union.LibC::PthreadAttrT" = type { i64, [48 x i8] } | |
%landing_pad = type { i8*, i32 } | |
%"(Int32 | Nil)" = type { i32, [1 x i64] } | |
%"(Bool | File | Nil)" = type { i32, [1 x i64] } | |
%"(Bool | File)" = type { i32, [1 x i64] } | |
%"Crystal::System::FileInfo" = type { %"struct.LibC::Stat" } | |
%"struct.LibC::Stat" = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %"struct.LibC::Timespec", %"struct.LibC::Timespec", %"struct.LibC::Timespec", [3 x i64] } | |
%"struct.LibC::Timespec" = type { i64, i64 } | |
%NilAssertionError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"Time::Span" = type { i64, i32 } | |
%"(Int64 | Nil)" = type { i32, [1 x i64] } | |
%"Crystal::Event" = type { i8*, i1 } | |
%"Tuple(String, Int32, Int32)" = type { %String*, i32, i32 } | |
%"(Int32 | String)" = type { i32, [1 x i64] } | |
%"(Tuple(Int64, Pointer(UInt8)) | Nil)" = type { i32, [2 x i64] } | |
%"Tuple(Int64, Pointer(UInt8))" = type { i64, i8* } | |
%"(Bool | String)" = type { i32, [1 x i64] } | |
%"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)" = type { i32, [2 x i64] } | |
%"struct.LibC::DlInfo" = type { i8*, i8*, i8*, i8* } | |
%"(UInt32 | UInt64)" = type { i32, [1 x i64] } | |
%"(Debug::DWARF::LineNumbers::Row | Nil)" = type { i32, [6 x i64] } | |
%"Debug::DWARF::LineNumbers" = type { %"Array(Array(Debug::DWARF::LineNumbers::Row))"*, i64, %"Array(Debug::DWARF::LineNumbers::Row)"*, i32* } | |
%"Array(Array(Debug::DWARF::LineNumbers::Row))" = type { i32, i32, i32, %"Array(Debug::DWARF::LineNumbers::Row)"** } | |
%"Array(Debug::DWARF::LineNumbers::Row)" = type { i32, i32, i32, %"Debug::DWARF::LineNumbers::Row"* } | |
%"Debug::DWARF::LineNumbers::Row" = type { i64, i32, %String*, %String*, i32, i32, i1 } | |
%"Debug::ELF" = type { %"(Debug::ELF::Ident | Nil)", %"(Debug::ELF::Type | Nil)", %"(Debug::ELF::Machine | Nil)", %"(UInt32 | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | Nil)", %"(UInt16 | Nil)", %"(UInt16 | Nil)", %"(UInt16 | Nil)", %"(UInt16 | Nil)", %"(UInt16 | Nil)", %"(UInt16 | Nil)", i32*, %"Array(Debug::ELF::SectionHeader)"* } | |
%"(Debug::ELF::Ident | Nil)" = type { i32, [2 x i64] } | |
%"(Debug::ELF::Type | Nil)" = type { i32, [1 x i64] } | |
%"(Debug::ELF::Machine | Nil)" = type { i32, [1 x i64] } | |
%"(UInt32 | Nil)" = type { i32, [1 x i64] } | |
%"(UInt16 | Nil)" = type { i32, [1 x i64] } | |
%"Array(Debug::ELF::SectionHeader)" = type { i32, i32, i32, %"Debug::ELF::SectionHeader"* } | |
%"Debug::ELF::SectionHeader" = type { %"(UInt32 | Nil)", %"(Debug::ELF::SectionHeader::Type | Nil)", %"(Debug::ELF::SectionHeader::Flags | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | Nil)", %"(UInt32 | Nil)", %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)" } | |
%"(Debug::ELF::SectionHeader::Type | Nil)" = type { i32, [1 x i64] } | |
%"(Debug::ELF::SectionHeader::Flags | Nil)" = type { i32, [1 x i64] } | |
%"(Debug::DWARF::Strings | Nil)" = type { i32, [5 x i64] } | |
%"(Debug::ELF::SectionHeader | Nil)" = type { i32, [20 x i64] } | |
%"Debug::DWARF::Strings" = type { i32*, %"(UInt32 | UInt64)", %"Slice(UInt8)" } | |
%"Debug::DWARF::Info" = type { %"(UInt32 | UInt64)", i16, %"(UInt32 | UInt64)", i8, %"Array(Debug::DWARF::Abbrev)"*, i1, i64, i64, i32* } | |
%"Array(Debug::DWARF::Abbrev)" = type { i32, i32, i32, %"Debug::DWARF::Abbrev"* } | |
%"Debug::DWARF::Abbrev" = type { i32, i32, %"Array(Debug::DWARF::Abbrev::Attribute)"*, i1 } | |
%"Array(Debug::DWARF::Abbrev::Attribute)" = type { i32, i32, i32, %"Debug::DWARF::Abbrev::Attribute"* } | |
%"Debug::DWARF::Abbrev::Attribute" = type { i32, i32 } | |
%"(Debug::DWARF::Abbrev | Nil)" = type { i32, [3 x i64] } | |
%"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))" = type { i32, i32, i32, %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* } | |
%"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" = type { i32, i32, %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" } | |
%"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" = type { i32, [2 x i64] } | |
%"(Bool | Nil)" = type { i32, [1 x i64] } | |
%"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)" = type { i32, [2 x i64] } | |
%"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" = type { i32, [1 x i64] } | |
%"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" = type { i32, [1 x i64] } | |
%"(String | UInt64 | Nil)" = type { i32, [1 x i64] } | |
%"(Nil.class | UInt64.class)" = type { i32, [1 x i64] } | |
%TypeCastError = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)" = type { i32, [1 x i64] } | |
%"(UInt8 | Nil)" = type { i32, [1 x i64] } | |
%"Char::Reader" = type { %String*, i32, i32, i32, %"(UInt8 | Nil)", i1 } | |
%"(Int32 | UInt32)" = type { i32, [1 x i64] } | |
%"IO::Error" = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"(Bool | Deque(Fiber) | Nil)" = type { i32, [1 x i64] } | |
%"struct.LibC::Timeval" = type { i64, i64 } | |
%"IO::Timeout" = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"(Pointer(Pointer(Void)) | Pointer(Void))" = type { i32, [1 x i64] } | |
%"Range(Int32, Int32)" = type { i32, i32, i1 } | |
%"Debug::ELF::Ident" = type { i8, i32, i8, i8, i8 } | |
%"Debug::ELF::Error" = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"(Debug::ELF::Endianness | Nil)" = type { i32, [1 x i64] } | |
%"(Debug::ELF::OSABI | Nil)" = type { i32, [1 x i64] } | |
%"IO::EOFError" = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"(IO::ByteFormat::BigEndian:Module | IO::ByteFormat::LittleEndian:Module)" = type { i32, [1 x i64] } | |
%"(Bool | IO::Decoder | Nil)" = type { i32, [1 x i64] } | |
%"(Bool | Slice(UInt8))" = type { i32, [2 x i64] } | |
%"(Tuple(Char, Int32) | Nil)" = type { i32, [1 x i64] } | |
%"Tuple(Char, Int32)" = type { i32, i32 } | |
%"(UInt32 | UInt8 | Nil)" = type { i32, [1 x i64] } | |
%"Debug::DWARF::LineNumbers::Sequence" = type { %"(Int64 | Nil)", %"(UInt32 | Nil)", %"(UInt16 | Nil)", %"(UInt32 | Nil)", %"(UInt8 | Nil)", i8, %"(Bool | Nil)", %"(Int8 | Nil)", %"(UInt8 | Nil)", %"(UInt8 | Nil)", %"Array(String)"*, %"Array(Tuple(String, Int32, Int32, Int32))"*, %"Array(UInt8)"* } | |
%"(Int8 | Nil)" = type { i32, [1 x i64] } | |
%"Array(Tuple(String, Int32, Int32, Int32))" = type { i32, i32, i32, %"Tuple(String, Int32, Int32, Int32)"* } | |
%"Tuple(String, Int32, Int32, Int32)" = type { %String*, i32, i32, i32 } | |
%"Array(UInt8)" = type { i32, i32, i32, i8* } | |
%"Debug::DWARF::LineNumbers::Register" = type { i64, i32, i32, i32, i32, i1, i1, i1, i1, i1, i32, i32 } | |
%"(Int32 | UInt8)" = type { i32, [1 x i64] } | |
%"(Int32 | UInt32 | UInt8)" = type { i32, [1 x i64] } | |
%"(Bool | Debug::DWARF::LineNumbers::Register | Int32 | UInt32 | UInt64 | Nil)" = type { i32, [5 x i64] } | |
%"(Debug::DWARF::LineNumbers::Register | Int32 | UInt32)" = type { i32, [5 x i64] } | |
%"(Bool | UInt32 | UInt64 | Nil)" = type { i32, [1 x i64] } | |
%"(Bool | UInt32 | Nil)" = type { i32, [1 x i64] } | |
%"(Int32 | UInt32 | UInt64)" = type { i32, [1 x i64] } | |
%"(UInt16 | UInt32 | UInt8)" = type { i32, [1 x i64] } | |
%"(Char | Nil)" = type { i32, [1 x i64] } | |
%"(Tuple(Int32, Int32, Int32) | Nil)" = type { i32, [2 x i64] } | |
%"(Tuple(Int32) | Tuple(Int32, Int32, Int32, Int32) | Nil)" = type { i32, [2 x i64] } | |
%"(Tuple(Int32) | Tuple(Int32, Int32, Int32, Int32))" = type { i32, [2 x i64] } | |
%"Tuple(Int32)" = type { i32 } | |
%"(Tuple(Int32, Int32, Int32, Int32) | Nil)" = type { i32, [2 x i64] } | |
%"Crystal::Hasher" = type { i64, i64 } | |
%"(Tuple(Int32, Int32) | Nil)" = type { i32, [1 x i64] } | |
%"(Int32 | UInt32 | UInt64 | Nil)" = type { i32, [1 x i64] } | |
%"String::ToU64Info" = type { i64, i1, i1 } | |
%"Tuple(Int32, Bool)" = type { i32, i1 } | |
%"Tuple(IO::FileDescriptor, IO::FileDescriptor)" = type { %"IO::FileDescriptor"*, %"IO::FileDescriptor"* } | |
%closure_1 = type { i32, %"->" } | |
%"Channel::ClosedError" = type { i32, %String*, i32*, %"(CallStack | Nil)" } | |
%"Tuple(String)" = type { %String* } | |
%"CallStack::RepeatedFrame" = type { i8*, i32 } | |
@"'skip'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"skip\00" } | |
@"'sequentially_consis...'" = private constant { i32, i32, i32, [24 x i8] } { i32 1, i32 23, i32 23, [24 x i8] c"sequentially_consistent\00" } | |
@":symbol_table" = global [2 x %String*] [%String* bitcast ({ i32, i32, i32, [5 x i8] }* @"'skip'" to %String*), %String* bitcast ({ i32, i32, i32, [24 x i8] }* @"'sequentially_consis...'" to %String*)] | |
@ARGC_UNSAFE = internal global i32 0 | |
@ARGV_UNSAFE = internal global i8** null | |
@"AtExitHandlers::running" = internal global i1 false | |
@"AtExitHandlers::running:init" = internal global i1 false | |
@"Crystal::System::Random::initialized" = internal global i1 false | |
@"Crystal::System::Random::initialized:init" = internal global i1 false | |
@"Crystal::System::Random::getrandom_available" = internal global i1 false | |
@"Crystal::System::Random::getrandom_available:init" = internal global i1 false | |
@"Int::DIGITS_BASE62" = internal constant %String* bitcast ({ i32, i32, i32, [63 x i8] }* @"'0123456789abcdefghi...'" to %String*) | |
@"'0123456789abcdefghi...'" = private constant { i32, i32, i32, [63 x i8] } { i32 1, i32 62, i32 62, [63 x i8] c"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\00" } | |
@"Int::DIGITS_UPCASE" = internal constant %String* bitcast ({ i32, i32, i32, [37 x i8] }* @"'0123456789ABCDEFGHI...'" to %String*) | |
@"'0123456789ABCDEFGHI...'" = private constant { i32, i32, i32, [37 x i8] } { i32 1, i32 36, i32 36, [37 x i8] c"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\00" } | |
@"Int::DIGITS_DOWNCASE" = internal constant %String* bitcast ({ i32, i32, i32, [37 x i8] }* @"'0123456789abcdefghi...'.1" to %String*) | |
@"'0123456789abcdefghi...'.1" = private constant { i32, i32, i32, [37 x i8] } { i32 1, i32 36, i32 36, [37 x i8] c"0123456789abcdefghijklmnopqrstuvwxyz\00" } | |
@"Debug::ELF::MAGIC" = internal global %"Slice(UInt8)" zeroinitializer | |
@"Debug::ELF::MAGIC:init" = internal global i1 false | |
@"'Negative Pointer#ma...'" = private constant { i32, i32, i32, [29 x i8] } { i32 1, i32 28, i32 28, [29 x i8] c"Negative Pointer#malloc size\00" } | |
@"'Negative size'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"Negative size\00" } | |
@"'passing a closure t...'" = private constant { i32, i32, i32, [38 x i8] } { i32 1, i32 37, i32 37, [38 x i8] c"passing a closure to C is not allowed\00" } | |
@"CallStack::CURRENT_DIR" = internal global %String* null | |
@"CallStack::CURRENT_DIR:init" = internal global i1 false | |
@"Process::INITIAL_PWD" = internal global %String* null | |
@"Process::INITIAL_PWD:init" = internal global i1 false | |
@"'getcwd'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"getcwd\00" } | |
@"''" = private constant { i32, i32, i32, [1 x i8] } { i32 1, i32 0, i32 0, [1 x i8] zeroinitializer } | |
@"'Negative capacity'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c"Negative capacity\00" } | |
@"'Capacity too big'" = private constant { i32, i32, i32, [17 x i8] } { i32 1, i32 16, i32 16, [17 x i8] c"Capacity too big\00" } | |
@"'Negative count'" = private constant { i32, i32, i32, [15 x i8] } { i32 1, i32 14, i32 14, [15 x i8] c"Negative count\00" } | |
@"'Bytesize out of cap...'" = private constant { i32, i32, i32, [32 x i8] } { i32 1, i32 31, i32 31, [32 x i8] c"Bytesize out of capacity bounds\00" } | |
@"String::TYPE_ID" = internal constant i32 1 | |
@"String::TYPE_ID:init" = internal global i1 false | |
@"'UTF-8'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"UTF-8\00" } | |
@"'//IGNORE'" = private constant { i32, i32, i32, [9 x i8] } { i32 1, i32 8, i32 8, [9 x i8] c"//IGNORE\00" } | |
@"'Can only invoke 'to...'" = private constant { i32, i32, i32, [47 x i8] } { i32 1, i32 46, i32 46, [47 x i8] c"Can only invoke 'to_s' once on String::Builder\00" } | |
@"'Invalid encoding: '" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Invalid encoding: \00" } | |
@"' -> '" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c" -> \00" } | |
@"'iconv_open'" = private constant { i32, i32, i32, [11 x i8] } { i32 1, i32 10, i32 10, [11 x i8] c"iconv_open\00" } | |
@"'iconv_close'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"iconv_close\00" } | |
@"'Incomplete multibyt...'" = private constant { i32, i32, i32, [30 x i8] } { i32 1, i32 29, i32 29, [30 x i8] c"Incomplete multibyte sequence\00" } | |
@"'Invalid multibyte s...'" = private constant { i32, i32, i32, [27 x i8] } { i32 1, i32 26, i32 26, [27 x i8] c"Invalid multibyte sequence\00" } | |
@"'Index out of bounds...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"Index out of bounds\00" } | |
@"': '" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c": \00" } | |
@"'Invalid char value ...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"Invalid char value \00" } | |
@"''\5C'''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5C''\00" } | |
@"''\5C\5C''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5C\5C'\00" } | |
@"''\5Ca''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Ca'\00" } | |
@"''\5Cb''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Cb'\00" } | |
@"''\5Ce''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Ce'\00" } | |
@"''\5Cf''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Cf'\00" } | |
@"''\5Cn''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Cn'\00" } | |
@"''\5Cr''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Cr'\00" } | |
@"''\5Ct''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Ct'\00" } | |
@"''\5Cv''" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"'\5Cv'\00" } | |
@"'\5Cu{'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"\5Cu{\00" } | |
@"'Invalid base '" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"Invalid base \00" } | |
@"'upcase must be fals...'" = private constant { i32, i32, i32, [33 x i8] } { i32 1, i32 32, i32 32, [33 x i8] c"upcase must be false for base 62\00" } | |
@"Int::DIGITS_BASE62:init" = internal global i1 false | |
@"Int::DIGITS_UPCASE:init" = internal global i1 false | |
@"Int::DIGITS_DOWNCASE:init" = internal global i1 false | |
@"'Division by 0'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"Division by 0\00" } | |
@"'Overflow: Int32::MI...'" = private constant { i32, i32, i32, [26 x i8] } { i32 1, i32 25, i32 25, [26 x i8] c"Overflow: Int32::MIN / -1\00" } | |
@"CallStack::skip" = internal global %"Array(String)"* null | |
@"CallStack::skip:init" = internal global i1 false | |
@"'/usr/share/crystal/...'" = private constant { i32, i32, i32, [36 x i8] } { i32 1, i32 35, i32 35, [36 x i8] c"/usr/share/crystal/src/callstack.cr\00" } | |
@"'/usr/share/crystal/...'.2" = private constant { i32, i32, i32, [36 x i8] } { i32 1, i32 35, i32 35, [36 x i8] c"/usr/share/crystal/src/exception.cr\00" } | |
@"LibC::SIG_DFL" = internal global %"->" zeroinitializer | |
@"LibC::SIG_DFL:init" = internal global i1 false | |
@"LibC::SIG_IGN" = internal global %"->" zeroinitializer | |
@"LibC::SIG_IGN:init" = internal global i1 false | |
@"String::CHAR_TO_DIGIT" = internal global [256 x i8] zeroinitializer | |
@"String::CHAR_TO_DIGIT:init" = internal global i1 false | |
@"String::CHAR_TO_DIGIT62" = internal global [256 x i8] zeroinitializer | |
@"String::CHAR_TO_DIGIT62:init" = internal global i1 false | |
@"LibC::MAP_FAILED" = internal global i8* null | |
@"LibC::MAP_FAILED:init" = internal global i1 false | |
@"Fiber::fibers" = internal global %"Thread::LinkedList(Fiber)" zeroinitializer | |
@"Fiber::fibers:init" = internal global i1 false | |
@"'pthread_mutex_init'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"pthread_mutex_init\00" } | |
@"'pthread_mutex_destr...'" = private constant { i32, i32, i32, [22 x i8] } { i32 1, i32 21, i32 21, [22 x i8] c"pthread_mutex_destroy\00" } | |
@"Fiber::stack_pool" = internal global %"Fiber::StackPool"* null | |
@"Fiber::stack_pool:init" = internal global i1 false | |
@"Crystal::EventLoop::eb" = internal global %"Crystal::Event::Base" zeroinitializer | |
@"Crystal::EventLoop::eb:init" = internal global i1 false | |
@"Thread::threads" = internal global %"Thread::LinkedList(Thread)" zeroinitializer | |
@"Thread::threads:init" = internal global i1 false | |
@"'pthread_attr_destro...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"pthread_attr_destroy\00" } | |
@GC_stackbottom = external global i8* | |
@"'main'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"main\00" } | |
@"'pthread_mutex_lock'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"pthread_mutex_lock\00" } | |
@"'pthread_mutex_unloc...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"pthread_mutex_unlock\00" } | |
@"Thread::current" = thread_local global %Thread* null | |
@"File::DEFAULT_CREATE_PERMISSIONS" = internal global i16 0 | |
@"File::DEFAULT_CREATE_PERMISSIONS:init" = internal global i1 false | |
@"GC::curr_push_other_roots" = global %"->" zeroinitializer | |
@"GC::prev_push_other_roots" = global %"->" zeroinitializer | |
@"Crystal::Hasher::seed" = global [2 x i64] zeroinitializer | |
@"'BUG: Thread.current...'" = private constant { i32, i32, i32, [34 x i8] } { i32 1, i32 33, i32 33, [34 x i8] c"BUG: Thread.current returned NULL\00" } | |
@"'Nil assertion faile...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"Nil assertion failed\00" } | |
@"'Time::Span too big ...'" = private constant { i32, i32, i32, [32 x i8] } { i32 1, i32 31, i32 31, [32 x i8] c"Time::Span too big or too small\00" } | |
@"'Overflow: Int64::MI...'" = private constant { i32, i32, i32, [26 x i8] } { i32 1, i32 25, i32 25, [26 x i8] c"Overflow: Int64::MIN / -1\00" } | |
@"'tried to resume a d...'" = private constant { i32, i32, i32, [29 x i8] } { i32 1, i32 28, i32 28, [29 x i8] c"tried to resume a dead fiber\00" } | |
@"'\0A'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"\0A\00" } | |
@"'FATAL: '" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"FATAL: \00" } | |
@"'#<'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"#<\00" } | |
@"'Fiber'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Fiber\00" } | |
@"':0x'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c":0x\00" } | |
@"'Overflow: UInt64::M...'" = private constant { i32, i32, i32, [27 x i8] } { i32 1, i32 26, i32 26, [27 x i8] c"Overflow: UInt64::MIN / -1\00" } | |
@"'CRYSTAL_CALLSTACK_F...'" = private constant { i32, i32, i32, [28 x i8] } { i32 1, i32 27, i32 27, [28 x i8] c"CRYSTAL_CALLSTACK_FULL_INFO\00" } | |
@"'key'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"key\00" } | |
@"'`'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"`\00" } | |
@"'` '" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"` \00" } | |
@"'String '" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"String \00" } | |
@"'contains null byte'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"contains null byte\00" } | |
@"'1'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"1\00" } | |
@"CallStack::base_address" = global %"(UInt32 | UInt64 | Nil)" zeroinitializer | |
@"CallStack::dwarf_line_numbers" = global %"(Debug::DWARF::LineNumbers | Nil)" zeroinitializer | |
@PROGRAM_NAME = internal global %String* null | |
@"PROGRAM_NAME:init" = internal global i1 false | |
@"'r'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"r\00" } | |
@"'No file open mode s...'" = private constant { i32, i32, i32, [28 x i8] } { i32 1, i32 27, i32 27, [28 x i8] c"No file open mode specified\00" } | |
@"'Invalid file open m...'" = private constant { i32, i32, i32, [26 x i8] } { i32 1, i32 25, i32 25, [26 x i8] c"Invalid file open mode: '\00" } | |
@"'''" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"'\00" } | |
@"'Error opening file ...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"Error opening file '\00" } | |
@"'\5C\22'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5C\22\00" } | |
@"'\5C\5C'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5C\5C\00" } | |
@"'\5Ca'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Ca\00" } | |
@"'\5Cb'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cb\00" } | |
@"'\5Ce'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Ce\00" } | |
@"'\5Cf'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cf\00" } | |
@"'\5Cn'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cn\00" } | |
@"'\5Cr'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cr\00" } | |
@"'\5Ct'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Ct\00" } | |
@"'\5Cv'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cv\00" } | |
@"'\5C#{'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"\5C#{\00" } | |
@"'\5Cx'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cx\00" } | |
@"'Overflow: UInt8::MI...'" = private constant { i32, i32, i32, [26 x i8] } { i32 1, i32 25, i32 25, [26 x i8] c"Overflow: UInt8::MIN / -1\00" } | |
@"'\5Cu'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"\5Cu\00" } | |
@"'' with mode ''" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"' with mode '\00" } | |
@"'fcntl() failed'" = private constant { i32, i32, i32, [15 x i8] } { i32 1, i32 14, i32 14, [15 x i8] c"fcntl() failed\00" } | |
@"'Error writing file'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Error writing file\00" } | |
@"'File not open for w...'" = private constant { i32, i32, i32, [26 x i8] } { i32 1, i32 25, i32 25, [26 x i8] c"File not open for writing\00" } | |
@"Crystal::EventLoop::loop_fiber" = global %Fiber* null | |
@"'Cannot allocate new...'" = private constant { i32, i32, i32, [32 x i8] } { i32 1, i32 31, i32 31, [32 x i8] c"Cannot allocate new fiber stack\00" } | |
@STDERR = internal global %"IO::FileDescriptor"* null | |
@"STDERR:init" = internal global i1 false | |
@"'Write timed out'" = private constant { i32, i32, i32, [16 x i8] } { i32 1, i32 15, i32 15, [16 x i8] c"Write timed out\00" } | |
@"'Error closing file'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Error closing file\00" } | |
@"'Unhandled exception...'" = private constant { i32, i32, i32, [36 x i8] } { i32 1, i32 35, i32 35, [36 x i8] c"Unhandled exception in spawn(name: \00" } | |
@"'): '" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"): \00" } | |
@"'Closed stream'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"Closed stream\00" } | |
@"'Unhandled exception...'.3" = private constant { i32, i32, i32, [31 x i8] } { i32 1, i32 30, i32 30, [31 x i8] c"Unhandled exception in spawn: \00" } | |
@"' ('" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c" (\00" } | |
@"'Time::Location::Inv...'" = private constant { i32, i32, i32, [43 x i8] } { i32 1, i32 42, i32 42, [43 x i8] c"Time::Location::InvalidTimezoneOffsetError\00" } | |
@"'Time::Location::Inv...'.4" = private constant { i32, i32, i32, [41 x i8] } { i32 1, i32 40, i32 40, [41 x i8] c"Time::Location::InvalidLocationNameError\00" } | |
@"'Time::Location::Inv...'.5" = private constant { i32, i32, i32, [35 x i8] } { i32 1, i32 34, i32 34, [35 x i8] c"Time::Location::InvalidTZDataError\00" } | |
@"'Time::Format::Error...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"Time::Format::Error\00" } | |
@"'Time::FloatingTimeC...'" = private constant { i32, i32, i32, [34 x i8] } { i32 1, i32 33, i32 33, [34 x i8] c"Time::FloatingTimeConversionError\00" } | |
@"'Base64::Error'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"Base64::Error\00" } | |
@"'Path::Error'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"Path::Error\00" } | |
@"'File::BadPatternErr...'" = private constant { i32, i32, i32, [22 x i8] } { i32 1, i32 21, i32 21, [22 x i8] c"File::BadPatternError\00" } | |
@"'Errno'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Errno\00" } | |
@"'ConcurrentExecution...'" = private constant { i32, i32, i32, [29 x i8] } { i32 1, i32 28, i32 28, [29 x i8] c"ConcurrentExecutionException\00" } | |
@"'Concurrent::Cancele...'" = private constant { i32, i32, i32, [26 x i8] } { i32 1, i32 25, i32 25, [26 x i8] c"Concurrent::CanceledError\00" } | |
@"'Channel::ClosedErro...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"Channel::ClosedError\00" } | |
@"'IO::EOFError'" = private constant { i32, i32, i32, [13 x i8] } { i32 1, i32 12, i32 12, [13 x i8] c"IO::EOFError\00" } | |
@"'IO::Error'" = private constant { i32, i32, i32, [10 x i8] } { i32 1, i32 9, i32 9, [10 x i8] c"IO::Error\00" } | |
@"'IO::Timeout'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"IO::Timeout\00" } | |
@"'Enumerable::EmptyEr...'" = private constant { i32, i32, i32, [23 x i8] } { i32 1, i32 22, i32 22, [23 x i8] c"Enumerable::EmptyError\00" } | |
@"'NilAssertionError'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c"NilAssertionError\00" } | |
@"'NotImplementedError...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"NotImplementedError\00" } | |
@"'OverflowError'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"OverflowError\00" } | |
@"'DivisionByZeroError...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"DivisionByZeroError\00" } | |
@"'KeyError'" = private constant { i32, i32, i32, [9 x i8] } { i32 1, i32 8, i32 8, [9 x i8] c"KeyError\00" } | |
@"'InvalidByteSequence...'" = private constant { i32, i32, i32, [25 x i8] } { i32 1, i32 24, i32 24, [25 x i8] c"InvalidByteSequenceError\00" } | |
@"'TypeCastError'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"TypeCastError\00" } | |
@"'ArgumentError'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"ArgumentError\00" } | |
@"'IndexError'" = private constant { i32, i32, i32, [11 x i8] } { i32 1, i32 10, i32 10, [11 x i8] c"IndexError\00" } | |
@"'Debug::ELF::Error'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c"Debug::ELF::Error\00" } | |
@"'Exception'" = private constant { i32, i32, i32, [10 x i8] } { i32 1, i32 9, i32 9, [10 x i8] c"Exception\00" } | |
@"')\0A'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c")\0A\00" } | |
@"' from '" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c" from \00" } | |
@"'Caused by: '" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"Caused by: \00" } | |
@"'Error reading file'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Error reading file\00" } | |
@"'Read timed out'" = private constant { i32, i32, i32, [15 x i8] } { i32 1, i32 14, i32 14, [15 x i8] c"Read timed out\00" } | |
@"'Can't write to read...'" = private constant { i32, i32, i32, [31 x i8] } { i32 1, i32 30, i32 30, [31 x i8] c"Can't write to read-only Slice\00" } | |
@"'Invalid magic numbe...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"Invalid magic number\00" } | |
@"'Unknown enum '" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"Unknown enum \00" } | |
@"'Debug::ELF::Endiann...'" = private constant { i32, i32, i32, [23 x i8] } { i32 1, i32 22, i32 22, [23 x i8] c"Debug::ELF::Endianness\00" } | |
@"' value: '" = private constant { i32, i32, i32, [9 x i8] } { i32 1, i32 8, i32 8, [9 x i8] c" value: \00" } | |
@"'Unsupported version...'" = private constant { i32, i32, i32, [27 x i8] } { i32 1, i32 26, i32 26, [27 x i8] c"Unsupported version number\00" } | |
@"'Debug::ELF::OSABI'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c"Debug::ELF::OSABI\00" } | |
@"'End of file reached...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"End of file reached\00" } | |
@"'Unsupported'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"Unsupported\00" } | |
@"'Header should be 52...'" = private constant { i32, i32, i32, [36 x i8] } { i32 1, i32 35, i32 35, [36 x i8] c"Header should be 52 bytes for ELF32\00" } | |
@"'Header should be 64...'" = private constant { i32, i32, i32, [36 x i8] } { i32 1, i32 35, i32 35, [36 x i8] c"Header should be 64 bytes for ELF64\00" } | |
@"'.text'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c".text\00" } | |
@"'Negative array size...'" = private constant { i32, i32, i32, [22 x i8] } { i32 1, i32 21, i32 21, [22 x i8] c"Negative array size: \00" } | |
@"'Unable to seek'" = private constant { i32, i32, i32, [15 x i8] } { i32 1, i32 14, i32 14, [15 x i8] c"Unable to seek\00" } | |
@"'Unable to tell'" = private constant { i32, i32, i32, [15 x i8] } { i32 1, i32 14, i32 14, [15 x i8] c"Unable to tell\00" } | |
@"'Negative limit'" = private constant { i32, i32, i32, [15 x i8] } { i32 1, i32 14, i32 14, [15 x i8] c"Negative limit\00" } | |
@"'Invalid back amount...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"Invalid back amount\00" } | |
@"'Incomplete UTF-8 by...'" = private constant { i32, i32, i32, [31 x i8] } { i32 1, i32 30, i32 30, [31 x i8] c"Incomplete UTF-8 byte sequence\00" } | |
@"'Unexpected byte 0x'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Unexpected byte 0x\00" } | |
@"'0'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"0\00" } | |
@"'Overflow: UInt32::M...'" = private constant { i32, i32, i32, [27 x i8] } { i32 1, i32 26, i32 26, [27 x i8] c"Overflow: UInt32::MIN / -1\00" } | |
@"' in UTF-8 byte sequ...'" = private constant { i32, i32, i32, [24 x i8] } { i32 1, i32 23, i32 23, [24 x i8] c" in UTF-8 byte sequence\00" } | |
@"'.debug_line'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c".debug_line\00" } | |
@"'.debug_str'" = private constant { i32, i32, i32, [11 x i8] } { i32 1, i32 10, i32 10, [11 x i8] c".debug_str\00" } | |
@"'.debug_info'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c".debug_info\00" } | |
@"'.debug_abbrev'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c".debug_abbrev\00" } | |
@"'Invalid address siz...'" = private constant { i32, i32, i32, [23 x i8] } { i32 1, i32 22, i32 22, [23 x i8] c"Invalid address size: \00" } | |
@"'Unknown DW_FORM_'" = private constant { i32, i32, i32, [17 x i8] } { i32 1, i32 16, i32 16, [17 x i8] c"Unknown DW_FORM_\00" } | |
@"'Addr'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Addr\00" } | |
@"'Block2'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"Block2\00" } | |
@"'Block4'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"Block4\00" } | |
@"'Data2'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Data2\00" } | |
@"'Data4'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Data4\00" } | |
@"'Data8'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Data8\00" } | |
@"'String'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"String\00" } | |
@"'Block'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Block\00" } | |
@"'Block1'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"Block1\00" } | |
@"'Data1'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Data1\00" } | |
@"'Flag'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Flag\00" } | |
@"'Sdata'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Sdata\00" } | |
@"'Strp'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Strp\00" } | |
@"'Udata'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Udata\00" } | |
@"'RefAddr'" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"RefAddr\00" } | |
@"'Ref1'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Ref1\00" } | |
@"'Ref2'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Ref2\00" } | |
@"'Ref4'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Ref4\00" } | |
@"'Ref8'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Ref8\00" } | |
@"'RefUdata'" = private constant { i32, i32, i32, [9 x i8] } { i32 1, i32 8, i32 8, [9 x i8] c"RefUdata\00" } | |
@"'Indirect'" = private constant { i32, i32, i32, [9 x i8] } { i32 1, i32 8, i32 8, [9 x i8] c"Indirect\00" } | |
@"'SecOffset'" = private constant { i32, i32, i32, [10 x i8] } { i32 1, i32 9, i32 9, [10 x i8] c"SecOffset\00" } | |
@"'Exprloc'" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"Exprloc\00" } | |
@"'FlagPresent'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"FlagPresent\00" } | |
@"'RefSig8'" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"RefSig8\00" } | |
@"', expected 2 to 36'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c", expected 2 to 36\00" } | |
@"Unicode::category_Ll" = global %"Array(Tuple(Int32, Int32, Int32))"* null | |
@"Unicode::category_Lu" = global %"Array(Tuple(Int32, Int32, Int32))"* null | |
@"Unicode::casefold_ranges" = global %"Array(Tuple(Int32, Int32, Int32))"* null | |
@"Unicode::fold_cases" = global %"Hash(Int32, Tuple(Int32, Int32, Int32, Int32))"* null | |
@"Hash::HASH_PRIMES" = internal global %"Array(Int32)"* null | |
@"Hash::HASH_PRIMES:init" = internal global i1 false | |
@"'Hash table too big'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Hash table too big\00" } | |
@"Unicode::downcase_ranges" = global %"Array(Tuple(Int32, Int32, Int32))"* null | |
@"' out of char range'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c" out of char range\00" } | |
@"Unicode::alternate_ranges" = global %"Array(Tuple(Int32, Int32))"* null | |
@"'cast from '" = private constant { i32, i32, i32, [11 x i8] } { i32 1, i32 10, i32 10, [11 x i8] c"cast from \00" } | |
@"'Bool'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"Bool\00" } | |
@"'Int32'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Int32\00" } | |
@"'Int64'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"Int64\00" } | |
@"'Slice(UInt8)'" = private constant { i32, i32, i32, [13 x i8] } { i32 1, i32 12, i32 12, [13 x i8] c"Slice(UInt8)\00" } | |
@"'UInt16'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"UInt16\00" } | |
@"'UInt32'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"UInt32\00" } | |
@"'UInt64'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"UInt64\00" } | |
@"'UInt8'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"UInt8\00" } | |
@"' to (UInt32 | UInt6...'" = private constant { i32, i32, i32, [29 x i8] } { i32 1, i32 28, i32 28, [29 x i8] c" to (UInt32 | UInt64) failed\00" } | |
@"', at /usr/share/cry...'" = private constant { i32, i32, i32, [50 x i8] } { i32 1, i32 49, i32 49, [50 x i8] c", at /usr/share/crystal/src/callstack.cr:218:3:33\00" } | |
@"'Nil'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"Nil\00" } | |
@"' to String failed'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c" to String failed\00" } | |
@"', at /usr/share/cry...'.6" = private constant { i32, i32, i32, [50 x i8] } { i32 1, i32 49, i32 49, [50 x i8] c", at /usr/share/crystal/src/callstack.cr:218:3:34\00" } | |
@"' to UInt64 failed'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c" to UInt64 failed\00" } | |
@"', at /usr/share/cry...'.7" = private constant { i32, i32, i32, [50 x i8] } { i32 1, i32 49, i32 49, [50 x i8] c", at /usr/share/crystal/src/callstack.cr:218:3:36\00" } | |
@"', at /usr/share/cry...'.8" = private constant { i32, i32, i32, [50 x i8] } { i32 1, i32 49, i32 49, [50 x i8] c", at /usr/share/crystal/src/callstack.cr:218:3:39\00" } | |
@"', at /usr/share/cry...'.9" = private constant { i32, i32, i32, [50 x i8] } { i32 1, i32 49, i32 49, [50 x i8] c", at /usr/share/crystal/src/callstack.cr:218:3:41\00" } | |
@"'Invalid Int32: '" = private constant { i32, i32, i32, [16 x i8] } { i32 1, i32 15, i32 15, [16 x i8] c"Invalid Int32: \00" } | |
@"CallStack::dwarf_function_names" = global %"Array(Tuple(UInt64, UInt64, String))"* null | |
@"'/'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c"/\00" } | |
@"'??'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"??\00" } | |
@"':'" = private constant { i32, i32, i32, [2 x i8] } { i32 1, i32 1, i32 1, [2 x i8] c":\00" } | |
@"'*raise<'" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"*raise<\00" } | |
@"'*CallStack::'" = private constant { i32, i32, i32, [13 x i8] } { i32 1, i32 12, i32 12, [13 x i8] c"*CallStack::\00" } | |
@"'*CallStack#'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"*CallStack#\00" } | |
@"'???'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"???\00" } | |
@"' in ''" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c" in '\00" } | |
@"' at 0x'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c" at 0x\00" } | |
@"AtExitHandlers::handlers" = global %"Array(Proc(Int32, (Exception+ | Nil), Nil))"* null | |
@"AtExitHandlers::exception" = global i32* null | |
@"'Error running at_ex...'" = private constant { i32, i32, i32, [32 x i8] } { i32 1, i32 31, i32 31, [32 x i8] c"Error running at_exit handler: \00" } | |
@"'Unhandled exception...'.10" = private constant { i32, i32, i32, [22 x i8] } { i32 1, i32 21, i32 21, [22 x i8] c"Unhandled exception: \00" } | |
@STDOUT = internal global %"IO::FileDescriptor"* null | |
@"STDOUT:init" = internal global i1 false | |
@"'can't resume a runn...'" = private constant { i32, i32, i32, [29 x i8] } { i32 1, i32 28, i32 28, [29 x i8] c"can't resume a running fiber\00" } | |
@"'/dev/urandom'" = private constant { i32, i32, i32, [13 x i8] } { i32 1, i32 12, i32 12, [13 x i8] c"/dev/urandom\00" } | |
@"'Unable to get info'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"Unable to get info\00" } | |
@"Crystal::System::Random::urandom" = global %File* null | |
@"'getrandom'" = private constant { i32, i32, i32, [10 x i8] } { i32 1, i32 9, i32 9, [10 x i8] c"getrandom\00" } | |
@"'Failed to access se...'" = private constant { i32, i32, i32, [57 x i8] } { i32 1, i32 56, i32 56, [57 x i8] c"Failed to access secure source to generate random bytes!\00" } | |
@"'Sleep seconds must ...'" = private constant { i32, i32, i32, [31 x i8] } { i32 1, i32 30, i32 30, [31 x i8] c"Sleep seconds must be positive\00" } | |
@"Signal::setup_default_handlers" = internal global %"Atomic(Int32)" zeroinitializer | |
@"Signal::setup_default_handlers:init" = internal global i1 false | |
@"Signal::sigset" = internal global %"struct.LibC::SigsetT" zeroinitializer | |
@"Signal::sigset:init" = internal global i1 false | |
@"Crystal::Signal::pipe" = internal global %"Tuple(IO::FileDescriptor+, IO::FileDescriptor+)" zeroinitializer | |
@"Crystal::Signal::pipe:init" = internal global i1 false | |
@"'Could not create pi...'" = private constant { i32, i32, i32, [22 x i8] } { i32 1, i32 21, i32 21, [22 x i8] c"Could not create pipe\00" } | |
@"Crystal::Signal::handlers" = internal global %"Hash(Signal, Proc(Signal, Nil))"* null | |
@"Crystal::Signal::handlers:init" = internal global i1 false | |
@"'uncaught exception ...'" = private constant { i32, i32, i32, [49 x i8] } { i32 1, i32 48, i32 48, [49 x i8] c"uncaught exception while processing handler for \00" } | |
@"'HUP'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"HUP\00" } | |
@"'INT'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"INT\00" } | |
@"'QUIT'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"QUIT\00" } | |
@"'ILL'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"ILL\00" } | |
@"'TRAP'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"TRAP\00" } | |
@"'IOT'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"IOT\00" } | |
@"'ABRT'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"ABRT\00" } | |
@"'FPE'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"FPE\00" } | |
@"'KILL'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"KILL\00" } | |
@"'BUS'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"BUS\00" } | |
@"'SEGV'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"SEGV\00" } | |
@"'SYS'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"SYS\00" } | |
@"'PIPE'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"PIPE\00" } | |
@"'ALRM'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"ALRM\00" } | |
@"'TERM'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"TERM\00" } | |
@"'URG'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"URG\00" } | |
@"'STOP'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"STOP\00" } | |
@"'TSTP'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"TSTP\00" } | |
@"'CONT'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"CONT\00" } | |
@"'CHLD'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"CHLD\00" } | |
@"'TTIN'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"TTIN\00" } | |
@"'TTOU'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"TTOU\00" } | |
@"'IO'" = private constant { i32, i32, i32, [3 x i8] } { i32 1, i32 2, i32 2, [3 x i8] c"IO\00" } | |
@"'XCPU'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"XCPU\00" } | |
@"'XFSZ'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"XFSZ\00" } | |
@"'VTALRM'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"VTALRM\00" } | |
@"'USR1'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"USR1\00" } | |
@"'USR2'" = private constant { i32, i32, i32, [5 x i8] } { i32 1, i32 4, i32 4, [5 x i8] c"USR2\00" } | |
@"'WINCH'" = private constant { i32, i32, i32, [6 x i8] } { i32 1, i32 5, i32 5, [6 x i8] c"WINCH\00" } | |
@"'PWR'" = private constant { i32, i32, i32, [4 x i8] } { i32 1, i32 3, i32 3, [4 x i8] c"PWR\00" } | |
@"'STKFLT'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"STKFLT\00" } | |
@"'UNUSED'" = private constant { i32, i32, i32, [7 x i8] } { i32 1, i32 6, i32 6, [7 x i8] c"UNUSED\00" } | |
@"', exiting'" = private constant { i32, i32, i32, [10 x i8] } { i32 1, i32 9, i32 9, [10 x i8] c", exiting\00" } | |
@"'missing handler for...'" = private constant { i32, i32, i32, [21 x i8] } { i32 1, i32 20, i32 20, [21 x i8] c"missing handler for \00" } | |
@"Crystal::Signal::child_handler" = global %"->" zeroinitializer | |
@"'waitpid'" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"waitpid\00" } | |
@"Crystal::SignalChildHandler::mutex" = internal global %Mutex* null | |
@"Crystal::SignalChildHandler::mutex:init" = internal global i1 false | |
@"Crystal::SignalChildHandler::waiting" = internal global %"Hash(Int32, Channel::Buffered(Int32))"* null | |
@"Crystal::SignalChildHandler::waiting:init" = internal global i1 false | |
@"'Attempt to unlock a...'" = private constant { i32, i32, i32, [46 x i8] } { i32 1, i32 45, i32 45, [46 x i8] c"Attempt to unlock a mutex which is not locked\00" } | |
@"'Channel is closed'" = private constant { i32, i32, i32, [18 x i8] } { i32 1, i32 17, i32 17, [18 x i8] c"Channel is closed\00" } | |
@"Crystal::SignalChildHandler::pending" = internal global %"Hash(Int32, Int32)"* null | |
@"Crystal::SignalChildHandler::pending:init" = internal global i1 false | |
@"Crystal::Signal::mutex" = internal global %Mutex* null | |
@"Crystal::Signal::mutex:init" = internal global i1 false | |
@"'/usr/share/crystal/...'.11" = private constant { i32, i32, i32, [32 x i8] } { i32 1, i32 31, i32 31, [32 x i8] c"/usr/share/crystal/src/raise.cr\00" } | |
@pcre_malloc = external global i8* (i64)* | |
@pcre_free = external global %Nil (i8*)* | |
@"Time::Location::location_cache" = internal global %"Hash(String, NamedTuple(time: Time, location: Time::Location))"* null | |
@"Time::Location::location_cache:init" = internal global i1 false | |
@"'HELLO!\0A'" = private constant { i32, i32, i32, [8 x i8] } { i32 1, i32 7, i32 7, [8 x i8] c"HELLO!\0A\00" } | |
@"'Failed to raise an ...'" = private constant { i32, i32, i32, [34 x i8] } { i32 1, i32 33, i32 33, [34 x i8] c"Failed to raise an exception: %s\0A\00" } | |
@"'NO_REASON'" = private constant { i32, i32, i32, [10 x i8] } { i32 1, i32 9, i32 9, [10 x i8] c"NO_REASON\00" } | |
@"'FOREIGN_EXCEPTION_C...'" = private constant { i32, i32, i32, [25 x i8] } { i32 1, i32 24, i32 24, [25 x i8] c"FOREIGN_EXCEPTION_CAUGHT\00" } | |
@"'FATAL_PHASE2_ERROR'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"FATAL_PHASE2_ERROR\00" } | |
@"'FATAL_PHASE1_ERROR'" = private constant { i32, i32, i32, [19 x i8] } { i32 1, i32 18, i32 18, [19 x i8] c"FATAL_PHASE1_ERROR\00" } | |
@"'NORMAL_STOP'" = private constant { i32, i32, i32, [12 x i8] } { i32 1, i32 11, i32 11, [12 x i8] c"NORMAL_STOP\00" } | |
@"'END_OF_STACK'" = private constant { i32, i32, i32, [13 x i8] } { i32 1, i32 12, i32 12, [13 x i8] c"END_OF_STACK\00" } | |
@"'HANDLER_FOUND'" = private constant { i32, i32, i32, [14 x i8] } { i32 1, i32 13, i32 13, [14 x i8] c"HANDLER_FOUND\00" } | |
@"'INSTALL_CONTEXT'" = private constant { i32, i32, i32, [16 x i8] } { i32 1, i32 15, i32 15, [16 x i8] c"INSTALL_CONTEXT\00" } | |
@"'CONTINUE_UNWIND'" = private constant { i32, i32, i32, [16 x i8] } { i32 1, i32 15, i32 15, [16 x i8] c"CONTINUE_UNWIND\00" } | |
@"'[0x%lx] %s +%ld\0A'" = private constant { i32, i32, i32, [17 x i8] } { i32 1, i32 16, i32 16, [17 x i8] c"[0x%lx] %s +%ld\0A\00" } | |
@"'[0x%lx] %s +%ld (%l...'" = private constant { i32, i32, i32, [29 x i8] } { i32 1, i32 28, i32 28, [29 x i8] c"[0x%lx] %s +%ld (%ld times)\0A\00" } | |
@"'[0x%lx] ???\0A'" = private constant { i32, i32, i32, [13 x i8] } { i32 1, i32 12, i32 12, [13 x i8] c"[0x%lx] ???\0A\00" } | |
@"'[0x%lx] ??? (%ld ti...'" = private constant { i32, i32, i32, [25 x i8] } { i32 1, i32 24, i32 24, [25 x i8] c"[0x%lx] ??? (%ld times)\0A\00" } | |
@"'Arithmetic overflow...'" = private constant { i32, i32, i32, [20 x i8] } { i32 1, i32 19, i32 19, [20 x i8] c"Arithmetic overflow\00" } | |
@"'Stack overflow (e.g...'" = private constant { i32, i32, i32, [56 x i8] } { i32 1, i32 55, i32 55, [56 x i8] c"Stack overflow (e.g., infinite or very deep recursion)\0A\00" } | |
@"'Invalid memory acce...'" = private constant { i32, i32, i32, [52 x i8] } { i32 1, i32 51, i32 51, [52 x i8] c"Invalid memory access (signal %d) at address 0x%lx\0A\00" } | |
define void @__crystal_main(i32 %argc, i8** %argv) !dbg !4 { | |
alloca: | |
%0 = alloca %"->", !dbg !9 | |
%1 = alloca %"Slice(UInt8)", !dbg !12 | |
%2 = alloca %"->", !dbg !15 | |
%3 = alloca %"->", !dbg !18 | |
%4 = alloca %"->", !dbg !18 | |
%5 = alloca %"->", !dbg !21 | |
%6 = alloca %"->", !dbg !21 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %argc, i32* @ARGC_UNSAFE | |
store i8** %argv, i8*** @ARGV_UNSAFE | |
%7 = load i1, i1* @"AtExitHandlers::running:init" | |
br i1 %7, label %initialized, label %not_initialized | |
initialized: ; preds = %not_initialized, %entry | |
%8 = load i1, i1* @"Crystal::System::Random::initialized:init" | |
br i1 %8, label %initialized1, label %not_initialized2 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"AtExitHandlers::running:init" | |
call void @"~AtExitHandlers::running:init"() | |
br label %initialized | |
initialized1: ; preds = %not_initialized2, %initialized | |
%9 = load i1, i1* @"Crystal::System::Random::getrandom_available:init" | |
br i1 %9, label %initialized3, label %not_initialized4 | |
not_initialized2: ; preds = %initialized | |
store i1 true, i1* @"Crystal::System::Random::initialized:init" | |
call void @"~Crystal::System::Random::initialized:init"() | |
br label %initialized1 | |
initialized3: ; preds = %not_initialized4, %initialized1 | |
%10 = load i1, i1* @"Debug::ELF::MAGIC:init", !dbg !22 | |
br i1 %10, label %initialized5, label %not_initialized6, !dbg !22 | |
not_initialized4: ; preds = %initialized1 | |
store i1 true, i1* @"Crystal::System::Random::getrandom_available:init" | |
call void @"~Crystal::System::Random::getrandom_available:init"() | |
br label %initialized3 | |
initialized5: ; preds = %not_initialized6, %initialized3 | |
%11 = load i1, i1* @"CallStack::CURRENT_DIR:init", !dbg !25 | |
br i1 %11, label %initialized7, label %not_initialized8, !dbg !25 | |
not_initialized6: ; preds = %initialized3 | |
store i1 true, i1* @"Debug::ELF::MAGIC:init", !dbg !22 | |
call void @"~Debug::ELF::MAGIC:init"() | |
br label %initialized5 | |
initialized7: ; preds = %not_initialized8, %initialized5 | |
%12 = load i1, i1* @"CallStack::skip:init" | |
br i1 %12, label %initialized9, label %not_initialized10 | |
not_initialized8: ; preds = %initialized5 | |
store i1 true, i1* @"CallStack::CURRENT_DIR:init", !dbg !25 | |
call void @"~CallStack::CURRENT_DIR:init"() | |
br label %initialized7 | |
initialized9: ; preds = %not_initialized10, %initialized7 | |
%13 = call %"Array(String)"* @"*CallStack::skip<String>:Array(String)"(%String* bitcast ({ i32, i32, i32, [36 x i8] }* @"'/usr/share/crystal/...'" to %String*)), !dbg !28 | |
%14 = call %"Array(String)"* @"*CallStack::skip<String>:Array(String)"(%String* bitcast ({ i32, i32, i32, [36 x i8] }* @"'/usr/share/crystal/...'.2" to %String*)), !dbg !31 | |
%15 = load i1, i1* @"LibC::SIG_DFL:init", !dbg !34 | |
br i1 %15, label %initialized11, label %not_initialized12, !dbg !34 | |
not_initialized10: ; preds = %initialized7 | |
store i1 true, i1* @"CallStack::skip:init" | |
call void @"~CallStack::skip:init"() | |
br label %initialized9 | |
initialized11: ; preds = %not_initialized12, %initialized9 | |
%16 = load i1, i1* @"LibC::SIG_IGN:init" | |
br i1 %16, label %initialized13, label %not_initialized14 | |
not_initialized12: ; preds = %initialized9 | |
store i1 true, i1* @"LibC::SIG_DFL:init", !dbg !34 | |
call void @"~LibC::SIG_DFL:init"() | |
br label %initialized11 | |
initialized13: ; preds = %not_initialized14, %initialized11 | |
%17 = load i1, i1* @"String::CHAR_TO_DIGIT:init" | |
br i1 %17, label %initialized15, label %not_initialized16 | |
not_initialized14: ; preds = %initialized11 | |
store i1 true, i1* @"LibC::SIG_IGN:init" | |
call void @"~LibC::SIG_IGN:init"() | |
br label %initialized13 | |
initialized15: ; preds = %not_initialized16, %initialized13 | |
%18 = load i1, i1* @"String::CHAR_TO_DIGIT62:init" | |
br i1 %18, label %initialized17, label %not_initialized18 | |
not_initialized16: ; preds = %initialized13 | |
store i1 true, i1* @"String::CHAR_TO_DIGIT:init" | |
call void @"~String::CHAR_TO_DIGIT:init"() | |
br label %initialized15 | |
initialized17: ; preds = %not_initialized18, %initialized15 | |
%19 = load i1, i1* @"LibC::MAP_FAILED:init", !dbg !37 | |
br i1 %19, label %initialized19, label %not_initialized20, !dbg !37 | |
not_initialized18: ; preds = %initialized15 | |
store i1 true, i1* @"String::CHAR_TO_DIGIT62:init" | |
call void @"~String::CHAR_TO_DIGIT62:init"() | |
br label %initialized17 | |
initialized19: ; preds = %not_initialized20, %initialized17 | |
%20 = load i1, i1* @"Fiber::fibers:init", !dbg !40 | |
br i1 %20, label %initialized21, label %not_initialized22, !dbg !40 | |
not_initialized20: ; preds = %initialized17 | |
store i1 true, i1* @"LibC::MAP_FAILED:init", !dbg !37 | |
call void @"~LibC::MAP_FAILED:init"() | |
br label %initialized19 | |
initialized21: ; preds = %not_initialized22, %initialized19 | |
%21 = load i1, i1* @"Fiber::stack_pool:init" | |
br i1 %21, label %initialized23, label %not_initialized24 | |
not_initialized22: ; preds = %initialized19 | |
store i1 true, i1* @"Fiber::fibers:init", !dbg !40 | |
call void @"~Fiber::fibers:init"() | |
br label %initialized21 | |
initialized23: ; preds = %not_initialized24, %initialized21 | |
%22 = load i1, i1* @"Crystal::EventLoop::eb:init", !dbg !43 | |
br i1 %22, label %initialized25, label %not_initialized26, !dbg !43 | |
not_initialized24: ; preds = %initialized21 | |
store i1 true, i1* @"Fiber::stack_pool:init" | |
call void @"~Fiber::stack_pool:init"() | |
br label %initialized23 | |
initialized25: ; preds = %not_initialized26, %initialized23 | |
%23 = load i1, i1* @"Thread::threads:init", !dbg !46 | |
br i1 %23, label %initialized27, label %not_initialized28, !dbg !46 | |
not_initialized26: ; preds = %initialized23 | |
store i1 true, i1* @"Crystal::EventLoop::eb:init", !dbg !43 | |
call void @"~Crystal::EventLoop::eb:init"() | |
br label %initialized25 | |
initialized27: ; preds = %not_initialized28, %initialized25 | |
%24 = call %Thread* @"*Thread::new:Thread"(), !dbg !49 | |
%25 = call %Thread* @"*Thread::current=<Thread>:Thread"(%Thread* %24), !dbg !52 | |
%26 = load i1, i1* @"File::DEFAULT_CREATE_PERMISSIONS:init", !dbg !53 | |
br i1 %26, label %initialized29, label %not_initialized30, !dbg !53 | |
not_initialized28: ; preds = %initialized25 | |
store i1 true, i1* @"Thread::threads:init", !dbg !46 | |
call void @"~Thread::threads:init"() | |
br label %initialized27 | |
initialized29: ; preds = %not_initialized30, %initialized27 | |
%27 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !9 | |
store i8* bitcast (void ()* @"~procProc(Nil)@/usr/share/crystal/src/gc/boehm.cr:243" to i8*), i8** %27, !dbg !9 | |
%28 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !9 | |
store i8* null, i8** %28, !dbg !9 | |
%29 = load %"->", %"->"* %0, !dbg !9 | |
call void @"*GC::before_collect<&Proc(Nil)>:Nil"(%"->" %29), !dbg !56 | |
%30 = call %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* bitcast ([2 x i64]* @"Crystal::Hasher::seed" to i8*), i32 trunc (i64 mul nuw (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2) to i32)), !dbg !12 | |
store %"Slice(UInt8)" %30, %"Slice(UInt8)"* %1, !dbg !12 | |
%31 = load %"Slice(UInt8)", %"Slice(UInt8)"* %1, !dbg !12 | |
call void @"*Crystal::System::Random::random_bytes<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %31), !dbg !57 | |
%32 = load i1, i1* @"Hash::HASH_PRIMES:init", !dbg !57 | |
br i1 %32, label %initialized31, label %not_initialized32, !dbg !57 | |
not_initialized30: ; preds = %initialized27 | |
store i1 true, i1* @"File::DEFAULT_CREATE_PERMISSIONS:init", !dbg !53 | |
call void @"~File::DEFAULT_CREATE_PERMISSIONS:init"() | |
br label %initialized29 | |
initialized31: ; preds = %not_initialized32, %initialized29 | |
%33 = load i1, i1* @"STDOUT:init", !dbg !15 | |
br i1 %33, label %initialized33, label %not_initialized34, !dbg !15 | |
not_initialized32: ; preds = %initialized29 | |
store i1 true, i1* @"Hash::HASH_PRIMES:init", !dbg !57 | |
call void @"~Hash::HASH_PRIMES:init"(), !dbg !57 | |
br label %initialized31, !dbg !57 | |
initialized33: ; preds = %not_initialized34, %initialized31 | |
%34 = load i1, i1* @"STDERR:init", !dbg !15 | |
br i1 %34, label %initialized35, label %not_initialized36, !dbg !15 | |
not_initialized34: ; preds = %initialized31 | |
store i1 true, i1* @"STDOUT:init", !dbg !15 | |
call void @"~STDOUT:init"(), !dbg !15 | |
br label %initialized33, !dbg !15 | |
initialized35: ; preds = %not_initialized36, %initialized33 | |
%35 = load i1, i1* @"PROGRAM_NAME:init", !dbg !15 | |
br i1 %35, label %initialized37, label %not_initialized38, !dbg !15 | |
not_initialized36: ; preds = %initialized33 | |
store i1 true, i1* @"STDERR:init", !dbg !15 | |
call void @"~STDERR:init"(), !dbg !15 | |
br label %initialized35, !dbg !15 | |
initialized37: ; preds = %not_initialized38, %initialized35 | |
%36 = load i1, i1* @"AtExitHandlers::running:init", !dbg !15 | |
br i1 %36, label %initialized39, label %not_initialized40, !dbg !15 | |
not_initialized38: ; preds = %initialized35 | |
store i1 true, i1* @"PROGRAM_NAME:init", !dbg !15 | |
call void @"~PROGRAM_NAME:init"(), !dbg !15 | |
br label %initialized37, !dbg !15 | |
initialized39: ; preds = %not_initialized40, %initialized37 | |
%37 = getelementptr inbounds %"->", %"->"* %2, i32 0, i32 0, !dbg !15 | |
store i8* bitcast (void ()* @"~procProc(Nil)@/usr/share/crystal/src/kernel.cr:540" to i8*), i8** %37, !dbg !15 | |
%38 = getelementptr inbounds %"->", %"->"* %2, i32 0, i32 1, !dbg !15 | |
store i8* null, i8** %38, !dbg !15 | |
%39 = load %"->", %"->"* %2, !dbg !15 | |
%40 = call %Fiber* @"*spawn<&Proc(Nil)>:Fiber"(%"->" %39), !dbg !58 | |
call void @"*Signal::setup_default_handlers:Nil"(), !dbg !58 | |
call void @setup_sigfault_handler(), !dbg !58 | |
%41 = load i1, i1* @"Process::INITIAL_PWD:init", !dbg !59 | |
br i1 %41, label %initialized41, label %not_initialized42, !dbg !59 | |
not_initialized40: ; preds = %initialized37 | |
store i1 true, i1* @"AtExitHandlers::running:init", !dbg !15 | |
call void @"~AtExitHandlers::running:init"(), !dbg !15 | |
br label %initialized39, !dbg !15 | |
initialized41: ; preds = %not_initialized42, %initialized39 | |
%42 = call %"Array(String)"* @"*CallStack::skip<String>:Array(String)"(%String* bitcast ({ i32, i32, i32, [32 x i8] }* @"'/usr/share/crystal/...'.11" to %String*)), !dbg !62 | |
%43 = load i1, i1* @"Crystal::System::Random::initialized:init", !dbg !65 | |
br i1 %43, label %initialized43, label %not_initialized44, !dbg !65 | |
not_initialized42: ; preds = %initialized39 | |
store i1 true, i1* @"Process::INITIAL_PWD:init", !dbg !59 | |
call void @"~Process::INITIAL_PWD:init"(), !dbg !59 | |
br label %initialized41, !dbg !59 | |
initialized43: ; preds = %not_initialized44, %initialized41 | |
%44 = load i1, i1* @"Crystal::System::Random::getrandom_available:init", !dbg !65 | |
br i1 %44, label %initialized45, label %not_initialized46, !dbg !65 | |
not_initialized44: ; preds = %initialized41 | |
store i1 true, i1* @"Crystal::System::Random::initialized:init", !dbg !65 | |
call void @"~Crystal::System::Random::initialized:init"(), !dbg !65 | |
br label %initialized43, !dbg !65 | |
initialized45: ; preds = %not_initialized46, %initialized43 | |
%45 = getelementptr inbounds %"->", %"->"* %3, i32 0, i32 0, !dbg !18 | |
store i8* bitcast (i8* (i64)* @"*GC::malloc<UInt64>:Pointer(Void)" to i8*), i8** %45, !dbg !18 | |
%46 = getelementptr inbounds %"->", %"->"* %3, i32 0, i32 1, !dbg !18 | |
store i8* null, i8** %46, !dbg !18 | |
%47 = load %"->", %"->"* %3, !dbg !18 | |
%48 = call i8* @"~check_proc_is_not_closure"(%"->" %47), !dbg !18 | |
%49 = bitcast i8* %48 to i8* (i64)*, !dbg !18 | |
store i8* (i64)* %49, i8* (i64)** @pcre_malloc, !dbg !18 | |
%50 = bitcast i8* (i64)* %49 to i8*, !dbg !18 | |
%51 = getelementptr inbounds %"->", %"->"* %4, i32 0, i32 0, !dbg !18 | |
store i8* %50, i8** %51, !dbg !18 | |
%52 = getelementptr inbounds %"->", %"->"* %4, i32 0, i32 1, !dbg !18 | |
store i8* null, i8** %52, !dbg !18 | |
%53 = load %"->", %"->"* %4, !dbg !18 | |
%54 = getelementptr inbounds %"->", %"->"* %5, i32 0, i32 0, !dbg !21 | |
store i8* bitcast (void (i8*)* @"*GC::free<Pointer(Void)>:Nil" to i8*), i8** %54, !dbg !21 | |
%55 = getelementptr inbounds %"->", %"->"* %5, i32 0, i32 1, !dbg !21 | |
store i8* null, i8** %55, !dbg !21 | |
%56 = load %"->", %"->"* %5, !dbg !21 | |
%57 = call i8* @"~check_proc_is_not_closure"(%"->" %56), !dbg !21 | |
%58 = bitcast i8* %57 to %Nil (i8*)*, !dbg !21 | |
store %Nil (i8*)* %58, %Nil (i8*)** @pcre_free, !dbg !21 | |
%59 = bitcast %Nil (i8*)* %58 to i8*, !dbg !21 | |
%60 = getelementptr inbounds %"->", %"->"* %6, i32 0, i32 0, !dbg !21 | |
store i8* %59, i8** %60, !dbg !21 | |
%61 = getelementptr inbounds %"->", %"->"* %6, i32 0, i32 1, !dbg !21 | |
store i8* null, i8** %61, !dbg !21 | |
%62 = load %"->", %"->"* %6, !dbg !21 | |
%63 = load i1, i1* @"Signal::sigset:init", !dbg !68 | |
br i1 %63, label %initialized47, label %not_initialized48, !dbg !68 | |
not_initialized46: ; preds = %initialized43 | |
store i1 true, i1* @"Crystal::System::Random::getrandom_available:init", !dbg !65 | |
call void @"~Crystal::System::Random::getrandom_available:init"(), !dbg !65 | |
br label %initialized45, !dbg !65 | |
initialized47: ; preds = %not_initialized48, %initialized45 | |
%64 = load i1, i1* @"Signal::setup_default_handlers:init", !dbg !68 | |
br i1 %64, label %initialized49, label %not_initialized50, !dbg !68 | |
not_initialized48: ; preds = %initialized45 | |
store i1 true, i1* @"Signal::sigset:init", !dbg !68 | |
call void @"~Signal::sigset:init"(), !dbg !68 | |
br label %initialized47, !dbg !68 | |
initialized49: ; preds = %not_initialized50, %initialized47 | |
%65 = load i1, i1* @"Crystal::Signal::pipe:init", !dbg !68 | |
br i1 %65, label %initialized51, label %not_initialized52, !dbg !68 | |
not_initialized50: ; preds = %initialized47 | |
store i1 true, i1* @"Signal::setup_default_handlers:init", !dbg !68 | |
call void @"~Signal::setup_default_handlers:init"(), !dbg !68 | |
br label %initialized49, !dbg !68 | |
initialized51: ; preds = %not_initialized52, %initialized49 | |
%66 = load i1, i1* @"Crystal::Signal::handlers:init", !dbg !68 | |
br i1 %66, label %initialized53, label %not_initialized54, !dbg !68 | |
not_initialized52: ; preds = %initialized49 | |
store i1 true, i1* @"Crystal::Signal::pipe:init", !dbg !68 | |
call void @"~Crystal::Signal::pipe:init"(), !dbg !68 | |
br label %initialized51, !dbg !68 | |
initialized53: ; preds = %not_initialized54, %initialized51 | |
%67 = load i1, i1* @"Crystal::Signal::mutex:init", !dbg !68 | |
br i1 %67, label %initialized55, label %not_initialized56, !dbg !68 | |
not_initialized54: ; preds = %initialized51 | |
store i1 true, i1* @"Crystal::Signal::handlers:init", !dbg !68 | |
call void @"~Crystal::Signal::handlers:init"(), !dbg !68 | |
br label %initialized53, !dbg !68 | |
initialized55: ; preds = %not_initialized56, %initialized53 | |
%68 = load i1, i1* @"Crystal::SignalChildHandler::pending:init", !dbg !68 | |
br i1 %68, label %initialized57, label %not_initialized58, !dbg !68 | |
not_initialized56: ; preds = %initialized53 | |
store i1 true, i1* @"Crystal::Signal::mutex:init", !dbg !68 | |
call void @"~Crystal::Signal::mutex:init"(), !dbg !68 | |
br label %initialized55, !dbg !68 | |
initialized57: ; preds = %not_initialized58, %initialized55 | |
%69 = load i1, i1* @"Crystal::SignalChildHandler::waiting:init", !dbg !68 | |
br i1 %69, label %initialized59, label %not_initialized60, !dbg !68 | |
not_initialized58: ; preds = %initialized55 | |
store i1 true, i1* @"Crystal::SignalChildHandler::pending:init", !dbg !68 | |
call void @"~Crystal::SignalChildHandler::pending:init"(), !dbg !68 | |
br label %initialized57, !dbg !68 | |
initialized59: ; preds = %not_initialized60, %initialized57 | |
%70 = load i1, i1* @"Crystal::SignalChildHandler::mutex:init", !dbg !68 | |
br i1 %70, label %initialized61, label %not_initialized62, !dbg !68 | |
not_initialized60: ; preds = %initialized57 | |
store i1 true, i1* @"Crystal::SignalChildHandler::waiting:init", !dbg !68 | |
call void @"~Crystal::SignalChildHandler::waiting:init"(), !dbg !68 | |
br label %initialized59, !dbg !68 | |
initialized61: ; preds = %not_initialized62, %initialized59 | |
%71 = load i1, i1* @"Time::Location::location_cache:init", !dbg !71 | |
br i1 %71, label %initialized63, label %not_initialized64, !dbg !71 | |
not_initialized62: ; preds = %initialized59 | |
store i1 true, i1* @"Crystal::SignalChildHandler::mutex:init", !dbg !68 | |
call void @"~Crystal::SignalChildHandler::mutex:init"(), !dbg !68 | |
br label %initialized61, !dbg !68 | |
initialized63: ; preds = %not_initialized64, %initialized61 | |
call void @"*print<String>:Nil"(%String* bitcast ({ i32, i32, i32, [8 x i8] }* @"'HELLO!\0A'" to %String*)), !dbg !74 | |
ret void, !dbg !74 | |
not_initialized64: ; preds = %initialized61 | |
store i1 true, i1* @"Time::Location::location_cache:init", !dbg !71 | |
call void @"~Time::Location::location_cache:init"() | |
br label %initialized63 | |
} | |
declare i32 @printf(i8*, ...) | |
; Function Attrs: uwtable | |
define i8* @__crystal_malloc64(i64 %size) #0 !dbg !77 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt64>:UInt64"(i64 %size), !dbg !79 | |
%1 = call i8* @"*GC::malloc<UInt64>:Pointer(Void)"(i64 %0), !dbg !80 | |
ret i8* %1, !dbg !80 | |
} | |
; Function Attrs: uwtable | |
define i8* @__crystal_malloc_atomic64(i64 %size) #0 !dbg !81 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt64>:UInt64"(i64 %size), !dbg !82 | |
%1 = call i8* @"*GC::malloc_atomic<UInt64>:Pointer(Void)"(i64 %0), !dbg !83 | |
ret i8* %1, !dbg !83 | |
} | |
; Function Attrs: uwtable | |
define i8* @__crystal_realloc64(i8* %ptr, i64 %size) #0 !dbg !84 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt64>:UInt64"(i64 %size), !dbg !85 | |
%1 = call i8* @"*GC::realloc<Pointer(Void), UInt64>:Pointer(Void)"(i8* %ptr, i64 %0), !dbg !86 | |
ret i8* %1, !dbg !86 | |
} | |
; Function Attrs: uwtable | |
define i32 @__crystal_personality(i32 %version, i32 %actions, i64 %exception_class, %"struct.LibUnwind::Exception"* %exception_object, i8* %context) #0 !dbg !87 { | |
alloca: | |
%start = alloca i64, !dbg !88 | |
%ip = alloca i64, !dbg !88 | |
%throw_offset = alloca i64, !dbg !88 | |
%lsd = alloca i8*, !dbg !88 | |
%leb = alloca %"/usr/share/crystal/src/raise.cr::LEBReader", !dbg !88 | |
%cs_table_length = alloca i64, !dbg !88 | |
%cs_table_end = alloca i8*, !dbg !88 | |
%cs_offset = alloca i32, !dbg !88 | |
%cs_length = alloca i32, !dbg !88 | |
%cs_addr = alloca i32, !dbg !88 | |
%action = alloca i64, !dbg !88 | |
%__temp_286 = alloca i1, !dbg !88 | |
%0 = alloca %"/usr/share/crystal/src/raise.cr::LEBReader", !dbg !88 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i64 @_Unwind_GetRegionStart(i8* %context), !dbg !88 | |
store i64 %1, i64* %start, !dbg !88 | |
%2 = call i64 @_Unwind_GetIP(i8* %context), !dbg !88 | |
store i64 %2, i64* %ip, !dbg !88 | |
%3 = load i64, i64* %ip, !dbg !88 | |
%4 = sub i64 %3, 1, !dbg !88 | |
%5 = load i64, i64* %start, !dbg !88 | |
%6 = sub i64 %4, %5, !dbg !88 | |
store i64 %6, i64* %throw_offset, !dbg !88 | |
%7 = call i8* @_Unwind_GetLanguageSpecificData(i8* %context), !dbg !88 | |
store i8* %7, i8** %lsd, !dbg !88 | |
%8 = load i8*, i8** %lsd, !dbg !88 | |
%9 = call %"/usr/share/crystal/src/raise.cr::LEBReader" @"*/usr/share/crystal/src/raise.cr::LEBReader::new<Pointer(UInt8)>:/usr/share/crystal/src/raise.cr::LEBReader"(i8* %8), !dbg !88 | |
store %"/usr/share/crystal/src/raise.cr::LEBReader" %9, %"/usr/share/crystal/src/raise.cr::LEBReader"* %0, !dbg !88 | |
%10 = load %"/usr/share/crystal/src/raise.cr::LEBReader", %"/usr/share/crystal/src/raise.cr::LEBReader"* %0, !dbg !88 | |
store %"/usr/share/crystal/src/raise.cr::LEBReader" %10, %"/usr/share/crystal/src/raise.cr::LEBReader"* %leb, !dbg !88 | |
%11 = call i8 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uint8:UInt8"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
%12 = call i8 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uint8:UInt8"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
%13 = icmp ne i8 %12, -1, !dbg !88 | |
br i1 %13, label %then, label %else, !dbg !88 | |
then: ; preds = %entry | |
%14 = call i64 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uleb128:UInt64"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
br label %exit, !dbg !88 | |
else: ; preds = %entry | |
br label %exit, !dbg !88 | |
exit: ; preds = %else, %then | |
%15 = call i8 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uint8:UInt8"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
%16 = call i64 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uleb128:UInt64"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
store i64 %16, i64* %cs_table_length, !dbg !88 | |
%17 = getelementptr inbounds %"/usr/share/crystal/src/raise.cr::LEBReader", %"/usr/share/crystal/src/raise.cr::LEBReader"* %leb, i32 0, i32 0, !dbg !88 | |
%18 = load i8*, i8** %17, !dbg !88 | |
%19 = load i64, i64* %cs_table_length, !dbg !88 | |
%20 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<UInt64>:Pointer(UInt8)"(i8* %18, i64 %19), !dbg !88 | |
store i8* %20, i8** %cs_table_end, !dbg !88 | |
br label %while, !dbg !88 | |
while: ; preds = %exit14, %exit | |
%21 = getelementptr inbounds %"/usr/share/crystal/src/raise.cr::LEBReader", %"/usr/share/crystal/src/raise.cr::LEBReader"* %leb, i32 0, i32 0, !dbg !88 | |
%22 = load i8*, i8** %21, !dbg !88 | |
%23 = load i8*, i8** %cs_table_end, !dbg !88 | |
%24 = call i1 @"*Pointer(UInt8)@Comparable(T)#<<Pointer(UInt8)>:Bool"(i8* %22, i8* %23), !dbg !88 | |
br i1 %24, label %body, label %exit1, !dbg !88 | |
body: ; preds = %while | |
%25 = call i32 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uint32:UInt32"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
store i32 %25, i32* %cs_offset, !dbg !88 | |
%26 = call i32 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uint32:UInt32"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
store i32 %26, i32* %cs_length, !dbg !88 | |
%27 = call i32 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uint32:UInt32"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
store i32 %27, i32* %cs_addr, !dbg !88 | |
%28 = call i64 @"*/usr/share/crystal/src/raise.cr::LEBReader#read_uleb128:UInt64"(%"/usr/share/crystal/src/raise.cr::LEBReader"* %leb), !dbg !88 | |
store i64 %28, i64* %action, !dbg !88 | |
%29 = load i32, i32* %cs_addr, !dbg !88 | |
%30 = icmp ne i32 %29, 0, !dbg !88 | |
%31 = or i1 false, %30, !dbg !88 | |
br i1 %31, label %then2, label %else3, !dbg !88 | |
exit1: ; preds = %while | |
ret i32 8, !dbg !88 | |
then2: ; preds = %body | |
%32 = load i32, i32* %cs_offset, !dbg !88 | |
%33 = load i64, i64* %throw_offset, !dbg !88 | |
%34 = zext i32 %32 to i64, !dbg !88 | |
%35 = icmp ule i64 %34, %33, !dbg !88 | |
store i1 %35, i1* %__temp_286, !dbg !88 | |
br i1 %35, label %then6, label %else7, !dbg !88 | |
else3: ; preds = %body | |
br label %exit14, !dbg !88 | |
then4: ; preds = %exit8 | |
%36 = call i1 @"*LibUnwind::Action@Enum#includes?<LibUnwind::Action>:Bool"(i32 %actions, i32 1), !dbg !88 | |
br i1 %36, label %then9, label %else10, !dbg !88 | |
else5: ; preds = %exit8 | |
br label %exit13, !dbg !88 | |
then6: ; preds = %then2 | |
%37 = load i64, i64* %throw_offset, !dbg !88 | |
%38 = load i32, i32* %cs_offset, !dbg !88 | |
%39 = load i32, i32* %cs_length, !dbg !88 | |
%40 = add i32 %38, %39, !dbg !88 | |
%41 = zext i32 %40 to i64, !dbg !88 | |
%42 = icmp ule i64 %37, %41, !dbg !88 | |
br label %exit8, !dbg !88 | |
else7: ; preds = %then2 | |
%43 = load i1, i1* %__temp_286, !dbg !88 | |
br label %exit8, !dbg !88 | |
exit8: ; preds = %else7, %then6 | |
%44 = phi i1 [ %42, %then6 ], [ %43, %else7 ], !dbg !88 | |
br i1 %44, label %then4, label %else5, !dbg !88 | |
then9: ; preds = %then4 | |
ret i32 6, !dbg !88 | |
else10: ; preds = %then4 | |
%45 = call i1 @"*LibUnwind::Action@Enum#includes?<LibUnwind::Action>:Bool"(i32 %actions, i32 4), !dbg !88 | |
br i1 %45, label %then11, label %else12, !dbg !88 | |
then11: ; preds = %else10 | |
%46 = ptrtoint %"struct.LibUnwind::Exception"* %exception_object to i64, !dbg !88 | |
call void @_Unwind_SetGR(i8* %context, i32 0, i64 %46), !dbg !88 | |
%47 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %exception_object, i32 0, i32 5, !dbg !88 | |
%48 = load i32, i32* %47, !dbg !88 | |
%49 = sext i32 %48 to i64, !dbg !88 | |
call void @_Unwind_SetGR(i8* %context, i32 1, i64 %49), !dbg !88 | |
%50 = load i64, i64* %start, !dbg !88 | |
%51 = load i32, i32* %cs_addr, !dbg !88 | |
%52 = zext i32 %51 to i64, !dbg !88 | |
%53 = add i64 %50, %52, !dbg !88 | |
%54 = call i64 @_Unwind_SetIP(i8* %context, i64 %53), !dbg !88 | |
ret i32 7, !dbg !88 | |
else12: ; preds = %else10 | |
br label %exit13, !dbg !88 | |
exit13: ; preds = %else5, %else12 | |
br label %exit14, !dbg !88 | |
exit14: ; preds = %else3, %exit13 | |
br label %while, !dbg !88 | |
} | |
; Function Attrs: noreturn uwtable | |
define void @__crystal_raise(%"struct.LibUnwind::Exception"* %unwind_ex) #1 !dbg !89 { | |
alloca: | |
%ret = alloca i32, !dbg !90 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i32 @_Unwind_RaiseException(%"struct.LibUnwind::Exception"* %unwind_ex), !dbg !90 | |
store i32 %0, i32* %ret, !dbg !90 | |
%1 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* bitcast ({ i32, i32, i32, [34 x i8] }* @"'Failed to raise an ...'" to %String*)), !dbg !90 | |
%2 = load i32, i32* %ret, !dbg !90 | |
%3 = call %String* @"*LibUnwind::ReasonCode@Enum#to_s:String"(i32 %2), !dbg !90 | |
%4 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %3), !dbg !90 | |
%5 = call i32 (i32, i8*, ...) @dprintf(i32 2, i8* %1, i8* %4), !dbg !90 | |
%6 = call i32 @"*CallStack::print_backtrace:Int32"(), !dbg !90 | |
%7 = load i32, i32* %ret, !dbg !90 | |
%8 = call i32 @"*LibUnwind::ReasonCode@Enum#to_i32!:Int32"(i32 %7), !dbg !90 | |
call void @exit(i32 %8), !dbg !90 | |
unreachable, !dbg !90 | |
} | |
; Function Attrs: uwtable | |
define i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %unwind_ex) #0 !dbg !91 { | |
entry: | |
%0 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %unwind_ex, i32 0, i32 4, !dbg !92 | |
%1 = load i64, i64* %0, !dbg !92 | |
ret i64 %1, !dbg !92 | |
} | |
; Function Attrs: noreturn uwtable | |
define void @__crystal_raise_overflow() #1 !dbg !93 { | |
entry: | |
%0 = call %OverflowError* @"*OverflowError::new:OverflowError"(), !dbg !94 | |
call void @"*raise<OverflowError>:NoReturn"(%OverflowError* %0), !dbg !95 | |
unreachable, !dbg !95 | |
} | |
define internal void @"~AtExitHandlers::running:init"() { | |
entry: | |
ret void | |
} | |
define internal void @"~Crystal::System::Random::initialized:init"() { | |
entry: | |
ret void | |
} | |
define internal void @"~Crystal::System::Random::getrandom_available:init"() { | |
entry: | |
ret void | |
} | |
define internal void @"~Debug::ELF::MAGIC:init"() { | |
alloca: | |
%__temp_111 = alloca %"Slice(UInt8)", !dbg !22 | |
%0 = alloca %"Slice(UInt8)" | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new:read_only<Int32, Bool>:Slice(UInt8)"(i32 1092, i32 4, i1 false) | |
store %"Slice(UInt8)" %1, %"Slice(UInt8)"* %0 | |
%2 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0 | |
store %"Slice(UInt8)" %2, %"Slice(UInt8)"* %__temp_111 | |
%3 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %__temp_111, i32 0, i32 2 | |
%4 = load i8*, i8** %3 | |
%5 = call i8 @"*UInt8::new!<Int32>:UInt8"(i32 127) | |
%6 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %4, i32 0, i8 %5) | |
%7 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %__temp_111, i32 0, i32 2 | |
%8 = load i8*, i8** %7 | |
%9 = call i8 @"*UInt8::new!<Int32>:UInt8"(i32 69) | |
%10 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %8, i32 1, i8 %9) | |
%11 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %__temp_111, i32 0, i32 2 | |
%12 = load i8*, i8** %11 | |
%13 = call i8 @"*UInt8::new!<Int32>:UInt8"(i32 76) | |
%14 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %12, i32 2, i8 %13) | |
%15 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %__temp_111, i32 0, i32 2 | |
%16 = load i8*, i8** %15 | |
%17 = call i8 @"*UInt8::new!<Int32>:UInt8"(i32 70) | |
%18 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %16, i32 3, i8 %17) | |
%19 = load %"Slice(UInt8)", %"Slice(UInt8)"* %__temp_111 | |
store %"Slice(UInt8)" %19, %"Slice(UInt8)"* @"Debug::ELF::MAGIC" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new:read_only<Int32, Bool>:Slice(UInt8)"(i32 %self, i32 %size, i1 %read_only) #0 !dbg !96 { | |
alloca: | |
%pointer = alloca i8*, !dbg !98 | |
%0 = alloca %"Slice(UInt8)", !dbg !99 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i8* @"*Pointer(UInt8)@Pointer(T)::malloc<Int32>:Pointer(UInt8)"(i32 722, i32 %size), !dbg !100 | |
store i8* %1, i8** %pointer, !dbg !101 | |
%2 = load i8*, i8** %pointer, !dbg !101 | |
%3 = call %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new:read_only<Pointer(UInt8), Int32, Bool>:Slice(UInt8)"(i32 %self, i8* %2, i32 %size, i1 %read_only), !dbg !99 | |
store %"Slice(UInt8)" %3, %"Slice(UInt8)"* %0, !dbg !99 | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !99 | |
ret %"Slice(UInt8)" %4, !dbg !99 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)::malloc<Int32>:Pointer(UInt8)"(i32 %self, i32 %size) #0 !dbg !102 { | |
entry: | |
%0 = icmp slt i32 %size, 0, !dbg !104 | |
br i1 %0, label %then, label %else, !dbg !104 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [29 x i8] }* @"'Negative Pointer#ma...'" to %String*)), !dbg !105 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !106 | |
unreachable, !dbg !106 | |
else: ; preds = %entry | |
%2 = sext i32 %size to i64, !dbg !106 | |
%3 = mul i64 ptrtoint (i8* getelementptr (i8, i8* null, i32 1) to i64), %2, !dbg !107 | |
%4 = call i8* @__crystal_malloc_atomic64(i64 %3), !dbg !107 | |
%5 = trunc i64 %3 to i32, !dbg !107 | |
call void @llvm.memset.p0i8.i32(i8* %4, i8 0, i32 %5, i32 4, i1 false), !dbg !107 | |
ret i8* %4, !dbg !106 | |
} | |
; Function Attrs: uwtable | |
define internal %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %message) #0 !dbg !108 { | |
alloca: | |
%_ = alloca %ArgumentError*, !dbg !109 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%ArgumentError* getelementptr (%ArgumentError, %ArgumentError* null, i32 1) to i64)), !dbg !109 | |
%1 = bitcast i8* %0 to %ArgumentError*, !dbg !109 | |
%2 = bitcast %ArgumentError* %1 to i8*, !dbg !109 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%ArgumentError* getelementptr (%ArgumentError, %ArgumentError* null, i32 1) to i32), i32 4, i1 false), !dbg !109 | |
%3 = getelementptr inbounds %ArgumentError, %ArgumentError* %1, i32 0, i32 0, !dbg !109 | |
store i32 39, i32* %3, !dbg !109 | |
store %ArgumentError* %1, %ArgumentError** %_, !dbg !109 | |
%4 = load %ArgumentError*, %ArgumentError** %_, !dbg !109 | |
call void @"*ArgumentError#initialize<String>:Nil"(%ArgumentError* %4, %String* %message), !dbg !109 | |
%5 = load %ArgumentError*, %ArgumentError** %_, !dbg !109 | |
ret %ArgumentError* %5, !dbg !109 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i32, i1) #2 | |
; Function Attrs: uwtable | |
define internal void @"*ArgumentError#initialize<String>:Nil"(%ArgumentError* %self, %String* %message) #0 !dbg !110 { | |
entry: | |
call void @"*ArgumentError@Exception#initialize<String>:Nil"(%ArgumentError* %self, %String* %message), !dbg !111 | |
ret void, !dbg !111 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*ArgumentError@Exception#initialize<String>:Nil"(%ArgumentError* %self, %String* %message) #0 !dbg !112 { | |
alloca: | |
%cause = alloca %Nil, !dbg !113 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %ArgumentError, %ArgumentError* %self, i32 0, i32 1, !dbg !114 | |
store %String* %message, %String** %0, !dbg !114 | |
%1 = load %Nil, %Nil* %cause, !dbg !114 | |
%2 = getelementptr inbounds %ArgumentError, %ArgumentError* %self, i32 0, i32 2, !dbg !115 | |
store i32* null, i32** %2, !dbg !115 | |
ret void, !dbg !115 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %exception) #1 !dbg !116 { | |
alloca: | |
%__temp_24 = alloca %"(CallStack | Nil)", !dbg !117 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !117 | |
%0 = alloca %CallStack, !dbg !117 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %ArgumentError, %ArgumentError* %exception, i32 0, i32 3, !dbg !117 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !117 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_24, !dbg !117 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !117 | |
%4 = load i32, i32* %3, !dbg !117 | |
%5 = icmp eq i32 %4, 0, !dbg !117 | |
%6 = xor i1 %5, true, !dbg !117 | |
%7 = and i1 true, %6, !dbg !117 | |
br i1 %7, label %then, label %else, !dbg !117 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_24, i32 0, i32 1, !dbg !117 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !117 | |
br label %exit, !dbg !117 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !117 | |
store %CallStack %10, %CallStack* %0, !dbg !117 | |
%11 = load %CallStack, %CallStack* %0, !dbg !117 | |
%12 = call %CallStack @"*ArgumentError@Exception#callstack=<CallStack>:CallStack"(%ArgumentError* %exception, %CallStack %11), !dbg !117 | |
br label %exit, !dbg !117 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !117 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !117 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !117 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !117 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !117 | |
store i64 %15, i64* %16, !dbg !117 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !117 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !117 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !117 | |
store i64 %18, i64* %19, !dbg !117 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !117 | |
%21 = ptrtoint %ArgumentError* %exception to i64, !dbg !117 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !117 | |
store i64 %21, i64* %22, !dbg !117 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !117 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !117 | |
store i32 39, i32* %24, !dbg !117 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !117 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !117 | |
unreachable, !dbg !117 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*CallStack::new:CallStack"() #0 !dbg !118 { | |
alloca: | |
%_ = alloca %CallStack, !dbg !119 | |
%0 = alloca %CallStack, !dbg !119 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %CallStack* %0 to i8*, !dbg !119 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 trunc (i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 2) to i32), i32 4, i1 false), !dbg !119 | |
%2 = load %CallStack, %CallStack* %0, !dbg !119 | |
store %CallStack %2, %CallStack* %_, !dbg !119 | |
%3 = call %"Array(Pointer(Void))"* @"*CallStack#initialize:Array(Pointer(Void))"(%CallStack* %_), !dbg !119 | |
%4 = load %CallStack, %CallStack* %_, !dbg !119 | |
ret %CallStack %4, !dbg !119 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(Pointer(Void))"* @"*CallStack#initialize:Array(Pointer(Void))"(%CallStack* %self) #0 !dbg !120 { | |
entry: | |
%0 = call %"Array(Pointer(Void))"* @"*CallStack::unwind:Array(Pointer(Void))"(), !dbg !121 | |
%1 = getelementptr inbounds %CallStack, %CallStack* %self, i32 0, i32 0, !dbg !122 | |
store %"Array(Pointer(Void))"* %0, %"Array(Pointer(Void))"** %1, !dbg !122 | |
ret %"Array(Pointer(Void))"* %0, !dbg !122 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(Pointer(Void))"* @"*CallStack::unwind:Array(Pointer(Void))"() #0 !dbg !123 { | |
alloca: | |
%callstack = alloca %"Array(Pointer(Void))"*, !dbg !124 | |
%backtrace_fn = alloca %"->", !dbg !124 | |
%0 = alloca %"->", !dbg !125 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Array(Pointer(Void))"* @"*Array(Pointer(Void))@Array(T)::new:Array(Pointer(Void))"(i32 512), !dbg !126 | |
store %"Array(Pointer(Void))"* %1, %"Array(Pointer(Void))"** %callstack, !dbg !125 | |
%2 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !125 | |
store i8* bitcast (i32 (i8*, i8*)* @"~procProc(Pointer(Void), Pointer(Void), LibUnwind::ReasonCode)@/usr/share/crystal/src/callstack.cr:77" to i8*), i8** %2, !dbg !125 | |
%3 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !125 | |
store i8* null, i8** %3, !dbg !125 | |
%4 = load %"->", %"->"* %0, !dbg !125 | |
store %"->" %4, %"->"* %backtrace_fn, !dbg !127 | |
%5 = load %"->", %"->"* %backtrace_fn, !dbg !127 | |
%6 = call i8* @"~check_proc_is_not_closure"(%"->" %5) | |
%7 = bitcast i8* %6 to i32 (i8*, i8*)* | |
%8 = load %"Array(Pointer(Void))"*, %"Array(Pointer(Void))"** %callstack | |
%9 = bitcast %"Array(Pointer(Void))"* %8 to i8* | |
%10 = call i32 @_Unwind_Backtrace(i32 (i8*, i8*)* %7, i8* %9), !dbg !128 | |
%11 = load %"Array(Pointer(Void))"*, %"Array(Pointer(Void))"** %callstack, !dbg !128 | |
ret %"Array(Pointer(Void))"* %11, !dbg !128 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(Pointer(Void))"* @"*Array(Pointer(Void))@Array(T)::new:Array(Pointer(Void))"(i32 %self) #0 !dbg !129 { | |
alloca: | |
%_ = alloca %"Array(Pointer(Void))"*, !dbg !131 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Array(Pointer(Void))"* getelementptr (%"Array(Pointer(Void))", %"Array(Pointer(Void))"* null, i32 1) to i64)), !dbg !131 | |
%1 = bitcast i8* %0 to %"Array(Pointer(Void))"*, !dbg !131 | |
%2 = bitcast %"Array(Pointer(Void))"* %1 to i8*, !dbg !131 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Array(Pointer(Void))"* getelementptr (%"Array(Pointer(Void))", %"Array(Pointer(Void))"* null, i32 1) to i32), i32 4, i1 false), !dbg !131 | |
%3 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %1, i32 0, i32 0, !dbg !131 | |
store i32 7, i32* %3, !dbg !131 | |
store %"Array(Pointer(Void))"* %1, %"Array(Pointer(Void))"** %_, !dbg !131 | |
%4 = load %"Array(Pointer(Void))"*, %"Array(Pointer(Void))"** %_, !dbg !131 | |
%5 = call i8** @"*Array(Pointer(Void))@Array(T)#initialize:Pointer(Pointer(Void))"(%"Array(Pointer(Void))"* %4), !dbg !131 | |
%6 = load %"Array(Pointer(Void))"*, %"Array(Pointer(Void))"** %_, !dbg !131 | |
ret %"Array(Pointer(Void))"* %6, !dbg !131 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Array(Pointer(Void))@Array(T)#initialize:Pointer(Pointer(Void))"(%"Array(Pointer(Void))"* %self) #0 !dbg !132 { | |
entry: | |
%0 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 1, !dbg !133 | |
store i32 0, i32* %0, !dbg !133 | |
%1 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !134 | |
store i32 0, i32* %1, !dbg !134 | |
%2 = call i8** @"*Pointer(Pointer(Void))@Pointer(T)::null:Pointer(Pointer(Void))"(i32 737), !dbg !135 | |
%3 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !136 | |
store i8** %2, i8*** %3, !dbg !136 | |
ret i8** %2, !dbg !136 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Pointer(Pointer(Void))@Pointer(T)::null:Pointer(Pointer(Void))"(i32 %self) #0 !dbg !137 { | |
entry: | |
ret i8** null, !dbg !138 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"~procProc(Pointer(Void), Pointer(Void), LibUnwind::ReasonCode)@/usr/share/crystal/src/callstack.cr:77"(i8* %context, i8* %data) #0 !dbg !139 { | |
alloca: | |
%bt = alloca %"Array(Pointer(Void))"*, !dbg !140 | |
%ip = alloca i8*, !dbg !140 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = bitcast i8* %data to %"Array(Pointer(Void))"*, !dbg !140 | |
store %"Array(Pointer(Void))"* %0, %"Array(Pointer(Void))"** %bt, !dbg !141 | |
%1 = call i64 @_Unwind_GetIP(i8* %context), !dbg !142 | |
%2 = inttoptr i64 %1 to i8*, !dbg !142 | |
store i8* %2, i8** %ip, !dbg !143 | |
%3 = load %"Array(Pointer(Void))"*, %"Array(Pointer(Void))"** %bt, !dbg !143 | |
%4 = load i8*, i8** %ip, !dbg !143 | |
%5 = call %"Array(Pointer(Void))"* @"*Array(Pointer(Void))@Array(T)#<<<Pointer(Void)>:Array(Pointer(Void))"(%"Array(Pointer(Void))"* %3, i8* %4), !dbg !144 | |
ret i32 0, !dbg !144 | |
} | |
declare i64 @_Unwind_GetIP(i8*) | |
; Function Attrs: uwtable | |
define internal %"Array(Pointer(Void))"* @"*Array(Pointer(Void))@Array(T)#<<<Pointer(Void)>:Array(Pointer(Void))"(%"Array(Pointer(Void))"* %self, i8* %value) #0 !dbg !145 { | |
entry: | |
%0 = call %"Array(Pointer(Void))"* @"*Array(Pointer(Void))@Array(T)#push<Pointer(Void)>:Array(Pointer(Void))"(%"Array(Pointer(Void))"* %self, i8* %value), !dbg !146 | |
ret %"Array(Pointer(Void))"* %0, !dbg !146 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(Pointer(Void))"* @"*Array(Pointer(Void))@Array(T)#push<Pointer(Void)>:Array(Pointer(Void))"(%"Array(Pointer(Void))"* %self, i8* %value) #0 !dbg !147 { | |
entry: | |
%0 = call i8** @"*Array(Pointer(Void))@Array(T)#check_needs_resize:(Pointer(Pointer(Void)) | Nil)"(%"Array(Pointer(Void))"* %self), !dbg !148 | |
%1 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !148 | |
%2 = load i8**, i8*** %1, !dbg !148 | |
%3 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 1, !dbg !148 | |
%4 = load i32, i32* %3, !dbg !148 | |
%5 = call i8* @"*Pointer(Pointer(Void))@Pointer(T)#[]=<Int32, Pointer(Void)>:Pointer(Void)"(i8** %2, i32 %4, i8* %value), !dbg !149 | |
%6 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 1, !dbg !149 | |
%7 = load i32, i32* %6, !dbg !149 | |
%8 = add i32 %7, 1, !dbg !149 | |
%9 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 1, !dbg !150 | |
store i32 %8, i32* %9, !dbg !150 | |
ret %"Array(Pointer(Void))"* %self, !dbg !150 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Array(Pointer(Void))@Array(T)#check_needs_resize:(Pointer(Pointer(Void)) | Nil)"(%"Array(Pointer(Void))"* %self) #0 !dbg !151 { | |
entry: | |
%0 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 1, !dbg !152 | |
%1 = load i32, i32* %0, !dbg !152 | |
%2 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !152 | |
%3 = load i32, i32* %2, !dbg !152 | |
%4 = icmp eq i32 %1, %3, !dbg !152 | |
br i1 %4, label %then, label %else, !dbg !152 | |
then: ; preds = %entry | |
%5 = call i8** @"*Array(Pointer(Void))@Array(T)#double_capacity:Pointer(Pointer(Void))"(%"Array(Pointer(Void))"* %self), !dbg !152 | |
br label %exit, !dbg !152 | |
else: ; preds = %entry | |
br label %exit, !dbg !152 | |
exit: ; preds = %else, %then | |
%6 = phi i8** [ %5, %then ], [ null, %else ], !dbg !152 | |
ret i8** %6, !dbg !152 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Array(Pointer(Void))@Array(T)#double_capacity:Pointer(Pointer(Void))"(%"Array(Pointer(Void))"* %self) #0 !dbg !153 { | |
entry: | |
%0 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !154 | |
%1 = load i32, i32* %0, !dbg !154 | |
%2 = icmp eq i32 %1, 0, !dbg !154 | |
br i1 %2, label %then, label %else, !dbg !154 | |
then: ; preds = %entry | |
br label %exit, !dbg !154 | |
else: ; preds = %entry | |
%3 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !154 | |
%4 = load i32, i32* %3, !dbg !154 | |
%5 = mul i32 %4, 2, !dbg !154 | |
br label %exit, !dbg !154 | |
exit: ; preds = %else, %then | |
%6 = phi i32 [ 3, %then ], [ %5, %else ], !dbg !154 | |
%7 = call i8** @"*Array(Pointer(Void))@Array(T)#resize_to_capacity<Int32>:Pointer(Pointer(Void))"(%"Array(Pointer(Void))"* %self, i32 %6), !dbg !155 | |
ret i8** %7, !dbg !155 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Array(Pointer(Void))@Array(T)#resize_to_capacity<Int32>:Pointer(Pointer(Void))"(%"Array(Pointer(Void))"* %self, i32 %capacity) #0 !dbg !156 { | |
entry: | |
%0 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !157 | |
store i32 %capacity, i32* %0, !dbg !157 | |
%1 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !158 | |
%2 = load i8**, i8*** %1, !dbg !158 | |
%3 = icmp ne i8** %2, null, !dbg !158 | |
br i1 %3, label %then, label %else, !dbg !158 | |
then: ; preds = %entry | |
%4 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !158 | |
%5 = load i8**, i8*** %4, !dbg !158 | |
%6 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !158 | |
%7 = load i32, i32* %6, !dbg !158 | |
%8 = call i8** @"*Pointer(Pointer(Void))@Pointer(T)#realloc<Int32>:Pointer(Pointer(Void))"(i8** %5, i32 %7), !dbg !159 | |
%9 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !160 | |
store i8** %8, i8*** %9, !dbg !160 | |
br label %exit, !dbg !160 | |
else: ; preds = %entry | |
%10 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 2, !dbg !160 | |
%11 = load i32, i32* %10, !dbg !160 | |
%12 = call i8** @"*Pointer(Pointer(Void))@Pointer(T)::malloc<Int32>:Pointer(Pointer(Void))"(i32 737, i32 %11), !dbg !161 | |
%13 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !162 | |
store i8** %12, i8*** %13, !dbg !162 | |
br label %exit, !dbg !162 | |
exit: ; preds = %else, %then | |
%14 = phi i8** [ %8, %then ], [ %12, %else ], !dbg !162 | |
ret i8** %14, !dbg !162 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Pointer(Pointer(Void))@Pointer(T)#realloc<Int32>:Pointer(Pointer(Void))"(i8** %self, i32 %size) #0 !dbg !163 { | |
entry: | |
%0 = icmp slt i32 %size, 0, !dbg !164 | |
br i1 %0, label %then, label %else, !dbg !164 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Negative size'" to %String*)), !dbg !165 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !166 | |
unreachable, !dbg !166 | |
else: ; preds = %entry | |
%2 = sext i32 %size to i64, !dbg !166 | |
%3 = bitcast i8** %self to i8*, !dbg !166 | |
%4 = mul i64 %2, ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), !dbg !166 | |
%5 = call i8* @__crystal_realloc64(i8* %3, i64 %4), !dbg !166 | |
%6 = bitcast i8* %5 to i8**, !dbg !166 | |
ret i8** %6, !dbg !166 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Pointer(Pointer(Void))@Pointer(T)::malloc<Int32>:Pointer(Pointer(Void))"(i32 %self, i32 %size) #0 !dbg !167 { | |
entry: | |
%0 = icmp slt i32 %size, 0, !dbg !168 | |
br i1 %0, label %then, label %else, !dbg !168 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [29 x i8] }* @"'Negative Pointer#ma...'" to %String*)), !dbg !169 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !170 | |
unreachable, !dbg !170 | |
else: ; preds = %entry | |
%2 = sext i32 %size to i64, !dbg !170 | |
%3 = mul i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), %2, !dbg !171 | |
%4 = call i8* @__crystal_malloc64(i64 %3), !dbg !171 | |
%5 = trunc i64 %3 to i32, !dbg !171 | |
call void @llvm.memset.p0i8.i32(i8* %4, i8 0, i32 %5, i32 4, i1 false), !dbg !171 | |
%6 = bitcast i8* %4 to i8**, !dbg !171 | |
ret i8** %6, !dbg !170 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(Pointer(Void))@Pointer(T)#[]=<Int32, Pointer(Void)>:Pointer(Void)"(i8** %self, i32 %offset, i8* %value) #0 !dbg !172 { | |
entry: | |
%0 = call i8** @"*Pointer(Pointer(Void))@Pointer(T)#+<Int32>:Pointer(Pointer(Void))"(i8** %self, i32 %offset), !dbg !173 | |
store i8* %value, i8** %0, !dbg !173 | |
ret i8* %value, !dbg !173 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Pointer(Pointer(Void))@Pointer(T)#+<Int32>:Pointer(Pointer(Void))"(i8** %self, i32 %other) #0 !dbg !174 { | |
entry: | |
%0 = sext i32 %other to i64, !dbg !175 | |
%1 = getelementptr inbounds i8*, i8** %self, i64 %0, !dbg !175 | |
ret i8** %1, !dbg !175 | |
} | |
define internal i8* @"~check_proc_is_not_closure"(%"->") { | |
entry: | |
%1 = extractvalue %"->" %0, 0, !dbg !127 | |
%2 = extractvalue %"->" %0, 1, !dbg !127 | |
%3 = icmp eq i8* %2, null, !dbg !127 | |
br i1 %3, label %ctx_is_null, label %ctx_is_not_null, !dbg !127 | |
ctx_is_null: ; preds = %entry | |
ret i8* %1, !dbg !127 | |
ctx_is_not_null: ; preds = %entry | |
call void @"*raise<String>:NoReturn"(%String* bitcast ({ i32, i32, i32, [38 x i8] }* @"'passing a closure t...'" to %String*)) | |
unreachable | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<String>:NoReturn"(%String* %message) #1 !dbg !176 { | |
entry: | |
%0 = call %Exception* @"*Exception::new<String>:Exception"(%String* %message), !dbg !177 | |
call void @"*raise<Exception>:NoReturn"(%Exception* %0), !dbg !178 | |
unreachable, !dbg !178 | |
} | |
; Function Attrs: uwtable | |
define internal %Exception* @"*Exception::new<String>:Exception"(%String* %__arg0) #0 !dbg !179 { | |
alloca: | |
%_ = alloca %Exception*, !dbg !180 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%Exception* getelementptr (%Exception, %Exception* null, i32 1) to i64)), !dbg !180 | |
%1 = bitcast i8* %0 to %Exception*, !dbg !180 | |
%2 = bitcast %Exception* %1 to i8*, !dbg !180 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%Exception* getelementptr (%Exception, %Exception* null, i32 1) to i32), i32 4, i1 false), !dbg !180 | |
%3 = getelementptr inbounds %Exception, %Exception* %1, i32 0, i32 0, !dbg !180 | |
store i32 63, i32* %3, !dbg !180 | |
store %Exception* %1, %Exception** %_, !dbg !180 | |
%4 = load %Exception*, %Exception** %_, !dbg !180 | |
call void @"*Exception#initialize<String>:Nil"(%Exception* %4, %String* %__arg0), !dbg !180 | |
%5 = load %Exception*, %Exception** %_, !dbg !180 | |
ret %Exception* %5, !dbg !180 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Exception#initialize<String>:Nil"(%Exception* %self, %String* %message) #0 !dbg !181 { | |
alloca: | |
%cause = alloca %Nil, !dbg !182 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %Exception, %Exception* %self, i32 0, i32 1, !dbg !183 | |
store %String* %message, %String** %0, !dbg !183 | |
%1 = load %Nil, %Nil* %cause, !dbg !183 | |
%2 = getelementptr inbounds %Exception, %Exception* %self, i32 0, i32 2, !dbg !184 | |
store i32* null, i32** %2, !dbg !184 | |
ret void, !dbg !184 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<Exception>:NoReturn"(%Exception* %exception) #1 !dbg !185 { | |
alloca: | |
%__temp_32 = alloca %"(CallStack | Nil)", !dbg !186 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !186 | |
%0 = alloca %CallStack, !dbg !186 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %Exception, %Exception* %exception, i32 0, i32 3, !dbg !186 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !186 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_32, !dbg !186 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !186 | |
%4 = load i32, i32* %3, !dbg !186 | |
%5 = icmp eq i32 %4, 0, !dbg !186 | |
%6 = xor i1 %5, true, !dbg !186 | |
%7 = and i1 true, %6, !dbg !186 | |
br i1 %7, label %then, label %else, !dbg !186 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_32, i32 0, i32 1, !dbg !186 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !186 | |
br label %exit, !dbg !186 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !186 | |
store %CallStack %10, %CallStack* %0, !dbg !186 | |
%11 = load %CallStack, %CallStack* %0, !dbg !186 | |
%12 = call %CallStack @"*Exception#callstack=<CallStack>:CallStack"(%Exception* %exception, %CallStack %11), !dbg !186 | |
br label %exit, !dbg !186 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !186 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !186 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !186 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !186 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !186 | |
store i64 %15, i64* %16, !dbg !186 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !186 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !186 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !186 | |
store i64 %18, i64* %19, !dbg !186 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !186 | |
%21 = ptrtoint %Exception* %exception to i64, !dbg !186 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !186 | |
store i64 %21, i64* %22, !dbg !186 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !186 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !186 | |
store i32 63, i32* %24, !dbg !186 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !186 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !186 | |
unreachable, !dbg !186 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*Exception#callstack=<CallStack>:CallStack"(%Exception* %self, %CallStack %callstack) #0 !dbg !187 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !188 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !188 | |
%0 = getelementptr inbounds %Exception, %Exception* %self, i32 0, i32 3, !dbg !189 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !189 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !189 | |
store i32 353, i32* %2, !dbg !189 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !189 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !189 | |
store %CallStack %1, %CallStack* %4, !dbg !189 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !189 | |
ret %CallStack %5, !dbg !189 | |
} | |
; Function Attrs: uwtable | |
define internal %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 %self) #0 !dbg !190 { | |
alloca: | |
%size = alloca i32, !dbg !191 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 1, i32* %size, !dbg !192 | |
%0 = load i32, i32* %size, !dbg !193 | |
%1 = icmp slt i32 %0, 0, !dbg !193 | |
br i1 %1, label %then, label %else, !dbg !193 | |
then: ; preds = %entry | |
%2 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [29 x i8] }* @"'Negative Pointer#ma...'" to %String*)), !dbg !194 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %2), !dbg !195 | |
unreachable, !dbg !195 | |
else: ; preds = %entry | |
%3 = load i32, i32* %size, !dbg !195 | |
%4 = sext i32 %3 to i64, !dbg !195 | |
%5 = mul i64 ptrtoint (%"struct.LibUnwind::Exception"* getelementptr (%"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* null, i32 1) to i64), %4, !dbg !196 | |
%6 = call i8* @__crystal_malloc_atomic64(i64 %5), !dbg !196 | |
%7 = trunc i64 %5 to i32, !dbg !196 | |
call void @llvm.memset.p0i8.i32(i8* %6, i8 0, i32 %7, i32 4, i1 false), !dbg !196 | |
%8 = bitcast i8* %6 to %"struct.LibUnwind::Exception"*, !dbg !196 | |
ret %"struct.LibUnwind::Exception"* %8, !dbg !195 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*UInt64@Number::zero:UInt64"() #0 !dbg !197 { | |
entry: | |
%0 = call i64 @"*UInt64::new<Int32>:UInt64"(i32 0), !dbg !199 | |
ret i64 %0, !dbg !199 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*UInt64::new<Int32>:UInt64"(i32 %value) #0 !dbg !200 { | |
entry: | |
%0 = sext i32 %value to i64, !dbg !202 | |
ret i64 %0, !dbg !202 | |
} | |
declare i32 @_Unwind_Backtrace(i32 (i8*, i8*)*, i8*) | |
; Function Attrs: uwtable | |
define internal %CallStack @"*ArgumentError@Exception#callstack=<CallStack>:CallStack"(%ArgumentError* %self, %CallStack %callstack) #0 !dbg !203 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !204 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !204 | |
%0 = getelementptr inbounds %ArgumentError, %ArgumentError* %self, i32 0, i32 3, !dbg !205 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !205 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !205 | |
store i32 353, i32* %2, !dbg !205 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !205 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !205 | |
store %CallStack %1, %CallStack* %4, !dbg !205 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !205 | |
ret %CallStack %5, !dbg !205 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new:read_only<Pointer(UInt8), Int32, Bool>:Slice(UInt8)"(i32 %self, i8* %__arg0, i32 %__arg1, i1 %__temp_105) #0 !dbg !206 { | |
alloca: | |
%_ = alloca %"Slice(UInt8)", !dbg !207 | |
%0 = alloca %"Slice(UInt8)", !dbg !207 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Slice(UInt8)"* %0 to i8*, !dbg !207 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%"Slice(UInt8)"* getelementptr (%"Slice(UInt8)", %"Slice(UInt8)"* null, i32 1) to i32), i32 4, i1 false), !dbg !207 | |
%2 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !207 | |
store %"Slice(UInt8)" %2, %"Slice(UInt8)"* %_, !dbg !207 | |
%3 = call i32 @"*Slice(UInt8)@Slice(T)#initialize:read_only<Pointer(UInt8), Int32, Bool>:Int32"(%"Slice(UInt8)"* %_, i8* %__arg0, i32 %__arg1, i1 %__temp_105), !dbg !207 | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %_, !dbg !207 | |
ret %"Slice(UInt8)" %4, !dbg !207 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Slice(UInt8)@Slice(T)#initialize:read_only<Pointer(UInt8), Int32, Bool>:Int32"(%"Slice(UInt8)"* %self, i8* %pointer, i32 %size, i1 %read_only) #0 !dbg !208 { | |
entry: | |
%0 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 2, !dbg !209 | |
store i8* %pointer, i8** %0, !dbg !209 | |
%1 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 1, !dbg !210 | |
store i1 %read_only, i1* %1, !dbg !210 | |
%2 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 0, !dbg !211 | |
store i32 %size, i32* %2, !dbg !211 | |
ret i32 %size, !dbg !211 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*UInt8::new!<Int32>:UInt8"(i32 %value) #0 !dbg !212 { | |
entry: | |
%0 = trunc i32 %value to i8, !dbg !213 | |
ret i8 %0, !dbg !213 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %self, i32 %offset, i8 %value) #0 !dbg !214 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %self, i32 %offset), !dbg !215 | |
store i8 %value, i8* %0, !dbg !215 | |
ret i8 %value, !dbg !215 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %self, i32 %other) #0 !dbg !216 { | |
entry: | |
%0 = sext i32 %other to i64, !dbg !217 | |
%1 = getelementptr inbounds i8, i8* %self, i64 %0, !dbg !217 | |
ret i8* %1, !dbg !217 | |
} | |
define internal void @"~CallStack::CURRENT_DIR:init"() { | |
alloca: | |
%dir = alloca %String*, !dbg !25 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %String** @"~Process::INITIAL_PWD:read"() | |
%1 = load %String*, %String** %0 | |
store %String* %1, %String** %dir | |
%2 = load %String*, %String** %dir | |
%3 = call i1 @"*String#ends_with?<Char>:Bool"(%String* %2, i32 47) | |
br i1 %3, label %then, label %else | |
then: ; preds = %entry | |
br label %exit | |
else: ; preds = %entry | |
%4 = load %String*, %String** %dir | |
%5 = call %String* @"*String#+<Char>:String"(%String* %4, i32 47) | |
store %String* %5, %String** %dir | |
br label %exit | |
exit: ; preds = %else, %then | |
%6 = load %String*, %String** %dir | |
store %String* %6, %String** @"CallStack::CURRENT_DIR" | |
ret void | |
} | |
define internal %String** @"~Process::INITIAL_PWD:read"() { | |
entry: | |
%0 = load i1, i1* @"Process::INITIAL_PWD:init", !dbg !25 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !25 | |
initialized: ; preds = %not_initialized, %entry | |
ret %String** @"Process::INITIAL_PWD" | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Process::INITIAL_PWD:init", !dbg !25 | |
call void @"~Process::INITIAL_PWD:init"() | |
br label %initialized | |
} | |
define internal void @"~Process::INITIAL_PWD:init"() { | |
entry: | |
%0 = call %String* @"*Dir::current:String"() | |
store %String* %0, %String** @"Process::INITIAL_PWD" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*Dir::current:String"() #0 !dbg !218 { | |
entry: | |
%0 = call %String* @"*Crystal::System::Dir::current:String"(), !dbg !220 | |
ret %String* %0, !dbg !220 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*Crystal::System::Dir::current:String"() #0 !dbg !221 { | |
alloca: | |
%dir = alloca i8*, !dbg !223 | |
%dir_str = alloca %String*, !dbg !223 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @getcwd(i8* null, i64 0), !dbg !224 | |
store i8* %0, i8** %dir, !dbg !225 | |
%1 = icmp ne i8* %0, null, !dbg !225 | |
br i1 %1, label %then, label %else, !dbg !225 | |
then: ; preds = %entry | |
br label %exit, !dbg !225 | |
else: ; preds = %entry | |
%2 = call %Errno* @"*Errno::new<String>:Errno"(%String* bitcast ({ i32, i32, i32, [7 x i8] }* @"'getcwd'" to %String*)), !dbg !226 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %2), !dbg !227 | |
unreachable, !dbg !227 | |
exit: ; preds = %then | |
%3 = load i8*, i8** %dir, !dbg !227 | |
%4 = call %String* @"*String::new<Pointer(UInt8)>:String"(i8* %3), !dbg !228 | |
store %String* %4, %String** %dir_str, !dbg !229 | |
%5 = load i8*, i8** %dir, !dbg !229 | |
call void @free(i8* %5), !dbg !230 | |
%6 = load %String*, %String** %dir_str, !dbg !230 | |
ret %String* %6, !dbg !230 | |
} | |
declare i8* @getcwd(i8*, i64) | |
; Function Attrs: uwtable | |
define internal %Errno* @"*Errno::new<String>:Errno"(%String* %__arg0) #0 !dbg !231 { | |
alloca: | |
%_ = alloca %Errno*, !dbg !233 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%Errno* getelementptr (%Errno, %Errno* null, i32 1) to i64)), !dbg !233 | |
%1 = bitcast i8* %0 to %Errno*, !dbg !233 | |
%2 = bitcast %Errno* %1 to i8*, !dbg !233 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%Errno* getelementptr (%Errno, %Errno* null, i32 1) to i32), i32 4, i1 false), !dbg !233 | |
%3 = getelementptr inbounds %Errno, %Errno* %1, i32 0, i32 0, !dbg !233 | |
store i32 54, i32* %3, !dbg !233 | |
store %Errno* %1, %Errno** %_, !dbg !233 | |
%4 = load %Errno*, %Errno** %_, !dbg !233 | |
call void @"*Errno#initialize<String>:Nil"(%Errno* %4, %String* %__arg0), !dbg !233 | |
%5 = load %Errno*, %Errno** %_, !dbg !233 | |
ret %Errno* %5, !dbg !233 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Errno#initialize<String>:Nil"(%Errno* %self, %String* %message) #0 !dbg !234 { | |
alloca: | |
%errno = alloca i32, !dbg !235 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i32 @"*Errno::value:Int32"(), !dbg !236 | |
store i32 %0, i32* %errno, !dbg !237 | |
%1 = load i32, i32* %errno, !dbg !237 | |
call void @"*Errno#initialize<String, Int32>:Nil"(%Errno* %self, %String* %message, i32 %1), !dbg !235 | |
ret void, !dbg !235 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Errno::value:Int32"() #0 !dbg !238 { | |
entry: | |
%0 = call i32* @__errno_location(), !dbg !239 | |
%1 = load i32, i32* %0, !dbg !239 | |
ret i32 %1, !dbg !239 | |
} | |
declare i32* @__errno_location() | |
; Function Attrs: uwtable | |
define internal void @"*Errno#initialize<String, Int32>:Nil"(%Errno* %self, %String* %message, i32 %errno) #0 !dbg !240 { | |
entry: | |
%0 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 4, !dbg !241 | |
store i32 %errno, i32* %0, !dbg !241 | |
%1 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 4, !dbg !241 | |
%2 = load i32, i32* %1, !dbg !241 | |
%3 = call i8* @strerror(i32 %2), !dbg !242 | |
%4 = call %String* @"*String::new<Pointer(UInt8)>:String"(i8* %3), !dbg !243 | |
%5 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 5, !dbg !244 | |
store %String* %4, %String** %5, !dbg !244 | |
%6 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !245 | |
%7 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %6, %String* %message), !dbg !245 | |
%8 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %7, %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"': '" to %String*)), !dbg !245 | |
%9 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 5, !dbg !245 | |
%10 = load %String*, %String** %9, !dbg !245 | |
%11 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %8, %String* %10), !dbg !245 | |
%12 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %11), !dbg !245 | |
call void @"*Errno@Exception#initialize<String>:Nil"(%Errno* %self, %String* %12), !dbg !246 | |
ret void, !dbg !246 | |
} | |
declare i8* @strerror(i32) | |
; Function Attrs: uwtable | |
define internal %String* @"*String::new<Pointer(UInt8)>:String"(i8* %chars) #0 !dbg !247 { | |
entry: | |
%0 = call i64 @strlen(i8* %chars), !dbg !249 | |
%1 = call %String* @"*String::new<Pointer(UInt8), UInt64>:String"(i8* %chars, i64 %0), !dbg !250 | |
ret %String* %1, !dbg !250 | |
} | |
declare i64 @strlen(i8*) | |
; Function Attrs: uwtable | |
define internal %String* @"*String::new<Pointer(UInt8), UInt64>:String"(i8* %chars, i64 %bytesize) #0 !dbg !251 { | |
alloca: | |
%size = alloca i32, !dbg !252 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 0, i32* %size, !dbg !253 | |
%0 = load i32, i32* %size, !dbg !253 | |
%1 = call %String* @"*String::new<Pointer(UInt8), UInt64, Int32>:String"(i8* %chars, i64 %bytesize, i32 %0), !dbg !252 | |
ret %String* %1, !dbg !252 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*String::new<Pointer(UInt8), UInt64, Int32>:String"(i8* %chars, i64 %bytesize, i32 %size) #0 !dbg !254 { | |
alloca: | |
%buffer = alloca i8*, !dbg !255 | |
%capacity = alloca i64, !dbg !255 | |
%str = alloca i8*, !dbg !255 | |
%buffer1 = alloca i8*, !dbg !255 | |
%__temp_25 = alloca %"Tuple(UInt64, Int32)", !dbg !255 | |
%bytesize2 = alloca i64, !dbg !255 | |
%size3 = alloca i32, !dbg !255 | |
%__temp_26 = alloca i1, !dbg !255 | |
%str_header = alloca %"Tuple(Int32, Int32, Int32)"*, !dbg !255 | |
%0 = alloca %"Tuple(UInt64, Int32)", !dbg !256 | |
%1 = alloca %"Tuple(Int32, Int32, Int32)", !dbg !257 | |
br label %entry | |
entry: ; preds = %alloca | |
%2 = icmp eq i64 %bytesize, 0, !dbg !258 | |
%3 = and i1 true, %2, !dbg !258 | |
br i1 %3, label %then, label %else, !dbg !258 | |
then: ; preds = %entry | |
ret %String* bitcast ({ i32, i32, i32, [1 x i8] }* @"''" to %String*), !dbg !258 | |
else: ; preds = %entry | |
store i64 %bytesize, i64* %capacity, !dbg !255 | |
%4 = load i64, i64* %capacity, !dbg !255 | |
call void @"*String::check_capacity_in_bounds<UInt64>:Nil"(i64 %4), !dbg !259 | |
%5 = load i64, i64* %capacity, !dbg !259 | |
%6 = trunc i64 %5 to i32, !dbg !259 | |
%7 = add i32 %6, 12, !dbg !259 | |
%8 = add i32 %7, 1, !dbg !259 | |
%9 = call i8* @"*GC::malloc_atomic<UInt32>:Pointer(Void)"(i32 %8), !dbg !260 | |
store i8* %9, i8** %str, !dbg !261 | |
%10 = load i8*, i8** %str, !dbg !261 | |
%11 = bitcast i8* %10 to %String*, !dbg !261 | |
%12 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %11), !dbg !262 | |
store i8* %12, i8** %buffer1, !dbg !263 | |
%13 = load i8*, i8** %buffer1, !dbg !263 | |
store i8* %13, i8** %buffer, !dbg !263 | |
%14 = load i8*, i8** %buffer, !dbg !263 | |
%15 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_from<Pointer(UInt8), UInt64>:Pointer(UInt8)"(i8* %14, i8* %chars, i64 %bytesize), !dbg !256 | |
%16 = getelementptr inbounds %"Tuple(UInt64, Int32)", %"Tuple(UInt64, Int32)"* %0, i32 0, i32 0, !dbg !256 | |
store i64 %bytesize, i64* %16, !dbg !256 | |
%17 = getelementptr inbounds %"Tuple(UInt64, Int32)", %"Tuple(UInt64, Int32)"* %0, i32 0, i32 1, !dbg !256 | |
store i32 %size, i32* %17, !dbg !256 | |
%18 = load %"Tuple(UInt64, Int32)", %"Tuple(UInt64, Int32)"* %0, !dbg !264 | |
store %"Tuple(UInt64, Int32)" %18, %"Tuple(UInt64, Int32)"* %__temp_25, !dbg !264 | |
%19 = getelementptr inbounds %"Tuple(UInt64, Int32)", %"Tuple(UInt64, Int32)"* %__temp_25, i32 0, i32 0, !dbg !264 | |
%20 = load i64, i64* %19, !dbg !264 | |
store i64 %20, i64* %bytesize2, !dbg !265 | |
%21 = getelementptr inbounds %"Tuple(UInt64, Int32)", %"Tuple(UInt64, Int32)"* %__temp_25, i32 0, i32 1, !dbg !265 | |
%22 = load i32, i32* %21, !dbg !265 | |
store i32 %22, i32* %size3, !dbg !266 | |
%23 = load i64, i64* %bytesize2, !dbg !267 | |
%24 = icmp ule i64 0, %23, !dbg !267 | |
%25 = or i1 true, %24, !dbg !267 | |
store i1 %25, i1* %__temp_26, !dbg !267 | |
br i1 %25, label %then6, label %else7, !dbg !267 | |
then4: ; preds = %exit | |
br label %exit8, !dbg !267 | |
else5: ; preds = %exit | |
%26 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [32 x i8] }* @"'Bytesize out of cap...'" to %String*)), !dbg !268 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %26), !dbg !269 | |
unreachable, !dbg !269 | |
then6: ; preds = %else | |
%27 = load i64, i64* %bytesize2, !dbg !267 | |
%28 = load i64, i64* %capacity, !dbg !267 | |
%29 = icmp ule i64 %27, %28, !dbg !267 | |
br label %exit, !dbg !267 | |
else7: ; preds = %else | |
%30 = load i1, i1* %__temp_26, !dbg !267 | |
br label %exit, !dbg !267 | |
exit: ; preds = %else7, %then6 | |
%31 = phi i1 [ %29, %then6 ], [ %30, %else7 ], !dbg !267 | |
br i1 %31, label %then4, label %else5, !dbg !267 | |
exit8: ; preds = %then4 | |
%32 = load i8*, i8** %buffer1, !dbg !269 | |
%33 = load i64, i64* %bytesize2, !dbg !269 | |
%34 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<UInt64, UInt8>:UInt8"(i8* %32, i64 %33, i8 0), !dbg !270 | |
%35 = load i64, i64* %bytesize2, !dbg !271 | |
%36 = load i64, i64* %capacity, !dbg !271 | |
%37 = icmp ult i64 %35, %36, !dbg !271 | |
br i1 %37, label %then9, label %else10, !dbg !271 | |
then9: ; preds = %exit8 | |
%38 = load i8*, i8** %str, !dbg !271 | |
%39 = load i64, i64* %bytesize2, !dbg !271 | |
%40 = trunc i64 %39 to i32, !dbg !271 | |
%41 = add i32 %40, 12, !dbg !271 | |
%42 = add i32 %41, 1, !dbg !271 | |
%43 = call i8* @"*Pointer(UInt8)@Pointer(T)#realloc<UInt32>:Pointer(UInt8)"(i8* %38, i32 %42), !dbg !272 | |
store i8* %43, i8** %str, !dbg !273 | |
br label %exit11, !dbg !273 | |
else10: ; preds = %exit8 | |
br label %exit11, !dbg !273 | |
exit11: ; preds = %else10, %then9 | |
%44 = load i8*, i8** %str, !dbg !273 | |
%45 = bitcast i8* %44 to %"Tuple(Int32, Int32, Int32)"*, !dbg !273 | |
store %"Tuple(Int32, Int32, Int32)"* %45, %"Tuple(Int32, Int32, Int32)"** %str_header, !dbg !257 | |
%46 = load %"Tuple(Int32, Int32, Int32)"*, %"Tuple(Int32, Int32, Int32)"** %str_header, !dbg !257 | |
%47 = call i32* @"~String::TYPE_ID:read"(), !dbg !257 | |
%48 = load i32, i32* %47, !dbg !257 | |
%49 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %1, i32 0, i32 0, !dbg !257 | |
store i32 %48, i32* %49, !dbg !257 | |
%50 = load i64, i64* %bytesize2, !dbg !257 | |
%51 = trunc i64 %50 to i32, !dbg !257 | |
%52 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %1, i32 0, i32 1, !dbg !257 | |
store i32 %51, i32* %52, !dbg !257 | |
%53 = load i32, i32* %size3, !dbg !257 | |
%54 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %1, i32 0, i32 2, !dbg !257 | |
store i32 %53, i32* %54, !dbg !257 | |
%55 = load %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %1, !dbg !257 | |
store %"Tuple(Int32, Int32, Int32)" %55, %"Tuple(Int32, Int32, Int32)"* %46, !dbg !257 | |
%56 = load i8*, i8** %str, !dbg !257 | |
%57 = bitcast i8* %56 to %String*, !dbg !257 | |
ret %String* %57, !dbg !257 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*String::check_capacity_in_bounds<UInt64>:Nil"(i64 %capacity) #0 !dbg !274 { | |
entry: | |
%0 = icmp ult i64 %capacity, 0, !dbg !275 | |
%1 = and i1 true, %0, !dbg !275 | |
br i1 %1, label %then, label %else, !dbg !275 | |
then: ; preds = %entry | |
%2 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [18 x i8] }* @"'Negative capacity'" to %String*)), !dbg !276 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %2), !dbg !277 | |
unreachable, !dbg !277 | |
else: ; preds = %entry | |
%3 = icmp ugt i64 %capacity, 4294967282, !dbg !278 | |
br i1 %3, label %then1, label %else2, !dbg !278 | |
then1: ; preds = %else | |
%4 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [17 x i8] }* @"'Capacity too big'" to %String*)), !dbg !279 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %4), !dbg !280 | |
unreachable, !dbg !280 | |
else2: ; preds = %else | |
ret void, !dbg !280 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*GC::malloc_atomic<UInt32>:Pointer(Void)"(i32 %size) #0 !dbg !281 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt32>:UInt64"(i32 %size), !dbg !282 | |
%1 = call i8* @"*GC::malloc_atomic<UInt64>:Pointer(Void)"(i64 %0), !dbg !283 | |
ret i8* %1, !dbg !283 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*UInt64::new<UInt32>:UInt64"(i32 %value) #0 !dbg !284 { | |
entry: | |
%0 = zext i32 %value to i64, !dbg !285 | |
ret i64 %0, !dbg !285 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*GC::malloc_atomic<UInt64>:Pointer(Void)"(i64 %size) #0 !dbg !286 { | |
entry: | |
%0 = call i8* @GC_malloc_atomic(i64 %size), !dbg !287 | |
ret i8* %0, !dbg !287 | |
} | |
declare i8* @GC_malloc_atomic(i64) | |
; Function Attrs: uwtable | |
define internal i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self) #0 !dbg !288 { | |
entry: | |
%0 = getelementptr inbounds %String, %String* %self, i32 0, i32 3, !dbg !289 | |
ret i8* %0, !dbg !289 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#copy_from<Pointer(UInt8), UInt64>:Pointer(UInt8)"(i8* %self, i8* %source, i64 %count) #0 !dbg !290 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_to<Pointer(UInt8), UInt64>:Pointer(UInt8)"(i8* %source, i8* %self, i64 %count), !dbg !291 | |
ret i8* %0, !dbg !291 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#copy_to<Pointer(UInt8), UInt64>:Pointer(UInt8)"(i8* %self, i8* %target, i64 %count) #0 !dbg !292 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_from_impl<Pointer(UInt8), UInt64>:Pointer(UInt8)"(i8* %target, i8* %self, i64 %count), !dbg !293 | |
ret i8* %0, !dbg !293 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#copy_from_impl<Pointer(UInt8), UInt64>:Pointer(UInt8)"(i8* %self, i8* %source, i64 %count) #0 !dbg !294 { | |
alloca: | |
%count1 = alloca i64, !dbg !295 | |
br label %entry | |
entry: ; preds = %alloca | |
store i64 %count, i64* %count1, !dbg !295 | |
%0 = load i64, i64* %count1, !dbg !296 | |
%1 = icmp ult i64 %0, 0, !dbg !296 | |
%2 = and i1 true, %1, !dbg !296 | |
br i1 %2, label %then, label %else, !dbg !296 | |
then: ; preds = %entry | |
%3 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [15 x i8] }* @"'Negative count'" to %String*)), !dbg !297 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %3), !dbg !296 | |
unreachable, !dbg !296 | |
else: ; preds = %entry | |
%4 = call i1 @"*Pointer(UInt8)@Object::==<Pointer(UInt8).class>:Bool"(i32 722, i32 722), !dbg !298 | |
br i1 %4, label %then2, label %else3, !dbg !298 | |
then2: ; preds = %else | |
%5 = load i64, i64* %count1, !dbg !298 | |
%6 = call i64 @"*Pointer(UInt8)@Pointer(T)#bytesize<UInt64>:UInt64"(i8* %self, i64 %5), !dbg !299 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %self, i8* %source, i64 %6, i32 0, i1 false), !dbg !300 | |
br label %exit, !dbg !300 | |
else3: ; preds = %else | |
br label %while, !dbg !300 | |
exit: ; preds = %exit4, %then2 | |
ret i8* %self, !dbg !301 | |
while: ; preds = %body, %else3 | |
%7 = load i64, i64* %count1, !dbg !302 | |
%8 = sub i64 %7, 1, !dbg !302 | |
store i64 %8, i64* %count1, !dbg !303 | |
%9 = icmp uge i64 %8, 0, !dbg !303 | |
%10 = or i1 true, %9, !dbg !303 | |
br i1 %10, label %body, label %exit4, !dbg !303 | |
body: ; preds = %while | |
%11 = load i64, i64* %count1, !dbg !303 | |
%12 = load i64, i64* %count1, !dbg !303 | |
%13 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<UInt64>:UInt8"(i8* %source, i64 %12), !dbg !304 | |
%14 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<UInt64, UInt8>:UInt8"(i8* %self, i64 %11, i8 %13), !dbg !301 | |
br label %while, !dbg !301 | |
exit4: ; preds = %while | |
br label %exit, !dbg !301 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Pointer(UInt8)@Object::==<Pointer(UInt8).class>:Bool"(i32 %self, i32 %other) #0 !dbg !305 { | |
entry: | |
ret i1 true, !dbg !307 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Pointer(UInt8)@Pointer(T)#bytesize<UInt64>:UInt64"(i8* %self, i64 %count) #0 !dbg !308 { | |
entry: | |
%0 = mul i64 %count, 1, !dbg !309 | |
ret i64 %0, !dbg !309 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #2 | |
; Function Attrs: uwtable | |
define internal i8 @"*Pointer(UInt8)@Pointer(T)#[]<UInt64>:UInt8"(i8* %self, i64 %offset) #0 !dbg !310 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<UInt64>:Pointer(UInt8)"(i8* %self, i64 %offset), !dbg !311 | |
%1 = load i8, i8* %0, !dbg !311 | |
ret i8 %1, !dbg !311 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#+<UInt64>:Pointer(UInt8)"(i8* %self, i64 %other) #0 !dbg !312 { | |
entry: | |
%0 = getelementptr inbounds i8, i8* %self, i64 %other, !dbg !313 | |
ret i8* %0, !dbg !313 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*Pointer(UInt8)@Pointer(T)#[]=<UInt64, UInt8>:UInt8"(i8* %self, i64 %offset, i8 %value) #0 !dbg !314 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<UInt64>:Pointer(UInt8)"(i8* %self, i64 %offset), !dbg !315 | |
store i8 %value, i8* %0, !dbg !315 | |
ret i8 %value, !dbg !315 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#realloc<UInt32>:Pointer(UInt8)"(i8* %self, i32 %size) #0 !dbg !316 { | |
entry: | |
%0 = icmp ult i32 %size, 0, !dbg !317 | |
%1 = and i1 true, %0, !dbg !317 | |
br i1 %1, label %then, label %else, !dbg !317 | |
then: ; preds = %entry | |
%2 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Negative size'" to %String*)), !dbg !318 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %2), !dbg !319 | |
unreachable, !dbg !319 | |
else: ; preds = %entry | |
%3 = zext i32 %size to i64, !dbg !319 | |
%4 = mul i64 %3, ptrtoint (i8* getelementptr (i8, i8* null, i32 1) to i64), !dbg !319 | |
%5 = call i8* @__crystal_realloc64(i8* %self, i64 %4), !dbg !319 | |
ret i8* %5, !dbg !319 | |
} | |
define internal i32* @"~String::TYPE_ID:read"() { | |
entry: | |
%0 = load i1, i1* @"String::TYPE_ID:init", !dbg !257 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !257 | |
initialized: ; preds = %not_initialized, %entry | |
ret i32* @"String::TYPE_ID", !dbg !257 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"String::TYPE_ID:init", !dbg !257 | |
call void @"~String::TYPE_ID:init"(), !dbg !257 | |
br label %initialized, !dbg !257 | |
} | |
define internal void @"~String::TYPE_ID:init"() { | |
entry: | |
ret void, !dbg !257 | |
} | |
; Function Attrs: uwtable | |
define internal %"String::Builder"* @"*String::Builder::new:String::Builder"() #0 !dbg !320 { | |
alloca: | |
%_ = alloca %"String::Builder"*, !dbg !322 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"String::Builder"* getelementptr (%"String::Builder", %"String::Builder"* null, i32 1) to i64)), !dbg !322 | |
%1 = bitcast i8* %0 to %"String::Builder"*, !dbg !322 | |
%2 = bitcast %"String::Builder"* %1 to i8*, !dbg !322 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"String::Builder"* getelementptr (%"String::Builder", %"String::Builder"* null, i32 1) to i32), i32 4, i1 false), !dbg !322 | |
%3 = getelementptr inbounds %"String::Builder", %"String::Builder"* %1, i32 0, i32 0, !dbg !322 | |
store i32 92, i32* %3, !dbg !322 | |
store %"String::Builder"* %1, %"String::Builder"** %_, !dbg !322 | |
%4 = load %"String::Builder"*, %"String::Builder"** %_, !dbg !322 | |
%5 = call i1 @"*String::Builder#initialize:Bool"(%"String::Builder"* %4), !dbg !322 | |
%6 = load %"String::Builder"*, %"String::Builder"** %_, !dbg !322 | |
ret %"String::Builder"* %6, !dbg !322 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*String::Builder#initialize:Bool"(%"String::Builder"* %self) #0 !dbg !323 { | |
alloca: | |
%capacity = alloca i32, !dbg !324 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 64, i32* %capacity, !dbg !325 | |
%0 = load i32, i32* %capacity, !dbg !325 | |
call void @"*String::check_capacity_in_bounds<Int32>:Nil"(i32 %0), !dbg !326 | |
%1 = load i32, i32* %capacity, !dbg !326 | |
%2 = add i32 %1, 13, !dbg !326 | |
store i32 %2, i32* %capacity, !dbg !327 | |
%3 = load i32, i32* %capacity, !dbg !327 | |
call void @"*String::check_capacity_in_bounds<Int32>:Nil"(i32 %3), !dbg !328 | |
%4 = load i32, i32* %capacity, !dbg !328 | |
%5 = call i8* @"*GC::malloc_atomic<UInt32>:Pointer(Void)"(i32 %4), !dbg !329 | |
%6 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !330 | |
store i8* %5, i8** %6, !dbg !330 | |
%7 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !331 | |
store i32 0, i32* %7, !dbg !331 | |
%8 = load i32, i32* %capacity, !dbg !331 | |
%9 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !332 | |
store i32 %8, i32* %9, !dbg !332 | |
%10 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 7, !dbg !333 | |
store i1 false, i1* %10, !dbg !333 | |
ret i1 false, !dbg !333 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*String::check_capacity_in_bounds<Int32>:Nil"(i32 %capacity) #0 !dbg !334 { | |
entry: | |
%0 = icmp slt i32 %capacity, 0, !dbg !335 | |
br i1 %0, label %then, label %else, !dbg !335 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [18 x i8] }* @"'Negative capacity'" to %String*)), !dbg !336 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !337 | |
unreachable, !dbg !337 | |
else: ; preds = %entry | |
%2 = sext i32 %capacity to i64, !dbg !338 | |
%3 = icmp ugt i64 %2, 4294967282, !dbg !338 | |
br i1 %3, label %then1, label %else2, !dbg !338 | |
then1: ; preds = %else | |
%4 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [17 x i8] }* @"'Capacity too big'" to %String*)), !dbg !339 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %4), !dbg !340 | |
unreachable, !dbg !340 | |
else2: ; preds = %else | |
ret void, !dbg !340 | |
} | |
; Function Attrs: uwtable | |
define internal %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %self, %String* %obj) #0 !dbg !341 { | |
entry: | |
call void @"*String#to_s<String::Builder>:Nil"(%String* %obj, %"String::Builder"* %self), !dbg !343 | |
ret %"String::Builder"* %self, !dbg !343 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*String#to_s<String::Builder>:Nil"(%String* %self, %"String::Builder"* %io) #0 !dbg !344 { | |
alloca: | |
%0 = alloca %"Slice(UInt8)", !dbg !345 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Slice(UInt8)" @"*String#to_slice:Slice(UInt8)"(%String* %self), !dbg !345 | |
store %"Slice(UInt8)" %1, %"Slice(UInt8)"* %0, !dbg !345 | |
%2 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !345 | |
call void @"*String::Builder@IO#write_utf8<Slice(UInt8)>:Nil"(%"String::Builder"* %io, %"Slice(UInt8)" %2), !dbg !346 | |
ret void, !dbg !346 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*String#to_slice:Slice(UInt8)"(%String* %self) #0 !dbg !347 { | |
alloca: | |
%0 = alloca %"Slice(UInt8)", !dbg !348 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !349 | |
%2 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !349 | |
%3 = load i32, i32* %2, !dbg !349 | |
%4 = call %"Slice(UInt8)" @"*Slice(T)::new:read_only<Pointer(UInt8), Int32, Bool>:Slice(UInt8)"(i8* %1, i32 %3, i1 true), !dbg !348 | |
store %"Slice(UInt8)" %4, %"Slice(UInt8)"* %0, !dbg !348 | |
%5 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !348 | |
ret %"Slice(UInt8)" %5, !dbg !348 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*Slice(T)::new:read_only<Pointer(UInt8), Int32, Bool>:Slice(UInt8)"(i8* %__arg0, i32 %__arg1, i1 %__temp_27) #0 !dbg !350 { | |
alloca: | |
%_ = alloca %"Slice(UInt8)", !dbg !351 | |
%0 = alloca %"Slice(UInt8)", !dbg !351 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Slice(UInt8)"* %0 to i8*, !dbg !351 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%"Slice(UInt8)"* getelementptr (%"Slice(UInt8)", %"Slice(UInt8)"* null, i32 1) to i32), i32 4, i1 false), !dbg !351 | |
%2 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !351 | |
store %"Slice(UInt8)" %2, %"Slice(UInt8)"* %_, !dbg !351 | |
%3 = call i32 @"*Slice(UInt8)@Slice(T)#initialize:read_only<Pointer(UInt8), Int32, Bool>:Int32"(%"Slice(UInt8)"* %_, i8* %__arg0, i32 %__arg1, i1 %__temp_27), !dbg !351 | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %_, !dbg !351 | |
ret %"Slice(UInt8)" %4, !dbg !351 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*String::Builder@IO#write_utf8<Slice(UInt8)>:Nil"(%"String::Builder"* %self, %"Slice(UInt8)" %slice) #0 !dbg !352 { | |
alloca: | |
%encoder = alloca %"IO::Encoder"*, !dbg !353 | |
%slice1 = alloca %"Slice(UInt8)", !dbg !353 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"Slice(UInt8)" %slice, %"Slice(UInt8)"* %slice1, !dbg !353 | |
%0 = call %"IO::Encoder"* @"*String::Builder@IO#encoder:(IO::Encoder | Nil)"(%"String::Builder"* %self), !dbg !354 | |
store %"IO::Encoder"* %0, %"IO::Encoder"** %encoder, !dbg !355 | |
%1 = icmp ne %"IO::Encoder"* %0, null, !dbg !355 | |
br i1 %1, label %then, label %else, !dbg !355 | |
then: ; preds = %entry | |
%2 = load %"IO::Encoder"*, %"IO::Encoder"** %encoder, !dbg !355 | |
%3 = load %"Slice(UInt8)", %"Slice(UInt8)"* %slice1, !dbg !355 | |
call void @"*IO::Encoder#write<String::Builder, Slice(UInt8)>:Nil"(%"IO::Encoder"* %2, %"String::Builder"* %self, %"Slice(UInt8)" %3), !dbg !356 | |
br label %exit, !dbg !356 | |
else: ; preds = %entry | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %slice1, !dbg !356 | |
call void @"*String::Builder#write<Slice(UInt8)>:Nil"(%"String::Builder"* %self, %"Slice(UInt8)" %4), !dbg !357 | |
br label %exit, !dbg !357 | |
exit: ; preds = %else, %then | |
ret void, !dbg !357 | |
} | |
; Function Attrs: uwtable | |
define internal %"IO::Encoder"* @"*String::Builder@IO#encoder:(IO::Encoder | Nil)"(%"String::Builder"* %self) #0 !dbg !358 { | |
alloca: | |
%encoding = alloca %"(IO::EncodingOptions | Nil)", !dbg !359 | |
%__temp_29 = alloca %"IO::Encoder"*, !dbg !359 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 1, !dbg !360 | |
%1 = load %"(IO::EncodingOptions | Nil)", %"(IO::EncodingOptions | Nil)"* %0, !dbg !361 | |
store %"(IO::EncodingOptions | Nil)" %1, %"(IO::EncodingOptions | Nil)"* %encoding, !dbg !361 | |
%2 = getelementptr inbounds %"(IO::EncodingOptions | Nil)", %"(IO::EncodingOptions | Nil)"* %0, i32 0, i32 0, !dbg !361 | |
%3 = load i32, i32* %2, !dbg !361 | |
%4 = icmp eq i32 %3, 0, !dbg !361 | |
%5 = xor i1 %4, true, !dbg !361 | |
%6 = and i1 true, %5, !dbg !361 | |
br i1 %6, label %then, label %else, !dbg !361 | |
then: ; preds = %entry | |
%7 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 2, !dbg !362 | |
%8 = load %"IO::Encoder"*, %"IO::Encoder"** %7, !dbg !362 | |
store %"IO::Encoder"* %8, %"IO::Encoder"** %__temp_29, !dbg !362 | |
%9 = icmp ne %"IO::Encoder"* %8, null, !dbg !362 | |
br i1 %9, label %then1, label %else2, !dbg !362 | |
else: ; preds = %entry | |
br label %exit3, !dbg !362 | |
then1: ; preds = %then | |
%10 = load %"IO::Encoder"*, %"IO::Encoder"** %__temp_29, !dbg !362 | |
br label %exit, !dbg !362 | |
else2: ; preds = %then | |
%11 = getelementptr inbounds %"(IO::EncodingOptions | Nil)", %"(IO::EncodingOptions | Nil)"* %encoding, i32 0, i32 1, !dbg !362 | |
%12 = bitcast [3 x i64]* %11 to %"IO::EncodingOptions"*, !dbg !362 | |
%13 = load %"IO::EncodingOptions", %"IO::EncodingOptions"* %12, !dbg !362 | |
%14 = call %"IO::Encoder"* @"*IO::Encoder::new<IO::EncodingOptions>:IO::Encoder"(%"IO::EncodingOptions" %13), !dbg !363 | |
%15 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 2, !dbg !362 | |
store %"IO::Encoder"* %14, %"IO::Encoder"** %15, !dbg !362 | |
br label %exit, !dbg !362 | |
exit: ; preds = %else2, %then1 | |
%16 = phi %"IO::Encoder"* [ %10, %then1 ], [ %14, %else2 ], !dbg !362 | |
br label %exit3, !dbg !362 | |
exit3: ; preds = %else, %exit | |
%17 = phi %"IO::Encoder"* [ %16, %exit ], [ null, %else ], !dbg !362 | |
ret %"IO::Encoder"* %17, !dbg !362 | |
} | |
; Function Attrs: uwtable | |
define internal %"IO::Encoder"* @"*IO::Encoder::new<IO::EncodingOptions>:IO::Encoder"(%"IO::EncodingOptions" %encoding_options) #0 !dbg !364 { | |
alloca: | |
%_ = alloca %"IO::Encoder"*, !dbg !366 | |
%encoding_options1 = alloca %"IO::EncodingOptions", !dbg !366 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"IO::EncodingOptions" %encoding_options, %"IO::EncodingOptions"* %encoding_options1, !dbg !366 | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"IO::Encoder"* getelementptr (%"IO::Encoder", %"IO::Encoder"* null, i32 1) to i64)), !dbg !366 | |
%1 = bitcast i8* %0 to %"IO::Encoder"*, !dbg !366 | |
%2 = bitcast %"IO::Encoder"* %1 to i8*, !dbg !366 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"IO::Encoder"* getelementptr (%"IO::Encoder", %"IO::Encoder"* null, i32 1) to i32), i32 4, i1 false), !dbg !366 | |
%3 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %1, i32 0, i32 0, !dbg !366 | |
store i32 95, i32* %3, !dbg !366 | |
store %"IO::Encoder"* %1, %"IO::Encoder"** %_, !dbg !366 | |
%4 = load %"IO::Encoder"*, %"IO::Encoder"** %_, !dbg !366 | |
%5 = load %"IO::EncodingOptions", %"IO::EncodingOptions"* %encoding_options1, !dbg !366 | |
%6 = call i1 @"*IO::Encoder#initialize<IO::EncodingOptions>:Bool"(%"IO::Encoder"* %4, %"IO::EncodingOptions" %5), !dbg !366 | |
%7 = load %"IO::Encoder"*, %"IO::Encoder"** %_, !dbg !366 | |
call void @"*GC::add_finalizer<IO::Encoder>:Nil"(%"IO::Encoder"* %7), !dbg !366 | |
%8 = load %"IO::Encoder"*, %"IO::Encoder"** %_, !dbg !366 | |
ret %"IO::Encoder"* %8, !dbg !366 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*IO::Encoder#initialize<IO::EncodingOptions>:Bool"(%"IO::Encoder"* %self, %"IO::EncodingOptions" %encoding_options) #0 !dbg !367 { | |
alloca: | |
%encoding_options1 = alloca %"IO::EncodingOptions", !dbg !368 | |
%0 = alloca %Iconv, !dbg !369 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"IO::EncodingOptions" %encoding_options, %"IO::EncodingOptions"* %encoding_options1, !dbg !368 | |
%1 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 1, !dbg !370 | |
%2 = load %"IO::EncodingOptions", %"IO::EncodingOptions"* %encoding_options1, !dbg !370 | |
store %"IO::EncodingOptions" %2, %"IO::EncodingOptions"* %1, !dbg !370 | |
%3 = getelementptr inbounds %"IO::EncodingOptions", %"IO::EncodingOptions"* %encoding_options1, i32 0, i32 0, !dbg !370 | |
%4 = load %String*, %String** %3, !dbg !370 | |
%5 = getelementptr inbounds %"IO::EncodingOptions", %"IO::EncodingOptions"* %encoding_options1, i32 0, i32 1, !dbg !370 | |
%6 = load %"(Symbol | Nil)", %"(Symbol | Nil)"* %5, !dbg !370 | |
%7 = call %Iconv @"*Iconv::new<String, String, (Symbol | Nil)>:Iconv"(%String* bitcast ({ i32, i32, i32, [6 x i8] }* @"'UTF-8'" to %String*), %String* %4, %"(Symbol | Nil)" %6), !dbg !369 | |
store %Iconv %7, %Iconv* %0, !dbg !369 | |
%8 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 2, !dbg !371 | |
%9 = load %Iconv, %Iconv* %0, !dbg !371 | |
store %Iconv %9, %Iconv* %8, !dbg !371 | |
%10 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 3, !dbg !372 | |
store i1 false, i1* %10, !dbg !372 | |
ret i1 false, !dbg !372 | |
} | |
; Function Attrs: uwtable | |
define internal %Iconv @"*Iconv::new<String, String, (Symbol | Nil)>:Iconv"(%String* %from, %String* %to, %"(Symbol | Nil)" %invalid) #0 !dbg !373 { | |
alloca: | |
%_ = alloca %Iconv, !dbg !375 | |
%invalid1 = alloca %"(Symbol | Nil)", !dbg !375 | |
%0 = alloca %Iconv, !dbg !375 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"(Symbol | Nil)" %invalid, %"(Symbol | Nil)"* %invalid1, !dbg !375 | |
%1 = bitcast %Iconv* %0 to i8*, !dbg !375 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%Iconv* getelementptr (%Iconv, %Iconv* null, i32 1) to i32), i32 4, i1 false), !dbg !375 | |
%2 = load %Iconv, %Iconv* %0, !dbg !375 | |
store %Iconv %2, %Iconv* %_, !dbg !375 | |
%3 = load %"(Symbol | Nil)", %"(Symbol | Nil)"* %invalid1, !dbg !375 | |
call void @"*Iconv#initialize<String, String, (Symbol | Nil)>:Nil"(%Iconv* %_, %String* %from, %String* %to, %"(Symbol | Nil)" %3), !dbg !375 | |
%4 = load %Iconv, %Iconv* %_, !dbg !375 | |
ret %Iconv %4, !dbg !375 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Iconv#initialize<String, String, (Symbol | Nil)>:Nil"(%Iconv* %self, %String* %from, %String* %to, %"(Symbol | Nil)" %invalid) #0 !dbg !376 { | |
alloca: | |
%__temp_30 = alloca %String*, !dbg !377 | |
%__temp_31 = alloca %String*, !dbg !377 | |
%original_from = alloca %String*, !dbg !377 | |
%original_to = alloca %String*, !dbg !377 | |
%from1 = alloca %String*, !dbg !377 | |
%to2 = alloca %String*, !dbg !377 | |
%invalid3 = alloca %"(Symbol | Nil)", !dbg !377 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* %from, %String** %from1, !dbg !377 | |
store %String* %to, %String** %to2, !dbg !377 | |
store %"(Symbol | Nil)" %invalid, %"(Symbol | Nil)"* %invalid3, !dbg !377 | |
%0 = load %String*, %String** %from1, !dbg !377 | |
store %String* %0, %String** %__temp_30, !dbg !378 | |
%1 = load %String*, %String** %to2, !dbg !378 | |
store %String* %1, %String** %__temp_31, !dbg !378 | |
%2 = load %String*, %String** %__temp_30, !dbg !378 | |
store %String* %2, %String** %original_from, !dbg !378 | |
%3 = load %String*, %String** %__temp_31, !dbg !378 | |
store %String* %3, %String** %original_to, !dbg !379 | |
%4 = getelementptr inbounds %"(Symbol | Nil)", %"(Symbol | Nil)"* %invalid3, i32 0, i32 0, !dbg !379 | |
%5 = load i32, i32* %4, !dbg !379 | |
%6 = icmp eq i32 173, %5, !dbg !379 | |
br i1 %6, label %current_def, label %next_def, !dbg !379 | |
current_def: ; preds = %entry | |
%7 = getelementptr inbounds %"(Symbol | Nil)", %"(Symbol | Nil)"* %invalid3, i32 0, i32 1, !dbg !379 | |
%8 = bitcast [1 x i64]* %7 to i32*, !dbg !379 | |
%9 = load i32, i32* %8, !dbg !379 | |
%10 = icmp eq i32 %9, 0, !dbg !379 | |
br label %exit, !dbg !379 | |
next_def: ; preds = %entry | |
%11 = icmp eq i32 0, %5, !dbg !379 | |
br i1 %11, label %current_def4, label %next_def5, !dbg !379 | |
exit: ; preds = %current_def4, %current_def | |
%12 = phi i1 [ %10, %current_def ], [ false, %current_def4 ], !dbg !379 | |
%13 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 0, !dbg !380 | |
store i1 %12, i1* %13, !dbg !380 | |
%14 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 0, !dbg !381 | |
%15 = load i1, i1* %14, !dbg !381 | |
br i1 %15, label %then, label %else, !dbg !381 | |
current_def4: ; preds = %next_def | |
br label %exit, !dbg !379 | |
next_def5: ; preds = %next_def | |
unreachable, !dbg !379 | |
then: ; preds = %exit | |
%16 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !381 | |
%17 = load %String*, %String** %from1, !dbg !381 | |
%18 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %16, %String* %17), !dbg !381 | |
%19 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %18, %String* bitcast ({ i32, i32, i32, [9 x i8] }* @"'//IGNORE'" to %String*)), !dbg !381 | |
%20 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %19), !dbg !381 | |
store %String* %20, %String** %from1, !dbg !381 | |
%21 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !381 | |
%22 = load %String*, %String** %to2, !dbg !381 | |
%23 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %21, %String* %22), !dbg !381 | |
%24 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %23, %String* bitcast ({ i32, i32, i32, [9 x i8] }* @"'//IGNORE'" to %String*)), !dbg !381 | |
%25 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %24), !dbg !381 | |
store %String* %25, %String** %to2, !dbg !381 | |
br label %exit6, !dbg !381 | |
else: ; preds = %exit | |
br label %exit6, !dbg !381 | |
exit6: ; preds = %else, %then | |
%26 = load %String*, %String** %to2, !dbg !381 | |
%27 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %26), !dbg !382 | |
%28 = load %String*, %String** %from1, !dbg !382 | |
%29 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %28), !dbg !383 | |
%30 = call i8* @iconv_open(i8* %27, i8* %29), !dbg !384 | |
%31 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 1, !dbg !385 | |
store i8* %30, i8** %31, !dbg !385 | |
%32 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 1, !dbg !386 | |
%33 = load i8*, i8** %32, !dbg !386 | |
%34 = ptrtoint i8* %33 to i64, !dbg !386 | |
%35 = icmp eq i64 %34, -1, !dbg !386 | |
br i1 %35, label %then7, label %else8, !dbg !386 | |
then7: ; preds = %exit6 | |
%36 = call i32 @"*Errno::value:Int32"(), !dbg !387 | |
%37 = icmp eq i32 %36, 22, !dbg !387 | |
br i1 %37, label %then9, label %else10, !dbg !387 | |
else8: ; preds = %exit6 | |
ret void, !dbg !388 | |
then9: ; preds = %then7 | |
%38 = load %String*, %String** %original_from, !dbg !389 | |
%39 = call i1 @"*String#==<String>:Bool"(%String* %38, %String* bitcast ({ i32, i32, i32, [6 x i8] }* @"'UTF-8'" to %String*)), !dbg !390 | |
br i1 %39, label %then11, label %else12, !dbg !390 | |
else10: ; preds = %then7 | |
%40 = call %Errno* @"*Errno::new<String>:Errno"(%String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'iconv_open'" to %String*)), !dbg !391 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %40), !dbg !388 | |
unreachable, !dbg !388 | |
then11: ; preds = %then9 | |
%41 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !392 | |
%42 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %41, %String* bitcast ({ i32, i32, i32, [19 x i8] }* @"'Invalid encoding: '" to %String*)), !dbg !392 | |
%43 = load %String*, %String** %original_to, !dbg !392 | |
%44 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %42, %String* %43), !dbg !392 | |
%45 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %44), !dbg !392 | |
%46 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %45), !dbg !393 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %46), !dbg !394 | |
unreachable, !dbg !394 | |
else12: ; preds = %then9 | |
%47 = load %String*, %String** %original_to, !dbg !395 | |
%48 = call i1 @"*String#==<String>:Bool"(%String* %47, %String* bitcast ({ i32, i32, i32, [6 x i8] }* @"'UTF-8'" to %String*)), !dbg !396 | |
br i1 %48, label %then13, label %else14, !dbg !396 | |
then13: ; preds = %else12 | |
%49 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !397 | |
%50 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %49, %String* bitcast ({ i32, i32, i32, [19 x i8] }* @"'Invalid encoding: '" to %String*)), !dbg !397 | |
%51 = load %String*, %String** %original_from, !dbg !397 | |
%52 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %50, %String* %51), !dbg !397 | |
%53 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %52), !dbg !397 | |
%54 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %53), !dbg !398 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %54), !dbg !399 | |
unreachable, !dbg !399 | |
else14: ; preds = %else12 | |
%55 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !400 | |
%56 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %55, %String* bitcast ({ i32, i32, i32, [19 x i8] }* @"'Invalid encoding: '" to %String*)), !dbg !400 | |
%57 = load %String*, %String** %original_from, !dbg !400 | |
%58 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %56, %String* %57), !dbg !400 | |
%59 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %58, %String* bitcast ({ i32, i32, i32, [5 x i8] }* @"' -> '" to %String*)), !dbg !400 | |
%60 = load %String*, %String** %original_to, !dbg !400 | |
%61 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %59, %String* %60), !dbg !400 | |
%62 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %61), !dbg !400 | |
%63 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %62), !dbg !401 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %63), !dbg !402 | |
unreachable, !dbg !402 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*String::Builder#to_s:String"(%"String::Builder"* %self) #0 !dbg !403 { | |
alloca: | |
%real_bytesize = alloca i32, !dbg !404 | |
%header = alloca %"Tuple(Int32, Int32, Int32)"*, !dbg !404 | |
%0 = alloca %"Tuple(Int32, Int32, Int32)", !dbg !405 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 7, !dbg !406 | |
%2 = load i1, i1* %1, !dbg !406 | |
br i1 %2, label %then, label %else, !dbg !406 | |
then: ; preds = %entry | |
call void @"*raise<String>:NoReturn"(%String* bitcast ({ i32, i32, i32, [47 x i8] }* @"'Can only invoke 'to...'" to %String*)), !dbg !406 | |
unreachable, !dbg !406 | |
else: ; preds = %entry | |
%3 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 7, !dbg !407 | |
store i1 true, i1* %3, !dbg !407 | |
call void @"*String::Builder#write_byte<UInt8>:Nil"(%"String::Builder"* %self, i8 0), !dbg !408 | |
%4 = call i32 @"*String::Builder#real_bytesize:Int32"(%"String::Builder"* %self), !dbg !409 | |
store i32 %4, i32* %real_bytesize, !dbg !410 | |
%5 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !411 | |
%6 = load i32, i32* %5, !dbg !411 | |
%7 = load i32, i32* %real_bytesize, !dbg !411 | |
%8 = icmp sgt i32 %6, %7, !dbg !411 | |
br i1 %8, label %then1, label %else2, !dbg !411 | |
then1: ; preds = %else | |
%9 = load i32, i32* %real_bytesize, !dbg !411 | |
%10 = call i8* @"*String::Builder#resize_to_capacity<Int32>:Pointer(UInt8)"(%"String::Builder"* %self, i32 %9), !dbg !412 | |
br label %exit, !dbg !412 | |
else2: ; preds = %else | |
br label %exit, !dbg !412 | |
exit: ; preds = %else2, %then1 | |
%11 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !412 | |
%12 = load i8*, i8** %11, !dbg !412 | |
%13 = bitcast i8* %12 to %"Tuple(Int32, Int32, Int32)"*, !dbg !412 | |
store %"Tuple(Int32, Int32, Int32)"* %13, %"Tuple(Int32, Int32, Int32)"** %header, !dbg !405 | |
%14 = load %"Tuple(Int32, Int32, Int32)"*, %"Tuple(Int32, Int32, Int32)"** %header, !dbg !405 | |
%15 = load i32, i32* @"String::TYPE_ID", !dbg !405 | |
%16 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %0, i32 0, i32 0, !dbg !405 | |
store i32 %15, i32* %16, !dbg !405 | |
%17 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !405 | |
%18 = load i32, i32* %17, !dbg !405 | |
%19 = sub i32 %18, 1, !dbg !405 | |
%20 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %0, i32 0, i32 1, !dbg !405 | |
store i32 %19, i32* %20, !dbg !405 | |
%21 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %0, i32 0, i32 2, !dbg !405 | |
store i32 0, i32* %21, !dbg !405 | |
%22 = load %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %0, !dbg !405 | |
store %"Tuple(Int32, Int32, Int32)" %22, %"Tuple(Int32, Int32, Int32)"* %14, !dbg !405 | |
%23 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !405 | |
%24 = load i8*, i8** %23, !dbg !405 | |
%25 = bitcast i8* %24 to %String*, !dbg !405 | |
ret %String* %25, !dbg !405 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*String::Builder#write_byte<UInt8>:Nil"(%"String::Builder"* %self, i8 %byte) #0 !dbg !413 { | |
alloca: | |
%new_bytesize = alloca i32, !dbg !414 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i32 @"*String::Builder#real_bytesize:Int32"(%"String::Builder"* %self), !dbg !415 | |
%1 = add i32 %0, 1, !dbg !415 | |
store i32 %1, i32* %new_bytesize, !dbg !416 | |
%2 = load i32, i32* %new_bytesize, !dbg !417 | |
%3 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !417 | |
%4 = load i32, i32* %3, !dbg !417 | |
%5 = icmp sgt i32 %2, %4, !dbg !417 | |
br i1 %5, label %then, label %else, !dbg !417 | |
then: ; preds = %entry | |
%6 = load i32, i32* %new_bytesize, !dbg !417 | |
%7 = call i32 @"*Math@Math::pw2ceil<Int32>:Int32"(i32 %6), !dbg !418 | |
%8 = call i8* @"*String::Builder#resize_to_capacity<Int32>:Pointer(UInt8)"(%"String::Builder"* %self, i32 %7), !dbg !419 | |
br label %exit, !dbg !419 | |
else: ; preds = %entry | |
br label %exit, !dbg !419 | |
exit: ; preds = %else, %then | |
%9 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !419 | |
%10 = load i8*, i8** %9, !dbg !419 | |
%11 = call i32 @"*String::Builder#real_bytesize:Int32"(%"String::Builder"* %self), !dbg !420 | |
%12 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %10, i32 %11, i8 %byte), !dbg !421 | |
%13 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !421 | |
%14 = load i32, i32* %13, !dbg !421 | |
%15 = add i32 %14, 1, !dbg !421 | |
%16 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !422 | |
store i32 %15, i32* %16, !dbg !422 | |
ret void, !dbg !422 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*String::Builder#real_bytesize:Int32"(%"String::Builder"* %self) #0 !dbg !423 { | |
entry: | |
%0 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !424 | |
%1 = load i32, i32* %0, !dbg !424 | |
%2 = add i32 %1, 12, !dbg !424 | |
ret i32 %2, !dbg !424 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Math@Math::pw2ceil<Int32>:Int32"(i32 %v) #0 !dbg !425 { | |
alloca: | |
%v1 = alloca i32, !dbg !427 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %v, i32* %v1, !dbg !427 | |
%0 = load i32, i32* %v1, !dbg !427 | |
%1 = sub i32 %0, 1, !dbg !427 | |
store i32 %1, i32* %v1, !dbg !428 | |
%2 = load i32, i32* %v1, !dbg !428 | |
%3 = load i32, i32* %v1, !dbg !428 | |
%4 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %3, i32 1), !dbg !429 | |
%5 = or i32 %2, %4, !dbg !429 | |
store i32 %5, i32* %v1, !dbg !430 | |
%6 = load i32, i32* %v1, !dbg !430 | |
%7 = load i32, i32* %v1, !dbg !430 | |
%8 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %7, i32 2), !dbg !431 | |
%9 = or i32 %6, %8, !dbg !431 | |
store i32 %9, i32* %v1, !dbg !432 | |
%10 = load i32, i32* %v1, !dbg !432 | |
%11 = load i32, i32* %v1, !dbg !432 | |
%12 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %11, i32 4), !dbg !433 | |
%13 = or i32 %10, %12, !dbg !433 | |
store i32 %13, i32* %v1, !dbg !434 | |
%14 = load i32, i32* %v1, !dbg !434 | |
%15 = load i32, i32* %v1, !dbg !434 | |
%16 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %15, i32 8), !dbg !435 | |
%17 = or i32 %14, %16, !dbg !435 | |
store i32 %17, i32* %v1, !dbg !436 | |
%18 = load i32, i32* %v1, !dbg !436 | |
%19 = load i32, i32* %v1, !dbg !436 | |
%20 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %19, i32 16), !dbg !437 | |
%21 = or i32 %18, %20, !dbg !437 | |
store i32 %21, i32* %v1, !dbg !438 | |
%22 = load i32, i32* %v1, !dbg !438 | |
%23 = add i32 %22, 1, !dbg !438 | |
store i32 %23, i32* %v1, !dbg !439 | |
ret i32 %23, !dbg !439 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32@Int#>><Int32>:Int32"(i32 %self, i32 %count) #0 !dbg !440 { | |
entry: | |
%0 = icmp slt i32 %count, 0, !dbg !441 | |
br i1 %0, label %then, label %else, !dbg !441 | |
then: ; preds = %entry | |
%1 = call i32 @"*Int32@Int#abs:Int32"(i32 %count), !dbg !442 | |
%2 = call i32 @"*Int32@Int#<<<Int32>:Int32"(i32 %self, i32 %1), !dbg !443 | |
br label %exit, !dbg !443 | |
else: ; preds = %entry | |
%3 = icmp slt i32 %count, 32, !dbg !444 | |
br i1 %3, label %then1, label %else2, !dbg !444 | |
exit: ; preds = %exit3, %then | |
%4 = phi i32 [ %2, %then ], [ %7, %exit3 ], !dbg !445 | |
ret i32 %4, !dbg !445 | |
then1: ; preds = %else | |
%5 = ashr i32 %self, %count, !dbg !444 | |
br label %exit3, !dbg !444 | |
else2: ; preds = %else | |
%6 = call i32 @"*Int32@Number::zero:Int32"(), !dbg !445 | |
br label %exit3, !dbg !445 | |
exit3: ; preds = %else2, %then1 | |
%7 = phi i32 [ %5, %then1 ], [ %6, %else2 ], !dbg !445 | |
br label %exit, !dbg !445 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32@Int#abs:Int32"(i32 %self) #0 !dbg !446 { | |
entry: | |
%0 = icmp sge i32 %self, 0, !dbg !447 | |
br i1 %0, label %then, label %else, !dbg !447 | |
then: ; preds = %entry | |
br label %exit, !dbg !447 | |
else: ; preds = %entry | |
%1 = call i32 @"*Int32#-:Int32"(i32 %self), !dbg !448 | |
br label %exit, !dbg !448 | |
exit: ; preds = %else, %then | |
%2 = phi i32 [ %self, %then ], [ %1, %else ], !dbg !448 | |
ret i32 %2, !dbg !448 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32#-:Int32"(i32 %self) #0 !dbg !449 { | |
entry: | |
%0 = sub i32 0, %self, !dbg !450 | |
ret i32 %0, !dbg !450 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32@Int#<<<Int32>:Int32"(i32 %self, i32 %count) #0 !dbg !451 { | |
entry: | |
%0 = icmp slt i32 %count, 0, !dbg !452 | |
br i1 %0, label %then, label %else, !dbg !452 | |
then: ; preds = %entry | |
%1 = call i32 @"*Int32@Int#abs:Int32"(i32 %count), !dbg !453 | |
%2 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %self, i32 %1), !dbg !454 | |
br label %exit, !dbg !454 | |
else: ; preds = %entry | |
%3 = icmp slt i32 %count, 32, !dbg !455 | |
br i1 %3, label %then1, label %else2, !dbg !455 | |
exit: ; preds = %exit3, %then | |
%4 = phi i32 [ %2, %then ], [ %7, %exit3 ], !dbg !456 | |
ret i32 %4, !dbg !456 | |
then1: ; preds = %else | |
%5 = shl i32 %self, %count, !dbg !455 | |
br label %exit3, !dbg !455 | |
else2: ; preds = %else | |
%6 = call i32 @"*Int32@Number::zero:Int32"(), !dbg !456 | |
br label %exit3, !dbg !456 | |
exit3: ; preds = %else2, %then1 | |
%7 = phi i32 [ %5, %then1 ], [ %6, %else2 ], !dbg !456 | |
br label %exit, !dbg !456 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32@Number::zero:Int32"() #0 !dbg !457 { | |
entry: | |
%0 = call i32 @"*Int32::new<Int32>:Int32"(i32 0), !dbg !458 | |
ret i32 %0, !dbg !458 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32::new<Int32>:Int32"(i32 %value) #0 !dbg !459 { | |
entry: | |
ret i32 %value, !dbg !460 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*String::Builder#resize_to_capacity<Int32>:Pointer(UInt8)"(%"String::Builder"* %self, i32 %capacity) #0 !dbg !461 { | |
entry: | |
%0 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !462 | |
store i32 %capacity, i32* %0, !dbg !462 | |
%1 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !462 | |
%2 = load i8*, i8** %1, !dbg !462 | |
%3 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !462 | |
%4 = load i32, i32* %3, !dbg !462 | |
%5 = call i8* @"*Pointer(UInt8)@Pointer(T)#realloc<Int32>:Pointer(UInt8)"(i8* %2, i32 %4), !dbg !463 | |
%6 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !464 | |
store i8* %5, i8** %6, !dbg !464 | |
ret i8* %5, !dbg !464 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#realloc<Int32>:Pointer(UInt8)"(i8* %self, i32 %size) #0 !dbg !465 { | |
entry: | |
%0 = icmp slt i32 %size, 0, !dbg !466 | |
br i1 %0, label %then, label %else, !dbg !466 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Negative size'" to %String*)), !dbg !467 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !468 | |
unreachable, !dbg !468 | |
else: ; preds = %entry | |
%2 = sext i32 %size to i64, !dbg !468 | |
%3 = mul i64 %2, ptrtoint (i8* getelementptr (i8, i8* null, i32 1) to i64), !dbg !468 | |
%4 = call i8* @__crystal_realloc64(i8* %self, i64 %3), !dbg !468 | |
ret i8* %4, !dbg !468 | |
} | |
declare i8* @iconv_open(i8*, i8*) | |
; Function Attrs: uwtable | |
define internal i1 @"*String#==<String>:Bool"(%String* %self, %String* %other) #0 !dbg !469 { | |
entry: | |
%0 = call i1 @"*String@Reference#same?<String>:Bool"(%String* %self, %String* %other), !dbg !470 | |
br i1 %0, label %then, label %else, !dbg !470 | |
then: ; preds = %entry | |
ret i1 true, !dbg !470 | |
else: ; preds = %entry | |
%1 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !471 | |
%2 = load i32, i32* %1, !dbg !471 | |
%3 = getelementptr inbounds %String, %String* %other, i32 0, i32 1, !dbg !471 | |
%4 = load i32, i32* %3, !dbg !471 | |
%5 = icmp eq i32 %2, %4, !dbg !471 | |
br i1 %5, label %then1, label %else2, !dbg !471 | |
then1: ; preds = %else | |
br label %exit, !dbg !471 | |
else2: ; preds = %else | |
ret i1 false, !dbg !471 | |
exit: ; preds = %then1 | |
%6 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !472 | |
%7 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %other), !dbg !473 | |
%8 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !473 | |
%9 = load i32, i32* %8, !dbg !473 | |
%10 = call i32 @"*Pointer(UInt8)@Pointer(T)#memcmp<Pointer(UInt8), Int32>:Int32"(i8* %6, i8* %7, i32 %9), !dbg !472 | |
%11 = icmp eq i32 %10, 0, !dbg !472 | |
ret i1 %11, !dbg !472 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*String@Reference#same?<String>:Bool"(%String* %self, %String* %other) #0 !dbg !474 { | |
entry: | |
%0 = ptrtoint %String* %self to i64, !dbg !476 | |
%1 = ptrtoint %String* %other to i64, !dbg !476 | |
%2 = icmp eq i64 %0, %1, !dbg !476 | |
ret i1 %2, !dbg !476 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Pointer(UInt8)@Pointer(T)#memcmp<Pointer(UInt8), Int32>:Int32"(i8* %self, i8* %other, i32 %count) #0 !dbg !477 { | |
entry: | |
%0 = mul i32 %count, 1, !dbg !478 | |
%1 = sext i32 %0 to i64, !dbg !478 | |
%2 = call i32 @memcmp(i8* %self, i8* %other, i64 %1), !dbg !479 | |
ret i32 %2, !dbg !479 | |
} | |
declare i32 @memcmp(i8*, i8*, i64) | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<Errno>:NoReturn"(%Errno* %exception) #1 !dbg !480 { | |
alloca: | |
%__temp_33 = alloca %"(CallStack | Nil)", !dbg !481 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !481 | |
%0 = alloca %CallStack, !dbg !481 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %Errno, %Errno* %exception, i32 0, i32 3, !dbg !481 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !481 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_33, !dbg !481 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !481 | |
%4 = load i32, i32* %3, !dbg !481 | |
%5 = icmp eq i32 %4, 0, !dbg !481 | |
%6 = xor i1 %5, true, !dbg !481 | |
%7 = and i1 true, %6, !dbg !481 | |
br i1 %7, label %then, label %else, !dbg !481 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_33, i32 0, i32 1, !dbg !481 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !481 | |
br label %exit, !dbg !481 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !481 | |
store %CallStack %10, %CallStack* %0, !dbg !481 | |
%11 = load %CallStack, %CallStack* %0, !dbg !481 | |
%12 = call %CallStack @"*Errno@Exception#callstack=<CallStack>:CallStack"(%Errno* %exception, %CallStack %11), !dbg !481 | |
br label %exit, !dbg !481 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !481 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !481 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !481 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !481 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !481 | |
store i64 %15, i64* %16, !dbg !481 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !481 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !481 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !481 | |
store i64 %18, i64* %19, !dbg !481 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !481 | |
%21 = ptrtoint %Errno* %exception to i64, !dbg !481 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !481 | |
store i64 %21, i64* %22, !dbg !481 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !481 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !481 | |
store i32 54, i32* %24, !dbg !481 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !481 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !481 | |
unreachable, !dbg !481 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*Errno@Exception#callstack=<CallStack>:CallStack"(%Errno* %self, %CallStack %callstack) #0 !dbg !482 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !483 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !483 | |
%0 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 3, !dbg !484 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !484 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !484 | |
store i32 353, i32* %2, !dbg !484 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !484 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !484 | |
store %CallStack %1, %CallStack* %4, !dbg !484 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !484 | |
ret %CallStack %5, !dbg !484 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*GC::add_finalizer<IO::Encoder>:Nil"(%"IO::Encoder"* %object) #0 !dbg !485 { | |
entry: | |
call void @"*GC::add_finalizer_impl<IO::Encoder>:Nil"(%"IO::Encoder"* %object), !dbg !486 | |
ret void, !dbg !486 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*GC::add_finalizer_impl<IO::Encoder>:Nil"(%"IO::Encoder"* %object) #0 !dbg !487 { | |
alloca: | |
%0 = alloca %"->", !dbg !488 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"IO::Encoder"* %object to i8*, !dbg !488 | |
%2 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !488 | |
store i8* bitcast (void (i8*, i8*)* @"~procProc(Pointer(Void), Pointer(Void), Nil)@/usr/share/crystal/src/gc/boehm.cr:130" to i8*), i8** %2, !dbg !488 | |
%3 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !488 | |
store i8* null, i8** %3, !dbg !488 | |
%4 = load %"->", %"->"* %0, !dbg !488 | |
%5 = call i8* @"~check_proc_is_not_closure"(%"->" %4), !dbg !488 | |
%6 = bitcast i8* %5 to %Nil (i8*, i8*)*, !dbg !488 | |
call void @GC_register_finalizer_ignore_self(i8* %1, %Nil (i8*, i8*)* %6, i8* null, %"->"* null, i8** null), !dbg !489 | |
ret void, !dbg !489 | |
} | |
; Function Attrs: uwtable | |
define internal void @"~procProc(Pointer(Void), Pointer(Void), Nil)@/usr/share/crystal/src/gc/boehm.cr:130"(i8* %obj, i8* %data) #0 !dbg !490 { | |
entry: | |
%0 = bitcast i8* %obj to %"IO::Encoder"*, !dbg !491 | |
call void @"*IO::Encoder#finalize:Nil"(%"IO::Encoder"* %0), !dbg !492 | |
ret void, !dbg !492 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*IO::Encoder#finalize:Nil"(%"IO::Encoder"* %self) #0 !dbg !493 { | |
entry: | |
call void @"*IO::Encoder#close:Nil"(%"IO::Encoder"* %self), !dbg !494 | |
ret void, !dbg !494 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*IO::Encoder#close:Nil"(%"IO::Encoder"* %self) #0 !dbg !495 { | |
entry: | |
%0 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 3, !dbg !496 | |
%1 = load i1, i1* %0, !dbg !496 | |
br i1 %1, label %then, label %else, !dbg !496 | |
then: ; preds = %entry | |
ret void, !dbg !496 | |
else: ; preds = %entry | |
%2 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 3, !dbg !497 | |
store i1 true, i1* %2, !dbg !497 | |
%3 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 2, !dbg !497 | |
call void @"*Iconv#close:Nil"(%Iconv* %3), !dbg !498 | |
ret void, !dbg !498 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Iconv#close:Nil"(%Iconv* %self) #0 !dbg !499 { | |
entry: | |
%0 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 1, !dbg !500 | |
%1 = load i8*, i8** %0, !dbg !500 | |
%2 = call i32 @iconv_close(i8* %1), !dbg !501 | |
%3 = icmp eq i32 %2, -1, !dbg !501 | |
br i1 %3, label %then, label %else, !dbg !501 | |
then: ; preds = %entry | |
%4 = call %Errno* @"*Errno::new<String>:Errno"(%String* bitcast ({ i32, i32, i32, [12 x i8] }* @"'iconv_close'" to %String*)), !dbg !502 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %4), !dbg !503 | |
unreachable, !dbg !503 | |
else: ; preds = %entry | |
ret void, !dbg !503 | |
} | |
declare i32 @iconv_close(i8*) | |
declare void @GC_register_finalizer_ignore_self(i8*, %Nil (i8*, i8*)*, i8*, %"->"*, i8**) | |
; Function Attrs: uwtable | |
define internal void @"*IO::Encoder#write<String::Builder, Slice(UInt8)>:Nil"(%"IO::Encoder"* %self, %"String::Builder"* %io, %"Slice(UInt8)" %slice) #0 !dbg !504 { | |
alloca: | |
%inbuf_ptr = alloca i8*, !dbg !505 | |
%inbytesleft = alloca i64, !dbg !505 | |
%outbuf = alloca [1024 x i8], !dbg !505 | |
%outbuf_ptr = alloca i8*, !dbg !505 | |
%outbytesleft = alloca i64, !dbg !505 | |
%err = alloca i64, !dbg !505 | |
%slice1 = alloca %"Slice(UInt8)", !dbg !505 | |
%0 = alloca %"Slice(UInt8)", !dbg !506 | |
%1 = alloca %"Slice(UInt8)", !dbg !506 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"Slice(UInt8)" %slice, %"Slice(UInt8)"* %slice1, !dbg !505 | |
%2 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %slice1, i32 0, i32 2, !dbg !505 | |
%3 = load i8*, i8** %2, !dbg !505 | |
store i8* %3, i8** %inbuf_ptr, !dbg !507 | |
%4 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %slice1, i32 0, i32 0, !dbg !507 | |
%5 = load i32, i32* %4, !dbg !507 | |
%6 = call i64 @"*UInt64::new<Int32>:UInt64"(i32 %5), !dbg !508 | |
store i64 %6, i64* %inbytesleft, !dbg !509 | |
br label %while, !dbg !509 | |
while: ; preds = %exit2, %entry | |
%7 = load i64, i64* %inbytesleft, !dbg !510 | |
%8 = icmp ugt i64 %7, 0, !dbg !510 | |
%9 = or i1 false, %8, !dbg !510 | |
br i1 %9, label %body, label %exit, !dbg !510 | |
body: ; preds = %while | |
%10 = call i8* @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([1024 x i8]* %outbuf), !dbg !511 | |
store i8* %10, i8** %outbuf_ptr, !dbg !512 | |
%11 = call i32 @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#size:Int32"([1024 x i8]* %outbuf), !dbg !513 | |
%12 = call i64 @"*UInt64::new<Int32>:UInt64"(i32 %11), !dbg !514 | |
store i64 %12, i64* %outbytesleft, !dbg !515 | |
%13 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 2, !dbg !515 | |
%14 = call i64 @"*Iconv#convert<Pointer(Pointer(UInt8)), Pointer(UInt64), Pointer(Pointer(UInt8)), Pointer(UInt64)>:UInt64"(%Iconv* %13, i8** %inbuf_ptr, i64* %inbytesleft, i8** %outbuf_ptr, i64* %outbytesleft), !dbg !516 | |
store i64 %14, i64* %err, !dbg !517 | |
%15 = load i64, i64* %err, !dbg !518 | |
%16 = icmp eq i64 %15, -1, !dbg !518 | |
br i1 %16, label %then, label %else, !dbg !518 | |
exit: ; preds = %while | |
ret void, !dbg !519 | |
then: ; preds = %body | |
%17 = getelementptr inbounds %"IO::Encoder", %"IO::Encoder"* %self, i32 0, i32 2, !dbg !518 | |
%18 = call %"(UInt64 | Nil)" @"*Iconv#handle_invalid<Pointer(Pointer(UInt8)), Pointer(UInt64)>:(UInt64 | Nil)"(%Iconv* %17, i8** %inbuf_ptr, i64* %inbytesleft), !dbg !520 | |
br label %exit2, !dbg !520 | |
else: ; preds = %body | |
br label %exit2, !dbg !520 | |
exit2: ; preds = %else, %then | |
%19 = call %"Slice(UInt8)" @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#to_slice:Slice(UInt8)"([1024 x i8]* %outbuf), !dbg !506 | |
store %"Slice(UInt8)" %19, %"Slice(UInt8)"* %0, !dbg !506 | |
%20 = call i32 @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#size:Int32"([1024 x i8]* %outbuf), !dbg !521 | |
%21 = load i64, i64* %outbytesleft, !dbg !521 | |
%22 = sext i32 %20 to i64, !dbg !521 | |
%23 = sub i64 %22, %21, !dbg !521 | |
%24 = trunc i64 %23 to i32, !dbg !521 | |
%25 = call %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)#[]<Int32, Int32>:Slice(UInt8)"(%"Slice(UInt8)"* %0, i32 0, i32 %24), !dbg !506 | |
store %"Slice(UInt8)" %25, %"Slice(UInt8)"* %1, !dbg !506 | |
%26 = load %"Slice(UInt8)", %"Slice(UInt8)"* %1, !dbg !506 | |
call void @"*String::Builder#write<Slice(UInt8)>:Nil"(%"String::Builder"* %io, %"Slice(UInt8)" %26), !dbg !519 | |
br label %while, !dbg !519 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([1024 x i8]* %self) #0 !dbg !522 { | |
entry: | |
%0 = getelementptr inbounds [1024 x i8], [1024 x i8]* %self, i32 0, i32 0, !dbg !524 | |
ret i8* %0, !dbg !524 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#size:Int32"([1024 x i8]* %self) #0 !dbg !525 { | |
entry: | |
ret i32 1024, !dbg !526 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Iconv#convert<Pointer(Pointer(UInt8)), Pointer(UInt64), Pointer(Pointer(UInt8)), Pointer(UInt64)>:UInt64"(%Iconv* %self, i8** %inbuf, i64* %inbytesleft, i8** %outbuf, i64* %outbytesleft) #0 !dbg !527 { | |
entry: | |
%0 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 1, !dbg !528 | |
%1 = load i8*, i8** %0, !dbg !528 | |
%2 = call i64 @iconv(i8* %1, i8** %inbuf, i64* %inbytesleft, i8** %outbuf, i64* %outbytesleft), !dbg !529 | |
ret i64 %2, !dbg !529 | |
} | |
declare i64 @iconv(i8*, i8**, i64*, i8**, i64*) | |
; Function Attrs: uwtable | |
define internal %"(UInt64 | Nil)" @"*Iconv#handle_invalid<Pointer(Pointer(UInt8)), Pointer(UInt64)>:(UInt64 | Nil)"(%Iconv* %self, i8** %inbuf, i64* %inbytesleft) #0 !dbg !530 { | |
alloca: | |
%__temp_34 = alloca i32, !dbg !531 | |
%0 = alloca %"(UInt64 | Nil)", !dbg !532 | |
%1 = alloca %"(UInt64 | Nil)", !dbg !532 | |
%2 = alloca %"(UInt64 | Nil)", !dbg !533 | |
br label %entry | |
entry: ; preds = %alloca | |
%3 = getelementptr inbounds %Iconv, %Iconv* %self, i32 0, i32 0, !dbg !534 | |
%4 = load i1, i1* %3, !dbg !534 | |
br i1 %4, label %then, label %else, !dbg !534 | |
then: ; preds = %entry | |
%5 = load i64, i64* %inbytesleft, !dbg !535 | |
%6 = icmp ugt i64 %5, 0, !dbg !535 | |
%7 = or i1 false, %6, !dbg !535 | |
br i1 %7, label %then1, label %else2, !dbg !535 | |
else: ; preds = %entry | |
%8 = call i32 @"*Errno::value:Int32"(), !dbg !536 | |
store i32 %8, i32* %__temp_34, !dbg !536 | |
%9 = load i32, i32* %__temp_34, !dbg !537 | |
%10 = call i1 @"*Int32@Object#===<Int32>:Bool"(i32 22, i32 %9), !dbg !537 | |
br i1 %10, label %then4, label %else5, !dbg !537 | |
then1: ; preds = %then | |
%11 = load i8*, i8** %inbuf, !dbg !535 | |
%12 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %11, i32 1), !dbg !532 | |
store i8* %12, i8** %inbuf, !dbg !532 | |
%13 = load i64, i64* %inbytesleft, !dbg !532 | |
%14 = sub i64 %13, 1, !dbg !532 | |
store i64 %14, i64* %inbytesleft, !dbg !532 | |
%15 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %0, i32 0, i32 0, !dbg !532 | |
store i32 163, i32* %15, !dbg !532 | |
%16 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %0, i32 0, i32 1, !dbg !532 | |
%17 = bitcast [1 x i64]* %16 to i64*, !dbg !532 | |
store i64 %14, i64* %17, !dbg !532 | |
br label %exit, !dbg !532 | |
else2: ; preds = %then | |
%18 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %1, i32 0, i32 0, !dbg !532 | |
store i32 0, i32* %18, !dbg !532 | |
%19 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %1, i32 0, i32 1, !dbg !532 | |
store [1 x i64] zeroinitializer, [1 x i64]* %19, !dbg !532 | |
br label %exit, !dbg !532 | |
exit: ; preds = %else2, %then1 | |
%20 = phi %"(UInt64 | Nil)"* [ %0, %then1 ], [ %1, %else2 ], !dbg !532 | |
br label %exit3, !dbg !532 | |
exit3: ; preds = %else7, %exit | |
%21 = phi %"(UInt64 | Nil)"* [ %20, %exit ], [ %2, %else7 ], !dbg !533 | |
%22 = load %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %21, !dbg !533 | |
ret %"(UInt64 | Nil)" %22, !dbg !533 | |
then4: ; preds = %else | |
%23 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [30 x i8] }* @"'Incomplete multibyt...'" to %String*)), !dbg !538 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %23), !dbg !539 | |
unreachable, !dbg !539 | |
else5: ; preds = %else | |
%24 = load i32, i32* %__temp_34, !dbg !540 | |
%25 = call i1 @"*Int32@Object#===<Int32>:Bool"(i32 84, i32 %24), !dbg !540 | |
br i1 %25, label %then6, label %else7, !dbg !540 | |
then6: ; preds = %else5 | |
%26 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [27 x i8] }* @"'Invalid multibyte s...'" to %String*)), !dbg !541 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %26), !dbg !533 | |
unreachable, !dbg !533 | |
else7: ; preds = %else5 | |
%27 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %2, i32 0, i32 0, !dbg !533 | |
store i32 0, i32* %27, !dbg !533 | |
%28 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %2, i32 0, i32 1, !dbg !533 | |
store [1 x i64] zeroinitializer, [1 x i64]* %28, !dbg !533 | |
br label %exit3, !dbg !533 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Int32@Object#===<Int32>:Bool"(i32 %self, i32 %other) #0 !dbg !542 { | |
entry: | |
%0 = icmp eq i32 %self, %other, !dbg !544 | |
ret i1 %0, !dbg !544 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#to_slice:Slice(UInt8)"([1024 x i8]* %self) #0 !dbg !545 { | |
alloca: | |
%0 = alloca %"Slice(UInt8)", !dbg !546 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i8* @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([1024 x i8]* %self), !dbg !547 | |
%2 = call i32 @"*StaticArray(UInt8, 1024)@StaticArray(T, N)#size:Int32"([1024 x i8]* %self), !dbg !548 | |
%3 = call %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* %1, i32 %2), !dbg !546 | |
store %"Slice(UInt8)" %3, %"Slice(UInt8)"* %0, !dbg !546 | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !546 | |
ret %"Slice(UInt8)" %4, !dbg !546 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* %__arg0, i32 %__arg1) #0 !dbg !549 { | |
alloca: | |
%_ = alloca %"Slice(UInt8)", !dbg !550 | |
%0 = alloca %"Slice(UInt8)", !dbg !550 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Slice(UInt8)"* %0 to i8*, !dbg !550 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%"Slice(UInt8)"* getelementptr (%"Slice(UInt8)", %"Slice(UInt8)"* null, i32 1) to i32), i32 4, i1 false), !dbg !550 | |
%2 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !550 | |
store %"Slice(UInt8)" %2, %"Slice(UInt8)"* %_, !dbg !550 | |
%3 = call i32 @"*Slice(UInt8)@Slice(T)#initialize<Pointer(UInt8), Int32>:Int32"(%"Slice(UInt8)"* %_, i8* %__arg0, i32 %__arg1), !dbg !550 | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %_, !dbg !550 | |
ret %"Slice(UInt8)" %4, !dbg !550 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Slice(UInt8)@Slice(T)#initialize<Pointer(UInt8), Int32>:Int32"(%"Slice(UInt8)"* %self, i8* %pointer, i32 %size) #0 !dbg !551 { | |
alloca: | |
%read_only = alloca i1, !dbg !552 | |
br label %entry | |
entry: ; preds = %alloca | |
store i1 false, i1* %read_only, !dbg !553 | |
%0 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 2, !dbg !554 | |
store i8* %pointer, i8** %0, !dbg !554 | |
%1 = load i1, i1* %read_only, !dbg !554 | |
%2 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 1, !dbg !553 | |
store i1 %1, i1* %2, !dbg !553 | |
%3 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 0, !dbg !555 | |
store i32 %size, i32* %3, !dbg !555 | |
ret i32 %size, !dbg !555 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)#[]<Int32, Int32>:Slice(UInt8)"(%"Slice(UInt8)"* %self, i32 %start, i32 %count) #0 !dbg !556 { | |
alloca: | |
%__temp_35 = alloca i1, !dbg !557 | |
%__temp_37 = alloca i1, !dbg !557 | |
%0 = alloca %"Slice(UInt8)", !dbg !558 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = icmp sle i32 0, %start, !dbg !559 | |
store i1 %1, i1* %__temp_35, !dbg !559 | |
br i1 %1, label %then1, label %else2, !dbg !559 | |
then: ; preds = %exit | |
br label %exit3, !dbg !559 | |
else: ; preds = %exit | |
%2 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !560 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %2), !dbg !561 | |
unreachable, !dbg !561 | |
then1: ; preds = %entry | |
%3 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 0, !dbg !559 | |
%4 = load i32, i32* %3, !dbg !559 | |
%5 = icmp sle i32 %start, %4, !dbg !559 | |
br label %exit, !dbg !559 | |
else2: ; preds = %entry | |
%6 = load i1, i1* %__temp_35, !dbg !559 | |
br label %exit, !dbg !559 | |
exit: ; preds = %else2, %then1 | |
%7 = phi i1 [ %5, %then1 ], [ %6, %else2 ], !dbg !559 | |
br i1 %7, label %then, label %else, !dbg !559 | |
exit3: ; preds = %then | |
%8 = icmp sle i32 0, %count, !dbg !562 | |
store i1 %8, i1* %__temp_37, !dbg !562 | |
br i1 %8, label %then6, label %else7, !dbg !562 | |
then4: ; preds = %exit8 | |
br label %exit9, !dbg !562 | |
else5: ; preds = %exit8 | |
%9 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !563 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %9), !dbg !564 | |
unreachable, !dbg !564 | |
then6: ; preds = %exit3 | |
%10 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 0, !dbg !562 | |
%11 = load i32, i32* %10, !dbg !562 | |
%12 = sub i32 %11, %start, !dbg !562 | |
%13 = icmp sle i32 %count, %12, !dbg !562 | |
br label %exit8, !dbg !562 | |
else7: ; preds = %exit3 | |
%14 = load i1, i1* %__temp_37, !dbg !562 | |
br label %exit8, !dbg !562 | |
exit8: ; preds = %else7, %then6 | |
%15 = phi i1 [ %13, %then6 ], [ %14, %else7 ], !dbg !562 | |
br i1 %15, label %then4, label %else5, !dbg !562 | |
exit9: ; preds = %then4 | |
%16 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 2, !dbg !564 | |
%17 = load i8*, i8** %16, !dbg !564 | |
%18 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %17, i32 %start), !dbg !565 | |
%19 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 1, !dbg !565 | |
%20 = load i1, i1* %19, !dbg !565 | |
%21 = call %"Slice(UInt8)" @"*Slice(T)::new:read_only<Pointer(UInt8), Int32, Bool>:Slice(UInt8)"(i8* %18, i32 %count, i1 %20), !dbg !558 | |
store %"Slice(UInt8)" %21, %"Slice(UInt8)"* %0, !dbg !558 | |
%22 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !558 | |
ret %"Slice(UInt8)" %22, !dbg !558 | |
} | |
; Function Attrs: uwtable | |
define internal %IndexError* @"*IndexError::new:IndexError"() #0 !dbg !566 { | |
alloca: | |
%_ = alloca %IndexError*, !dbg !567 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%IndexError* getelementptr (%IndexError, %IndexError* null, i32 1) to i64)), !dbg !567 | |
%1 = bitcast i8* %0 to %IndexError*, !dbg !567 | |
%2 = bitcast %IndexError* %1 to i8*, !dbg !567 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%IndexError* getelementptr (%IndexError, %IndexError* null, i32 1) to i32), i32 4, i1 false), !dbg !567 | |
%3 = getelementptr inbounds %IndexError, %IndexError* %1, i32 0, i32 0, !dbg !567 | |
store i32 38, i32* %3, !dbg !567 | |
store %IndexError* %1, %IndexError** %_, !dbg !567 | |
%4 = load %IndexError*, %IndexError** %_, !dbg !567 | |
call void @"*IndexError#initialize:Nil"(%IndexError* %4), !dbg !567 | |
%5 = load %IndexError*, %IndexError** %_, !dbg !567 | |
ret %IndexError* %5, !dbg !567 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*IndexError#initialize:Nil"(%IndexError* %self) #0 !dbg !568 { | |
alloca: | |
%message = alloca %String*, !dbg !569 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* bitcast ({ i32, i32, i32, [20 x i8] }* @"'Index out of bounds...'" to %String*), %String** %message, !dbg !570 | |
%0 = load %String*, %String** %message, !dbg !570 | |
call void @"*IndexError#initialize<String>:Nil"(%IndexError* %self, %String* %0), !dbg !569 | |
ret void, !dbg !569 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*IndexError#initialize<String>:Nil"(%IndexError* %self, %String* %message) #0 !dbg !571 { | |
entry: | |
call void @"*IndexError@Exception#initialize<String>:Nil"(%IndexError* %self, %String* %message), !dbg !572 | |
ret void, !dbg !572 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*IndexError@Exception#initialize<String>:Nil"(%IndexError* %self, %String* %message) #0 !dbg !573 { | |
alloca: | |
%cause = alloca %Nil, !dbg !574 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %IndexError, %IndexError* %self, i32 0, i32 1, !dbg !575 | |
store %String* %message, %String** %0, !dbg !575 | |
%1 = load %Nil, %Nil* %cause, !dbg !575 | |
%2 = getelementptr inbounds %IndexError, %IndexError* %self, i32 0, i32 2, !dbg !576 | |
store i32* null, i32** %2, !dbg !576 | |
ret void, !dbg !576 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<IndexError>:NoReturn"(%IndexError* %exception) #1 !dbg !577 { | |
alloca: | |
%__temp_36 = alloca %"(CallStack | Nil)", !dbg !578 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !578 | |
%0 = alloca %CallStack, !dbg !578 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %IndexError, %IndexError* %exception, i32 0, i32 3, !dbg !578 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !578 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_36, !dbg !578 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !578 | |
%4 = load i32, i32* %3, !dbg !578 | |
%5 = icmp eq i32 %4, 0, !dbg !578 | |
%6 = xor i1 %5, true, !dbg !578 | |
%7 = and i1 true, %6, !dbg !578 | |
br i1 %7, label %then, label %else, !dbg !578 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_36, i32 0, i32 1, !dbg !578 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !578 | |
br label %exit, !dbg !578 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !578 | |
store %CallStack %10, %CallStack* %0, !dbg !578 | |
%11 = load %CallStack, %CallStack* %0, !dbg !578 | |
%12 = call %CallStack @"*IndexError@Exception#callstack=<CallStack>:CallStack"(%IndexError* %exception, %CallStack %11), !dbg !578 | |
br label %exit, !dbg !578 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !578 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !578 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !578 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !578 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !578 | |
store i64 %15, i64* %16, !dbg !578 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !578 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !578 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !578 | |
store i64 %18, i64* %19, !dbg !578 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !578 | |
%21 = ptrtoint %IndexError* %exception to i64, !dbg !578 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !578 | |
store i64 %21, i64* %22, !dbg !578 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !578 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !578 | |
store i32 38, i32* %24, !dbg !578 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !578 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !578 | |
unreachable, !dbg !578 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*IndexError@Exception#callstack=<CallStack>:CallStack"(%IndexError* %self, %CallStack %callstack) #0 !dbg !579 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !580 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !580 | |
%0 = getelementptr inbounds %IndexError, %IndexError* %self, i32 0, i32 3, !dbg !581 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !581 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !581 | |
store i32 353, i32* %2, !dbg !581 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !581 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !581 | |
store %CallStack %1, %CallStack* %4, !dbg !581 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !581 | |
ret %CallStack %5, !dbg !581 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*String::Builder#write<Slice(UInt8)>:Nil"(%"String::Builder"* %self, %"Slice(UInt8)" %slice) #0 !dbg !582 { | |
alloca: | |
%count = alloca i32, !dbg !583 | |
%new_bytesize = alloca i32, !dbg !583 | |
%slice1 = alloca %"Slice(UInt8)", !dbg !583 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"Slice(UInt8)" %slice, %"Slice(UInt8)"* %slice1, !dbg !583 | |
%0 = call i1 @"*Slice(UInt8)@Indexable(T)#empty?:Bool"(%"Slice(UInt8)"* %slice1), !dbg !584 | |
br i1 %0, label %then, label %else, !dbg !584 | |
then: ; preds = %entry | |
ret void, !dbg !584 | |
else: ; preds = %entry | |
%1 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %slice1, i32 0, i32 0, !dbg !584 | |
%2 = load i32, i32* %1, !dbg !584 | |
store i32 %2, i32* %count, !dbg !585 | |
%3 = call i32 @"*String::Builder#real_bytesize:Int32"(%"String::Builder"* %self), !dbg !586 | |
%4 = load i32, i32* %count, !dbg !586 | |
%5 = add i32 %3, %4, !dbg !586 | |
store i32 %5, i32* %new_bytesize, !dbg !587 | |
%6 = load i32, i32* %new_bytesize, !dbg !588 | |
%7 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !588 | |
%8 = load i32, i32* %7, !dbg !588 | |
%9 = icmp sgt i32 %6, %8, !dbg !588 | |
br i1 %9, label %then2, label %else3, !dbg !588 | |
then2: ; preds = %else | |
%10 = load i32, i32* %new_bytesize, !dbg !588 | |
%11 = call i32 @"*Math@Math::pw2ceil<Int32>:Int32"(i32 %10), !dbg !589 | |
%12 = call i8* @"*String::Builder#resize_to_capacity<Int32>:Pointer(UInt8)"(%"String::Builder"* %self, i32 %11), !dbg !590 | |
br label %exit, !dbg !590 | |
else3: ; preds = %else | |
br label %exit, !dbg !590 | |
exit: ; preds = %else3, %then2 | |
%13 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !590 | |
%14 = load i8*, i8** %13, !dbg !590 | |
%15 = call i32 @"*String::Builder#real_bytesize:Int32"(%"String::Builder"* %self), !dbg !591 | |
%16 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %14, i32 %15), !dbg !592 | |
%17 = load i32, i32* %count, !dbg !592 | |
%18 = call i8* @"*Slice(UInt8)@Slice(T)#copy_to<Pointer(UInt8), Int32>:Pointer(UInt8)"(%"Slice(UInt8)"* %slice1, i8* %16, i32 %17), !dbg !593 | |
%19 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !593 | |
%20 = load i32, i32* %19, !dbg !593 | |
%21 = load i32, i32* %count, !dbg !593 | |
%22 = add i32 %20, %21, !dbg !593 | |
%23 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !594 | |
store i32 %22, i32* %23, !dbg !594 | |
ret void, !dbg !594 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Slice(UInt8)@Indexable(T)#empty?:Bool"(%"Slice(UInt8)"* %self) #0 !dbg !595 { | |
entry: | |
%0 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 0, !dbg !597 | |
%1 = load i32, i32* %0, !dbg !597 | |
%2 = icmp eq i32 %1, 0, !dbg !597 | |
ret i1 %2, !dbg !597 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Slice(UInt8)@Slice(T)#copy_to<Pointer(UInt8), Int32>:Pointer(UInt8)"(%"Slice(UInt8)"* %self, i8* %target, i32 %count) #0 !dbg !598 { | |
entry: | |
%0 = call i8* @"*Slice(UInt8)@Slice(T)#pointer<Int32>:Pointer(UInt8)"(%"Slice(UInt8)"* %self, i32 %count), !dbg !599 | |
%1 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_to<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %0, i8* %target, i32 %count), !dbg !599 | |
ret i8* %1, !dbg !599 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Slice(UInt8)@Slice(T)#pointer<Int32>:Pointer(UInt8)"(%"Slice(UInt8)"* %self, i32 %size) #0 !dbg !600 { | |
alloca: | |
%__temp_38 = alloca i1, !dbg !601 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = icmp sle i32 0, %size, !dbg !602 | |
store i1 %0, i1* %__temp_38, !dbg !602 | |
br i1 %0, label %then1, label %else2, !dbg !602 | |
then: ; preds = %exit | |
br label %exit3, !dbg !602 | |
else: ; preds = %exit | |
%1 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !603 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %1), !dbg !604 | |
unreachable, !dbg !604 | |
then1: ; preds = %entry | |
%2 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 0, !dbg !602 | |
%3 = load i32, i32* %2, !dbg !602 | |
%4 = icmp sle i32 %size, %3, !dbg !602 | |
br label %exit, !dbg !602 | |
else2: ; preds = %entry | |
%5 = load i1, i1* %__temp_38, !dbg !602 | |
br label %exit, !dbg !602 | |
exit: ; preds = %else2, %then1 | |
%6 = phi i1 [ %4, %then1 ], [ %5, %else2 ], !dbg !602 | |
br i1 %6, label %then, label %else, !dbg !602 | |
exit3: ; preds = %then | |
%7 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %self, i32 0, i32 2, !dbg !604 | |
%8 = load i8*, i8** %7, !dbg !604 | |
ret i8* %8, !dbg !604 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#copy_to<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %self, i8* %target, i32 %count) #0 !dbg !605 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_from_impl<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %target, i8* %self, i32 %count), !dbg !606 | |
ret i8* %0, !dbg !606 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#copy_from_impl<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %self, i8* %source, i32 %count) #0 !dbg !607 { | |
alloca: | |
%count1 = alloca i32, !dbg !608 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %count, i32* %count1, !dbg !608 | |
%0 = load i32, i32* %count1, !dbg !609 | |
%1 = icmp slt i32 %0, 0, !dbg !609 | |
br i1 %1, label %then, label %else, !dbg !609 | |
then: ; preds = %entry | |
%2 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [15 x i8] }* @"'Negative count'" to %String*)), !dbg !610 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %2), !dbg !609 | |
unreachable, !dbg !609 | |
else: ; preds = %entry | |
%3 = call i1 @"*Pointer(UInt8)@Object::==<Pointer(UInt8).class>:Bool"(i32 722, i32 722), !dbg !611 | |
br i1 %3, label %then2, label %else3, !dbg !611 | |
then2: ; preds = %else | |
%4 = load i32, i32* %count1, !dbg !611 | |
%5 = call i64 @"*Pointer(UInt8)@Pointer(T)#bytesize<Int32>:UInt64"(i8* %self, i32 %4), !dbg !612 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %self, i8* %source, i64 %5, i32 0, i1 false), !dbg !613 | |
br label %exit, !dbg !613 | |
else3: ; preds = %else | |
br label %while, !dbg !613 | |
exit: ; preds = %exit4, %then2 | |
ret i8* %self, !dbg !614 | |
while: ; preds = %body, %else3 | |
%6 = load i32, i32* %count1, !dbg !615 | |
%7 = sub i32 %6, 1, !dbg !615 | |
store i32 %7, i32* %count1, !dbg !616 | |
%8 = icmp sge i32 %7, 0, !dbg !616 | |
br i1 %8, label %body, label %exit4, !dbg !616 | |
body: ; preds = %while | |
%9 = load i32, i32* %count1, !dbg !616 | |
%10 = load i32, i32* %count1, !dbg !616 | |
%11 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %source, i32 %10), !dbg !617 | |
%12 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %self, i32 %9, i8 %11), !dbg !614 | |
br label %while, !dbg !614 | |
exit4: ; preds = %while | |
br label %exit, !dbg !614 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Pointer(UInt8)@Pointer(T)#bytesize<Int32>:UInt64"(i8* %self, i32 %count) #0 !dbg !618 { | |
entry: | |
%0 = sext i32 %count to i64, !dbg !619 | |
%1 = mul i64 %0, 1, !dbg !619 | |
ret i64 %1, !dbg !619 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %self, i32 %offset) #0 !dbg !620 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %self, i32 %offset), !dbg !621 | |
%1 = load i8, i8* %0, !dbg !621 | |
ret i8 %1, !dbg !621 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Errno@Exception#initialize<String>:Nil"(%Errno* %self, %String* %message) #0 !dbg !622 { | |
alloca: | |
%cause = alloca %Nil, !dbg !623 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 1, !dbg !624 | |
store %String* %message, %String** %0, !dbg !624 | |
%1 = load %Nil, %Nil* %cause, !dbg !624 | |
%2 = getelementptr inbounds %Errno, %Errno* %self, i32 0, i32 2, !dbg !625 | |
store i32* null, i32** %2, !dbg !625 | |
ret void, !dbg !625 | |
} | |
declare void @free(i8*) | |
; Function Attrs: uwtable | |
define internal i1 @"*String#ends_with?<Char>:Bool"(%String* %self, i32 %char) #0 !dbg !626 { | |
alloca: | |
%__temp_240 = alloca i1, !dbg !627 | |
%__temp_241 = alloca %"Tuple(StaticArray(UInt8, 4), Int32)", !dbg !627 | |
%bytes = alloca [4 x i8], !dbg !627 | |
%count = alloca i32, !dbg !627 | |
%0 = alloca %"Tuple(StaticArray(UInt8, 4), Int32)", !dbg !628 | |
%i = alloca i32, !dbg !629 | |
%i8 = alloca i32, !dbg !629 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !630 | |
%2 = load i32, i32* %1, !dbg !630 | |
%3 = icmp sgt i32 %2, 0, !dbg !630 | |
br i1 %3, label %then, label %else, !dbg !630 | |
then: ; preds = %entry | |
br label %exit, !dbg !630 | |
else: ; preds = %entry | |
ret i1 false, !dbg !630 | |
exit: ; preds = %then | |
%4 = call i1 @"*Char#ascii?:Bool"(i32 %char), !dbg !631 | |
store i1 %4, i1* %__temp_240, !dbg !631 | |
br i1 %4, label %then3, label %else4, !dbg !631 | |
then1: ; preds = %exit5 | |
%5 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !632 | |
%6 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !632 | |
%7 = load i32, i32* %6, !dbg !632 | |
%8 = sub i32 %7, 1, !dbg !632 | |
%9 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %5, i32 %8), !dbg !632 | |
%10 = zext i8 %9 to i32, !dbg !632 | |
%11 = icmp sge i32 %char, 0, !dbg !632 | |
%12 = icmp eq i32 %10, %char, !dbg !632 | |
%13 = and i1 %11, %12, !dbg !632 | |
ret i1 %13, !dbg !632 | |
else2: ; preds = %exit5 | |
%14 = call %"Tuple(StaticArray(UInt8, 4), Int32)" @"*String::char_bytes_and_bytesize<Char>:Tuple(StaticArray(UInt8, 4), Int32)"(i32 %char), !dbg !628 | |
store %"Tuple(StaticArray(UInt8, 4), Int32)" %14, %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, !dbg !628 | |
%15 = load %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, !dbg !628 | |
store %"Tuple(StaticArray(UInt8, 4), Int32)" %15, %"Tuple(StaticArray(UInt8, 4), Int32)"* %__temp_241, !dbg !628 | |
%16 = getelementptr inbounds %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %__temp_241, i32 0, i32 0, !dbg !628 | |
%17 = load [4 x i8], [4 x i8]* %16, !dbg !633 | |
store [4 x i8] %17, [4 x i8]* %bytes, !dbg !633 | |
%18 = getelementptr inbounds %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %__temp_241, i32 0, i32 1, !dbg !633 | |
%19 = load i32, i32* %18, !dbg !633 | |
store i32 %19, i32* %count, !dbg !634 | |
%20 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !635 | |
%21 = load i32, i32* %20, !dbg !635 | |
%22 = load i32, i32* %count, !dbg !635 | |
%23 = icmp slt i32 %21, %22, !dbg !635 | |
br i1 %23, label %then6, label %else7, !dbg !635 | |
then3: ; preds = %exit | |
%24 = load i1, i1* %__temp_240, !dbg !631 | |
br label %exit5, !dbg !631 | |
else4: ; preds = %exit | |
%25 = call i1 @"*String#ascii_only?:Bool"(%String* %self), !dbg !636 | |
br label %exit5, !dbg !636 | |
exit5: ; preds = %else4, %then3 | |
%26 = phi i1 [ %24, %then3 ], [ %25, %else4 ], !dbg !636 | |
br i1 %26, label %then1, label %else2, !dbg !636 | |
then6: ; preds = %else2 | |
ret i1 false, !dbg !635 | |
else7: ; preds = %else2 | |
%27 = load i32, i32* %count, !dbg !635 | |
%28 = xor i32 %27, %27, !dbg !629 | |
store i32 %28, i32* %i8, !dbg !637 | |
br label %while, !dbg !637 | |
while: ; preds = %exit12, %else7 | |
%29 = load i32, i32* %i8, !dbg !638 | |
%30 = icmp slt i32 %29, %27, !dbg !638 | |
br i1 %30, label %body, label %exit9, !dbg !638 | |
body: ; preds = %while | |
%31 = load i32, i32* %i8, !dbg !638 | |
store i32 %31, i32* %i, !dbg !638 | |
%32 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !639 | |
%33 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !639 | |
%34 = load i32, i32* %33, !dbg !639 | |
%35 = load i32, i32* %count, !dbg !639 | |
%36 = sub i32 %34, %35, !dbg !639 | |
%37 = load i32, i32* %i, !dbg !639 | |
%38 = add i32 %36, %37, !dbg !639 | |
%39 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %32, i32 %38), !dbg !639 | |
%40 = load i32, i32* %i, !dbg !639 | |
%41 = call i8 @"*StaticArray(UInt8, 4)@Indexable(T)#[]<Int32>:UInt8"([4 x i8]* %bytes, i32 %40), !dbg !640 | |
%42 = icmp eq i8 %39, %41, !dbg !640 | |
br i1 %42, label %then10, label %else11, !dbg !640 | |
exit9: ; preds = %while | |
ret i1 true, !dbg !641 | |
then10: ; preds = %body | |
br label %exit12, !dbg !640 | |
else11: ; preds = %body | |
ret i1 false, !dbg !640 | |
exit12: ; preds = %then10 | |
%43 = load i32, i32* %i8, !dbg !640 | |
%44 = add i32 %43, 1, !dbg !640 | |
store i32 %44, i32* %i8, !dbg !641 | |
br label %while, !dbg !641 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Char#ascii?:Bool"(i32 %self) #0 !dbg !642 { | |
entry: | |
%0 = icmp slt i32 %self, 128, !dbg !644 | |
ret i1 %0, !dbg !644 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*String#ascii_only?:Bool"(%String* %self) #0 !dbg !645 { | |
entry: | |
%0 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !646 | |
%1 = load i32, i32* %0, !dbg !646 | |
%2 = call i32 @"*String#size:Int32"(%String* %self), !dbg !647 | |
%3 = icmp eq i32 %1, %2, !dbg !647 | |
ret i1 %3, !dbg !647 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*String#size:Int32"(%String* %self) #0 !dbg !648 { | |
alloca: | |
%__temp_65 = alloca i1, !dbg !649 | |
%byte_index = alloca i32, !dbg !650 | |
%char_index = alloca i32, !dbg !650 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %String, %String* %self, i32 0, i32 2, !dbg !651 | |
%1 = load i32, i32* %0, !dbg !651 | |
%2 = icmp sgt i32 %1, 0, !dbg !651 | |
store i1 %2, i1* %__temp_65, !dbg !651 | |
br i1 %2, label %then1, label %else2, !dbg !651 | |
then: ; preds = %exit | |
%3 = getelementptr inbounds %String, %String* %self, i32 0, i32 2, !dbg !651 | |
%4 = load i32, i32* %3, !dbg !651 | |
ret i32 %4, !dbg !651 | |
else: ; preds = %exit | |
store i32 0, i32* %byte_index, !dbg !652 | |
store i32 0, i32* %char_index, !dbg !653 | |
br label %while, !dbg !653 | |
then1: ; preds = %entry | |
%5 = load i1, i1* %__temp_65, !dbg !651 | |
br label %exit, !dbg !651 | |
else2: ; preds = %entry | |
%6 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !651 | |
%7 = load i32, i32* %6, !dbg !651 | |
%8 = icmp eq i32 %7, 0, !dbg !651 | |
br label %exit, !dbg !651 | |
exit: ; preds = %else2, %then1 | |
%9 = phi i1 [ %5, %then1 ], [ %8, %else2 ], !dbg !651 | |
br i1 %9, label %then, label %else, !dbg !651 | |
while: ; preds = %body, %else | |
%10 = load i32, i32* %byte_index, !dbg !654 | |
%11 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !654 | |
%12 = load i32, i32* %11, !dbg !654 | |
%13 = icmp slt i32 %10, %12, !dbg !654 | |
br i1 %13, label %body, label %exit3, !dbg !654 | |
body: ; preds = %while | |
%14 = load i32, i32* %byte_index, !dbg !654 | |
%15 = load i32, i32* %char_index, !dbg !654 | |
%16 = load i32, i32* %byte_index, !dbg !654 | |
%17 = load i32, i32* %byte_index, !dbg !654 | |
%18 = call i32 @"*String#char_bytesize_at<Int32>:Int32"(%String* %self, i32 %17), !dbg !655 | |
%19 = add i32 %16, %18, !dbg !655 | |
store i32 %19, i32* %byte_index, !dbg !656 | |
%20 = load i32, i32* %char_index, !dbg !656 | |
%21 = add i32 %20, 1, !dbg !656 | |
store i32 %21, i32* %char_index, !dbg !657 | |
br label %while, !dbg !657 | |
exit3: ; preds = %while | |
%22 = load i32, i32* %char_index, !dbg !657 | |
%23 = getelementptr inbounds %String, %String* %self, i32 0, i32 2, !dbg !658 | |
store i32 %22, i32* %23, !dbg !658 | |
ret i32 %22, !dbg !658 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*String#char_bytesize_at<Int32>:Int32"(%String* %self, i32 %byte_index) #0 !dbg !659 { | |
alloca: | |
%first = alloca i8, !dbg !660 | |
%second = alloca i8, !dbg !660 | |
%third = alloca i8, !dbg !660 | |
%__temp_66 = alloca i1, !dbg !660 | |
%__temp_67 = alloca i1, !dbg !660 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8 @"*String#unsafe_byte_at<Int32>:UInt8"(%String* %self, i32 %byte_index), !dbg !661 | |
store i8 %0, i8* %first, !dbg !662 | |
%1 = load i8, i8* %first, !dbg !663 | |
%2 = zext i8 %1 to i32, !dbg !663 | |
%3 = icmp slt i32 %2, 128, !dbg !663 | |
%4 = and i1 true, %3, !dbg !663 | |
br i1 %4, label %then, label %else, !dbg !663 | |
then: ; preds = %entry | |
ret i32 1, !dbg !663 | |
else: ; preds = %entry | |
%5 = load i8, i8* %first, !dbg !664 | |
%6 = zext i8 %5 to i32, !dbg !664 | |
%7 = icmp slt i32 %6, 194, !dbg !664 | |
%8 = and i1 true, %7, !dbg !664 | |
br i1 %8, label %then1, label %else2, !dbg !664 | |
then1: ; preds = %else | |
ret i32 1, !dbg !664 | |
else2: ; preds = %else | |
%9 = add i32 %byte_index, 1, !dbg !664 | |
%10 = call i8 @"*String#unsafe_byte_at<Int32>:UInt8"(%String* %self, i32 %9), !dbg !665 | |
store i8 %10, i8* %second, !dbg !666 | |
%11 = load i8, i8* %second, !dbg !667 | |
%12 = zext i8 %11 to i32, !dbg !667 | |
%13 = and i32 %12, 192, !dbg !667 | |
%14 = trunc i32 %13 to i8, !dbg !667 | |
%15 = zext i8 %14 to i32, !dbg !667 | |
%16 = icmp ne i32 %15, 128, !dbg !667 | |
%17 = or i1 false, %16, !dbg !667 | |
br i1 %17, label %then3, label %else4, !dbg !667 | |
then3: ; preds = %else2 | |
ret i32 1, !dbg !667 | |
else4: ; preds = %else2 | |
%18 = load i8, i8* %first, !dbg !668 | |
%19 = zext i8 %18 to i32, !dbg !668 | |
%20 = icmp slt i32 %19, 224, !dbg !668 | |
%21 = and i1 true, %20, !dbg !668 | |
br i1 %21, label %then5, label %else6, !dbg !668 | |
then5: ; preds = %else4 | |
ret i32 2, !dbg !668 | |
else6: ; preds = %else4 | |
%22 = add i32 %byte_index, 2, !dbg !668 | |
%23 = call i8 @"*String#unsafe_byte_at<Int32>:UInt8"(%String* %self, i32 %22), !dbg !669 | |
store i8 %23, i8* %third, !dbg !670 | |
%24 = load i8, i8* %third, !dbg !671 | |
%25 = zext i8 %24 to i32, !dbg !671 | |
%26 = and i32 %25, 192, !dbg !671 | |
%27 = trunc i32 %26 to i8, !dbg !671 | |
%28 = zext i8 %27 to i32, !dbg !671 | |
%29 = icmp ne i32 %28, 128, !dbg !671 | |
%30 = or i1 false, %29, !dbg !671 | |
br i1 %30, label %then7, label %else8, !dbg !671 | |
then7: ; preds = %else6 | |
ret i32 2, !dbg !671 | |
else8: ; preds = %else6 | |
%31 = load i8, i8* %first, !dbg !672 | |
%32 = zext i8 %31 to i32, !dbg !672 | |
%33 = icmp slt i32 %32, 240, !dbg !672 | |
%34 = and i1 true, %33, !dbg !672 | |
br i1 %34, label %then9, label %else10, !dbg !672 | |
then9: ; preds = %else8 | |
ret i32 3, !dbg !672 | |
else10: ; preds = %else8 | |
%35 = load i8, i8* %first, !dbg !673 | |
%36 = zext i8 %35 to i32, !dbg !673 | |
%37 = icmp eq i32 %36, 240, !dbg !673 | |
%38 = and i1 true, %37, !dbg !673 | |
store i1 %38, i1* %__temp_66, !dbg !673 | |
br i1 %38, label %then13, label %else14, !dbg !673 | |
then11: ; preds = %exit | |
ret i32 3, !dbg !673 | |
else12: ; preds = %exit | |
%39 = load i8, i8* %first, !dbg !674 | |
%40 = zext i8 %39 to i32, !dbg !674 | |
%41 = icmp eq i32 %40, 244, !dbg !674 | |
%42 = and i1 true, %41, !dbg !674 | |
store i1 %42, i1* %__temp_67, !dbg !674 | |
br i1 %42, label %then17, label %else18, !dbg !674 | |
then13: ; preds = %else10 | |
%43 = load i8, i8* %second, !dbg !673 | |
%44 = zext i8 %43 to i32, !dbg !673 | |
%45 = icmp slt i32 %44, 144, !dbg !673 | |
%46 = and i1 true, %45, !dbg !673 | |
br label %exit, !dbg !673 | |
else14: ; preds = %else10 | |
%47 = load i1, i1* %__temp_66, !dbg !673 | |
br label %exit, !dbg !673 | |
exit: ; preds = %else14, %then13 | |
%48 = phi i1 [ %46, %then13 ], [ %47, %else14 ], !dbg !673 | |
br i1 %48, label %then11, label %else12, !dbg !673 | |
then15: ; preds = %exit19 | |
ret i32 3, !dbg !674 | |
else16: ; preds = %exit19 | |
ret i32 4, !dbg !674 | |
then17: ; preds = %else12 | |
%49 = load i8, i8* %second, !dbg !674 | |
%50 = zext i8 %49 to i32, !dbg !674 | |
%51 = icmp sge i32 %50, 144, !dbg !674 | |
%52 = or i1 false, %51, !dbg !674 | |
br label %exit19, !dbg !674 | |
else18: ; preds = %else12 | |
%53 = load i1, i1* %__temp_67, !dbg !674 | |
br label %exit19, !dbg !674 | |
exit19: ; preds = %else18, %then17 | |
%54 = phi i1 [ %52, %then17 ], [ %53, %else18 ], !dbg !674 | |
br i1 %54, label %then15, label %else16, !dbg !674 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*String#unsafe_byte_at<Int32>:UInt8"(%String* %self, i32 %index) #0 !dbg !675 { | |
entry: | |
%0 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !676 | |
%1 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %0, i32 %index), !dbg !676 | |
ret i8 %1, !dbg !676 | |
} | |
; Function Attrs: uwtable | |
define internal %"Tuple(StaticArray(UInt8, 4), Int32)" @"*String::char_bytes_and_bytesize<Char>:Tuple(StaticArray(UInt8, 4), Int32)"(i32 %char) #0 !dbg !677 { | |
alloca: | |
%bytes = alloca [4 x i8], !dbg !678 | |
%bytesize = alloca i32, !dbg !678 | |
%byte = alloca i8, !dbg !679 | |
%c = alloca i32, !dbg !679 | |
%0 = alloca %"Tuple(StaticArray(UInt8, 4), Int32)", !dbg !680 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 0, i32* %bytesize, !dbg !681 | |
store i32 %char, i32* %c, !dbg !682 | |
%1 = load i32, i32* %c, !dbg !683 | |
%2 = icmp slt i32 %1, 128, !dbg !683 | |
br i1 %2, label %then, label %else, !dbg !683 | |
then: ; preds = %entry | |
%3 = load i32, i32* %c, !dbg !683 | |
%4 = trunc i32 %3 to i8, !dbg !683 | |
store i8 %4, i8* %byte, !dbg !683 | |
%5 = load i32, i32* %bytesize, !dbg !683 | |
%6 = load i8, i8* %byte, !dbg !683 | |
%7 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %5, i8 %6), !dbg !684 | |
%8 = load i32, i32* %bytesize, !dbg !684 | |
%9 = add i32 %8, 1, !dbg !684 | |
store i32 %9, i32* %bytesize, !dbg !685 | |
br label %exit, !dbg !685 | |
else: ; preds = %entry | |
%10 = load i32, i32* %c, !dbg !686 | |
%11 = icmp sle i32 %10, 2047, !dbg !686 | |
br i1 %11, label %then1, label %else2, !dbg !686 | |
exit: ; preds = %exit3, %then | |
%12 = phi i32 [ %9, %then ], [ %38, %exit3 ], !dbg !680 | |
%13 = getelementptr inbounds %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, i32 0, i32 0, !dbg !680 | |
%14 = load [4 x i8], [4 x i8]* %bytes, !dbg !680 | |
store [4 x i8] %14, [4 x i8]* %13, !dbg !680 | |
%15 = load i32, i32* %bytesize, !dbg !680 | |
%16 = getelementptr inbounds %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, i32 0, i32 1, !dbg !680 | |
store i32 %15, i32* %16, !dbg !680 | |
%17 = load %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, !dbg !680 | |
ret %"Tuple(StaticArray(UInt8, 4), Int32)" %17, !dbg !680 | |
then1: ; preds = %else | |
%18 = load i32, i32* %c, !dbg !686 | |
%19 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %18, i32 6), !dbg !687 | |
%20 = or i32 192, %19, !dbg !687 | |
%21 = trunc i32 %20 to i8, !dbg !687 | |
store i8 %21, i8* %byte, !dbg !687 | |
%22 = load i32, i32* %bytesize, !dbg !687 | |
%23 = load i8, i8* %byte, !dbg !687 | |
%24 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %22, i8 %23), !dbg !684 | |
%25 = load i32, i32* %bytesize, !dbg !684 | |
%26 = add i32 %25, 1, !dbg !684 | |
store i32 %26, i32* %bytesize, !dbg !685 | |
%27 = load i32, i32* %c, !dbg !685 | |
%28 = and i32 %27, 63, !dbg !685 | |
%29 = or i32 128, %28, !dbg !685 | |
%30 = trunc i32 %29 to i8, !dbg !685 | |
store i8 %30, i8* %byte, !dbg !685 | |
%31 = load i32, i32* %bytesize, !dbg !685 | |
%32 = load i8, i8* %byte, !dbg !685 | |
%33 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %31, i8 %32), !dbg !684 | |
%34 = load i32, i32* %bytesize, !dbg !684 | |
%35 = add i32 %34, 1, !dbg !684 | |
store i32 %35, i32* %bytesize, !dbg !685 | |
br label %exit3, !dbg !685 | |
else2: ; preds = %else | |
%36 = load i32, i32* %c, !dbg !688 | |
%37 = icmp sle i32 %36, 65535, !dbg !688 | |
br i1 %37, label %then4, label %else5, !dbg !688 | |
exit3: ; preds = %exit6, %then1 | |
%38 = phi i32 [ %35, %then1 ], [ %69, %exit6 ], !dbg !680 | |
br label %exit, !dbg !680 | |
then4: ; preds = %else2 | |
%39 = load i32, i32* %c, !dbg !688 | |
%40 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %39, i32 12), !dbg !689 | |
%41 = or i32 224, %40, !dbg !689 | |
%42 = trunc i32 %41 to i8, !dbg !689 | |
store i8 %42, i8* %byte, !dbg !689 | |
%43 = load i32, i32* %bytesize, !dbg !689 | |
%44 = load i8, i8* %byte, !dbg !689 | |
%45 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %43, i8 %44), !dbg !684 | |
%46 = load i32, i32* %bytesize, !dbg !684 | |
%47 = add i32 %46, 1, !dbg !684 | |
store i32 %47, i32* %bytesize, !dbg !685 | |
%48 = load i32, i32* %c, !dbg !685 | |
%49 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %48, i32 6), !dbg !690 | |
%50 = and i32 %49, 63, !dbg !690 | |
%51 = or i32 128, %50, !dbg !690 | |
%52 = trunc i32 %51 to i8, !dbg !690 | |
store i8 %52, i8* %byte, !dbg !690 | |
%53 = load i32, i32* %bytesize, !dbg !690 | |
%54 = load i8, i8* %byte, !dbg !690 | |
%55 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %53, i8 %54), !dbg !684 | |
%56 = load i32, i32* %bytesize, !dbg !684 | |
%57 = add i32 %56, 1, !dbg !684 | |
store i32 %57, i32* %bytesize, !dbg !685 | |
%58 = load i32, i32* %c, !dbg !685 | |
%59 = and i32 %58, 63, !dbg !685 | |
%60 = or i32 128, %59, !dbg !685 | |
%61 = trunc i32 %60 to i8, !dbg !685 | |
store i8 %61, i8* %byte, !dbg !685 | |
%62 = load i32, i32* %bytesize, !dbg !685 | |
%63 = load i8, i8* %byte, !dbg !685 | |
%64 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %62, i8 %63), !dbg !684 | |
%65 = load i32, i32* %bytesize, !dbg !684 | |
%66 = add i32 %65, 1, !dbg !684 | |
store i32 %66, i32* %bytesize, !dbg !685 | |
br label %exit6, !dbg !685 | |
else5: ; preds = %else2 | |
%67 = load i32, i32* %c, !dbg !691 | |
%68 = icmp sle i32 %67, 1114111, !dbg !691 | |
br i1 %68, label %then7, label %else8, !dbg !691 | |
exit6: ; preds = %exit9, %then4 | |
%69 = phi i32 [ %66, %then4 ], [ %114, %exit9 ], !dbg !680 | |
br label %exit3, !dbg !680 | |
then7: ; preds = %else5 | |
%70 = load i32, i32* %c, !dbg !691 | |
%71 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %70, i32 18), !dbg !692 | |
%72 = or i32 240, %71, !dbg !692 | |
%73 = trunc i32 %72 to i8, !dbg !692 | |
store i8 %73, i8* %byte, !dbg !692 | |
%74 = load i32, i32* %bytesize, !dbg !692 | |
%75 = load i8, i8* %byte, !dbg !692 | |
%76 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %74, i8 %75), !dbg !684 | |
%77 = load i32, i32* %bytesize, !dbg !684 | |
%78 = add i32 %77, 1, !dbg !684 | |
store i32 %78, i32* %bytesize, !dbg !685 | |
%79 = load i32, i32* %c, !dbg !685 | |
%80 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %79, i32 12), !dbg !693 | |
%81 = and i32 %80, 63, !dbg !693 | |
%82 = or i32 128, %81, !dbg !693 | |
%83 = trunc i32 %82 to i8, !dbg !693 | |
store i8 %83, i8* %byte, !dbg !693 | |
%84 = load i32, i32* %bytesize, !dbg !693 | |
%85 = load i8, i8* %byte, !dbg !693 | |
%86 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %84, i8 %85), !dbg !684 | |
%87 = load i32, i32* %bytesize, !dbg !684 | |
%88 = add i32 %87, 1, !dbg !684 | |
store i32 %88, i32* %bytesize, !dbg !685 | |
%89 = load i32, i32* %c, !dbg !685 | |
%90 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %89, i32 6), !dbg !694 | |
%91 = and i32 %90, 63, !dbg !694 | |
%92 = or i32 128, %91, !dbg !694 | |
%93 = trunc i32 %92 to i8, !dbg !694 | |
store i8 %93, i8* %byte, !dbg !694 | |
%94 = load i32, i32* %bytesize, !dbg !694 | |
%95 = load i8, i8* %byte, !dbg !694 | |
%96 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %94, i8 %95), !dbg !684 | |
%97 = load i32, i32* %bytesize, !dbg !684 | |
%98 = add i32 %97, 1, !dbg !684 | |
store i32 %98, i32* %bytesize, !dbg !685 | |
%99 = load i32, i32* %c, !dbg !685 | |
%100 = and i32 %99, 63, !dbg !685 | |
%101 = or i32 128, %100, !dbg !685 | |
%102 = trunc i32 %101 to i8, !dbg !685 | |
store i8 %102, i8* %byte, !dbg !685 | |
%103 = load i32, i32* %bytesize, !dbg !685 | |
%104 = load i8, i8* %byte, !dbg !685 | |
%105 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %bytes, i32 %103, i8 %104), !dbg !684 | |
%106 = load i32, i32* %bytesize, !dbg !684 | |
%107 = add i32 %106, 1, !dbg !684 | |
store i32 %107, i32* %bytesize, !dbg !685 | |
br label %exit9, !dbg !685 | |
else8: ; preds = %else5 | |
%108 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !695 | |
%109 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %108, %String* bitcast ({ i32, i32, i32, [20 x i8] }* @"'Invalid char value ...'" to %String*)), !dbg !695 | |
%110 = call %String* @"*Char#dump:String"(i32 %char), !dbg !696 | |
%111 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %109, %String* %110), !dbg !695 | |
%112 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %111), !dbg !695 | |
%113 = call %InvalidByteSequenceError* @"*InvalidByteSequenceError::new<String>:InvalidByteSequenceError"(%String* %112), !dbg !697 | |
call void @"*raise<InvalidByteSequenceError>:NoReturn"(%InvalidByteSequenceError* %113), !dbg !680 | |
unreachable, !dbg !680 | |
exit9: ; preds = %then7 | |
%114 = phi i32 [ %107, %then7 ], !dbg !680 | |
br label %exit6, !dbg !680 | |
} | |
; Function Attrs: alwaysinline uwtable | |
define internal i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %self, i32 %index, i8 %value) #3 !dbg !698 { | |
alloca: | |
%index1 = alloca i32, !dbg !699 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %index, i32* %index1, !dbg !699 | |
%0 = load i32, i32* %index1, !dbg !699 | |
%1 = call i32 @"*StaticArray(UInt8, 4)@Indexable(T)#check_index_out_of_bounds<Int32>:Int32"([4 x i8]* %self, i32 %0), !dbg !700 | |
store i32 %1, i32* %index1, !dbg !701 | |
%2 = call i8* @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([4 x i8]* %self), !dbg !702 | |
%3 = load i32, i32* %index1, !dbg !702 | |
%4 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %2, i32 %3, i8 %value), !dbg !702 | |
ret i8 %4, !dbg !702 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*StaticArray(UInt8, 4)@Indexable(T)#check_index_out_of_bounds<Int32>:Int32"([4 x i8]* %self, i32 %index) #0 !dbg !703 { | |
alloca: | |
%index1 = alloca i32, !dbg !704 | |
%__temp_53 = alloca i1, !dbg !704 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %index, i32* %index1, !dbg !704 | |
%0 = load i32, i32* %index1, !dbg !705 | |
%1 = icmp slt i32 %0, 0, !dbg !705 | |
br i1 %1, label %then, label %else, !dbg !705 | |
then: ; preds = %entry | |
%2 = load i32, i32* %index1, !dbg !705 | |
%3 = call i32 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#size:Int32"([4 x i8]* %self), !dbg !706 | |
%4 = add i32 %2, %3, !dbg !706 | |
store i32 %4, i32* %index1, !dbg !705 | |
br label %exit, !dbg !705 | |
else: ; preds = %entry | |
br label %exit, !dbg !705 | |
exit: ; preds = %else, %then | |
%5 = load i32, i32* %index1, !dbg !707 | |
%6 = icmp sle i32 0, %5, !dbg !707 | |
store i1 %6, i1* %__temp_53, !dbg !707 | |
br i1 %6, label %then4, label %else5, !dbg !707 | |
then2: ; preds = %exit6 | |
%7 = load i32, i32* %index1, !dbg !708 | |
br label %exit7, !dbg !708 | |
else3: ; preds = %exit6 | |
%8 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !709 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %8), !dbg !710 | |
unreachable, !dbg !710 | |
then4: ; preds = %exit | |
%9 = load i32, i32* %index1, !dbg !707 | |
%10 = call i32 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#size:Int32"([4 x i8]* %self), !dbg !708 | |
%11 = icmp slt i32 %9, %10, !dbg !708 | |
br label %exit6, !dbg !708 | |
else5: ; preds = %exit | |
%12 = load i1, i1* %__temp_53, !dbg !708 | |
br label %exit6, !dbg !708 | |
exit6: ; preds = %else5, %then4 | |
%13 = phi i1 [ %11, %then4 ], [ %12, %else5 ], !dbg !708 | |
br i1 %13, label %then2, label %else3, !dbg !708 | |
exit7: ; preds = %then2 | |
%14 = phi i32 [ %7, %then2 ], !dbg !710 | |
ret i32 %14, !dbg !710 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#size:Int32"([4 x i8]* %self) #0 !dbg !711 { | |
entry: | |
ret i32 4, !dbg !712 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([4 x i8]* %self) #0 !dbg !713 { | |
entry: | |
%0 = getelementptr inbounds [4 x i8], [4 x i8]* %self, i32 0, i32 0, !dbg !714 | |
ret i8* %0, !dbg !714 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*Char#dump:String"(i32 %self) #0 !dbg !715 { | |
alloca: | |
%io = alloca %"String::Builder"*, !dbg !716 | |
%__temp_54 = alloca i1, !dbg !716 | |
%io28 = alloca %"String::Builder"*, !dbg !717 | |
%capacity = alloca i32, !dbg !717 | |
%builder = alloca %"String::Builder"*, !dbg !718 | |
%capacity29 = alloca i32, !dbg !718 | |
%builder30 = alloca %"String::Builder"*, !dbg !718 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i1 @"*Char@Object#===<Char>:Bool"(i32 39, i32 %self), !dbg !719 | |
br i1 %0, label %then, label %else, !dbg !719 | |
then: ; preds = %entry | |
br label %exit, !dbg !719 | |
else: ; preds = %entry | |
%1 = call i1 @"*Char@Object#===<Char>:Bool"(i32 92, i32 %self), !dbg !720 | |
br i1 %1, label %then1, label %else2, !dbg !720 | |
exit: ; preds = %exit3, %then | |
%2 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5C'''" to %String*), %then ], [ %4, %exit3 ], !dbg !721 | |
ret %String* %2, !dbg !721 | |
then1: ; preds = %else | |
br label %exit3, !dbg !720 | |
else2: ; preds = %else | |
%3 = call i1 @"*Char@Object#===<Char>:Bool"(i32 7, i32 %self), !dbg !722 | |
br i1 %3, label %then4, label %else5, !dbg !722 | |
exit3: ; preds = %exit6, %then1 | |
%4 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5C\5C''" to %String*), %then1 ], [ %6, %exit6 ], !dbg !721 | |
br label %exit, !dbg !721 | |
then4: ; preds = %else2 | |
br label %exit6, !dbg !722 | |
else5: ; preds = %else2 | |
%5 = call i1 @"*Char@Object#===<Char>:Bool"(i32 8, i32 %self), !dbg !723 | |
br i1 %5, label %then7, label %else8, !dbg !723 | |
exit6: ; preds = %exit9, %then4 | |
%6 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Ca''" to %String*), %then4 ], [ %8, %exit9 ], !dbg !721 | |
br label %exit3, !dbg !721 | |
then7: ; preds = %else5 | |
br label %exit9, !dbg !723 | |
else8: ; preds = %else5 | |
%7 = call i1 @"*Char@Object#===<Char>:Bool"(i32 27, i32 %self), !dbg !724 | |
br i1 %7, label %then10, label %else11, !dbg !724 | |
exit9: ; preds = %exit12, %then7 | |
%8 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Cb''" to %String*), %then7 ], [ %10, %exit12 ], !dbg !721 | |
br label %exit6, !dbg !721 | |
then10: ; preds = %else8 | |
br label %exit12, !dbg !724 | |
else11: ; preds = %else8 | |
%9 = call i1 @"*Char@Object#===<Char>:Bool"(i32 12, i32 %self), !dbg !725 | |
br i1 %9, label %then13, label %else14, !dbg !725 | |
exit12: ; preds = %exit15, %then10 | |
%10 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Ce''" to %String*), %then10 ], [ %12, %exit15 ], !dbg !721 | |
br label %exit9, !dbg !721 | |
then13: ; preds = %else11 | |
br label %exit15, !dbg !725 | |
else14: ; preds = %else11 | |
%11 = call i1 @"*Char@Object#===<Char>:Bool"(i32 10, i32 %self), !dbg !726 | |
br i1 %11, label %then16, label %else17, !dbg !726 | |
exit15: ; preds = %exit18, %then13 | |
%12 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Cf''" to %String*), %then13 ], [ %14, %exit18 ], !dbg !721 | |
br label %exit12, !dbg !721 | |
then16: ; preds = %else14 | |
br label %exit18, !dbg !726 | |
else17: ; preds = %else14 | |
%13 = call i1 @"*Char@Object#===<Char>:Bool"(i32 13, i32 %self), !dbg !727 | |
br i1 %13, label %then19, label %else20, !dbg !727 | |
exit18: ; preds = %exit21, %then16 | |
%14 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Cn''" to %String*), %then16 ], [ %16, %exit21 ], !dbg !721 | |
br label %exit15, !dbg !721 | |
then19: ; preds = %else17 | |
br label %exit21, !dbg !727 | |
else20: ; preds = %else17 | |
%15 = call i1 @"*Char@Object#===<Char>:Bool"(i32 9, i32 %self), !dbg !728 | |
br i1 %15, label %then22, label %else23, !dbg !728 | |
exit21: ; preds = %exit24, %then19 | |
%16 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Cr''" to %String*), %then19 ], [ %18, %exit24 ], !dbg !721 | |
br label %exit18, !dbg !721 | |
then22: ; preds = %else20 | |
br label %exit24, !dbg !728 | |
else23: ; preds = %else20 | |
%17 = call i1 @"*Char@Object#===<Char>:Bool"(i32 11, i32 %self), !dbg !729 | |
br i1 %17, label %then25, label %else26, !dbg !729 | |
exit24: ; preds = %exit27, %then22 | |
%18 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Ct''" to %String*), %then22 ], [ %28, %exit27 ], !dbg !721 | |
br label %exit21, !dbg !721 | |
then25: ; preds = %else23 | |
br label %exit27, !dbg !729 | |
else26: ; preds = %else23 | |
store i32 64, i32* %capacity, !dbg !730 | |
%19 = load i32, i32* %capacity, !dbg !730 | |
store i32 %19, i32* %capacity29, !dbg !718 | |
%20 = load i32, i32* %capacity29, !dbg !718 | |
%21 = call %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 %20), !dbg !731 | |
store %"String::Builder"* %21, %"String::Builder"** %builder30, !dbg !732 | |
%22 = load %"String::Builder"*, %"String::Builder"** %builder30, !dbg !732 | |
store %"String::Builder"* %22, %"String::Builder"** %builder, !dbg !732 | |
%23 = load %"String::Builder"*, %"String::Builder"** %builder, !dbg !732 | |
store %"String::Builder"* %23, %"String::Builder"** %io28, !dbg !732 | |
%24 = load %"String::Builder"*, %"String::Builder"** %io28, !dbg !732 | |
%25 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %24, i32 39), !dbg !733 | |
%26 = load %"String::Builder"*, %"String::Builder"** %io28, !dbg !733 | |
store %"String::Builder"* %26, %"String::Builder"** %io, !dbg !733 | |
%27 = call i1 @"*Char#ascii_control?:Bool"(i32 %self), !dbg !734 | |
store i1 %27, i1* %__temp_54, !dbg !734 | |
br i1 %27, label %then33, label %else34, !dbg !734 | |
exit27: ; preds = %exit36, %then25 | |
%28 = phi %String* [ bitcast ({ i32, i32, i32, [5 x i8] }* @"''\5Cv''" to %String*), %then25 ], [ %42, %exit36 ], !dbg !721 | |
br label %exit24, !dbg !721 | |
then31: ; preds = %exit35 | |
%29 = load %"String::Builder"*, %"String::Builder"** %io, !dbg !734 | |
%30 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %29, %String* bitcast ({ i32, i32, i32, [4 x i8] }* @"'\5Cu{'" to %String*)), !dbg !735 | |
%31 = load %"String::Builder"*, %"String::Builder"** %io, !dbg !735 | |
call void @"*Int32@Int#to_s<Int32, String::Builder>:Nil"(i32 %self, i32 16, %"String::Builder"* %31), !dbg !736 | |
%32 = load %"String::Builder"*, %"String::Builder"** %io, !dbg !736 | |
%33 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %32, i32 125), !dbg !737 | |
br label %exit36, !dbg !737 | |
else32: ; preds = %exit35 | |
%34 = load %"String::Builder"*, %"String::Builder"** %io, !dbg !737 | |
call void @"*Char#to_s<String::Builder>:Nil"(i32 %self, %"String::Builder"* %34), !dbg !738 | |
br label %exit36, !dbg !738 | |
then33: ; preds = %else26 | |
%35 = load i1, i1* %__temp_54, !dbg !734 | |
br label %exit35, !dbg !734 | |
else34: ; preds = %else26 | |
%36 = icmp sge i32 %self, 128, !dbg !734 | |
br label %exit35, !dbg !734 | |
exit35: ; preds = %else34, %then33 | |
%37 = phi i1 [ %35, %then33 ], [ %36, %else34 ], !dbg !734 | |
br i1 %37, label %then31, label %else32, !dbg !734 | |
exit36: ; preds = %else32, %then31 | |
%38 = phi %"String::Builder"* [ %33, %then31 ], [ null, %else32 ], !dbg !738 | |
%39 = load %"String::Builder"*, %"String::Builder"** %io28, !dbg !738 | |
%40 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %39, i32 39), !dbg !739 | |
%41 = load %"String::Builder"*, %"String::Builder"** %builder30, !dbg !739 | |
%42 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %41), !dbg !721 | |
br label %exit27, !dbg !721 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Char@Object#===<Char>:Bool"(i32 %self, i32 %other) #0 !dbg !740 { | |
entry: | |
%0 = icmp eq i32 %self, %other, !dbg !741 | |
ret i1 %0, !dbg !741 | |
} | |
; Function Attrs: uwtable | |
define internal %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 %capacity) #0 !dbg !742 { | |
alloca: | |
%_ = alloca %"String::Builder"*, !dbg !743 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"String::Builder"* getelementptr (%"String::Builder", %"String::Builder"* null, i32 1) to i64)), !dbg !743 | |
%1 = bitcast i8* %0 to %"String::Builder"*, !dbg !743 | |
%2 = bitcast %"String::Builder"* %1 to i8*, !dbg !743 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"String::Builder"* getelementptr (%"String::Builder", %"String::Builder"* null, i32 1) to i32), i32 4, i1 false), !dbg !743 | |
%3 = getelementptr inbounds %"String::Builder", %"String::Builder"* %1, i32 0, i32 0, !dbg !743 | |
store i32 92, i32* %3, !dbg !743 | |
store %"String::Builder"* %1, %"String::Builder"** %_, !dbg !743 | |
%4 = load %"String::Builder"*, %"String::Builder"** %_, !dbg !743 | |
%5 = call i1 @"*String::Builder#initialize<Int32>:Bool"(%"String::Builder"* %4, i32 %capacity), !dbg !743 | |
%6 = load %"String::Builder"*, %"String::Builder"** %_, !dbg !743 | |
ret %"String::Builder"* %6, !dbg !743 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*String::Builder#initialize<Int32>:Bool"(%"String::Builder"* %self, i32 %capacity) #0 !dbg !744 { | |
alloca: | |
%capacity1 = alloca i32, !dbg !745 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %capacity, i32* %capacity1, !dbg !745 | |
%0 = load i32, i32* %capacity1, !dbg !745 | |
call void @"*String::check_capacity_in_bounds<Int32>:Nil"(i32 %0), !dbg !746 | |
%1 = load i32, i32* %capacity1, !dbg !746 | |
%2 = add i32 %1, 13, !dbg !746 | |
store i32 %2, i32* %capacity1, !dbg !747 | |
%3 = load i32, i32* %capacity1, !dbg !747 | |
call void @"*String::check_capacity_in_bounds<Int32>:Nil"(i32 %3), !dbg !748 | |
%4 = load i32, i32* %capacity1, !dbg !748 | |
%5 = call i8* @"*GC::malloc_atomic<UInt32>:Pointer(Void)"(i32 %4), !dbg !749 | |
%6 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 6, !dbg !750 | |
store i8* %5, i8** %6, !dbg !750 | |
%7 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 4, !dbg !751 | |
store i32 0, i32* %7, !dbg !751 | |
%8 = load i32, i32* %capacity1, !dbg !751 | |
%9 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 5, !dbg !752 | |
store i32 %8, i32* %9, !dbg !752 | |
%10 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 7, !dbg !753 | |
store i1 false, i1* %10, !dbg !753 | |
ret i1 false, !dbg !753 | |
} | |
; Function Attrs: uwtable | |
define internal %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %self, i32 %obj) #0 !dbg !754 { | |
entry: | |
call void @"*Char#to_s<String::Builder>:Nil"(i32 %obj, %"String::Builder"* %self), !dbg !755 | |
ret %"String::Builder"* %self, !dbg !755 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Char#to_s<String::Builder>:Nil"(i32 %self, %"String::Builder"* %io) #0 !dbg !756 { | |
alloca: | |
%byte = alloca i8, !dbg !757 | |
%chars = alloca [4 x i8], !dbg !757 | |
%i = alloca i32, !dbg !757 | |
%0 = alloca %"Slice(UInt8)", !dbg !758 | |
%byte4 = alloca i8, !dbg !759 | |
%c = alloca i32, !dbg !759 | |
%1 = alloca %"Slice(UInt8)", !dbg !760 | |
%2 = alloca %"Slice(UInt8)", !dbg !760 | |
br label %entry | |
entry: ; preds = %alloca | |
%3 = call i1 @"*Char#ascii?:Bool"(i32 %self), !dbg !761 | |
br i1 %3, label %then, label %else, !dbg !761 | |
then: ; preds = %entry | |
%4 = trunc i32 %self to i8, !dbg !761 | |
store i8 %4, i8* %byte, !dbg !762 | |
%5 = call i1 @"*String::Builder@IO#has_non_utf8_encoding?:Bool"(%"String::Builder"* %io), !dbg !763 | |
br i1 %5, label %then1, label %else2, !dbg !763 | |
else: ; preds = %entry | |
store i32 0, i32* %i, !dbg !764 | |
store i32 %self, i32* %c, !dbg !765 | |
%6 = load i32, i32* %c, !dbg !766 | |
%7 = icmp slt i32 %6, 128, !dbg !766 | |
br i1 %7, label %then5, label %else6, !dbg !766 | |
then1: ; preds = %then | |
%8 = call %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* %byte, i32 1), !dbg !758 | |
store %"Slice(UInt8)" %8, %"Slice(UInt8)"* %0, !dbg !758 | |
%9 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !758 | |
call void @"*String::Builder@IO#write_utf8<Slice(UInt8)>:Nil"(%"String::Builder"* %io, %"Slice(UInt8)" %9), !dbg !767 | |
br label %exit, !dbg !767 | |
else2: ; preds = %then | |
%10 = load i8, i8* %byte, !dbg !767 | |
call void @"*String::Builder#write_byte<UInt8>:Nil"(%"String::Builder"* %io, i8 %10), !dbg !768 | |
br label %exit, !dbg !768 | |
exit: ; preds = %else2, %then1 | |
br label %exit3, !dbg !768 | |
exit3: ; preds = %exit7, %exit | |
ret void, !dbg !769 | |
then5: ; preds = %else | |
%11 = load i32, i32* %c, !dbg !766 | |
%12 = trunc i32 %11 to i8, !dbg !766 | |
store i8 %12, i8* %byte4, !dbg !766 | |
%13 = load i32, i32* %i, !dbg !766 | |
%14 = load i8, i8* %byte4, !dbg !766 | |
%15 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %13, i8 %14), !dbg !770 | |
%16 = load i32, i32* %i, !dbg !770 | |
%17 = add i32 %16, 1, !dbg !770 | |
store i32 %17, i32* %i, !dbg !771 | |
br label %exit7, !dbg !771 | |
else6: ; preds = %else | |
%18 = load i32, i32* %c, !dbg !772 | |
%19 = icmp sle i32 %18, 2047, !dbg !772 | |
br i1 %19, label %then8, label %else9, !dbg !772 | |
exit7: ; preds = %exit10, %then5 | |
%20 = phi i32 [ %17, %then5 ], [ %45, %exit10 ], !dbg !773 | |
%21 = call %"Slice(UInt8)" @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_slice:Slice(UInt8)"([4 x i8]* %chars), !dbg !760 | |
store %"Slice(UInt8)" %21, %"Slice(UInt8)"* %1, !dbg !760 | |
%22 = load i32, i32* %i, !dbg !760 | |
%23 = call %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)#[]<Int32, Int32>:Slice(UInt8)"(%"Slice(UInt8)"* %1, i32 0, i32 %22), !dbg !760 | |
store %"Slice(UInt8)" %23, %"Slice(UInt8)"* %2, !dbg !760 | |
%24 = load %"Slice(UInt8)", %"Slice(UInt8)"* %2, !dbg !760 | |
call void @"*String::Builder@IO#write_utf8<Slice(UInt8)>:Nil"(%"String::Builder"* %io, %"Slice(UInt8)" %24), !dbg !769 | |
br label %exit3, !dbg !769 | |
then8: ; preds = %else6 | |
%25 = load i32, i32* %c, !dbg !772 | |
%26 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %25, i32 6), !dbg !774 | |
%27 = or i32 192, %26, !dbg !774 | |
%28 = trunc i32 %27 to i8, !dbg !774 | |
store i8 %28, i8* %byte4, !dbg !774 | |
%29 = load i32, i32* %i, !dbg !774 | |
%30 = load i8, i8* %byte4, !dbg !774 | |
%31 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %29, i8 %30), !dbg !770 | |
%32 = load i32, i32* %i, !dbg !770 | |
%33 = add i32 %32, 1, !dbg !770 | |
store i32 %33, i32* %i, !dbg !771 | |
%34 = load i32, i32* %c, !dbg !771 | |
%35 = and i32 %34, 63, !dbg !771 | |
%36 = or i32 128, %35, !dbg !771 | |
%37 = trunc i32 %36 to i8, !dbg !771 | |
store i8 %37, i8* %byte4, !dbg !771 | |
%38 = load i32, i32* %i, !dbg !771 | |
%39 = load i8, i8* %byte4, !dbg !771 | |
%40 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %38, i8 %39), !dbg !770 | |
%41 = load i32, i32* %i, !dbg !770 | |
%42 = add i32 %41, 1, !dbg !770 | |
store i32 %42, i32* %i, !dbg !771 | |
br label %exit10, !dbg !771 | |
else9: ; preds = %else6 | |
%43 = load i32, i32* %c, !dbg !775 | |
%44 = icmp sle i32 %43, 65535, !dbg !775 | |
br i1 %44, label %then11, label %else12, !dbg !775 | |
exit10: ; preds = %exit13, %then8 | |
%45 = phi i32 [ %42, %then8 ], [ %76, %exit13 ], !dbg !773 | |
br label %exit7, !dbg !773 | |
then11: ; preds = %else9 | |
%46 = load i32, i32* %c, !dbg !775 | |
%47 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %46, i32 12), !dbg !776 | |
%48 = or i32 224, %47, !dbg !776 | |
%49 = trunc i32 %48 to i8, !dbg !776 | |
store i8 %49, i8* %byte4, !dbg !776 | |
%50 = load i32, i32* %i, !dbg !776 | |
%51 = load i8, i8* %byte4, !dbg !776 | |
%52 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %50, i8 %51), !dbg !770 | |
%53 = load i32, i32* %i, !dbg !770 | |
%54 = add i32 %53, 1, !dbg !770 | |
store i32 %54, i32* %i, !dbg !771 | |
%55 = load i32, i32* %c, !dbg !771 | |
%56 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %55, i32 6), !dbg !777 | |
%57 = and i32 %56, 63, !dbg !777 | |
%58 = or i32 128, %57, !dbg !777 | |
%59 = trunc i32 %58 to i8, !dbg !777 | |
store i8 %59, i8* %byte4, !dbg !777 | |
%60 = load i32, i32* %i, !dbg !777 | |
%61 = load i8, i8* %byte4, !dbg !777 | |
%62 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %60, i8 %61), !dbg !770 | |
%63 = load i32, i32* %i, !dbg !770 | |
%64 = add i32 %63, 1, !dbg !770 | |
store i32 %64, i32* %i, !dbg !771 | |
%65 = load i32, i32* %c, !dbg !771 | |
%66 = and i32 %65, 63, !dbg !771 | |
%67 = or i32 128, %66, !dbg !771 | |
%68 = trunc i32 %67 to i8, !dbg !771 | |
store i8 %68, i8* %byte4, !dbg !771 | |
%69 = load i32, i32* %i, !dbg !771 | |
%70 = load i8, i8* %byte4, !dbg !771 | |
%71 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %69, i8 %70), !dbg !770 | |
%72 = load i32, i32* %i, !dbg !770 | |
%73 = add i32 %72, 1, !dbg !770 | |
store i32 %73, i32* %i, !dbg !771 | |
br label %exit13, !dbg !771 | |
else12: ; preds = %else9 | |
%74 = load i32, i32* %c, !dbg !778 | |
%75 = icmp sle i32 %74, 1114111, !dbg !778 | |
br i1 %75, label %then14, label %else15, !dbg !778 | |
exit13: ; preds = %exit16, %then11 | |
%76 = phi i32 [ %73, %then11 ], [ %121, %exit16 ], !dbg !773 | |
br label %exit10, !dbg !773 | |
then14: ; preds = %else12 | |
%77 = load i32, i32* %c, !dbg !778 | |
%78 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %77, i32 18), !dbg !779 | |
%79 = or i32 240, %78, !dbg !779 | |
%80 = trunc i32 %79 to i8, !dbg !779 | |
store i8 %80, i8* %byte4, !dbg !779 | |
%81 = load i32, i32* %i, !dbg !779 | |
%82 = load i8, i8* %byte4, !dbg !779 | |
%83 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %81, i8 %82), !dbg !770 | |
%84 = load i32, i32* %i, !dbg !770 | |
%85 = add i32 %84, 1, !dbg !770 | |
store i32 %85, i32* %i, !dbg !771 | |
%86 = load i32, i32* %c, !dbg !771 | |
%87 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %86, i32 12), !dbg !780 | |
%88 = and i32 %87, 63, !dbg !780 | |
%89 = or i32 128, %88, !dbg !780 | |
%90 = trunc i32 %89 to i8, !dbg !780 | |
store i8 %90, i8* %byte4, !dbg !780 | |
%91 = load i32, i32* %i, !dbg !780 | |
%92 = load i8, i8* %byte4, !dbg !780 | |
%93 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %91, i8 %92), !dbg !770 | |
%94 = load i32, i32* %i, !dbg !770 | |
%95 = add i32 %94, 1, !dbg !770 | |
store i32 %95, i32* %i, !dbg !771 | |
%96 = load i32, i32* %c, !dbg !771 | |
%97 = call i32 @"*Int32@Int#>><Int32>:Int32"(i32 %96, i32 6), !dbg !781 | |
%98 = and i32 %97, 63, !dbg !781 | |
%99 = or i32 128, %98, !dbg !781 | |
%100 = trunc i32 %99 to i8, !dbg !781 | |
store i8 %100, i8* %byte4, !dbg !781 | |
%101 = load i32, i32* %i, !dbg !781 | |
%102 = load i8, i8* %byte4, !dbg !781 | |
%103 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %101, i8 %102), !dbg !770 | |
%104 = load i32, i32* %i, !dbg !770 | |
%105 = add i32 %104, 1, !dbg !770 | |
store i32 %105, i32* %i, !dbg !771 | |
%106 = load i32, i32* %c, !dbg !771 | |
%107 = and i32 %106, 63, !dbg !771 | |
%108 = or i32 128, %107, !dbg !771 | |
%109 = trunc i32 %108 to i8, !dbg !771 | |
store i8 %109, i8* %byte4, !dbg !771 | |
%110 = load i32, i32* %i, !dbg !771 | |
%111 = load i8, i8* %byte4, !dbg !771 | |
%112 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#[]=<Int32, UInt8>:UInt8"([4 x i8]* %chars, i32 %110, i8 %111), !dbg !770 | |
%113 = load i32, i32* %i, !dbg !770 | |
%114 = add i32 %113, 1, !dbg !770 | |
store i32 %114, i32* %i, !dbg !771 | |
br label %exit16, !dbg !771 | |
else15: ; preds = %else12 | |
%115 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !782 | |
%116 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %115, %String* bitcast ({ i32, i32, i32, [20 x i8] }* @"'Invalid char value ...'" to %String*)), !dbg !782 | |
%117 = call %String* @"*Char#dump:String"(i32 %self), !dbg !783 | |
%118 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %116, %String* %117), !dbg !782 | |
%119 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %118), !dbg !782 | |
%120 = call %InvalidByteSequenceError* @"*InvalidByteSequenceError::new<String>:InvalidByteSequenceError"(%String* %119), !dbg !784 | |
call void @"*raise<InvalidByteSequenceError>:NoReturn"(%InvalidByteSequenceError* %120), !dbg !773 | |
unreachable, !dbg !773 | |
exit16: ; preds = %then14 | |
%121 = phi i32 [ %114, %then14 ], !dbg !773 | |
br label %exit13, !dbg !773 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*String::Builder@IO#has_non_utf8_encoding?:Bool"(%"String::Builder"* %self) #0 !dbg !785 { | |
entry: | |
%0 = getelementptr inbounds %"String::Builder", %"String::Builder"* %self, i32 0, i32 1, !dbg !786 | |
%1 = getelementptr inbounds %"(IO::EncodingOptions | Nil)", %"(IO::EncodingOptions | Nil)"* %0, i32 0, i32 0, !dbg !786 | |
%2 = load i32, i32* %1, !dbg !786 | |
%3 = icmp eq i32 %2, 0, !dbg !786 | |
%4 = xor i1 %3, true, !dbg !786 | |
%5 = and i1 true, %4, !dbg !786 | |
%6 = xor i1 %5, true, !dbg !786 | |
%7 = xor i1 %6, true, !dbg !786 | |
ret i1 %7, !dbg !786 | |
} | |
; Function Attrs: uwtable | |
define internal %InvalidByteSequenceError* @"*InvalidByteSequenceError::new<String>:InvalidByteSequenceError"(%String* %message) #0 !dbg !787 { | |
alloca: | |
%_ = alloca %InvalidByteSequenceError*, !dbg !788 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%InvalidByteSequenceError* getelementptr (%InvalidByteSequenceError, %InvalidByteSequenceError* null, i32 1) to i64)), !dbg !788 | |
%1 = bitcast i8* %0 to %InvalidByteSequenceError*, !dbg !788 | |
%2 = bitcast %InvalidByteSequenceError* %1 to i8*, !dbg !788 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%InvalidByteSequenceError* getelementptr (%InvalidByteSequenceError, %InvalidByteSequenceError* null, i32 1) to i32), i32 4, i1 false), !dbg !788 | |
%3 = getelementptr inbounds %InvalidByteSequenceError, %InvalidByteSequenceError* %1, i32 0, i32 0, !dbg !788 | |
store i32 41, i32* %3, !dbg !788 | |
store %InvalidByteSequenceError* %1, %InvalidByteSequenceError** %_, !dbg !788 | |
%4 = load %InvalidByteSequenceError*, %InvalidByteSequenceError** %_, !dbg !788 | |
call void @"*InvalidByteSequenceError#initialize<String>:Nil"(%InvalidByteSequenceError* %4, %String* %message), !dbg !788 | |
%5 = load %InvalidByteSequenceError*, %InvalidByteSequenceError** %_, !dbg !788 | |
ret %InvalidByteSequenceError* %5, !dbg !788 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*InvalidByteSequenceError#initialize<String>:Nil"(%InvalidByteSequenceError* %self, %String* %message) #0 !dbg !789 { | |
entry: | |
call void @"*InvalidByteSequenceError@Exception#initialize<String>:Nil"(%InvalidByteSequenceError* %self, %String* %message), !dbg !790 | |
ret void, !dbg !790 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*InvalidByteSequenceError@Exception#initialize<String>:Nil"(%InvalidByteSequenceError* %self, %String* %message) #0 !dbg !791 { | |
alloca: | |
%cause = alloca %Nil, !dbg !792 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %InvalidByteSequenceError, %InvalidByteSequenceError* %self, i32 0, i32 1, !dbg !793 | |
store %String* %message, %String** %0, !dbg !793 | |
%1 = load %Nil, %Nil* %cause, !dbg !793 | |
%2 = getelementptr inbounds %InvalidByteSequenceError, %InvalidByteSequenceError* %self, i32 0, i32 2, !dbg !794 | |
store i32* null, i32** %2, !dbg !794 | |
ret void, !dbg !794 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<InvalidByteSequenceError>:NoReturn"(%InvalidByteSequenceError* %exception) #1 !dbg !795 { | |
alloca: | |
%__temp_57 = alloca %"(CallStack | Nil)", !dbg !796 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !796 | |
%0 = alloca %CallStack, !dbg !796 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %InvalidByteSequenceError, %InvalidByteSequenceError* %exception, i32 0, i32 3, !dbg !796 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !796 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_57, !dbg !796 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !796 | |
%4 = load i32, i32* %3, !dbg !796 | |
%5 = icmp eq i32 %4, 0, !dbg !796 | |
%6 = xor i1 %5, true, !dbg !796 | |
%7 = and i1 true, %6, !dbg !796 | |
br i1 %7, label %then, label %else, !dbg !796 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_57, i32 0, i32 1, !dbg !796 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !796 | |
br label %exit, !dbg !796 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !796 | |
store %CallStack %10, %CallStack* %0, !dbg !796 | |
%11 = load %CallStack, %CallStack* %0, !dbg !796 | |
%12 = call %CallStack @"*InvalidByteSequenceError@Exception#callstack=<CallStack>:CallStack"(%InvalidByteSequenceError* %exception, %CallStack %11), !dbg !796 | |
br label %exit, !dbg !796 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !796 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !796 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !796 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !796 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !796 | |
store i64 %15, i64* %16, !dbg !796 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !796 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !796 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !796 | |
store i64 %18, i64* %19, !dbg !796 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !796 | |
%21 = ptrtoint %InvalidByteSequenceError* %exception to i64, !dbg !796 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !796 | |
store i64 %21, i64* %22, !dbg !796 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !796 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !796 | |
store i32 41, i32* %24, !dbg !796 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !796 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !796 | |
unreachable, !dbg !796 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*InvalidByteSequenceError@Exception#callstack=<CallStack>:CallStack"(%InvalidByteSequenceError* %self, %CallStack %callstack) #0 !dbg !797 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !798 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !798 | |
%0 = getelementptr inbounds %InvalidByteSequenceError, %InvalidByteSequenceError* %self, i32 0, i32 3, !dbg !799 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !799 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !799 | |
store i32 353, i32* %2, !dbg !799 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !799 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !799 | |
store %CallStack %1, %CallStack* %4, !dbg !799 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !799 | |
ret %CallStack %5, !dbg !799 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_slice:Slice(UInt8)"([4 x i8]* %self) #0 !dbg !800 { | |
alloca: | |
%0 = alloca %"Slice(UInt8)", !dbg !801 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i8* @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([4 x i8]* %self), !dbg !802 | |
%2 = call i32 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#size:Int32"([4 x i8]* %self), !dbg !803 | |
%3 = call %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* %1, i32 %2), !dbg !801 | |
store %"Slice(UInt8)" %3, %"Slice(UInt8)"* %0, !dbg !801 | |
%4 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !801 | |
ret %"Slice(UInt8)" %4, !dbg !801 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Char#ascii_control?:Bool"(i32 %self) #0 !dbg !804 { | |
alloca: | |
%__temp_55 = alloca i1, !dbg !805 | |
%__temp_18 = alloca i32, !dbg !805 | |
%__temp_56 = alloca i1, !dbg !805 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = icmp slt i32 %self, 32, !dbg !806 | |
store i1 %0, i1* %__temp_55, !dbg !806 | |
br i1 %0, label %then, label %else, !dbg !806 | |
then: ; preds = %entry | |
%1 = load i1, i1* %__temp_55, !dbg !806 | |
br label %exit, !dbg !806 | |
else: ; preds = %entry | |
store i32 %self, i32* %__temp_18, !dbg !807 | |
%2 = icmp sle i32 127, %self, !dbg !807 | |
store i1 %2, i1* %__temp_56, !dbg !808 | |
br i1 %2, label %then1, label %else2, !dbg !808 | |
exit: ; preds = %exit3, %then | |
%3 = phi i1 [ %1, %then ], [ %7, %exit3 ], !dbg !808 | |
ret i1 %3, !dbg !808 | |
then1: ; preds = %else | |
%4 = load i32, i32* %__temp_18, !dbg !808 | |
%5 = icmp sle i32 %4, 159, !dbg !808 | |
br label %exit3, !dbg !808 | |
else2: ; preds = %else | |
%6 = load i1, i1* %__temp_56, !dbg !808 | |
br label %exit3, !dbg !808 | |
exit3: ; preds = %else2, %then1 | |
%7 = phi i1 [ %5, %then1 ], [ %6, %else2 ], !dbg !808 | |
br label %exit, !dbg !808 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Int32@Int#to_s<Int32, String::Builder>:Nil"(i32 %self, i32 %base, %"String::Builder"* %io) #0 !dbg !809 { | |
alloca: | |
%upcase = alloca i1, !dbg !810 | |
%__temp_52 = alloca i1, !dbg !810 | |
%__temp_51 = alloca i1, !dbg !810 | |
%ptr = alloca i8*, !dbg !811 | |
%count = alloca i32, !dbg !811 | |
%base16 = alloca i32, !dbg !811 | |
%upcase17 = alloca i1, !dbg !811 | |
%chars = alloca [129 x i8], !dbg !811 | |
%ptr_end = alloca i8*, !dbg !811 | |
%ptr18 = alloca i8*, !dbg !811 | |
%num = alloca i32, !dbg !811 | |
%neg = alloca i1, !dbg !811 | |
%digits = alloca i8*, !dbg !811 | |
%count19 = alloca i32, !dbg !811 | |
%0 = alloca %"Slice(UInt8)", !dbg !812 | |
br label %entry | |
entry: ; preds = %alloca | |
store i1 false, i1* %upcase, !dbg !813 | |
%1 = icmp sle i32 2, %base, !dbg !814 | |
store i1 %1, i1* %__temp_52, !dbg !814 | |
br i1 %1, label %then3, label %else4, !dbg !814 | |
then: ; preds = %exit5 | |
br label %exit6, !dbg !814 | |
else: ; preds = %exit5 | |
%2 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !815 | |
%3 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %2, %String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Invalid base '" to %String*)), !dbg !815 | |
%4 = call %"String::Builder"* @"*String::Builder@IO#<<<Int32>:String::Builder"(%"String::Builder"* %3, i32 %base), !dbg !815 | |
%5 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %4), !dbg !815 | |
%6 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %5), !dbg !816 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %6), !dbg !817 | |
unreachable, !dbg !817 | |
then1: ; preds = %exit | |
%7 = load i1, i1* %__temp_51, !dbg !814 | |
br label %exit5, !dbg !814 | |
else2: ; preds = %exit | |
%8 = icmp eq i32 %base, 62, !dbg !814 | |
br label %exit5, !dbg !814 | |
then3: ; preds = %entry | |
%9 = icmp sle i32 %base, 36, !dbg !814 | |
br label %exit, !dbg !814 | |
else4: ; preds = %entry | |
%10 = load i1, i1* %__temp_52, !dbg !814 | |
br label %exit, !dbg !814 | |
exit: ; preds = %else4, %then3 | |
%11 = phi i1 [ %9, %then3 ], [ %10, %else4 ], !dbg !814 | |
store i1 %11, i1* %__temp_51, !dbg !814 | |
br i1 %11, label %then1, label %else2, !dbg !814 | |
exit5: ; preds = %else2, %then1 | |
%12 = phi i1 [ %7, %then1 ], [ %8, %else2 ], !dbg !814 | |
br i1 %12, label %then, label %else, !dbg !814 | |
exit6: ; preds = %then | |
%13 = load i1, i1* %upcase, !dbg !818 | |
br i1 %13, label %then9, label %else10, !dbg !818 | |
then7: ; preds = %exit11 | |
%14 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [33 x i8] }* @"'upcase must be fals...'" to %String*)), !dbg !819 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %14), !dbg !820 | |
unreachable, !dbg !820 | |
else8: ; preds = %exit11 | |
%15 = call i1 @"*Int32@Object#===<Int32>:Bool"(i32 0, i32 %self), !dbg !821 | |
br i1 %15, label %then12, label %else13, !dbg !821 | |
then9: ; preds = %exit6 | |
%16 = icmp eq i32 %base, 62, !dbg !818 | |
br label %exit11, !dbg !818 | |
else10: ; preds = %exit6 | |
%17 = load i1, i1* %upcase, !dbg !818 | |
br label %exit11, !dbg !818 | |
exit11: ; preds = %else10, %then9 | |
%18 = phi i1 [ %16, %then9 ], [ %17, %else10 ], !dbg !818 | |
br i1 %18, label %then7, label %else8, !dbg !818 | |
then12: ; preds = %else8 | |
%19 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %io, i32 48), !dbg !822 | |
ret void, !dbg !822 | |
else13: ; preds = %else8 | |
%20 = call i1 @"*Int32@Object#===<Int32>:Bool"(i32 1, i32 %self), !dbg !823 | |
br i1 %20, label %then14, label %else15, !dbg !823 | |
then14: ; preds = %else13 | |
%21 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %io, i32 49), !dbg !824 | |
ret void, !dbg !824 | |
else15: ; preds = %else13 | |
%22 = load i1, i1* %upcase, !dbg !824 | |
store i32 %base, i32* %base16, !dbg !811 | |
store i1 %22, i1* %upcase17, !dbg !811 | |
%23 = call i8* @"*StaticArray(UInt8, 129)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([129 x i8]* %chars), !dbg !825 | |
%24 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %23, i32 128), !dbg !825 | |
store i8* %24, i8** %ptr_end, !dbg !826 | |
%25 = load i8*, i8** %ptr_end, !dbg !826 | |
store i8* %25, i8** %ptr18, !dbg !827 | |
store i32 %self, i32* %num, !dbg !828 | |
%26 = load i32, i32* %num, !dbg !828 | |
%27 = icmp slt i32 %26, 0, !dbg !828 | |
store i1 %27, i1* %neg, !dbg !829 | |
%28 = load i32, i32* %base16, !dbg !830 | |
%29 = icmp eq i32 %28, 62, !dbg !830 | |
br i1 %29, label %then20, label %else21, !dbg !830 | |
then20: ; preds = %else15 | |
%30 = call %String** @"~Int::DIGITS_BASE62:read"(), !dbg !830 | |
%31 = load %String*, %String** %30, !dbg !830 | |
br label %exit22, !dbg !830 | |
else21: ; preds = %else15 | |
%32 = load i1, i1* %upcase17, !dbg !831 | |
br i1 %32, label %then23, label %else24, !dbg !831 | |
exit22: ; preds = %exit25, %then20 | |
%33 = phi %String* [ %31, %then20 ], [ %39, %exit25 ], !dbg !831 | |
%34 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %33), !dbg !832 | |
store i8* %34, i8** %digits, !dbg !833 | |
br label %while, !dbg !833 | |
then23: ; preds = %else21 | |
%35 = call %String** @"~Int::DIGITS_UPCASE:read"(), !dbg !831 | |
%36 = load %String*, %String** %35, !dbg !831 | |
br label %exit25, !dbg !831 | |
else24: ; preds = %else21 | |
%37 = call %String** @"~Int::DIGITS_DOWNCASE:read"(), !dbg !831 | |
%38 = load %String*, %String** %37, !dbg !831 | |
br label %exit25, !dbg !831 | |
exit25: ; preds = %else24, %then23 | |
%39 = phi %String* [ %36, %then23 ], [ %38, %else24 ], !dbg !831 | |
br label %exit22, !dbg !831 | |
while: ; preds = %body, %exit22 | |
%40 = load i32, i32* %num, !dbg !834 | |
%41 = icmp ne i32 %40, 0, !dbg !834 | |
br i1 %41, label %body, label %exit26, !dbg !834 | |
body: ; preds = %while | |
%42 = load i8*, i8** %ptr18, !dbg !834 | |
%43 = call i8* @"*Pointer(UInt8)@Pointer(T)#-<Int32>:Pointer(UInt8)"(i8* %42, i32 1), !dbg !835 | |
store i8* %43, i8** %ptr18, !dbg !835 | |
%44 = load i8*, i8** %ptr18, !dbg !835 | |
%45 = load i8*, i8** %digits, !dbg !835 | |
%46 = load i32, i32* %num, !dbg !835 | |
%47 = load i32, i32* %base16, !dbg !835 | |
%48 = call i32 @"*Int32@Int#remainder<Int32>:Int32"(i32 %46, i32 %47), !dbg !836 | |
%49 = call i32 @"*Int32@Int#abs:Int32"(i32 %48), !dbg !836 | |
%50 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %45, i32 %49), !dbg !837 | |
store i8 %50, i8* %44, !dbg !837 | |
%51 = load i32, i32* %num, !dbg !837 | |
%52 = load i32, i32* %base16, !dbg !837 | |
%53 = call i32 @"*Int32@Int#tdiv<Int32>:Int32"(i32 %51, i32 %52), !dbg !838 | |
store i32 %53, i32* %num, !dbg !839 | |
br label %while, !dbg !839 | |
exit26: ; preds = %while | |
%54 = load i1, i1* %neg, !dbg !840 | |
br i1 %54, label %then27, label %else28, !dbg !840 | |
then27: ; preds = %exit26 | |
%55 = load i8*, i8** %ptr18, !dbg !840 | |
%56 = call i8* @"*Pointer(UInt8)@Pointer(T)#-<Int32>:Pointer(UInt8)"(i8* %55, i32 1), !dbg !841 | |
store i8* %56, i8** %ptr18, !dbg !841 | |
%57 = load i8*, i8** %ptr18, !dbg !841 | |
store i8 45, i8* %57, !dbg !841 | |
br label %exit29, !dbg !841 | |
else28: ; preds = %exit26 | |
br label %exit29, !dbg !841 | |
exit29: ; preds = %else28, %then27 | |
%58 = load i8*, i8** %ptr_end, !dbg !841 | |
%59 = load i8*, i8** %ptr18, !dbg !841 | |
%60 = ptrtoint i8* %58 to i64, !dbg !841 | |
%61 = ptrtoint i8* %59 to i64, !dbg !841 | |
%62 = sub i64 %60, %61, !dbg !841 | |
%63 = sdiv exact i64 %62, ptrtoint (i8* getelementptr inbounds (i8, i8* null, i32 1) to i64), !dbg !841 | |
%64 = trunc i64 %63 to i32, !dbg !841 | |
store i32 %64, i32* %count19, !dbg !842 | |
%65 = load i8*, i8** %ptr18, !dbg !842 | |
%66 = load i32, i32* %count19, !dbg !842 | |
store i8* %65, i8** %ptr, !dbg !842 | |
store i32 %66, i32* %count, !dbg !842 | |
%67 = load i8*, i8** %ptr, !dbg !842 | |
%68 = load i32, i32* %count, !dbg !842 | |
%69 = call %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* %67, i32 %68), !dbg !812 | |
store %"Slice(UInt8)" %69, %"Slice(UInt8)"* %0, !dbg !812 | |
%70 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !812 | |
call void @"*String::Builder@IO#write_utf8<Slice(UInt8)>:Nil"(%"String::Builder"* %io, %"Slice(UInt8)" %70), !dbg !843 | |
ret void, !dbg !843 | |
} | |
; Function Attrs: uwtable | |
define internal %"String::Builder"* @"*String::Builder@IO#<<<Int32>:String::Builder"(%"String::Builder"* %self, i32 %obj) #0 !dbg !844 { | |
entry: | |
call void @"*Int32@Int#to_s<String::Builder>:Nil"(i32 %obj, %"String::Builder"* %self), !dbg !845 | |
ret %"String::Builder"* %self, !dbg !845 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Int32@Int#to_s<String::Builder>:Nil"(i32 %self, %"String::Builder"* %io) #0 !dbg !846 { | |
entry: | |
call void @"*Int32@Int#to_s<Int32, String::Builder>:Nil"(i32 %self, i32 10, %"String::Builder"* %io), !dbg !847 | |
ret void, !dbg !847 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*StaticArray(UInt8, 129)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([129 x i8]* %self) #0 !dbg !848 { | |
entry: | |
%0 = getelementptr inbounds [129 x i8], [129 x i8]* %self, i32 0, i32 0, !dbg !849 | |
ret i8* %0, !dbg !849 | |
} | |
define internal %String** @"~Int::DIGITS_BASE62:read"() { | |
entry: | |
%0 = load i1, i1* @"Int::DIGITS_BASE62:init", !dbg !830 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !830 | |
initialized: ; preds = %not_initialized, %entry | |
ret %String** @"Int::DIGITS_BASE62", !dbg !830 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Int::DIGITS_BASE62:init", !dbg !830 | |
call void @"~Int::DIGITS_BASE62:init"(), !dbg !830 | |
br label %initialized, !dbg !830 | |
} | |
define internal void @"~Int::DIGITS_BASE62:init"() { | |
entry: | |
ret void, !dbg !830 | |
} | |
define internal %String** @"~Int::DIGITS_UPCASE:read"() { | |
entry: | |
%0 = load i1, i1* @"Int::DIGITS_UPCASE:init", !dbg !831 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !831 | |
initialized: ; preds = %not_initialized, %entry | |
ret %String** @"Int::DIGITS_UPCASE", !dbg !831 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Int::DIGITS_UPCASE:init", !dbg !831 | |
call void @"~Int::DIGITS_UPCASE:init"(), !dbg !831 | |
br label %initialized, !dbg !831 | |
} | |
define internal void @"~Int::DIGITS_UPCASE:init"() { | |
entry: | |
ret void, !dbg !831 | |
} | |
define internal %String** @"~Int::DIGITS_DOWNCASE:read"() { | |
entry: | |
%0 = load i1, i1* @"Int::DIGITS_DOWNCASE:init", !dbg !831 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !831 | |
initialized: ; preds = %not_initialized, %entry | |
ret %String** @"Int::DIGITS_DOWNCASE", !dbg !831 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Int::DIGITS_DOWNCASE:init", !dbg !831 | |
call void @"~Int::DIGITS_DOWNCASE:init"(), !dbg !831 | |
br label %initialized, !dbg !831 | |
} | |
define internal void @"~Int::DIGITS_DOWNCASE:init"() { | |
entry: | |
ret void, !dbg !831 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#-<Int32>:Pointer(UInt8)"(i8* %self, i32 %other) #0 !dbg !850 { | |
entry: | |
%0 = sext i32 %other to i64, !dbg !851 | |
%1 = call i64 @"*Int64#-:Int64"(i64 %0), !dbg !852 | |
%2 = getelementptr inbounds i8, i8* %self, i64 %1, !dbg !852 | |
ret i8* %2, !dbg !852 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Int64#-:Int64"(i64 %self) #0 !dbg !853 { | |
entry: | |
%0 = sub i64 0, %self, !dbg !854 | |
ret i64 %0, !dbg !854 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32@Int#remainder<Int32>:Int32"(i32 %self, i32 %other) #0 !dbg !855 { | |
entry: | |
%0 = icmp eq i32 %other, 0, !dbg !856 | |
br i1 %0, label %then, label %else, !dbg !856 | |
then: ; preds = %entry | |
%1 = call %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"(), !dbg !857 | |
call void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %1), !dbg !858 | |
unreachable, !dbg !858 | |
else: ; preds = %entry | |
%2 = srem i32 %self, %other, !dbg !858 | |
ret i32 %2, !dbg !858 | |
} | |
; Function Attrs: uwtable | |
define internal %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"() #0 !dbg !859 { | |
alloca: | |
%_ = alloca %DivisionByZeroError*, !dbg !860 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%DivisionByZeroError* getelementptr (%DivisionByZeroError, %DivisionByZeroError* null, i32 1) to i64)), !dbg !860 | |
%1 = bitcast i8* %0 to %DivisionByZeroError*, !dbg !860 | |
%2 = bitcast %DivisionByZeroError* %1 to i8*, !dbg !860 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%DivisionByZeroError* getelementptr (%DivisionByZeroError, %DivisionByZeroError* null, i32 1) to i32), i32 4, i1 false), !dbg !860 | |
%3 = getelementptr inbounds %DivisionByZeroError, %DivisionByZeroError* %1, i32 0, i32 0, !dbg !860 | |
store i32 43, i32* %3, !dbg !860 | |
store %DivisionByZeroError* %1, %DivisionByZeroError** %_, !dbg !860 | |
%4 = load %DivisionByZeroError*, %DivisionByZeroError** %_, !dbg !860 | |
call void @"*DivisionByZeroError#initialize:Nil"(%DivisionByZeroError* %4), !dbg !860 | |
%5 = load %DivisionByZeroError*, %DivisionByZeroError** %_, !dbg !860 | |
ret %DivisionByZeroError* %5, !dbg !860 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*DivisionByZeroError#initialize:Nil"(%DivisionByZeroError* %self) #0 !dbg !861 { | |
alloca: | |
%message = alloca %String*, !dbg !862 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Division by 0'" to %String*), %String** %message, !dbg !863 | |
%0 = load %String*, %String** %message, !dbg !863 | |
call void @"*DivisionByZeroError#initialize<String>:Nil"(%DivisionByZeroError* %self, %String* %0), !dbg !862 | |
ret void, !dbg !862 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*DivisionByZeroError#initialize<String>:Nil"(%DivisionByZeroError* %self, %String* %message) #0 !dbg !864 { | |
entry: | |
call void @"*DivisionByZeroError@Exception#initialize<String>:Nil"(%DivisionByZeroError* %self, %String* %message), !dbg !865 | |
ret void, !dbg !865 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*DivisionByZeroError@Exception#initialize<String>:Nil"(%DivisionByZeroError* %self, %String* %message) #0 !dbg !866 { | |
alloca: | |
%cause = alloca %Nil, !dbg !867 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %DivisionByZeroError, %DivisionByZeroError* %self, i32 0, i32 1, !dbg !868 | |
store %String* %message, %String** %0, !dbg !868 | |
%1 = load %Nil, %Nil* %cause, !dbg !868 | |
%2 = getelementptr inbounds %DivisionByZeroError, %DivisionByZeroError* %self, i32 0, i32 2, !dbg !869 | |
store i32* null, i32** %2, !dbg !869 | |
ret void, !dbg !869 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %exception) #1 !dbg !870 { | |
alloca: | |
%__temp_58 = alloca %"(CallStack | Nil)", !dbg !871 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !871 | |
%0 = alloca %CallStack, !dbg !871 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %DivisionByZeroError, %DivisionByZeroError* %exception, i32 0, i32 3, !dbg !871 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !871 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_58, !dbg !871 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !871 | |
%4 = load i32, i32* %3, !dbg !871 | |
%5 = icmp eq i32 %4, 0, !dbg !871 | |
%6 = xor i1 %5, true, !dbg !871 | |
%7 = and i1 true, %6, !dbg !871 | |
br i1 %7, label %then, label %else, !dbg !871 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_58, i32 0, i32 1, !dbg !871 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !871 | |
br label %exit, !dbg !871 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !871 | |
store %CallStack %10, %CallStack* %0, !dbg !871 | |
%11 = load %CallStack, %CallStack* %0, !dbg !871 | |
%12 = call %CallStack @"*DivisionByZeroError@Exception#callstack=<CallStack>:CallStack"(%DivisionByZeroError* %exception, %CallStack %11), !dbg !871 | |
br label %exit, !dbg !871 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !871 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !871 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !871 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !871 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !871 | |
store i64 %15, i64* %16, !dbg !871 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !871 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !871 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !871 | |
store i64 %18, i64* %19, !dbg !871 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !871 | |
%21 = ptrtoint %DivisionByZeroError* %exception to i64, !dbg !871 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !871 | |
store i64 %21, i64* %22, !dbg !871 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !871 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !871 | |
store i32 43, i32* %24, !dbg !871 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !871 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !871 | |
unreachable, !dbg !871 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*DivisionByZeroError@Exception#callstack=<CallStack>:CallStack"(%DivisionByZeroError* %self, %CallStack %callstack) #0 !dbg !872 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !873 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !873 | |
%0 = getelementptr inbounds %DivisionByZeroError, %DivisionByZeroError* %self, i32 0, i32 3, !dbg !874 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !874 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !874 | |
store i32 353, i32* %2, !dbg !874 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !874 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !874 | |
store %CallStack %1, %CallStack* %4, !dbg !874 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !874 | |
ret %CallStack %5, !dbg !874 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Int32@Int#tdiv<Int32>:Int32"(i32 %self, i32 %other) #0 !dbg !875 { | |
entry: | |
call void @"*Int32@Int#check_div_argument<Int32>:Nil"(i32 %self, i32 %other), !dbg !876 | |
%0 = sdiv i32 %self, %other, !dbg !876 | |
ret i32 %0, !dbg !876 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Int32@Int#check_div_argument<Int32>:Nil"(i32 %self, i32 %other) #0 !dbg !877 { | |
alloca: | |
%__temp_60 = alloca i1, !dbg !878 | |
%__temp_59 = alloca i1, !dbg !878 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = icmp eq i32 %other, 0, !dbg !879 | |
br i1 %0, label %then, label %else, !dbg !879 | |
then: ; preds = %entry | |
%1 = call %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"(), !dbg !880 | |
call void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %1), !dbg !881 | |
unreachable, !dbg !881 | |
else: ; preds = %entry | |
%2 = icmp slt i32 %self, 0, !dbg !882 | |
store i1 %2, i1* %__temp_60, !dbg !882 | |
br i1 %2, label %then5, label %else6, !dbg !882 | |
then1: ; preds = %exit7 | |
%3 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [26 x i8] }* @"'Overflow: Int32::MI...'" to %String*)), !dbg !882 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %3), !dbg !882 | |
unreachable, !dbg !882 | |
else2: ; preds = %exit7 | |
ret void, !dbg !882 | |
then3: ; preds = %exit | |
%4 = icmp eq i32 %other, -1, !dbg !882 | |
br label %exit7, !dbg !882 | |
else4: ; preds = %exit | |
%5 = load i1, i1* %__temp_59, !dbg !882 | |
br label %exit7, !dbg !882 | |
then5: ; preds = %else | |
%6 = icmp eq i32 %self, -2147483648, !dbg !882 | |
br label %exit, !dbg !882 | |
else6: ; preds = %else | |
%7 = load i1, i1* %__temp_60, !dbg !882 | |
br label %exit, !dbg !882 | |
exit: ; preds = %else6, %then5 | |
%8 = phi i1 [ %6, %then5 ], [ %7, %else6 ], !dbg !882 | |
store i1 %8, i1* %__temp_59, !dbg !882 | |
br i1 %8, label %then3, label %else4, !dbg !882 | |
exit7: ; preds = %else4, %then3 | |
%9 = phi i1 [ %4, %then3 ], [ %5, %else4 ], !dbg !882 | |
br i1 %9, label %then1, label %else2, !dbg !882 | |
} | |
; Function Attrs: alwaysinline uwtable | |
define internal i8 @"*StaticArray(UInt8, 4)@Indexable(T)#[]<Int32>:UInt8"([4 x i8]* %self, i32 %index) #3 !dbg !883 { | |
alloca: | |
%index1 = alloca i32, !dbg !884 | |
%index2 = alloca i32, !dbg !885 | |
%__temp_242 = alloca i1, !dbg !885 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %index, i32* %index1, !dbg !884 | |
%0 = load i32, i32* %index1, !dbg !884 | |
store i32 %0, i32* %index2, !dbg !885 | |
%1 = load i32, i32* %index2, !dbg !886 | |
%2 = icmp slt i32 %1, 0, !dbg !886 | |
br i1 %2, label %then, label %else, !dbg !886 | |
then: ; preds = %entry | |
%3 = load i32, i32* %index2, !dbg !886 | |
%4 = call i32 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#size:Int32"([4 x i8]* %self), !dbg !887 | |
%5 = add i32 %3, %4, !dbg !887 | |
store i32 %5, i32* %index2, !dbg !886 | |
br label %exit, !dbg !886 | |
else: ; preds = %entry | |
br label %exit, !dbg !886 | |
exit: ; preds = %else, %then | |
%6 = load i32, i32* %index2, !dbg !888 | |
%7 = icmp sle i32 0, %6, !dbg !888 | |
store i1 %7, i1* %__temp_242, !dbg !888 | |
br i1 %7, label %then5, label %else6, !dbg !888 | |
then3: ; preds = %exit7 | |
%8 = load i32, i32* %index2, !dbg !889 | |
br label %exit8, !dbg !889 | |
else4: ; preds = %exit7 | |
%9 = load i32, i32* %index1, !dbg !889 | |
%10 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !890 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %10), !dbg !891 | |
unreachable, !dbg !891 | |
then5: ; preds = %exit | |
%11 = load i32, i32* %index2, !dbg !888 | |
%12 = call i32 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#size:Int32"([4 x i8]* %self), !dbg !889 | |
%13 = icmp slt i32 %11, %12, !dbg !889 | |
br label %exit7, !dbg !889 | |
else6: ; preds = %exit | |
%14 = load i1, i1* %__temp_242, !dbg !889 | |
br label %exit7, !dbg !889 | |
exit7: ; preds = %else6, %then5 | |
%15 = phi i1 [ %13, %then5 ], [ %14, %else6 ], !dbg !889 | |
br i1 %15, label %then3, label %else4, !dbg !889 | |
exit8: ; preds = %then3 | |
%16 = phi i32 [ %8, %then3 ], !dbg !891 | |
store i32 %16, i32* %index1, !dbg !892 | |
%17 = load i32, i32* %index1, !dbg !892 | |
%18 = call i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#unsafe_fetch<Int32>:UInt8"([4 x i8]* %self, i32 %17), !dbg !893 | |
ret i8 %18, !dbg !893 | |
} | |
; Function Attrs: alwaysinline uwtable | |
define internal i8 @"*StaticArray(UInt8, 4)@StaticArray(T, N)#unsafe_fetch<Int32>:UInt8"([4 x i8]* %self, i32 %index) #3 !dbg !894 { | |
entry: | |
%0 = call i8* @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([4 x i8]* %self), !dbg !895 | |
%1 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %0, i32 %index), !dbg !895 | |
ret i8 %1, !dbg !895 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*String#+<Char>:String"(%String* %self, i32 %char) #0 !dbg !896 { | |
alloca: | |
%__temp_243 = alloca %"Tuple(StaticArray(UInt8, 4), Int32)", !dbg !897 | |
%bytes = alloca [4 x i8], !dbg !897 | |
%count = alloca i32, !dbg !897 | |
%size = alloca i32, !dbg !897 | |
%0 = alloca %"Tuple(StaticArray(UInt8, 4), Int32)", !dbg !898 | |
%buffer = alloca i8*, !dbg !899 | |
%capacity = alloca i32, !dbg !899 | |
%str = alloca i8*, !dbg !899 | |
%buffer1 = alloca i8*, !dbg !899 | |
%__temp_244 = alloca %"Tuple(Int32, Int32)", !dbg !899 | |
%bytesize = alloca i32, !dbg !899 | |
%size2 = alloca i32, !dbg !899 | |
%__temp_246 = alloca i1, !dbg !899 | |
%str_header = alloca %"Tuple(Int32, Int32, Int32)"*, !dbg !899 | |
%1 = alloca %"Tuple(Int32, Int32)", !dbg !900 | |
%2 = alloca %"Tuple(Int32, Int32)", !dbg !900 | |
%3 = alloca %"Tuple(Int32, Int32, Int32)", !dbg !901 | |
br label %entry | |
entry: ; preds = %alloca | |
%4 = call %"Tuple(StaticArray(UInt8, 4), Int32)" @"*String::char_bytes_and_bytesize<Char>:Tuple(StaticArray(UInt8, 4), Int32)"(i32 %char), !dbg !898 | |
store %"Tuple(StaticArray(UInt8, 4), Int32)" %4, %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, !dbg !898 | |
%5 = load %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %0, !dbg !898 | |
store %"Tuple(StaticArray(UInt8, 4), Int32)" %5, %"Tuple(StaticArray(UInt8, 4), Int32)"* %__temp_243, !dbg !898 | |
%6 = getelementptr inbounds %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %__temp_243, i32 0, i32 0, !dbg !898 | |
%7 = load [4 x i8], [4 x i8]* %6, !dbg !902 | |
store [4 x i8] %7, [4 x i8]* %bytes, !dbg !902 | |
%8 = getelementptr inbounds %"Tuple(StaticArray(UInt8, 4), Int32)", %"Tuple(StaticArray(UInt8, 4), Int32)"* %__temp_243, i32 0, i32 1, !dbg !902 | |
%9 = load i32, i32* %8, !dbg !902 | |
store i32 %9, i32* %count, !dbg !903 | |
%10 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !903 | |
%11 = load i32, i32* %10, !dbg !903 | |
%12 = load i32, i32* %count, !dbg !903 | |
%13 = add i32 %11, %12, !dbg !903 | |
store i32 %13, i32* %size, !dbg !904 | |
%14 = load i32, i32* %size, !dbg !904 | |
store i32 %14, i32* %capacity, !dbg !899 | |
%15 = load i32, i32* %capacity, !dbg !899 | |
call void @"*String::check_capacity_in_bounds<Int32>:Nil"(i32 %15), !dbg !905 | |
%16 = load i32, i32* %capacity, !dbg !905 | |
%17 = add i32 %16, 12, !dbg !905 | |
%18 = add i32 %17, 1, !dbg !905 | |
%19 = call i8* @"*GC::malloc_atomic<UInt32>:Pointer(Void)"(i32 %18), !dbg !906 | |
store i8* %19, i8** %str, !dbg !907 | |
%20 = load i8*, i8** %str, !dbg !907 | |
%21 = bitcast i8* %20 to %String*, !dbg !907 | |
%22 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %21), !dbg !908 | |
store i8* %22, i8** %buffer1, !dbg !909 | |
%23 = load i8*, i8** %buffer1, !dbg !909 | |
store i8* %23, i8** %buffer, !dbg !909 | |
%24 = load i8*, i8** %buffer, !dbg !909 | |
%25 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !910 | |
%26 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !910 | |
%27 = load i32, i32* %26, !dbg !910 | |
%28 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_from<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %24, i8* %25, i32 %27), !dbg !911 | |
%29 = load i8*, i8** %buffer, !dbg !911 | |
%30 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !911 | |
%31 = load i32, i32* %30, !dbg !911 | |
%32 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %29, i32 %31), !dbg !912 | |
%33 = call i8* @"*StaticArray(UInt8, 4)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([4 x i8]* %bytes), !dbg !913 | |
%34 = load i32, i32* %count, !dbg !913 | |
%35 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_from<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %32, i8* %33, i32 %34), !dbg !914 | |
%36 = call i1 @"*String#size_known?:Bool"(%String* %self), !dbg !900 | |
br i1 %36, label %then, label %else, !dbg !900 | |
then: ; preds = %entry | |
%37 = load i32, i32* %size, !dbg !900 | |
%38 = getelementptr inbounds %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %1, i32 0, i32 0, !dbg !900 | |
store i32 %37, i32* %38, !dbg !900 | |
%39 = getelementptr inbounds %String, %String* %self, i32 0, i32 2, !dbg !900 | |
%40 = load i32, i32* %39, !dbg !900 | |
%41 = add i32 %40, 1, !dbg !900 | |
%42 = getelementptr inbounds %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %1, i32 0, i32 1, !dbg !900 | |
store i32 %41, i32* %42, !dbg !900 | |
br label %exit, !dbg !900 | |
else: ; preds = %entry | |
%43 = load i32, i32* %size, !dbg !900 | |
%44 = getelementptr inbounds %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %2, i32 0, i32 0, !dbg !900 | |
store i32 %43, i32* %44, !dbg !900 | |
%45 = getelementptr inbounds %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %2, i32 0, i32 1, !dbg !900 | |
store i32 0, i32* %45, !dbg !900 | |
br label %exit, !dbg !900 | |
exit: ; preds = %else, %then | |
%46 = phi %"Tuple(Int32, Int32)"* [ %1, %then ], [ %2, %else ], !dbg !900 | |
%47 = load %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %46, !dbg !915 | |
store %"Tuple(Int32, Int32)" %47, %"Tuple(Int32, Int32)"* %__temp_244, !dbg !915 | |
%48 = getelementptr inbounds %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %__temp_244, i32 0, i32 0, !dbg !915 | |
%49 = load i32, i32* %48, !dbg !915 | |
store i32 %49, i32* %bytesize, !dbg !916 | |
%50 = getelementptr inbounds %"Tuple(Int32, Int32)", %"Tuple(Int32, Int32)"* %__temp_244, i32 0, i32 1, !dbg !916 | |
%51 = load i32, i32* %50, !dbg !916 | |
store i32 %51, i32* %size2, !dbg !917 | |
%52 = load i32, i32* %bytesize, !dbg !918 | |
%53 = icmp sle i32 0, %52, !dbg !918 | |
store i1 %53, i1* %__temp_246, !dbg !918 | |
br i1 %53, label %then5, label %else6, !dbg !918 | |
then3: ; preds = %exit7 | |
br label %exit8, !dbg !918 | |
else4: ; preds = %exit7 | |
%54 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [32 x i8] }* @"'Bytesize out of cap...'" to %String*)), !dbg !919 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %54), !dbg !920 | |
unreachable, !dbg !920 | |
then5: ; preds = %exit | |
%55 = load i32, i32* %bytesize, !dbg !918 | |
%56 = load i32, i32* %capacity, !dbg !918 | |
%57 = icmp sle i32 %55, %56, !dbg !918 | |
br label %exit7, !dbg !918 | |
else6: ; preds = %exit | |
%58 = load i1, i1* %__temp_246, !dbg !918 | |
br label %exit7, !dbg !918 | |
exit7: ; preds = %else6, %then5 | |
%59 = phi i1 [ %57, %then5 ], [ %58, %else6 ], !dbg !918 | |
br i1 %59, label %then3, label %else4, !dbg !918 | |
exit8: ; preds = %then3 | |
%60 = load i8*, i8** %buffer1, !dbg !920 | |
%61 = load i32, i32* %bytesize, !dbg !920 | |
%62 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]=<Int32, UInt8>:UInt8"(i8* %60, i32 %61, i8 0), !dbg !921 | |
%63 = load i32, i32* %bytesize, !dbg !922 | |
%64 = load i32, i32* %capacity, !dbg !922 | |
%65 = icmp slt i32 %63, %64, !dbg !922 | |
br i1 %65, label %then9, label %else10, !dbg !922 | |
then9: ; preds = %exit8 | |
%66 = load i8*, i8** %str, !dbg !922 | |
%67 = load i32, i32* %bytesize, !dbg !922 | |
%68 = add i32 %67, 12, !dbg !922 | |
%69 = add i32 %68, 1, !dbg !922 | |
%70 = call i8* @"*Pointer(UInt8)@Pointer(T)#realloc<UInt32>:Pointer(UInt8)"(i8* %66, i32 %69), !dbg !923 | |
store i8* %70, i8** %str, !dbg !924 | |
br label %exit11, !dbg !924 | |
else10: ; preds = %exit8 | |
br label %exit11, !dbg !924 | |
exit11: ; preds = %else10, %then9 | |
%71 = load i8*, i8** %str, !dbg !924 | |
%72 = bitcast i8* %71 to %"Tuple(Int32, Int32, Int32)"*, !dbg !924 | |
store %"Tuple(Int32, Int32, Int32)"* %72, %"Tuple(Int32, Int32, Int32)"** %str_header, !dbg !901 | |
%73 = load %"Tuple(Int32, Int32, Int32)"*, %"Tuple(Int32, Int32, Int32)"** %str_header, !dbg !901 | |
%74 = load i32, i32* @"String::TYPE_ID", !dbg !901 | |
%75 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %3, i32 0, i32 0, !dbg !901 | |
store i32 %74, i32* %75, !dbg !901 | |
%76 = load i32, i32* %bytesize, !dbg !901 | |
%77 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %3, i32 0, i32 1, !dbg !901 | |
store i32 %76, i32* %77, !dbg !901 | |
%78 = load i32, i32* %size2, !dbg !901 | |
%79 = getelementptr inbounds %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %3, i32 0, i32 2, !dbg !901 | |
store i32 %78, i32* %79, !dbg !901 | |
%80 = load %"Tuple(Int32, Int32, Int32)", %"Tuple(Int32, Int32, Int32)"* %3, !dbg !901 | |
store %"Tuple(Int32, Int32, Int32)" %80, %"Tuple(Int32, Int32, Int32)"* %73, !dbg !901 | |
%81 = load i8*, i8** %str, !dbg !901 | |
%82 = bitcast i8* %81 to %String*, !dbg !901 | |
ret %String* %82, !dbg !901 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(UInt8)@Pointer(T)#copy_from<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %self, i8* %source, i32 %count) #0 !dbg !925 { | |
entry: | |
%0 = call i8* @"*Pointer(UInt8)@Pointer(T)#copy_to<Pointer(UInt8), Int32>:Pointer(UInt8)"(i8* %source, i8* %self, i32 %count), !dbg !926 | |
ret i8* %0, !dbg !926 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*String#size_known?:Bool"(%String* %self) #0 !dbg !927 { | |
alloca: | |
%__temp_245 = alloca i1, !dbg !928 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !929 | |
%1 = load i32, i32* %0, !dbg !929 | |
%2 = icmp eq i32 %1, 0, !dbg !929 | |
store i1 %2, i1* %__temp_245, !dbg !929 | |
br i1 %2, label %then, label %else, !dbg !929 | |
then: ; preds = %entry | |
%3 = load i1, i1* %__temp_245, !dbg !929 | |
br label %exit, !dbg !929 | |
else: ; preds = %entry | |
%4 = getelementptr inbounds %String, %String* %self, i32 0, i32 2, !dbg !929 | |
%5 = load i32, i32* %4, !dbg !929 | |
%6 = icmp sgt i32 %5, 0, !dbg !929 | |
br label %exit, !dbg !929 | |
exit: ; preds = %else, %then | |
%7 = phi i1 [ %3, %then ], [ %6, %else ], !dbg !929 | |
ret i1 %7, !dbg !929 | |
} | |
define internal void @"~CallStack::skip:init"() { | |
entry: | |
%0 = call %"Array(String)"* @"*Array(String)@Array(T)::new:Array(String)"(i32 513) | |
store %"Array(String)"* %0, %"Array(String)"** @"CallStack::skip" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*Array(String)@Array(T)::new:Array(String)"(i32 %self) #0 !dbg !930 { | |
alloca: | |
%_ = alloca %"Array(String)"*, !dbg !931 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Array(String)"* getelementptr (%"Array(String)", %"Array(String)"* null, i32 1) to i64)), !dbg !931 | |
%1 = bitcast i8* %0 to %"Array(String)"*, !dbg !931 | |
%2 = bitcast %"Array(String)"* %1 to i8*, !dbg !931 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Array(String)"* getelementptr (%"Array(String)", %"Array(String)"* null, i32 1) to i32), i32 4, i1 false), !dbg !931 | |
%3 = getelementptr inbounds %"Array(String)", %"Array(String)"* %1, i32 0, i32 0, !dbg !931 | |
store i32 8, i32* %3, !dbg !931 | |
store %"Array(String)"* %1, %"Array(String)"** %_, !dbg !931 | |
%4 = load %"Array(String)"*, %"Array(String)"** %_, !dbg !931 | |
%5 = call %String** @"*Array(String)@Array(T)#initialize:Pointer(String)"(%"Array(String)"* %4), !dbg !931 | |
%6 = load %"Array(String)"*, %"Array(String)"** %_, !dbg !931 | |
ret %"Array(String)"* %6, !dbg !931 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Array(String)@Array(T)#initialize:Pointer(String)"(%"Array(String)"* %self) #0 !dbg !932 { | |
entry: | |
%0 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 1, !dbg !933 | |
store i32 0, i32* %0, !dbg !933 | |
%1 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !934 | |
store i32 0, i32* %1, !dbg !934 | |
%2 = call %String** @"*Pointer(String)@Pointer(T)::null:Pointer(String)"(i32 784), !dbg !935 | |
%3 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 3, !dbg !936 | |
store %String** %2, %String*** %3, !dbg !936 | |
ret %String** %2, !dbg !936 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Pointer(String)@Pointer(T)::null:Pointer(String)"(i32 %self) #0 !dbg !937 { | |
entry: | |
ret %String** null, !dbg !938 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*CallStack::skip<String>:Array(String)"(%String* %filename) #0 !dbg !939 { | |
entry: | |
%0 = call %"Array(String)"** @"~CallStack::skip:read"(), !dbg !940 | |
%1 = load %"Array(String)"*, %"Array(String)"** %0, !dbg !940 | |
%2 = call %"Array(String)"* @"*Array(String)@Array(T)#<<<String>:Array(String)"(%"Array(String)"* %1, %String* %filename), !dbg !941 | |
ret %"Array(String)"* %2, !dbg !941 | |
} | |
define internal %"Array(String)"** @"~CallStack::skip:read"() { | |
entry: | |
%0 = load i1, i1* @"CallStack::skip:init", !dbg !940 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !940 | |
initialized: ; preds = %not_initialized, %entry | |
ret %"Array(String)"** @"CallStack::skip", !dbg !940 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"CallStack::skip:init", !dbg !940 | |
call void @"~CallStack::skip:init"(), !dbg !940 | |
br label %initialized, !dbg !940 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*Array(String)@Array(T)#<<<String>:Array(String)"(%"Array(String)"* %self, %String* %value) #0 !dbg !942 { | |
entry: | |
%0 = call %"Array(String)"* @"*Array(String)@Array(T)#push<String>:Array(String)"(%"Array(String)"* %self, %String* %value), !dbg !943 | |
ret %"Array(String)"* %0, !dbg !943 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*Array(String)@Array(T)#push<String>:Array(String)"(%"Array(String)"* %self, %String* %value) #0 !dbg !944 { | |
entry: | |
%0 = call %String** @"*Array(String)@Array(T)#check_needs_resize:(Pointer(String) | Nil)"(%"Array(String)"* %self), !dbg !945 | |
%1 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 3, !dbg !945 | |
%2 = load %String**, %String*** %1, !dbg !945 | |
%3 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 1, !dbg !945 | |
%4 = load i32, i32* %3, !dbg !945 | |
%5 = call %String* @"*Pointer(String)@Pointer(T)#[]=<Int32, String>:String"(%String** %2, i32 %4, %String* %value), !dbg !946 | |
%6 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 1, !dbg !946 | |
%7 = load i32, i32* %6, !dbg !946 | |
%8 = add i32 %7, 1, !dbg !946 | |
%9 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 1, !dbg !947 | |
store i32 %8, i32* %9, !dbg !947 | |
ret %"Array(String)"* %self, !dbg !947 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Array(String)@Array(T)#check_needs_resize:(Pointer(String) | Nil)"(%"Array(String)"* %self) #0 !dbg !948 { | |
entry: | |
%0 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 1, !dbg !949 | |
%1 = load i32, i32* %0, !dbg !949 | |
%2 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !949 | |
%3 = load i32, i32* %2, !dbg !949 | |
%4 = icmp eq i32 %1, %3, !dbg !949 | |
br i1 %4, label %then, label %else, !dbg !949 | |
then: ; preds = %entry | |
%5 = call %String** @"*Array(String)@Array(T)#double_capacity:Pointer(String)"(%"Array(String)"* %self), !dbg !949 | |
br label %exit, !dbg !949 | |
else: ; preds = %entry | |
br label %exit, !dbg !949 | |
exit: ; preds = %else, %then | |
%6 = phi %String** [ %5, %then ], [ null, %else ], !dbg !949 | |
ret %String** %6, !dbg !949 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Array(String)@Array(T)#double_capacity:Pointer(String)"(%"Array(String)"* %self) #0 !dbg !950 { | |
entry: | |
%0 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !951 | |
%1 = load i32, i32* %0, !dbg !951 | |
%2 = icmp eq i32 %1, 0, !dbg !951 | |
br i1 %2, label %then, label %else, !dbg !951 | |
then: ; preds = %entry | |
br label %exit, !dbg !951 | |
else: ; preds = %entry | |
%3 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !951 | |
%4 = load i32, i32* %3, !dbg !951 | |
%5 = mul i32 %4, 2, !dbg !951 | |
br label %exit, !dbg !951 | |
exit: ; preds = %else, %then | |
%6 = phi i32 [ 3, %then ], [ %5, %else ], !dbg !951 | |
%7 = call %String** @"*Array(String)@Array(T)#resize_to_capacity<Int32>:Pointer(String)"(%"Array(String)"* %self, i32 %6), !dbg !952 | |
ret %String** %7, !dbg !952 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Array(String)@Array(T)#resize_to_capacity<Int32>:Pointer(String)"(%"Array(String)"* %self, i32 %capacity) #0 !dbg !953 { | |
entry: | |
%0 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !954 | |
store i32 %capacity, i32* %0, !dbg !954 | |
%1 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 3, !dbg !955 | |
%2 = load %String**, %String*** %1, !dbg !955 | |
%3 = icmp ne %String** %2, null, !dbg !955 | |
br i1 %3, label %then, label %else, !dbg !955 | |
then: ; preds = %entry | |
%4 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 3, !dbg !955 | |
%5 = load %String**, %String*** %4, !dbg !955 | |
%6 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !955 | |
%7 = load i32, i32* %6, !dbg !955 | |
%8 = call %String** @"*Pointer(String)@Pointer(T)#realloc<Int32>:Pointer(String)"(%String** %5, i32 %7), !dbg !956 | |
%9 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 3, !dbg !957 | |
store %String** %8, %String*** %9, !dbg !957 | |
br label %exit, !dbg !957 | |
else: ; preds = %entry | |
%10 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 2, !dbg !957 | |
%11 = load i32, i32* %10, !dbg !957 | |
%12 = call %String** @"*Pointer(String)@Pointer(T)::malloc<Int32>:Pointer(String)"(i32 784, i32 %11), !dbg !958 | |
%13 = getelementptr inbounds %"Array(String)", %"Array(String)"* %self, i32 0, i32 3, !dbg !959 | |
store %String** %12, %String*** %13, !dbg !959 | |
br label %exit, !dbg !959 | |
exit: ; preds = %else, %then | |
%14 = phi %String** [ %8, %then ], [ %12, %else ], !dbg !959 | |
ret %String** %14, !dbg !959 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Pointer(String)@Pointer(T)#realloc<Int32>:Pointer(String)"(%String** %self, i32 %size) #0 !dbg !960 { | |
entry: | |
%0 = icmp slt i32 %size, 0, !dbg !961 | |
br i1 %0, label %then, label %else, !dbg !961 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Negative size'" to %String*)), !dbg !962 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !963 | |
unreachable, !dbg !963 | |
else: ; preds = %entry | |
%2 = sext i32 %size to i64, !dbg !963 | |
%3 = bitcast %String** %self to i8*, !dbg !963 | |
%4 = mul i64 %2, ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), !dbg !963 | |
%5 = call i8* @__crystal_realloc64(i8* %3, i64 %4), !dbg !963 | |
%6 = bitcast i8* %5 to %String**, !dbg !963 | |
ret %String** %6, !dbg !963 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Pointer(String)@Pointer(T)::malloc<Int32>:Pointer(String)"(i32 %self, i32 %size) #0 !dbg !964 { | |
entry: | |
%0 = icmp slt i32 %size, 0, !dbg !965 | |
br i1 %0, label %then, label %else, !dbg !965 | |
then: ; preds = %entry | |
%1 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [29 x i8] }* @"'Negative Pointer#ma...'" to %String*)), !dbg !966 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %1), !dbg !967 | |
unreachable, !dbg !967 | |
else: ; preds = %entry | |
%2 = sext i32 %size to i64, !dbg !967 | |
%3 = mul i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), %2, !dbg !968 | |
%4 = call i8* @__crystal_malloc64(i64 %3), !dbg !968 | |
%5 = trunc i64 %3 to i32, !dbg !968 | |
call void @llvm.memset.p0i8.i32(i8* %4, i8 0, i32 %5, i32 4, i1 false), !dbg !968 | |
%6 = bitcast i8* %4 to %String**, !dbg !968 | |
ret %String** %6, !dbg !967 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*Pointer(String)@Pointer(T)#[]=<Int32, String>:String"(%String** %self, i32 %offset, %String* %value) #0 !dbg !969 { | |
entry: | |
%0 = call %String** @"*Pointer(String)@Pointer(T)#+<Int32>:Pointer(String)"(%String** %self, i32 %offset), !dbg !970 | |
store %String* %value, %String** %0, !dbg !970 | |
ret %String* %value, !dbg !970 | |
} | |
; Function Attrs: uwtable | |
define internal %String** @"*Pointer(String)@Pointer(T)#+<Int32>:Pointer(String)"(%String** %self, i32 %other) #0 !dbg !971 { | |
entry: | |
%0 = sext i32 %other to i64, !dbg !972 | |
%1 = getelementptr inbounds %String*, %String** %self, i64 %0, !dbg !972 | |
ret %String** %1, !dbg !972 | |
} | |
define internal void @"~LibC::SIG_DFL:init"() { | |
entry: | |
%0 = call i8* @"*Pointer(Void)@Pointer(T)::null:Pointer(Void)"(i32 724) | |
%1 = call %"->" @"*Proc(Int32, Nil)@Proc(T, R)::new<Pointer(Void), Pointer(Void)>:Proc(Int32, Nil)"(i32 1106, i8* null, i8* %0) | |
store %"->" %1, %"->"* @"LibC::SIG_DFL" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(Void)@Pointer(T)::null:Pointer(Void)"(i32 %self) #0 !dbg !973 { | |
entry: | |
ret i8* null, !dbg !974 | |
} | |
; Function Attrs: uwtable | |
define internal %"->" @"*Proc(Int32, Nil)@Proc(T, R)::new<Pointer(Void), Pointer(Void)>:Proc(Int32, Nil)"(i32 %self, i8* %pointer, i8* %closure_data) #0 !dbg !975 { | |
alloca: | |
%func = alloca %"Tuple(Pointer(Void), Pointer(Void))", !dbg !977 | |
%ptr = alloca %"->"*, !dbg !977 | |
%0 = alloca %"Tuple(Pointer(Void), Pointer(Void))", !dbg !977 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %"Tuple(Pointer(Void), Pointer(Void))", %"Tuple(Pointer(Void), Pointer(Void))"* %0, i32 0, i32 0, !dbg !977 | |
store i8* %pointer, i8** %1, !dbg !977 | |
%2 = getelementptr inbounds %"Tuple(Pointer(Void), Pointer(Void))", %"Tuple(Pointer(Void), Pointer(Void))"* %0, i32 0, i32 1, !dbg !977 | |
store i8* %closure_data, i8** %2, !dbg !977 | |
%3 = load %"Tuple(Pointer(Void), Pointer(Void))", %"Tuple(Pointer(Void), Pointer(Void))"* %0, !dbg !978 | |
store %"Tuple(Pointer(Void), Pointer(Void))" %3, %"Tuple(Pointer(Void), Pointer(Void))"* %func, !dbg !978 | |
%4 = bitcast %"Tuple(Pointer(Void), Pointer(Void))"* %func to %"->"*, !dbg !978 | |
store %"->"* %4, %"->"** %ptr, !dbg !979 | |
%5 = load %"->"*, %"->"** %ptr, !dbg !979 | |
%6 = load %"->", %"->"* %5, !dbg !979 | |
ret %"->" %6, !dbg !979 | |
} | |
define internal void @"~LibC::SIG_IGN:init"() { | |
entry: | |
%0 = call i8* @"*Pointer(Void)@Pointer(T)::null:Pointer(Void)"(i32 724) | |
%1 = call %"->" @"*Proc(Int32, Nil)@Proc(T, R)::new<Pointer(Void), Pointer(Void)>:Proc(Int32, Nil)"(i32 1106, i8* inttoptr (i64 1 to i8*), i8* %0) | |
store %"->" %1, %"->"* @"LibC::SIG_IGN" | |
ret void | |
} | |
define internal void @"~String::CHAR_TO_DIGIT:init"() { | |
alloca: | |
%table = alloca [256 x i8] | |
%0 = alloca [256 x i8] | |
%i = alloca i8 | |
%i1 = alloca i8 | |
%i2 = alloca i8 | |
%i3 = alloca i8 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call [256 x i8] @"*StaticArray(Int8, 256)@StaticArray(T, N)::new<Int8>:StaticArray(Int8, 256)"(i32 973, i8 -1) | |
store [256 x i8] %1, [256 x i8]* %0 | |
%2 = load [256 x i8], [256 x i8]* %0 | |
store [256 x i8] %2, [256 x i8]* %table | |
store i8 0, i8* %i1 | |
br label %while | |
while: ; preds = %body, %entry | |
%3 = load i8, i8* %i1 | |
%4 = icmp slt i8 %3, 10 | |
br i1 %4, label %body, label %exit | |
body: ; preds = %while | |
%5 = load i8, i8* %i1 | |
store i8 %5, i8* %i | |
%6 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %table) | |
%7 = load i8, i8* %i | |
%8 = sext i8 %7 to i32 | |
%9 = add i32 48, %8 | |
%10 = load i8, i8* %i | |
%11 = call i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %6, i32 %9, i8 %10) | |
%12 = load i8, i8* %i1 | |
%13 = sext i8 %12 to i32 | |
%14 = add i32 %13, 1 | |
%15 = trunc i32 %14 to i8 | |
store i8 %15, i8* %i1 | |
br label %while | |
exit: ; preds = %while | |
store i8 0, i8* %i3 | |
br label %while4 | |
while4: ; preds = %body5, %exit | |
%16 = load i8, i8* %i3 | |
%17 = icmp slt i8 %16, 26 | |
br i1 %17, label %body5, label %exit6 | |
body5: ; preds = %while4 | |
%18 = load i8, i8* %i3 | |
store i8 %18, i8* %i2 | |
%19 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %table) | |
%20 = load i8, i8* %i2 | |
%21 = sext i8 %20 to i32 | |
%22 = add i32 65, %21 | |
%23 = load i8, i8* %i2 | |
%24 = sext i8 %23 to i32 | |
%25 = add i32 %24, 10 | |
%26 = trunc i32 %25 to i8 | |
%27 = call i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %19, i32 %22, i8 %26) | |
%28 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %table) | |
%29 = load i8, i8* %i2 | |
%30 = sext i8 %29 to i32 | |
%31 = add i32 97, %30 | |
%32 = load i8, i8* %i2 | |
%33 = sext i8 %32 to i32 | |
%34 = add i32 %33, 10 | |
%35 = trunc i32 %34 to i8 | |
%36 = call i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %28, i32 %31, i8 %35) | |
%37 = load i8, i8* %i3 | |
%38 = sext i8 %37 to i32 | |
%39 = add i32 %38, 1 | |
%40 = trunc i32 %39 to i8 | |
store i8 %40, i8* %i3 | |
br label %while4 | |
exit6: ; preds = %while4 | |
%41 = load [256 x i8], [256 x i8]* %table | |
store [256 x i8] %41, [256 x i8]* @"String::CHAR_TO_DIGIT" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal [256 x i8] @"*StaticArray(Int8, 256)@StaticArray(T, N)::new<Int8>:StaticArray(Int8, 256)"(i32 %self, i8 %value) #0 !dbg !980 { | |
alloca: | |
%array = alloca [256 x i8], !dbg !981 | |
%i = alloca i32, !dbg !982 | |
%i1 = alloca i32, !dbg !982 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 0, i32* %i1, !dbg !983 | |
br label %while, !dbg !983 | |
while: ; preds = %body, %entry | |
%0 = load i32, i32* %i1, !dbg !984 | |
%1 = icmp slt i32 %0, 256, !dbg !984 | |
br i1 %1, label %body, label %exit, !dbg !984 | |
body: ; preds = %while | |
%2 = load i32, i32* %i1, !dbg !984 | |
store i32 %2, i32* %i, !dbg !984 | |
%3 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %array), !dbg !985 | |
%4 = load i32, i32* %i, !dbg !985 | |
%5 = load i32, i32* %i, !dbg !985 | |
%6 = call i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %3, i32 %4, i8 %value), !dbg !985 | |
%7 = load i32, i32* %i1, !dbg !985 | |
%8 = add i32 %7, 1, !dbg !985 | |
store i32 %8, i32* %i1, !dbg !986 | |
br label %while, !dbg !986 | |
exit: ; preds = %while | |
%9 = load [256 x i8], [256 x i8]* %array, !dbg !986 | |
ret [256 x i8] %9, !dbg !986 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %self) #0 !dbg !987 { | |
entry: | |
%0 = getelementptr inbounds [256 x i8], [256 x i8]* %self, i32 0, i32 0, !dbg !988 | |
ret i8* %0, !dbg !988 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %self, i32 %offset, i8 %value) #0 !dbg !989 { | |
entry: | |
%0 = call i8* @"*Pointer(Int8)@Pointer(T)#+<Int32>:Pointer(Int8)"(i8* %self, i32 %offset), !dbg !990 | |
store i8 %value, i8* %0, !dbg !990 | |
ret i8 %value, !dbg !990 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(Int8)@Pointer(T)#+<Int32>:Pointer(Int8)"(i8* %self, i32 %other) #0 !dbg !991 { | |
entry: | |
%0 = sext i32 %other to i64, !dbg !992 | |
%1 = getelementptr inbounds i8, i8* %self, i64 %0, !dbg !992 | |
ret i8* %1, !dbg !992 | |
} | |
define internal void @"~String::CHAR_TO_DIGIT62:init"() { | |
alloca: | |
%table = alloca [256 x i8] | |
%0 = alloca [256 x i8] | |
%i = alloca i8 | |
%i1 = alloca i8 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call [256 x i8]* @"~String::CHAR_TO_DIGIT:read"() | |
%2 = call [256 x i8] @"*StaticArray(Int8, 256)@StaticArray(T, N)#clone:StaticArray(Int8, 256)"([256 x i8]* %1) | |
store [256 x i8] %2, [256 x i8]* %0 | |
%3 = load [256 x i8], [256 x i8]* %0 | |
store [256 x i8] %3, [256 x i8]* %table | |
store i8 0, i8* %i1 | |
br label %while | |
while: ; preds = %body, %entry | |
%4 = load i8, i8* %i1 | |
%5 = icmp slt i8 %4, 26 | |
br i1 %5, label %body, label %exit | |
body: ; preds = %while | |
%6 = load i8, i8* %i1 | |
store i8 %6, i8* %i | |
%7 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %table) | |
%8 = load i8, i8* %i | |
%9 = sext i8 %8 to i32 | |
%10 = add i32 65, %9 | |
%11 = load i8, i8* %i | |
%12 = sext i8 %11 to i32 | |
%13 = add i32 %12, 36 | |
%14 = trunc i32 %13 to i8 | |
%15 = call i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %7, i32 %10, i8 %14) | |
%16 = load i8, i8* %i1 | |
%17 = sext i8 %16 to i32 | |
%18 = add i32 %17, 1 | |
%19 = trunc i32 %18 to i8 | |
store i8 %19, i8* %i1 | |
br label %while | |
exit: ; preds = %while | |
%20 = load [256 x i8], [256 x i8]* %table | |
store [256 x i8] %20, [256 x i8]* @"String::CHAR_TO_DIGIT62" | |
ret void | |
} | |
define internal [256 x i8]* @"~String::CHAR_TO_DIGIT:read"() { | |
entry: | |
%0 = load i1, i1* @"String::CHAR_TO_DIGIT:init" | |
br i1 %0, label %initialized, label %not_initialized | |
initialized: ; preds = %not_initialized, %entry | |
ret [256 x i8]* @"String::CHAR_TO_DIGIT" | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"String::CHAR_TO_DIGIT:init" | |
call void @"~String::CHAR_TO_DIGIT:init"() | |
br label %initialized | |
} | |
; Function Attrs: uwtable | |
define internal [256 x i8] @"*StaticArray(Int8, 256)@StaticArray(T, N)#clone:StaticArray(Int8, 256)"([256 x i8]* %self) #0 !dbg !993 { | |
alloca: | |
%array = alloca [256 x i8], !dbg !994 | |
%i = alloca i32, !dbg !995 | |
%i1 = alloca i32, !dbg !995 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 0, i32* %i1, !dbg !996 | |
br label %while, !dbg !996 | |
while: ; preds = %body, %entry | |
%0 = load i32, i32* %i1, !dbg !997 | |
%1 = icmp slt i32 %0, 256, !dbg !997 | |
br i1 %1, label %body, label %exit, !dbg !997 | |
body: ; preds = %while | |
%2 = load i32, i32* %i1, !dbg !997 | |
store i32 %2, i32* %i, !dbg !997 | |
%3 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %array), !dbg !998 | |
%4 = load i32, i32* %i, !dbg !998 | |
%5 = call i8* @"*StaticArray(Int8, 256)@StaticArray(T, N)#to_unsafe:Pointer(Int8)"([256 x i8]* %self), !dbg !999 | |
%6 = load i32, i32* %i, !dbg !999 | |
%7 = call i8 @"*Pointer(Int8)@Pointer(T)#[]<Int32>:Int8"(i8* %5, i32 %6), !dbg !999 | |
%8 = call i8 @"*Pointer(Int8)@Pointer(T)#[]=<Int32, Int8>:Int8"(i8* %3, i32 %4, i8 %7), !dbg !998 | |
%9 = load i32, i32* %i1, !dbg !998 | |
%10 = add i32 %9, 1, !dbg !998 | |
store i32 %10, i32* %i1, !dbg !1000 | |
br label %while, !dbg !1000 | |
exit: ; preds = %while | |
%11 = load [256 x i8], [256 x i8]* %array, !dbg !1000 | |
ret [256 x i8] %11, !dbg !1000 | |
} | |
; Function Attrs: uwtable | |
define internal i8 @"*Pointer(Int8)@Pointer(T)#[]<Int32>:Int8"(i8* %self, i32 %offset) #0 !dbg !1001 { | |
entry: | |
%0 = call i8* @"*Pointer(Int8)@Pointer(T)#+<Int32>:Pointer(Int8)"(i8* %self, i32 %offset), !dbg !1002 | |
%1 = load i8, i8* %0, !dbg !1002 | |
ret i8 %1, !dbg !1002 | |
} | |
define internal void @"~LibC::MAP_FAILED:init"() { | |
entry: | |
%0 = call i8* @"*Pointer(Void)@Pointer(T)::new<Int32>:Pointer(Void)"(i32 724, i32 -1) | |
store i8* %0, i8** @"LibC::MAP_FAILED" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(Void)@Pointer(T)::new<Int32>:Pointer(Void)"(i32 %self, i32 %address) #0 !dbg !1003 { | |
entry: | |
%0 = sext i32 %address to i64, !dbg !1004 | |
%1 = inttoptr i64 %0 to i8*, !dbg !1004 | |
ret i8* %1, !dbg !1004 | |
} | |
; Function Attrs: noinline uwtable | |
define i8* @_fiber_get_stack_top() #4 !dbg !1005 { | |
alloca: | |
%dummy = alloca i32, !dbg !1007 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = bitcast i32* %dummy to i8*, !dbg !1007 | |
ret i8* %0, !dbg !1007 | |
} | |
define internal void @"~Fiber::fibers:init"() { | |
alloca: | |
%0 = alloca %"Thread::LinkedList(Fiber)" | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Thread::LinkedList(Fiber)" @"*Thread::LinkedList(Fiber)@Thread::LinkedList(T)::new:Thread::LinkedList(Fiber)"(i32 1047) | |
store %"Thread::LinkedList(Fiber)" %1, %"Thread::LinkedList(Fiber)"* %0 | |
%2 = load %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %0 | |
store %"Thread::LinkedList(Fiber)" %2, %"Thread::LinkedList(Fiber)"* @"Fiber::fibers" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %"Thread::LinkedList(Fiber)" @"*Thread::LinkedList(Fiber)@Thread::LinkedList(T)::new:Thread::LinkedList(Fiber)"(i32 %self) #0 !dbg !1008 { | |
alloca: | |
%x = alloca %"Thread::LinkedList(Fiber)", !dbg !1010 | |
%0 = alloca %"Thread::LinkedList(Fiber)", !dbg !1010 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Thread::LinkedList(Fiber)"* %0 to i8*, !dbg !1010 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 trunc (i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3) to i32), i32 4, i1 false), !dbg !1010 | |
%2 = call %"Thread::Mutex"* @"*Thread::Mutex::new:Thread::Mutex"(), !dbg !1011 | |
%3 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %0, i32 0, i32 2, !dbg !1011 | |
store %"Thread::Mutex"* %2, %"Thread::Mutex"** %3, !dbg !1011 | |
%4 = load %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %0, !dbg !1010 | |
store %"Thread::LinkedList(Fiber)" %4, %"Thread::LinkedList(Fiber)"* %x, !dbg !1010 | |
%5 = load %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %x, !dbg !1010 | |
ret %"Thread::LinkedList(Fiber)" %5, !dbg !1010 | |
} | |
; Function Attrs: uwtable | |
define internal %"Thread::Mutex"* @"*Thread::Mutex::new:Thread::Mutex"() #0 !dbg !1012 { | |
alloca: | |
%_ = alloca %"Thread::Mutex"*, !dbg !1014 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Thread::Mutex"* getelementptr (%"Thread::Mutex", %"Thread::Mutex"* null, i32 1) to i64)), !dbg !1014 | |
%1 = bitcast i8* %0 to %"Thread::Mutex"*, !dbg !1014 | |
%2 = bitcast %"Thread::Mutex"* %1 to i8*, !dbg !1014 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Thread::Mutex"* getelementptr (%"Thread::Mutex", %"Thread::Mutex"* null, i32 1) to i32), i32 4, i1 false), !dbg !1014 | |
%3 = getelementptr inbounds %"Thread::Mutex", %"Thread::Mutex"* %1, i32 0, i32 0, !dbg !1014 | |
store i32 101, i32* %3, !dbg !1014 | |
store %"Thread::Mutex"* %1, %"Thread::Mutex"** %_, !dbg !1014 | |
%4 = load %"Thread::Mutex"*, %"Thread::Mutex"** %_, !dbg !1014 | |
%5 = call i32 @"*Thread::Mutex#initialize:Int32"(%"Thread::Mutex"* %4), !dbg !1014 | |
%6 = load %"Thread::Mutex"*, %"Thread::Mutex"** %_, !dbg !1014 | |
call void @"*GC::add_finalizer<Thread::Mutex>:Nil"(%"Thread::Mutex"* %6), !dbg !1014 | |
%7 = load %"Thread::Mutex"*, %"Thread::Mutex"** %_, !dbg !1014 | |
ret %"Thread::Mutex"* %7, !dbg !1014 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Thread::Mutex#initialize:Int32"(%"Thread::Mutex"* %self) #0 !dbg !1015 { | |
alloca: | |
%attributes = alloca %"union.LibC::PthreadMutexattrT", !dbg !1016 | |
%ret = alloca i32, !dbg !1016 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i32 @pthread_mutexattr_init(%"union.LibC::PthreadMutexattrT"* %attributes), !dbg !1017 | |
%1 = call i32 @pthread_mutexattr_settype(%"union.LibC::PthreadMutexattrT"* %attributes, i32 2), !dbg !1018 | |
%2 = getelementptr inbounds %"Thread::Mutex", %"Thread::Mutex"* %self, i32 0, i32 1, !dbg !1018 | |
%3 = call i32 @pthread_mutex_init(%"union.LibC::PthreadMutexT"* %2, %"union.LibC::PthreadMutexattrT"* %attributes), !dbg !1019 | |
store i32 %3, i32* %ret, !dbg !1020 | |
%4 = load i32, i32* %ret, !dbg !1021 | |
%5 = icmp eq i32 %4, 0, !dbg !1021 | |
br i1 %5, label %then, label %else, !dbg !1021 | |
then: ; preds = %entry | |
br label %exit, !dbg !1021 | |
else: ; preds = %entry | |
%6 = load i32, i32* %ret, !dbg !1021 | |
%7 = call %Errno* @"*Errno::new<String, Int32>:Errno"(%String* bitcast ({ i32, i32, i32, [19 x i8] }* @"'pthread_mutex_init'" to %String*), i32 %6), !dbg !1022 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %7), !dbg !1021 | |
unreachable, !dbg !1021 | |
exit: ; preds = %then | |
%8 = call i32 @pthread_mutexattr_destroy(%"union.LibC::PthreadMutexattrT"* %attributes), !dbg !1023 | |
ret i32 %8, !dbg !1023 | |
} | |
declare i32 @pthread_mutexattr_init(%"union.LibC::PthreadMutexattrT"*) | |
declare i32 @pthread_mutexattr_settype(%"union.LibC::PthreadMutexattrT"*, i32) | |
declare i32 @pthread_mutex_init(%"union.LibC::PthreadMutexT"*, %"union.LibC::PthreadMutexattrT"*) | |
; Function Attrs: uwtable | |
define internal %Errno* @"*Errno::new<String, Int32>:Errno"(%String* %message, i32 %errno) #0 !dbg !1024 { | |
alloca: | |
%_ = alloca %Errno*, !dbg !1025 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%Errno* getelementptr (%Errno, %Errno* null, i32 1) to i64)), !dbg !1025 | |
%1 = bitcast i8* %0 to %Errno*, !dbg !1025 | |
%2 = bitcast %Errno* %1 to i8*, !dbg !1025 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%Errno* getelementptr (%Errno, %Errno* null, i32 1) to i32), i32 4, i1 false), !dbg !1025 | |
%3 = getelementptr inbounds %Errno, %Errno* %1, i32 0, i32 0, !dbg !1025 | |
store i32 54, i32* %3, !dbg !1025 | |
store %Errno* %1, %Errno** %_, !dbg !1025 | |
%4 = load %Errno*, %Errno** %_, !dbg !1025 | |
call void @"*Errno#initialize<String, Int32>:Nil"(%Errno* %4, %String* %message, i32 %errno), !dbg !1025 | |
%5 = load %Errno*, %Errno** %_, !dbg !1025 | |
ret %Errno* %5, !dbg !1025 | |
} | |
declare i32 @pthread_mutexattr_destroy(%"union.LibC::PthreadMutexattrT"*) | |
; Function Attrs: uwtable | |
define internal void @"*GC::add_finalizer<Thread::Mutex>:Nil"(%"Thread::Mutex"* %object) #0 !dbg !1026 { | |
entry: | |
call void @"*GC::add_finalizer_impl<Thread::Mutex>:Nil"(%"Thread::Mutex"* %object), !dbg !1027 | |
ret void, !dbg !1027 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*GC::add_finalizer_impl<Thread::Mutex>:Nil"(%"Thread::Mutex"* %object) #0 !dbg !1028 { | |
alloca: | |
%0 = alloca %"->", !dbg !1029 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Thread::Mutex"* %object to i8*, !dbg !1029 | |
%2 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !1029 | |
store i8* bitcast (void (i8*, i8*)* @"~proc2Proc(Pointer(Void), Pointer(Void), Nil)@/usr/share/crystal/src/gc/boehm.cr:130" to i8*), i8** %2, !dbg !1029 | |
%3 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !1029 | |
store i8* null, i8** %3, !dbg !1029 | |
%4 = load %"->", %"->"* %0, !dbg !1029 | |
%5 = call i8* @"~check_proc_is_not_closure"(%"->" %4), !dbg !1029 | |
%6 = bitcast i8* %5 to %Nil (i8*, i8*)*, !dbg !1029 | |
call void @GC_register_finalizer_ignore_self(i8* %1, %Nil (i8*, i8*)* %6, i8* null, %"->"* null, i8** null), !dbg !1030 | |
ret void, !dbg !1030 | |
} | |
; Function Attrs: uwtable | |
define internal void @"~proc2Proc(Pointer(Void), Pointer(Void), Nil)@/usr/share/crystal/src/gc/boehm.cr:130"(i8* %obj, i8* %data) #0 !dbg !1031 { | |
entry: | |
%0 = bitcast i8* %obj to %"Thread::Mutex"*, !dbg !1032 | |
call void @"*Thread::Mutex#finalize:Nil"(%"Thread::Mutex"* %0), !dbg !1033 | |
ret void, !dbg !1033 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread::Mutex#finalize:Nil"(%"Thread::Mutex"* %self) #0 !dbg !1034 { | |
alloca: | |
%ret = alloca i32, !dbg !1035 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %"union.LibC::PthreadMutexT"* @"*Thread::Mutex#to_unsafe:Pointer(LibC::PthreadMutexT)"(%"Thread::Mutex"* %self), !dbg !1036 | |
%1 = call i32 @pthread_mutex_destroy(%"union.LibC::PthreadMutexT"* %0), !dbg !1037 | |
store i32 %1, i32* %ret, !dbg !1038 | |
%2 = load i32, i32* %ret, !dbg !1039 | |
%3 = icmp eq i32 %2, 0, !dbg !1039 | |
br i1 %3, label %then, label %else, !dbg !1039 | |
then: ; preds = %entry | |
br label %exit, !dbg !1039 | |
else: ; preds = %entry | |
%4 = load i32, i32* %ret, !dbg !1039 | |
%5 = call %Errno* @"*Errno::new<String, Int32>:Errno"(%String* bitcast ({ i32, i32, i32, [22 x i8] }* @"'pthread_mutex_destr...'" to %String*), i32 %4), !dbg !1040 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %5), !dbg !1039 | |
unreachable, !dbg !1039 | |
exit: ; preds = %then | |
ret void, !dbg !1039 | |
} | |
; Function Attrs: uwtable | |
define internal %"union.LibC::PthreadMutexT"* @"*Thread::Mutex#to_unsafe:Pointer(LibC::PthreadMutexT)"(%"Thread::Mutex"* %self) #0 !dbg !1041 { | |
entry: | |
%0 = getelementptr inbounds %"Thread::Mutex", %"Thread::Mutex"* %self, i32 0, i32 1, !dbg !1042 | |
ret %"union.LibC::PthreadMutexT"* %0, !dbg !1042 | |
} | |
declare i32 @pthread_mutex_destroy(%"union.LibC::PthreadMutexT"*) | |
define internal void @"~Fiber::stack_pool:init"() { | |
entry: | |
%0 = call %"Fiber::StackPool"* @"*Fiber::StackPool::new:Fiber::StackPool"() | |
store %"Fiber::StackPool"* %0, %"Fiber::StackPool"** @"Fiber::stack_pool" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %"Fiber::StackPool"* @"*Fiber::StackPool::new:Fiber::StackPool"() #0 !dbg !1043 { | |
alloca: | |
%_ = alloca %"Fiber::StackPool"*, !dbg !1044 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Fiber::StackPool"* getelementptr (%"Fiber::StackPool", %"Fiber::StackPool"* null, i32 1) to i64)), !dbg !1044 | |
%1 = bitcast i8* %0 to %"Fiber::StackPool"*, !dbg !1044 | |
%2 = bitcast %"Fiber::StackPool"* %1 to i8*, !dbg !1044 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Fiber::StackPool"* getelementptr (%"Fiber::StackPool", %"Fiber::StackPool"* null, i32 1) to i32), i32 4, i1 false), !dbg !1044 | |
%3 = getelementptr inbounds %"Fiber::StackPool", %"Fiber::StackPool"* %1, i32 0, i32 0, !dbg !1044 | |
store i32 104, i32* %3, !dbg !1044 | |
store %"Fiber::StackPool"* %1, %"Fiber::StackPool"** %_, !dbg !1044 | |
%4 = load %"Fiber::StackPool"*, %"Fiber::StackPool"** %_, !dbg !1044 | |
%5 = call %"Deque(Pointer(Void))"* @"*Fiber::StackPool#initialize:Deque(Pointer(Void))"(%"Fiber::StackPool"* %4), !dbg !1044 | |
%6 = load %"Fiber::StackPool"*, %"Fiber::StackPool"** %_, !dbg !1044 | |
ret %"Fiber::StackPool"* %6, !dbg !1044 | |
} | |
; Function Attrs: uwtable | |
define internal %"Deque(Pointer(Void))"* @"*Fiber::StackPool#initialize:Deque(Pointer(Void))"(%"Fiber::StackPool"* %self) #0 !dbg !1045 { | |
entry: | |
%0 = call %"Deque(Pointer(Void))"* @"*Deque(Pointer(Void))@Deque(T)::new:Deque(Pointer(Void))"(i32 649), !dbg !1046 | |
%1 = getelementptr inbounds %"Fiber::StackPool", %"Fiber::StackPool"* %self, i32 0, i32 1, !dbg !1047 | |
store %"Deque(Pointer(Void))"* %0, %"Deque(Pointer(Void))"** %1, !dbg !1047 | |
ret %"Deque(Pointer(Void))"* %0, !dbg !1047 | |
} | |
; Function Attrs: uwtable | |
define internal %"Deque(Pointer(Void))"* @"*Deque(Pointer(Void))@Deque(T)::new:Deque(Pointer(Void))"(i32 %self) #0 !dbg !1048 { | |
alloca: | |
%_ = alloca %"Deque(Pointer(Void))"*, !dbg !1050 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Deque(Pointer(Void))"* getelementptr (%"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* null, i32 1) to i64)), !dbg !1050 | |
%1 = bitcast i8* %0 to %"Deque(Pointer(Void))"*, !dbg !1050 | |
%2 = bitcast %"Deque(Pointer(Void))"* %1 to i8*, !dbg !1050 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Deque(Pointer(Void))"* getelementptr (%"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* null, i32 1) to i32), i32 4, i1 false), !dbg !1050 | |
%3 = getelementptr inbounds %"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* %1, i32 0, i32 1, !dbg !1050 | |
store i32 0, i32* %3, !dbg !1050 | |
%4 = getelementptr inbounds %"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* %1, i32 0, i32 0, !dbg !1050 | |
store i32 118, i32* %4, !dbg !1050 | |
store %"Deque(Pointer(Void))"* %1, %"Deque(Pointer(Void))"** %_, !dbg !1050 | |
%5 = load %"Deque(Pointer(Void))"*, %"Deque(Pointer(Void))"** %_, !dbg !1050 | |
%6 = call i8** @"*Deque(Pointer(Void))@Deque(T)#initialize:Pointer(Pointer(Void))"(%"Deque(Pointer(Void))"* %5), !dbg !1050 | |
%7 = load %"Deque(Pointer(Void))"*, %"Deque(Pointer(Void))"** %_, !dbg !1050 | |
ret %"Deque(Pointer(Void))"* %7, !dbg !1050 | |
} | |
; Function Attrs: uwtable | |
define internal i8** @"*Deque(Pointer(Void))@Deque(T)#initialize:Pointer(Pointer(Void))"(%"Deque(Pointer(Void))"* %self) #0 !dbg !1051 { | |
entry: | |
%0 = getelementptr inbounds %"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* %self, i32 0, i32 2, !dbg !1052 | |
store i32 0, i32* %0, !dbg !1052 | |
%1 = getelementptr inbounds %"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* %self, i32 0, i32 3, !dbg !1053 | |
store i32 0, i32* %1, !dbg !1053 | |
%2 = call i8** @"*Pointer(Pointer(Void))@Pointer(T)::null:Pointer(Pointer(Void))"(i32 737), !dbg !1054 | |
%3 = getelementptr inbounds %"Deque(Pointer(Void))", %"Deque(Pointer(Void))"* %self, i32 0, i32 4, !dbg !1055 | |
store i8** %2, i8*** %3, !dbg !1055 | |
ret i8** %2, !dbg !1055 | |
} | |
define internal void @"~Crystal::EventLoop::eb:init"() { | |
alloca: | |
%0 = alloca %"Crystal::Event::Base" | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Crystal::Event::Base" @"*Crystal::Event::Base::new:Crystal::Event::Base"() | |
store %"Crystal::Event::Base" %1, %"Crystal::Event::Base"* %0 | |
%2 = load %"Crystal::Event::Base", %"Crystal::Event::Base"* %0 | |
store %"Crystal::Event::Base" %2, %"Crystal::Event::Base"* @"Crystal::EventLoop::eb" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %"Crystal::Event::Base" @"*Crystal::Event::Base::new:Crystal::Event::Base"() #0 !dbg !1056 { | |
alloca: | |
%_ = alloca %"Crystal::Event::Base", !dbg !1058 | |
%0 = alloca %"Crystal::Event::Base", !dbg !1058 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Crystal::Event::Base"* %0 to i8*, !dbg !1058 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i32), i32 4, i1 false), !dbg !1058 | |
%2 = load %"Crystal::Event::Base", %"Crystal::Event::Base"* %0, !dbg !1058 | |
store %"Crystal::Event::Base" %2, %"Crystal::Event::Base"* %_, !dbg !1058 | |
%3 = call i8* @"*Crystal::Event::Base#initialize:Pointer(Void)"(%"Crystal::Event::Base"* %_), !dbg !1058 | |
%4 = load %"Crystal::Event::Base", %"Crystal::Event::Base"* %_, !dbg !1058 | |
ret %"Crystal::Event::Base" %4, !dbg !1058 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Crystal::Event::Base#initialize:Pointer(Void)"(%"Crystal::Event::Base"* %self) #0 !dbg !1059 { | |
entry: | |
%0 = call i8* @event_base_new(), !dbg !1060 | |
%1 = getelementptr inbounds %"Crystal::Event::Base", %"Crystal::Event::Base"* %self, i32 0, i32 0, !dbg !1061 | |
store i8* %0, i8** %1, !dbg !1061 | |
ret i8* %0, !dbg !1061 | |
} | |
declare i8* @event_base_new() | |
define internal void @"~Thread::threads:init"() { | |
alloca: | |
%0 = alloca %"Thread::LinkedList(Thread)" | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Thread::LinkedList(Thread)" @"*Thread::LinkedList(Thread)@Thread::LinkedList(T)::new:Thread::LinkedList(Thread)"(i32 1048) | |
store %"Thread::LinkedList(Thread)" %1, %"Thread::LinkedList(Thread)"* %0 | |
%2 = load %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %0 | |
store %"Thread::LinkedList(Thread)" %2, %"Thread::LinkedList(Thread)"* @"Thread::threads" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal %"Thread::LinkedList(Thread)" @"*Thread::LinkedList(Thread)@Thread::LinkedList(T)::new:Thread::LinkedList(Thread)"(i32 %self) #0 !dbg !1062 { | |
alloca: | |
%x = alloca %"Thread::LinkedList(Thread)", !dbg !1063 | |
%0 = alloca %"Thread::LinkedList(Thread)", !dbg !1063 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Thread::LinkedList(Thread)"* %0 to i8*, !dbg !1063 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 trunc (i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i64), i64 3) to i32), i32 4, i1 false), !dbg !1063 | |
%2 = call %"Thread::Mutex"* @"*Thread::Mutex::new:Thread::Mutex"(), !dbg !1064 | |
%3 = getelementptr inbounds %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %0, i32 0, i32 2, !dbg !1064 | |
store %"Thread::Mutex"* %2, %"Thread::Mutex"** %3, !dbg !1064 | |
%4 = load %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %0, !dbg !1063 | |
store %"Thread::LinkedList(Thread)" %4, %"Thread::LinkedList(Thread)"* %x, !dbg !1063 | |
%5 = load %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %x, !dbg !1063 | |
ret %"Thread::LinkedList(Thread)" %5, !dbg !1063 | |
} | |
; Function Attrs: uwtable | |
define internal %Thread* @"*Thread::new:Thread"() #0 !dbg !1065 { | |
alloca: | |
%_ = alloca %Thread*, !dbg !1066 | |
%0 = alloca %"Atomic(UInt8)", !dbg !1067 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i8* @__crystal_malloc64(i64 ptrtoint (%Thread* getelementptr (%Thread, %Thread* null, i32 1) to i64)), !dbg !1066 | |
%2 = bitcast i8* %1 to %Thread*, !dbg !1066 | |
%3 = bitcast %Thread* %2 to i8*, !dbg !1066 | |
call void @llvm.memset.p0i8.i32(i8* %3, i8 0, i32 ptrtoint (%Thread* getelementptr (%Thread, %Thread* null, i32 1) to i32), i32 4, i1 false), !dbg !1066 | |
%4 = call %"Atomic(UInt8)" @"*Atomic(UInt8)@Atomic(T)::new<UInt8>:Atomic(UInt8)"(i32 1043, i8 0), !dbg !1067 | |
store %"Atomic(UInt8)" %4, %"Atomic(UInt8)"* %0, !dbg !1067 | |
%5 = getelementptr inbounds %Thread, %Thread* %2, i32 0, i32 6, !dbg !1067 | |
%6 = load %"Atomic(UInt8)", %"Atomic(UInt8)"* %0, !dbg !1067 | |
store %"Atomic(UInt8)" %6, %"Atomic(UInt8)"* %5, !dbg !1067 | |
%7 = getelementptr inbounds %Thread, %Thread* %2, i32 0, i32 0, !dbg !1067 | |
store i32 102, i32* %7, !dbg !1067 | |
store %Thread* %2, %Thread** %_, !dbg !1066 | |
%8 = load %Thread*, %Thread** %_, !dbg !1066 | |
call void @"*Thread#initialize:Nil"(%Thread* %8), !dbg !1066 | |
%9 = load %Thread*, %Thread** %_, !dbg !1066 | |
ret %Thread* %9, !dbg !1066 | |
} | |
; Function Attrs: uwtable | |
define internal %"Atomic(UInt8)" @"*Atomic(UInt8)@Atomic(T)::new<UInt8>:Atomic(UInt8)"(i32 %self, i8 %value) #0 !dbg !1068 { | |
alloca: | |
%_ = alloca %"Atomic(UInt8)", !dbg !1070 | |
%0 = alloca %"Atomic(UInt8)", !dbg !1070 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Atomic(UInt8)"* %0 to i8*, !dbg !1070 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (i8* getelementptr (i8, i8* null, i32 1) to i32), i32 4, i1 false), !dbg !1070 | |
%2 = load %"Atomic(UInt8)", %"Atomic(UInt8)"* %0, !dbg !1070 | |
store %"Atomic(UInt8)" %2, %"Atomic(UInt8)"* %_, !dbg !1070 | |
call void @"*Atomic(UInt8)@Atomic(T)#initialize<UInt8>:Nil"(%"Atomic(UInt8)"* %_, i8 %value), !dbg !1070 | |
%3 = load %"Atomic(UInt8)", %"Atomic(UInt8)"* %_, !dbg !1070 | |
ret %"Atomic(UInt8)" %3, !dbg !1070 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Atomic(UInt8)@Atomic(T)#initialize<UInt8>:Nil"(%"Atomic(UInt8)"* %self, i8 %value) #0 !dbg !1071 { | |
entry: | |
%0 = getelementptr inbounds %"Atomic(UInt8)", %"Atomic(UInt8)"* %self, i32 0, i32 0, !dbg !1072 | |
store i8 %value, i8* %0, !dbg !1072 | |
ret void, !dbg !1072 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread#initialize:Nil"(%Thread* %self) #0 !dbg !1073 { | |
alloca: | |
%0 = alloca %"->", !dbg !1074 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !1074 | |
store i8* bitcast (void ()* @"~procProc(Nil)@/usr/share/crystal/src/thread.cr:47" to i8*), i8** %1, !dbg !1074 | |
%2 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !1074 | |
store i8* null, i8** %2, !dbg !1074 | |
%3 = load %"->", %"->"* %0, !dbg !1074 | |
%4 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 7, !dbg !1075 | |
store %"->" %3, %"->"* %4, !dbg !1075 | |
%5 = call i64 @pthread_self(), !dbg !1076 | |
%6 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 1, !dbg !1077 | |
store i64 %5, i64* %6, !dbg !1077 | |
%7 = call i8* @"*Thread#stack_address:Pointer(Void)"(%Thread* %self), !dbg !1078 | |
%8 = call %Fiber* @"*Fiber::new<Pointer(Void), Thread>:Fiber"(i8* %7, %Thread* %self), !dbg !1079 | |
%9 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 3, !dbg !1080 | |
store %Fiber* %8, %Fiber** %9, !dbg !1080 | |
%10 = call %"Thread::LinkedList(Thread)"* @"~Thread::threads:read"(), !dbg !1080 | |
call void @"*Thread::LinkedList(Thread)@Thread::LinkedList(T)#push<Thread>:Nil"(%"Thread::LinkedList(Thread)"* %10, %Thread* %self), !dbg !1081 | |
ret void, !dbg !1081 | |
} | |
; Function Attrs: uwtable | |
define internal void @"~procProc(Nil)@/usr/share/crystal/src/thread.cr:47"() #0 !dbg !1082 { | |
entry: | |
ret void, !dbg !1083 | |
} | |
declare i64 @pthread_self() | |
; Function Attrs: uwtable | |
define internal i8* @"*Thread#stack_address:Pointer(Void)"(%Thread* %self) #0 !dbg !1084 { | |
alloca: | |
%address = alloca i8*, !dbg !1085 | |
%attr = alloca %"union.LibC::PthreadAttrT", !dbg !1085 | |
%ret = alloca i32, !dbg !1085 | |
%0 = alloca %"union.LibC::PthreadAttrT", !dbg !1086 | |
%1 = alloca i64, !dbg !1086 | |
br label %entry | |
entry: ; preds = %alloca | |
%2 = call i8* @"*Pointer(Void)@Pointer(T)::null:Pointer(Void)"(i32 724), !dbg !1087 | |
store i8* %2, i8** %address, !dbg !1088 | |
%3 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 1, !dbg !1086 | |
%4 = load i64, i64* %3, !dbg !1086 | |
%5 = call i32 @pthread_getattr_np(i64 %4, %"union.LibC::PthreadAttrT"* %0), !dbg !1086 | |
%6 = load %"union.LibC::PthreadAttrT", %"union.LibC::PthreadAttrT"* %0, !dbg !1086 | |
store %"union.LibC::PthreadAttrT" %6, %"union.LibC::PthreadAttrT"* %attr, !dbg !1086 | |
%7 = icmp eq i32 %5, 0, !dbg !1086 | |
br i1 %7, label %then, label %else, !dbg !1086 | |
then: ; preds = %entry | |
%8 = call i32 @pthread_attr_getstack(%"union.LibC::PthreadAttrT"* %attr, i8** %address, i64* %1), !dbg !1086 | |
br label %exit, !dbg !1086 | |
else: ; preds = %entry | |
br label %exit, !dbg !1086 | |
exit: ; preds = %else, %then | |
%9 = call i32 @pthread_attr_destroy(%"union.LibC::PthreadAttrT"* %attr), !dbg !1086 | |
store i32 %9, i32* %ret, !dbg !1086 | |
%10 = load i32, i32* %ret, !dbg !1086 | |
%11 = icmp eq i32 %10, 0, !dbg !1086 | |
br i1 %11, label %then1, label %else2, !dbg !1086 | |
then1: ; preds = %exit | |
br label %exit3, !dbg !1086 | |
else2: ; preds = %exit | |
%12 = load i32, i32* %ret, !dbg !1086 | |
%13 = call %Errno* @"*Errno::new<String, Int32>:Errno"(%String* bitcast ({ i32, i32, i32, [21 x i8] }* @"'pthread_attr_destro...'" to %String*), i32 %12), !dbg !1086 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %13), !dbg !1086 | |
unreachable, !dbg !1086 | |
exit3: ; preds = %then1 | |
%14 = load i8*, i8** %address, !dbg !1086 | |
ret i8* %14, !dbg !1086 | |
} | |
declare i32 @pthread_getattr_np(i64, %"union.LibC::PthreadAttrT"*) | |
declare i32 @pthread_attr_getstack(%"union.LibC::PthreadAttrT"*, i8**, i64*) | |
declare i32 @pthread_attr_destroy(%"union.LibC::PthreadAttrT"*) | |
; Function Attrs: uwtable | |
define internal %Fiber* @"*Fiber::new<Pointer(Void), Thread>:Fiber"(i8* %stack, %Thread* %thread) #0 !dbg !1089 { | |
alloca: | |
%_ = alloca %Fiber*, !dbg !1090 | |
%0 = alloca %"Atomic(Thread | Nil)", !dbg !1091 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i8* @__crystal_malloc64(i64 ptrtoint (%Fiber* getelementptr (%Fiber, %Fiber* null, i32 1) to i64)), !dbg !1090 | |
%2 = bitcast i8* %1 to %Fiber*, !dbg !1090 | |
%3 = bitcast %Fiber* %2 to i8*, !dbg !1090 | |
call void @llvm.memset.p0i8.i32(i8* %3, i8 0, i32 ptrtoint (%Fiber* getelementptr (%Fiber, %Fiber* null, i32 1) to i32), i32 4, i1 false), !dbg !1090 | |
%4 = getelementptr inbounds %Fiber, %Fiber* %2, i32 0, i32 8, !dbg !1090 | |
store i1 true, i1* %4, !dbg !1090 | |
%5 = call %"Atomic(Thread | Nil)" @"*Atomic(Thread | Nil)@Atomic(T)::new<Nil>:Atomic(Thread | Nil)"(i32 1042, %Nil zeroinitializer), !dbg !1091 | |
store %"Atomic(Thread | Nil)" %5, %"Atomic(Thread | Nil)"* %0, !dbg !1091 | |
%6 = getelementptr inbounds %Fiber, %Fiber* %2, i32 0, i32 9, !dbg !1091 | |
%7 = load %"Atomic(Thread | Nil)", %"Atomic(Thread | Nil)"* %0, !dbg !1091 | |
store %"Atomic(Thread | Nil)" %7, %"Atomic(Thread | Nil)"* %6, !dbg !1091 | |
%8 = getelementptr inbounds %Fiber, %Fiber* %2, i32 0, i32 0, !dbg !1091 | |
store i32 103, i32* %8, !dbg !1091 | |
store %Fiber* %2, %Fiber** %_, !dbg !1090 | |
%9 = load %Fiber*, %Fiber** %_, !dbg !1090 | |
call void @"*Fiber#initialize<Pointer(Void), Thread>:Nil"(%Fiber* %9, i8* %stack, %Thread* %thread), !dbg !1090 | |
%10 = load %Fiber*, %Fiber** %_, !dbg !1090 | |
ret %Fiber* %10, !dbg !1090 | |
} | |
; Function Attrs: uwtable | |
define internal %"Atomic(Thread | Nil)" @"*Atomic(Thread | Nil)@Atomic(T)::new<Nil>:Atomic(Thread | Nil)"(i32 %self, %Nil %value) #0 !dbg !1092 { | |
alloca: | |
%_ = alloca %"Atomic(Thread | Nil)", !dbg !1093 | |
%0 = alloca %"Atomic(Thread | Nil)", !dbg !1093 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Atomic(Thread | Nil)"* %0 to i8*, !dbg !1093 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (i1** getelementptr (i1*, i1** null, i32 1) to i32), i32 4, i1 false), !dbg !1093 | |
%2 = load %"Atomic(Thread | Nil)", %"Atomic(Thread | Nil)"* %0, !dbg !1093 | |
store %"Atomic(Thread | Nil)" %2, %"Atomic(Thread | Nil)"* %_, !dbg !1093 | |
call void @"*Atomic(Thread | Nil)@Atomic(T)#initialize<Nil>:Nil"(%"Atomic(Thread | Nil)"* %_, %Nil zeroinitializer), !dbg !1093 | |
%3 = load %"Atomic(Thread | Nil)", %"Atomic(Thread | Nil)"* %_, !dbg !1093 | |
ret %"Atomic(Thread | Nil)" %3, !dbg !1093 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Atomic(Thread | Nil)@Atomic(T)#initialize<Nil>:Nil"(%"Atomic(Thread | Nil)"* %self, %Nil %value) #0 !dbg !1094 { | |
entry: | |
%0 = getelementptr inbounds %"Atomic(Thread | Nil)", %"Atomic(Thread | Nil)"* %self, i32 0, i32 0, !dbg !1095 | |
store %Thread* null, %Thread** %0, !dbg !1095 | |
ret void, !dbg !1095 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Fiber#initialize<Pointer(Void), Thread>:Nil"(%Fiber* %self, i8* %stack, %Thread* %thread) #0 !dbg !1096 { | |
alloca: | |
%0 = alloca %"->", !dbg !1097 | |
%1 = alloca %"struct.Fiber::Context", !dbg !1098 | |
br label %entry | |
entry: ; preds = %alloca | |
%2 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 2, !dbg !1097 | |
store i8* %stack, i8** %2, !dbg !1097 | |
%3 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !1097 | |
store i8* bitcast (void ()* @"~procProc(Nil)@/usr/share/crystal/src/fiber.cr:63" to i8*), i8** %3, !dbg !1097 | |
%4 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !1097 | |
store i8* null, i8** %4, !dbg !1097 | |
%5 = load %"->", %"->"* %0, !dbg !1097 | |
%6 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 10, !dbg !1099 | |
store %"->" %5, %"->"* %6, !dbg !1099 | |
%7 = call i8* @_fiber_get_stack_top(), !dbg !1100 | |
%8 = call %"struct.Fiber::Context" @"*struct.Fiber::Context::new<Pointer(Void)>:struct.Fiber::Context"(i8* %7), !dbg !1098 | |
store %"struct.Fiber::Context" %8, %"struct.Fiber::Context"* %1, !dbg !1098 | |
%9 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 1, !dbg !1101 | |
%10 = load %"struct.Fiber::Context", %"struct.Fiber::Context"* %1, !dbg !1101 | |
store %"struct.Fiber::Context" %10, %"struct.Fiber::Context"* %9, !dbg !1101 | |
%11 = call i8* @"*GC::current_thread_stack_bottom:Pointer(Void)"(), !dbg !1102 | |
%12 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 4, !dbg !1103 | |
store i8* %11, i8** %12, !dbg !1103 | |
%13 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 5, !dbg !1104 | |
store %String* bitcast ({ i32, i32, i32, [5 x i8] }* @"'main'" to %String*), %String** %13, !dbg !1104 | |
%14 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 9, !dbg !1104 | |
%15 = call %Thread* @"*Atomic(Thread | Nil)@Atomic(T)#set<Thread>:Thread"(%"Atomic(Thread | Nil)"* %14, %Thread* %thread), !dbg !1105 | |
%16 = call %"Thread::LinkedList(Fiber)"* @"~Fiber::fibers:read"(), !dbg !1105 | |
call void @"*Thread::LinkedList(Fiber)@Thread::LinkedList(T)#push<Fiber>:Nil"(%"Thread::LinkedList(Fiber)"* %16, %Fiber* %self), !dbg !1106 | |
ret void, !dbg !1106 | |
} | |
; Function Attrs: uwtable | |
define internal void @"~procProc(Nil)@/usr/share/crystal/src/fiber.cr:63"() #0 !dbg !1107 { | |
entry: | |
ret void, !dbg !1108 | |
} | |
; Function Attrs: uwtable | |
define internal %"struct.Fiber::Context" @"*struct.Fiber::Context::new<Pointer(Void)>:struct.Fiber::Context"(i8* %stack_top) #0 !dbg !1109 { | |
alloca: | |
%_ = alloca %"struct.Fiber::Context", !dbg !1111 | |
%0 = alloca %"struct.Fiber::Context", !dbg !1111 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"struct.Fiber::Context"* %0 to i8*, !dbg !1111 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%"struct.Fiber::Context"* getelementptr (%"struct.Fiber::Context", %"struct.Fiber::Context"* null, i32 1) to i32), i32 4, i1 false), !dbg !1111 | |
%2 = load %"struct.Fiber::Context", %"struct.Fiber::Context"* %0, !dbg !1111 | |
store %"struct.Fiber::Context" %2, %"struct.Fiber::Context"* %_, !dbg !1111 | |
%3 = call i64 @"*struct.Fiber::Context#initialize<Pointer(Void)>:Int64"(%"struct.Fiber::Context"* %_, i8* %stack_top), !dbg !1111 | |
%4 = load %"struct.Fiber::Context", %"struct.Fiber::Context"* %_, !dbg !1111 | |
ret %"struct.Fiber::Context" %4, !dbg !1111 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*struct.Fiber::Context#initialize<Pointer(Void)>:Int64"(%"struct.Fiber::Context"* %self, i8* %stack_top) #0 !dbg !1112 { | |
entry: | |
%0 = getelementptr inbounds %"struct.Fiber::Context", %"struct.Fiber::Context"* %self, i32 0, i32 0, !dbg !1113 | |
store i8* %stack_top, i8** %0, !dbg !1113 | |
%1 = getelementptr inbounds %"struct.Fiber::Context", %"struct.Fiber::Context"* %self, i32 0, i32 1, !dbg !1114 | |
store i64 0, i64* %1, !dbg !1114 | |
ret i64 0, !dbg !1114 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*GC::current_thread_stack_bottom:Pointer(Void)"() #0 !dbg !1115 { | |
entry: | |
%0 = load i8*, i8** @GC_stackbottom, !dbg !1116 | |
ret i8* %0, !dbg !1116 | |
} | |
; Function Attrs: uwtable | |
define internal %Thread* @"*Atomic(Thread | Nil)@Atomic(T)#set<Thread>:Thread"(%"Atomic(Thread | Nil)"* %self, %Thread* %value) #0 !dbg !1117 { | |
entry: | |
%0 = getelementptr inbounds %"Atomic(Thread | Nil)", %"Atomic(Thread | Nil)"* %self, i32 0, i32 0, !dbg !1118 | |
store atomic volatile %Thread* %value, %Thread** %0 seq_cst, align 8, !dbg !1118 | |
ret %Thread* %value, !dbg !1118 | |
} | |
define internal %"Thread::LinkedList(Fiber)"* @"~Fiber::fibers:read"() { | |
entry: | |
%0 = load i1, i1* @"Fiber::fibers:init", !dbg !1105 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !1105 | |
initialized: ; preds = %not_initialized, %entry | |
ret %"Thread::LinkedList(Fiber)"* @"Fiber::fibers", !dbg !1105 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Fiber::fibers:init", !dbg !1105 | |
call void @"~Fiber::fibers:init"(), !dbg !1105 | |
br label %initialized, !dbg !1105 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread::LinkedList(Fiber)@Thread::LinkedList(T)#push<Fiber>:Nil"(%"Thread::LinkedList(Fiber)"* %self, %Fiber* %node) #0 personality i32 (i32, i32, i64, %"struct.LibUnwind::Exception"*, i8*)* @__crystal_personality !dbg !1119 { | |
alloca: | |
%tail = alloca %Fiber*, !dbg !1120 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %self, i32 0, i32 2, !dbg !1121 | |
%1 = load %"Thread::Mutex"*, %"Thread::Mutex"** %0, !dbg !1121 | |
invoke void @"*Thread::Mutex#lock:Nil"(%"Thread::Mutex"* %1) | |
to label %invoke_out unwind label %rescue, !dbg !1122 | |
rescue: ; preds = %entry | |
%2 = landingpad %landing_pad | |
cleanup, !dbg !1123 | |
%3 = extractvalue %landing_pad %2, 0, !dbg !1123 | |
%4 = extractvalue %landing_pad %2, 1, !dbg !1123 | |
%5 = bitcast i8* %3 to %"struct.LibUnwind::Exception"*, !dbg !1122 | |
%6 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %5), !dbg !1122 | |
%7 = inttoptr i64 %6 to i32*, !dbg !1122 | |
call void @"*Thread::Mutex#unlock:Nil"(%"Thread::Mutex"* %1), !dbg !1124 | |
%8 = bitcast i8* %3 to %"struct.LibUnwind::Exception"*, !dbg !1124 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %8), !dbg !1122 | |
unreachable, !dbg !1122 | |
invoke_out: ; preds = %entry | |
call void @"*Fiber#previous=<Nil>:Nil"(%Fiber* %node, %Nil zeroinitializer), !dbg !1125 | |
%9 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %self, i32 0, i32 1, !dbg !1126 | |
%10 = load %Fiber*, %Fiber** %9, !dbg !1126 | |
store %Fiber* %10, %Fiber** %tail, !dbg !1127 | |
%11 = icmp ne %Fiber* %10, null, !dbg !1127 | |
br i1 %11, label %then, label %else, !dbg !1127 | |
then: ; preds = %invoke_out | |
%12 = load %Fiber*, %Fiber** %tail, !dbg !1127 | |
%13 = call %Fiber* @"*Fiber#previous=<Fiber>:Fiber"(%Fiber* %node, %Fiber* %12), !dbg !1128 | |
%14 = load %Fiber*, %Fiber** %tail, !dbg !1128 | |
%15 = call %Fiber* @"*Fiber#next=<Fiber>:Fiber"(%Fiber* %14, %Fiber* %node), !dbg !1129 | |
%16 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %self, i32 0, i32 1, !dbg !1130 | |
store %Fiber* %15, %Fiber** %16, !dbg !1130 | |
br label %exit, !dbg !1130 | |
else: ; preds = %invoke_out | |
%17 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %self, i32 0, i32 1, !dbg !1131 | |
store %Fiber* %node, %Fiber** %17, !dbg !1131 | |
%18 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %self, i32 0, i32 0, !dbg !1123 | |
store %Fiber* %node, %Fiber** %18, !dbg !1123 | |
br label %exit, !dbg !1123 | |
exit: ; preds = %else, %then | |
%19 = phi %Fiber* [ %15, %then ], [ %node, %else ], !dbg !1123 | |
br label %exit1, !dbg !1123 | |
exit1: ; preds = %exit | |
%20 = phi %Fiber* [ %19, %exit ], !dbg !1122 | |
call void @"*Thread::Mutex#unlock:Nil"(%"Thread::Mutex"* %1), !dbg !1124 | |
ret void, !dbg !1124 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread::Mutex#lock:Nil"(%"Thread::Mutex"* %self) #0 !dbg !1132 { | |
alloca: | |
%ret = alloca i32, !dbg !1133 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %"union.LibC::PthreadMutexT"* @"*Thread::Mutex#to_unsafe:Pointer(LibC::PthreadMutexT)"(%"Thread::Mutex"* %self), !dbg !1134 | |
%1 = call i32 @pthread_mutex_lock(%"union.LibC::PthreadMutexT"* %0), !dbg !1135 | |
store i32 %1, i32* %ret, !dbg !1136 | |
%2 = load i32, i32* %ret, !dbg !1137 | |
%3 = icmp eq i32 %2, 0, !dbg !1137 | |
br i1 %3, label %then, label %else, !dbg !1137 | |
then: ; preds = %entry | |
br label %exit, !dbg !1137 | |
else: ; preds = %entry | |
%4 = load i32, i32* %ret, !dbg !1137 | |
%5 = call %Errno* @"*Errno::new<String, Int32>:Errno"(%String* bitcast ({ i32, i32, i32, [19 x i8] }* @"'pthread_mutex_lock'" to %String*), i32 %4), !dbg !1138 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %5), !dbg !1137 | |
unreachable, !dbg !1137 | |
exit: ; preds = %then | |
ret void, !dbg !1137 | |
} | |
declare i32 @pthread_mutex_lock(%"union.LibC::PthreadMutexT"*) | |
; Function Attrs: uwtable | |
define internal void @"*Fiber#previous=<Nil>:Nil"(%Fiber* %self, %Nil %previous) #0 !dbg !1139 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 7, !dbg !1140 | |
store %Fiber* null, %Fiber** %0, !dbg !1140 | |
ret void, !dbg !1140 | |
} | |
; Function Attrs: uwtable | |
define internal %Fiber* @"*Fiber#previous=<Fiber>:Fiber"(%Fiber* %self, %Fiber* %previous) #0 !dbg !1141 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 7, !dbg !1142 | |
store %Fiber* %previous, %Fiber** %0, !dbg !1142 | |
ret %Fiber* %previous, !dbg !1142 | |
} | |
; Function Attrs: uwtable | |
define internal %Fiber* @"*Fiber#next=<Fiber>:Fiber"(%Fiber* %self, %Fiber* %__arg0) #0 !dbg !1143 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 6, !dbg !1144 | |
store %Fiber* %__arg0, %Fiber** %0, !dbg !1144 | |
ret %Fiber* %__arg0, !dbg !1144 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread::Mutex#unlock:Nil"(%"Thread::Mutex"* %self) #0 !dbg !1145 { | |
alloca: | |
%ret = alloca i32, !dbg !1146 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %"union.LibC::PthreadMutexT"* @"*Thread::Mutex#to_unsafe:Pointer(LibC::PthreadMutexT)"(%"Thread::Mutex"* %self), !dbg !1147 | |
%1 = call i32 @pthread_mutex_unlock(%"union.LibC::PthreadMutexT"* %0), !dbg !1148 | |
store i32 %1, i32* %ret, !dbg !1149 | |
%2 = load i32, i32* %ret, !dbg !1150 | |
%3 = icmp eq i32 %2, 0, !dbg !1150 | |
br i1 %3, label %then, label %else, !dbg !1150 | |
then: ; preds = %entry | |
br label %exit, !dbg !1150 | |
else: ; preds = %entry | |
%4 = load i32, i32* %ret, !dbg !1150 | |
%5 = call %Errno* @"*Errno::new<String, Int32>:Errno"(%String* bitcast ({ i32, i32, i32, [21 x i8] }* @"'pthread_mutex_unloc...'" to %String*), i32 %4), !dbg !1151 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %5), !dbg !1150 | |
unreachable, !dbg !1150 | |
exit: ; preds = %then | |
ret void, !dbg !1150 | |
} | |
declare i32 @pthread_mutex_unlock(%"union.LibC::PthreadMutexT"*) | |
define internal %"Thread::LinkedList(Thread)"* @"~Thread::threads:read"() { | |
entry: | |
%0 = load i1, i1* @"Thread::threads:init", !dbg !1080 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !1080 | |
initialized: ; preds = %not_initialized, %entry | |
ret %"Thread::LinkedList(Thread)"* @"Thread::threads", !dbg !1080 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Thread::threads:init", !dbg !1080 | |
call void @"~Thread::threads:init"(), !dbg !1080 | |
br label %initialized, !dbg !1080 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread::LinkedList(Thread)@Thread::LinkedList(T)#push<Thread>:Nil"(%"Thread::LinkedList(Thread)"* %self, %Thread* %node) #0 personality i32 (i32, i32, i64, %"struct.LibUnwind::Exception"*, i8*)* @__crystal_personality !dbg !1152 { | |
alloca: | |
%tail = alloca %Thread*, !dbg !1153 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %self, i32 0, i32 2, !dbg !1154 | |
%1 = load %"Thread::Mutex"*, %"Thread::Mutex"** %0, !dbg !1154 | |
invoke void @"*Thread::Mutex#lock:Nil"(%"Thread::Mutex"* %1) | |
to label %invoke_out unwind label %rescue, !dbg !1155 | |
rescue: ; preds = %entry | |
%2 = landingpad %landing_pad | |
cleanup, !dbg !1156 | |
%3 = extractvalue %landing_pad %2, 0, !dbg !1156 | |
%4 = extractvalue %landing_pad %2, 1, !dbg !1156 | |
%5 = bitcast i8* %3 to %"struct.LibUnwind::Exception"*, !dbg !1155 | |
%6 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %5), !dbg !1155 | |
%7 = inttoptr i64 %6 to i32*, !dbg !1155 | |
call void @"*Thread::Mutex#unlock:Nil"(%"Thread::Mutex"* %1), !dbg !1157 | |
%8 = bitcast i8* %3 to %"struct.LibUnwind::Exception"*, !dbg !1157 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %8), !dbg !1155 | |
unreachable, !dbg !1155 | |
invoke_out: ; preds = %entry | |
call void @"*Thread#previous=<Nil>:Nil"(%Thread* %node, %Nil zeroinitializer), !dbg !1158 | |
%9 = getelementptr inbounds %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %self, i32 0, i32 1, !dbg !1159 | |
%10 = load %Thread*, %Thread** %9, !dbg !1159 | |
store %Thread* %10, %Thread** %tail, !dbg !1160 | |
%11 = icmp ne %Thread* %10, null, !dbg !1160 | |
br i1 %11, label %then, label %else, !dbg !1160 | |
then: ; preds = %invoke_out | |
%12 = load %Thread*, %Thread** %tail, !dbg !1160 | |
%13 = call %Thread* @"*Thread#previous=<Thread>:Thread"(%Thread* %node, %Thread* %12), !dbg !1161 | |
%14 = load %Thread*, %Thread** %tail, !dbg !1161 | |
%15 = call %Thread* @"*Thread#next=<Thread>:Thread"(%Thread* %14, %Thread* %node), !dbg !1162 | |
%16 = getelementptr inbounds %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %self, i32 0, i32 1, !dbg !1163 | |
store %Thread* %15, %Thread** %16, !dbg !1163 | |
br label %exit, !dbg !1163 | |
else: ; preds = %invoke_out | |
%17 = getelementptr inbounds %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %self, i32 0, i32 1, !dbg !1164 | |
store %Thread* %node, %Thread** %17, !dbg !1164 | |
%18 = getelementptr inbounds %"Thread::LinkedList(Thread)", %"Thread::LinkedList(Thread)"* %self, i32 0, i32 0, !dbg !1156 | |
store %Thread* %node, %Thread** %18, !dbg !1156 | |
br label %exit, !dbg !1156 | |
exit: ; preds = %else, %then | |
%19 = phi %Thread* [ %15, %then ], [ %node, %else ], !dbg !1156 | |
br label %exit1, !dbg !1156 | |
exit1: ; preds = %exit | |
%20 = phi %Thread* [ %19, %exit ], !dbg !1155 | |
call void @"*Thread::Mutex#unlock:Nil"(%"Thread::Mutex"* %1), !dbg !1157 | |
ret void, !dbg !1157 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Thread#previous=<Nil>:Nil"(%Thread* %self, %Nil %previous) #0 !dbg !1165 { | |
entry: | |
%0 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 5, !dbg !1166 | |
store %Thread* null, %Thread** %0, !dbg !1166 | |
ret void, !dbg !1166 | |
} | |
; Function Attrs: uwtable | |
define internal %Thread* @"*Thread#previous=<Thread>:Thread"(%Thread* %self, %Thread* %previous) #0 !dbg !1167 { | |
entry: | |
%0 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 5, !dbg !1168 | |
store %Thread* %previous, %Thread** %0, !dbg !1168 | |
ret %Thread* %previous, !dbg !1168 | |
} | |
; Function Attrs: uwtable | |
define internal %Thread* @"*Thread#next=<Thread>:Thread"(%Thread* %self, %Thread* %__arg0) #0 !dbg !1169 { | |
entry: | |
%0 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 4, !dbg !1170 | |
store %Thread* %__arg0, %Thread** %0, !dbg !1170 | |
ret %Thread* %__arg0, !dbg !1170 | |
} | |
; Function Attrs: uwtable | |
define internal %Thread* @"*Thread::current=<Thread>:Thread"(%Thread* %current) #0 !dbg !1171 { | |
alloca: | |
%0 = alloca %Thread**, !dbg !1172 | |
br label %entry | |
entry: ; preds = %alloca | |
call void @"*Thread::current"(%Thread*** %0), !dbg !1172 | |
%1 = load %Thread**, %Thread*** %0, !dbg !1172 | |
store %Thread* %current, %Thread** %1, !dbg !1172 | |
ret %Thread* %current, !dbg !1172 | |
} | |
; Function Attrs: noinline | |
define internal void @"*Thread::current"(%Thread***) #5 { | |
entry: | |
store %Thread** @"Thread::current", %Thread*** %0, !dbg !1172 | |
ret void, !dbg !1172 | |
} | |
; Function Attrs: uwtable | |
define i32 @main(i32 %argc, i8** %argv) #0 !dbg !1173 { | |
entry: | |
%0 = call i32 @"*Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32"(i32 %argc, i8** %argv), !dbg !1175 | |
ret i32 %0, !dbg !1175 | |
} | |
define internal void @"~File::DEFAULT_CREATE_PERMISSIONS:init"() { | |
entry: | |
%0 = call i16 @"*File::Permissions::new<Int32>:File::Permissions"(i32 420) | |
store i16 %0, i16* @"File::DEFAULT_CREATE_PERMISSIONS" | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal i16 @"*File::Permissions::new<Int32>:File::Permissions"(i32 %int) #0 !dbg !1176 { | |
entry: | |
%0 = trunc i32 %int to i16, !dbg !1178 | |
ret i16 %0, !dbg !1178 | |
} | |
; Function Attrs: uwtable | |
define i8* @__crystal_malloc(i32 %size) #0 !dbg !1179 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt32>:UInt64"(i32 %size), !dbg !1180 | |
%1 = call i8* @"*GC::malloc<UInt64>:Pointer(Void)"(i64 %0), !dbg !1181 | |
ret i8* %1, !dbg !1181 | |
} | |
; Function Attrs: uwtable | |
define i8* @__crystal_malloc_atomic(i32 %size) #0 !dbg !1182 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt32>:UInt64"(i32 %size), !dbg !1183 | |
%1 = call i8* @"*GC::malloc_atomic<UInt64>:Pointer(Void)"(i64 %0), !dbg !1184 | |
ret i8* %1, !dbg !1184 | |
} | |
; Function Attrs: uwtable | |
define i8* @__crystal_realloc(i8* %pointer, i32 %size) #0 !dbg !1185 { | |
entry: | |
%0 = call i64 @"*UInt64::new<UInt32>:UInt64"(i32 %size), !dbg !1186 | |
%1 = call i8* @"*GC::realloc<Pointer(Void), UInt64>:Pointer(Void)"(i8* %pointer, i64 %0), !dbg !1187 | |
ret i8* %1, !dbg !1187 | |
} | |
; Function Attrs: uwtable | |
define internal void @"~procProc(Nil)@/usr/share/crystal/src/gc/boehm.cr:243"() #0 !dbg !1188 { | |
alloca: | |
%fiber = alloca %Fiber*, !dbg !1189 | |
%fiber1 = alloca %Fiber*, !dbg !1190 | |
%node = alloca %Fiber*, !dbg !1190 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %"Thread::LinkedList(Fiber)"* @"~Fiber::fibers:read"(), !dbg !1189 | |
%1 = getelementptr inbounds %"Thread::LinkedList(Fiber)", %"Thread::LinkedList(Fiber)"* %0, i32 0, i32 0, !dbg !1190 | |
%2 = load %Fiber*, %Fiber** %1, !dbg !1190 | |
store %Fiber* %2, %Fiber** %node, !dbg !1191 | |
br label %while, !dbg !1191 | |
while: ; preds = %exit2, %entry | |
%3 = load %Fiber*, %Fiber** %node, !dbg !1192 | |
%4 = icmp ne %Fiber* %3, null, !dbg !1192 | |
br i1 %4, label %body, label %exit, !dbg !1192 | |
body: ; preds = %while | |
%5 = load %Fiber*, %Fiber** %node, !dbg !1192 | |
store %Fiber* %5, %Fiber** %fiber1, !dbg !1192 | |
%6 = load %Fiber*, %Fiber** %fiber1, !dbg !1192 | |
store %Fiber* %6, %Fiber** %fiber, !dbg !1192 | |
%7 = load %Fiber*, %Fiber** %fiber, !dbg !1193 | |
%8 = call i1 @"*Fiber#running?:Bool"(%Fiber* %7), !dbg !1194 | |
br i1 %8, label %then, label %else, !dbg !1194 | |
exit: ; preds = %while | |
ret void, !dbg !1195 | |
then: ; preds = %body | |
br label %exit2, !dbg !1194 | |
else: ; preds = %body | |
%9 = load %Fiber*, %Fiber** %fiber, !dbg !1194 | |
call void @"*Fiber#push_gc_roots:Nil"(%Fiber* %9), !dbg !1193 | |
br label %exit2, !dbg !1193 | |
exit2: ; preds = %else, %then | |
%10 = load %Fiber*, %Fiber** %node, !dbg !1193 | |
%11 = getelementptr inbounds %Fiber, %Fiber* %10, i32 0, i32 6, !dbg !1193 | |
%12 = load %Fiber*, %Fiber** %11, !dbg !1193 | |
store %Fiber* %12, %Fiber** %node, !dbg !1195 | |
br label %while, !dbg !1195 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Fiber#running?:Bool"(%Fiber* %self) #0 !dbg !1196 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 1, !dbg !1197 | |
%1 = getelementptr inbounds %"struct.Fiber::Context", %"struct.Fiber::Context"* %0, i32 0, i32 1, !dbg !1197 | |
%2 = load i64, i64* %1, !dbg !1197 | |
%3 = icmp eq i64 %2, 0, !dbg !1197 | |
ret i1 %3, !dbg !1197 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Fiber#push_gc_roots:Nil"(%Fiber* %self) #0 !dbg !1198 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 1, !dbg !1199 | |
%1 = getelementptr inbounds %"struct.Fiber::Context", %"struct.Fiber::Context"* %0, i32 0, i32 0, !dbg !1199 | |
%2 = load i8*, i8** %1, !dbg !1199 | |
%3 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 4, !dbg !1199 | |
%4 = load i8*, i8** %3, !dbg !1199 | |
call void @"*GC::push_stack<Pointer(Void), Pointer(Void)>:Nil"(i8* %2, i8* %4), !dbg !1200 | |
ret void, !dbg !1200 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*GC::push_stack<Pointer(Void), Pointer(Void)>:Nil"(i8* %stack_top, i8* %stack_bottom) #0 !dbg !1201 { | |
entry: | |
call void @GC_push_all_eager(i8* %stack_top, i8* %stack_bottom), !dbg !1202 | |
ret void, !dbg !1202 | |
} | |
declare void @GC_push_all_eager(i8*, i8*) | |
; Function Attrs: uwtable | |
define internal void @"*GC::before_collect<&Proc(Nil)>:Nil"(%"->" %block) #0 !dbg !1203 { | |
alloca: | |
%0 = alloca %"->", !dbg !1204 | |
%1 = alloca %"->", !dbg !1205 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"->" %block, %"->"* @"GC::curr_push_other_roots", !dbg !1206 | |
%2 = call %Nil ()* @GC_get_push_other_roots(), !dbg !1204 | |
%3 = bitcast %Nil ()* %2 to i8*, !dbg !1204 | |
%4 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !1204 | |
store i8* %3, i8** %4, !dbg !1204 | |
%5 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !1204 | |
store i8* null, i8** %5, !dbg !1204 | |
%6 = load %"->", %"->"* %0, !dbg !1204 | |
store %"->" %6, %"->"* @"GC::prev_push_other_roots", !dbg !1205 | |
%7 = getelementptr inbounds %"->", %"->"* %1, i32 0, i32 0, !dbg !1205 | |
store i8* bitcast (void ()* @"~procProc(Nil)@/usr/share/crystal/src/gc/boehm.cr:236" to i8*), i8** %7, !dbg !1205 | |
%8 = getelementptr inbounds %"->", %"->"* %1, i32 0, i32 1, !dbg !1205 | |
store i8* null, i8** %8, !dbg !1205 | |
%9 = load %"->", %"->"* %1, !dbg !1205 | |
%10 = call i8* @"~check_proc_is_not_closure"(%"->" %9), !dbg !1205 | |
%11 = bitcast i8* %10 to %Nil ()*, !dbg !1205 | |
call void @GC_set_push_other_roots(%Nil ()* %11), !dbg !1207 | |
ret void, !dbg !1207 | |
} | |
declare %Nil ()* @GC_get_push_other_roots() | |
; Function Attrs: uwtable | |
define internal void @"~procProc(Nil)@/usr/share/crystal/src/gc/boehm.cr:236"() #0 !dbg !1208 { | |
alloca: | |
%__arg0 = alloca %"->", !dbg !1209 | |
%__arg03 = alloca %"->", !dbg !1209 | |
%__arg1 = alloca %"->", !dbg !1210 | |
%__arg110 = alloca %"->", !dbg !1210 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = load %"->", %"->"* @"GC::curr_push_other_roots", !dbg !1211 | |
%1 = extractvalue %"->" %0, 0, !dbg !1211 | |
%2 = icmp eq i8* %1, null, !dbg !1211 | |
%3 = select i1 %2, i32 0, i32 461, !dbg !1211 | |
%4 = icmp eq i32 0, %3, !dbg !1211 | |
br i1 %4, label %current_def, label %next_def, !dbg !1211 | |
current_def: ; preds = %entry | |
br label %exit, !dbg !1209 | |
next_def: ; preds = %entry | |
%5 = icmp eq i32 461, %3, !dbg !1209 | |
br i1 %5, label %current_def1, label %next_def2, !dbg !1209 | |
exit: ; preds = %exit4, %current_def | |
%6 = load %"->", %"->"* @"GC::prev_push_other_roots", !dbg !1212 | |
%7 = extractvalue %"->" %6, 0, !dbg !1212 | |
%8 = icmp eq i8* %7, null, !dbg !1212 | |
%9 = select i1 %8, i32 0, i32 461, !dbg !1212 | |
%10 = icmp eq i32 0, %9, !dbg !1212 | |
br i1 %10, label %current_def5, label %next_def6, !dbg !1212 | |
current_def1: ; preds = %next_def | |
store %"->" %0, %"->"* %__arg03, !dbg !1209 | |
%11 = load %"->", %"->"* %__arg03, !dbg !1209 | |
%12 = extractvalue %"->" %11, 0, !dbg !1209 | |
%13 = extractvalue %"->" %11, 1, !dbg !1209 | |
%14 = icmp eq i8* %13, null, !dbg !1209 | |
br i1 %14, label %ctx_is_null, label %ctx_is_not_null, !dbg !1209 | |
next_def2: ; preds = %next_def | |
unreachable, !dbg !1212 | |
ctx_is_null: ; preds = %current_def1 | |
%15 = bitcast i8* %12 to %Nil ()*, !dbg !1209 | |
%16 = call %Nil %15(), !dbg !1212 | |
br label %exit4, !dbg !1212 | |
ctx_is_not_null: ; preds = %current_def1 | |
%17 = bitcast i8* %12 to %Nil (i8*)*, !dbg !1212 | |
%18 = call %Nil %17(i8* %13), !dbg !1212 | |
br label %exit4, !dbg !1212 | |
exit4: ; preds = %ctx_is_not_null, %ctx_is_null | |
br label %exit, !dbg !1212 | |
current_def5: ; preds = %exit | |
br label %exit7, !dbg !1210 | |
next_def6: ; preds = %exit | |
%19 = icmp eq i32 461, %9, !dbg !1210 | |
br i1 %19, label %current_def8, label %next_def9, !dbg !1210 | |
exit7: ; preds = %exit13, %current_def5 | |
ret void, !dbg !1212 | |
current_def8: ; preds = %next_def6 | |
store %"->" %6, %"->"* %__arg110, !dbg !1210 | |
%20 = load %"->", %"->"* %__arg110, !dbg !1210 | |
%21 = extractvalue %"->" %20, 0, !dbg !1210 | |
%22 = extractvalue %"->" %20, 1, !dbg !1210 | |
%23 = icmp eq i8* %22, null, !dbg !1210 | |
br i1 %23, label %ctx_is_null11, label %ctx_is_not_null12, !dbg !1210 | |
next_def9: ; preds = %next_def6 | |
unreachable, !dbg !1212 | |
ctx_is_null11: ; preds = %current_def8 | |
%24 = bitcast i8* %21 to %Nil ()*, !dbg !1210 | |
%25 = call %Nil %24(), !dbg !1212 | |
br label %exit13, !dbg !1212 | |
ctx_is_not_null12: ; preds = %current_def8 | |
%26 = bitcast i8* %21 to %Nil (i8*)*, !dbg !1212 | |
%27 = call %Nil %26(i8* %22), !dbg !1212 | |
br label %exit13, !dbg !1212 | |
exit13: ; preds = %ctx_is_not_null12, %ctx_is_null11 | |
br label %exit7, !dbg !1212 | |
} | |
declare void @GC_set_push_other_roots(%Nil ()*) | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::System::Random::random_bytes<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %buf) #0 !dbg !1213 { | |
alloca: | |
%urandom = alloca %File*, !dbg !1215 | |
%buf1 = alloca %"Slice(UInt8)", !dbg !1215 | |
%0 = alloca %"(Int32 | Nil)", !dbg !1216 | |
%1 = alloca %"(Int32 | Nil)", !dbg !1217 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"Slice(UInt8)" %buf, %"Slice(UInt8)"* %buf1, !dbg !1215 | |
%2 = call i1* @"~Crystal::System::Random::initialized:read"(), !dbg !1218 | |
%3 = load i1, i1* %2, !dbg !1218 | |
br i1 %3, label %then, label %else, !dbg !1218 | |
then: ; preds = %entry | |
br label %exit, !dbg !1218 | |
else: ; preds = %entry | |
%4 = call %"(Bool | File | Nil)" @"*Crystal::System::Random::init:(Bool | File | Nil)"(), !dbg !1218 | |
br label %exit, !dbg !1218 | |
exit: ; preds = %else, %then | |
%5 = call i1* @"~Crystal::System::Random::getrandom_available:read"(), !dbg !1219 | |
%6 = load i1, i1* %5, !dbg !1219 | |
br i1 %6, label %then2, label %else3, !dbg !1219 | |
then2: ; preds = %exit | |
%7 = load %"Slice(UInt8)", %"Slice(UInt8)"* %buf1, !dbg !1219 | |
call void @"*Crystal::System::Random::getrandom<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %7), !dbg !1216 | |
%8 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 0, !dbg !1216 | |
store i32 0, i32* %8, !dbg !1216 | |
%9 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 1, !dbg !1216 | |
store [1 x i64] zeroinitializer, [1 x i64]* %9, !dbg !1216 | |
br label %exit4, !dbg !1216 | |
else3: ; preds = %exit | |
%10 = load %File*, %File** @"Crystal::System::Random::urandom", !dbg !1220 | |
store %File* %10, %File** %urandom, !dbg !1221 | |
%11 = icmp ne %File* %10, null, !dbg !1221 | |
br i1 %11, label %then5, label %else6, !dbg !1221 | |
exit4: ; preds = %exit7, %then2 | |
%12 = phi %"(Int32 | Nil)"* [ %0, %then2 ], [ %1, %exit7 ], !dbg !1217 | |
ret void, !dbg !1217 | |
then5: ; preds = %else3 | |
%13 = load %File*, %File** %urandom, !dbg !1221 | |
%14 = load %"Slice(UInt8)", %"Slice(UInt8)"* %buf1, !dbg !1221 | |
%15 = call i32 @"*File@IO#read_fully<Slice(UInt8)>:Int32"(%File* %13, %"Slice(UInt8)" %14), !dbg !1222 | |
br label %exit7, !dbg !1222 | |
else6: ; preds = %else3 | |
call void @"*raise<String>:NoReturn"(%String* bitcast ({ i32, i32, i32, [57 x i8] }* @"'Failed to access se...'" to %String*)), !dbg !1217 | |
unreachable, !dbg !1217 | |
exit7: ; preds = %then5 | |
%16 = phi i32 [ %15, %then5 ], !dbg !1217 | |
%17 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, i32 0, i32 0, !dbg !1217 | |
store i32 160, i32* %17, !dbg !1217 | |
%18 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, i32 0, i32 1, !dbg !1217 | |
%19 = bitcast [1 x i64]* %18 to i32*, !dbg !1217 | |
store i32 %16, i32* %19, !dbg !1217 | |
br label %exit4, !dbg !1217 | |
} | |
define internal i1* @"~Crystal::System::Random::initialized:read"() { | |
entry: | |
%0 = load i1, i1* @"Crystal::System::Random::initialized:init", !dbg !1218 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !1218 | |
initialized: ; preds = %not_initialized, %entry | |
ret i1* @"Crystal::System::Random::initialized", !dbg !1218 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Crystal::System::Random::initialized:init", !dbg !1218 | |
call void @"~Crystal::System::Random::initialized:init"(), !dbg !1218 | |
br label %initialized, !dbg !1218 | |
} | |
; Function Attrs: uwtable | |
define internal %"(Bool | File | Nil)" @"*Crystal::System::Random::init:(Bool | File | Nil)"() #0 !dbg !1223 { | |
alloca: | |
%urandom = alloca %File*, !dbg !1224 | |
%0 = alloca %"Slice(UInt8)", !dbg !1225 | |
%1 = alloca %"(Bool | File)", !dbg !1226 | |
%2 = alloca %"Crystal::System::FileInfo", !dbg !1227 | |
%3 = alloca %"(Bool | File | Nil)", !dbg !1227 | |
%4 = alloca %"(Bool | File)", !dbg !1228 | |
br label %entry | |
entry: ; preds = %alloca | |
%5 = call i1* @"~Crystal::System::Random::initialized:read"(), !dbg !1229 | |
store i1 true, i1* %5, !dbg !1229 | |
%6 = call %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new<Int32>:Slice(UInt8)"(i32 1092, i32 16), !dbg !1225 | |
store %"Slice(UInt8)" %6, %"Slice(UInt8)"* %0, !dbg !1225 | |
%7 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !1225 | |
%8 = call i64 @"*Crystal::System::Random::sys_getrandom<Slice(UInt8)>:Int64"(%"Slice(UInt8)" %7), !dbg !1230 | |
%9 = icmp sge i64 %8, 0, !dbg !1230 | |
br i1 %9, label %then, label %else, !dbg !1230 | |
then: ; preds = %entry | |
%10 = call i1* @"~Crystal::System::Random::getrandom_available:read"(), !dbg !1226 | |
store i1 true, i1* %10, !dbg !1226 | |
%11 = getelementptr inbounds %"(Bool | File)", %"(Bool | File)"* %1, i32 0, i32 0, !dbg !1226 | |
store i32 171, i32* %11, !dbg !1226 | |
%12 = getelementptr inbounds %"(Bool | File)", %"(Bool | File)"* %1, i32 0, i32 1, !dbg !1226 | |
%13 = bitcast [1 x i64]* %12 to i64*, !dbg !1226 | |
store i64 1, i64* %13, !dbg !1226 | |
br label %exit, !dbg !1226 | |
else: ; preds = %entry | |
%14 = call %File* @"*File::open<String, String>:File"(%String* bitcast ({ i32, i32, i32, [13 x i8] }* @"'/dev/urandom'" to %String*), %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'r'" to %String*)), !dbg !1231 | |
store %File* %14, %File** %urandom, !dbg !1232 | |
%15 = load %File*, %File** %urandom, !dbg !1233 | |
%16 = call %"Crystal::System::FileInfo" @"*File@IO::FileDescriptor#info:Crystal::System::FileInfo"(%File* %15), !dbg !1227 | |
store %"Crystal::System::FileInfo" %16, %"Crystal::System::FileInfo"* %2, !dbg !1227 | |
%17 = call i8 @"*Crystal::System::FileInfo#type:File::Type"(%"Crystal::System::FileInfo"* %2), !dbg !1227 | |
%18 = call i1 @"*File::Type#character_device?:Bool"(i8 %17), !dbg !1227 | |
br i1 %18, label %then1, label %else2, !dbg !1227 | |
exit: ; preds = %exit3, %then | |
%19 = phi %"(Bool | File)"* [ %1, %then ], [ %4, %exit3 ], !dbg !1228 | |
%20 = bitcast %"(Bool | File)"* %19 to %"(Bool | File | Nil)"*, !dbg !1228 | |
%21 = load %"(Bool | File | Nil)", %"(Bool | File | Nil)"* %20, !dbg !1228 | |
ret %"(Bool | File | Nil)" %21, !dbg !1228 | |
then1: ; preds = %else | |
br label %exit3, !dbg !1227 | |
else2: ; preds = %else | |
%22 = getelementptr inbounds %"(Bool | File | Nil)", %"(Bool | File | Nil)"* %3, i32 0, i32 0, !dbg !1227 | |
store i32 0, i32* %22, !dbg !1227 | |
%23 = getelementptr inbounds %"(Bool | File | Nil)", %"(Bool | File | Nil)"* %3, i32 0, i32 1, !dbg !1227 | |
store [1 x i64] zeroinitializer, [1 x i64]* %23, !dbg !1227 | |
%24 = load %"(Bool | File | Nil)", %"(Bool | File | Nil)"* %3, !dbg !1227 | |
ret %"(Bool | File | Nil)" %24, !dbg !1227 | |
exit3: ; preds = %then1 | |
%25 = load %File*, %File** %urandom, !dbg !1227 | |
%26 = call i1 @"*File@IO::FileDescriptor#close_on_exec=<Bool>:Bool"(%File* %25, i1 true), !dbg !1234 | |
%27 = load %File*, %File** %urandom, !dbg !1234 | |
%28 = call i1 @"*File@IO::Buffered#sync=<Bool>:Bool"(%File* %27, i1 true), !dbg !1235 | |
%29 = load %File*, %File** %urandom, !dbg !1235 | |
store %File* %29, %File** @"Crystal::System::Random::urandom", !dbg !1228 | |
%30 = getelementptr inbounds %"(Bool | File)", %"(Bool | File)"* %4, i32 0, i32 0, !dbg !1228 | |
store i32 84, i32* %30, !dbg !1228 | |
%31 = getelementptr inbounds %"(Bool | File)", %"(Bool | File)"* %4, i32 0, i32 1, !dbg !1228 | |
%32 = bitcast [1 x i64]* %31 to %File**, !dbg !1228 | |
store %File* %29, %File** %32, !dbg !1228 | |
br label %exit, !dbg !1228 | |
} | |
; Function Attrs: uwtable | |
define internal %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new<Int32>:Slice(UInt8)"(i32 %self, i32 %size) #0 !dbg !1236 { | |
alloca: | |
%read_only = alloca i1, !dbg !1237 | |
%pointer = alloca i8*, !dbg !1237 | |
%0 = alloca %"Slice(UInt8)", !dbg !1238 | |
br label %entry | |
entry: ; preds = %alloca | |
store i1 false, i1* %read_only, !dbg !1239 | |
%1 = call i8* @"*Pointer(UInt8)@Pointer(T)::malloc<Int32>:Pointer(UInt8)"(i32 722, i32 %size), !dbg !1240 | |
store i8* %1, i8** %pointer, !dbg !1241 | |
%2 = load i8*, i8** %pointer, !dbg !1241 | |
%3 = load i1, i1* %read_only, !dbg !1241 | |
%4 = call %"Slice(UInt8)" @"*Slice(UInt8)@Slice(T)::new:read_only<Pointer(UInt8), Int32, Bool>:Slice(UInt8)"(i32 %self, i8* %2, i32 %size, i1 %3), !dbg !1238 | |
store %"Slice(UInt8)" %4, %"Slice(UInt8)"* %0, !dbg !1238 | |
%5 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !1238 | |
ret %"Slice(UInt8)" %5, !dbg !1238 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Crystal::System::Random::sys_getrandom<Slice(UInt8)>:Int64"(%"Slice(UInt8)" %buf) #0 !dbg !1242 { | |
alloca: | |
%buf1 = alloca %"Slice(UInt8)", !dbg !1243 | |
%read_bytes = alloca i64, !dbg !1244 | |
%__temp_261 = alloca i1, !dbg !1244 | |
%__temp_262 = alloca i1, !dbg !1244 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"Slice(UInt8)" %buf, %"Slice(UInt8)"* %buf1, !dbg !1243 | |
br label %while, !dbg !1244 | |
while: ; preds = %exit8, %entry | |
br i1 true, label %body, label %exit, !dbg !1245 | |
body: ; preds = %while | |
%0 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %buf1, i32 0, i32 2, !dbg !1245 | |
%1 = load i8*, i8** %0, !dbg !1245 | |
%2 = getelementptr inbounds %"Slice(UInt8)", %"Slice(UInt8)"* %buf1, i32 0, i32 0, !dbg !1245 | |
%3 = load i32, i32* %2, !dbg !1245 | |
%4 = call i64 @"*UInt64::new<Int32>:UInt64"(i32 %3), !dbg !1246 | |
%5 = call i64 (i64, ...) @syscall(i64 318, i8* %1, i64 %4, i32 0), !dbg !1247 | |
store i64 %5, i64* %read_bytes, !dbg !1248 | |
%6 = load i64, i64* %read_bytes, !dbg !1249 | |
%7 = icmp slt i64 %6, 0, !dbg !1249 | |
store i1 %7, i1* %__temp_261, !dbg !1249 | |
br i1 %7, label %then2, label %else3, !dbg !1249 | |
exit: ; preds = %while | |
unreachable, !dbg !1250 | |
then: ; preds = %exit7 | |
call void @"*Fiber::yield:Nil"(), !dbg !1250 | |
br label %exit8, !dbg !1250 | |
else: ; preds = %exit7 | |
%8 = load i64, i64* %read_bytes, !dbg !1250 | |
ret i64 %8, !dbg !1250 | |
then2: ; preds = %body | |
%9 = call i32 @"*Errno::value:Int32"(), !dbg !1251 | |
%10 = icmp eq i32 %9, 4, !dbg !1251 | |
store i1 %10, i1* %__temp_262, !dbg !1251 | |
br i1 %10, label %then4, label %else5, !dbg !1251 | |
else3: ; preds = %body | |
%11 = load i1, i1* %__temp_261, !dbg !1252 | |
br label %exit7, !dbg !1252 | |
then4: ; preds = %then2 | |
%12 = load i1, i1* %__temp_262, !dbg !1251 | |
br label %exit6, !dbg !1251 | |
else5: ; preds = %then2 | |
%13 = call i32 @"*Errno::value:Int32"(), !dbg !1252 | |
%14 = icmp eq i32 %13, 11, !dbg !1252 | |
br label %exit6, !dbg !1252 | |
exit6: ; preds = %else5, %then4 | |
%15 = phi i1 [ %12, %then4 ], [ %14, %else5 ], !dbg !1252 | |
br label %exit7, !dbg !1252 | |
exit7: ; preds = %else3, %exit6 | |
%16 = phi i1 [ %15, %exit6 ], [ %11, %else3 ], !dbg !1252 | |
br i1 %16, label %then, label %else, !dbg !1252 | |
exit8: ; preds = %then | |
br label %while, !dbg !1250 | |
} | |
declare i64 @syscall(i64, ...) | |
; Function Attrs: uwtable | |
define internal void @"*Fiber::yield:Nil"() #0 !dbg !1253 { | |
entry: | |
call void @"*Crystal::Scheduler::yield:Nil"(), !dbg !1254 | |
ret void, !dbg !1254 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::Scheduler::yield:Nil"() #0 !dbg !1255 { | |
entry: | |
%0 = call %Thread* @"*Thread::current:Thread"(), !dbg !1257 | |
%1 = call %"Crystal::Scheduler"* @"*Thread#scheduler:Crystal::Scheduler"(%Thread* %0), !dbg !1257 | |
call void @"*Crystal::Scheduler#yield:Nil"(%"Crystal::Scheduler"* %1), !dbg !1257 | |
ret void, !dbg !1257 | |
} | |
; Function Attrs: uwtable | |
define internal %Thread* @"*Thread::current:Thread"() #0 !dbg !1258 { | |
alloca: | |
%__temp_45 = alloca %Thread*, !dbg !1259 | |
%0 = alloca %Thread**, !dbg !1259 | |
br label %entry | |
entry: ; preds = %alloca | |
call void @"*Thread::current"(%Thread*** %0), !dbg !1259 | |
%1 = load %Thread**, %Thread*** %0, !dbg !1259 | |
%2 = load %Thread*, %Thread** %1, !dbg !1259 | |
store %Thread* %2, %Thread** %__temp_45, !dbg !1259 | |
%3 = icmp ne %Thread* %2, null, !dbg !1259 | |
br i1 %3, label %then, label %else, !dbg !1259 | |
then: ; preds = %entry | |
%4 = load %Thread*, %Thread** %__temp_45, !dbg !1259 | |
br label %exit, !dbg !1259 | |
else: ; preds = %entry | |
call void @"*raise<String>:NoReturn"(%String* bitcast ({ i32, i32, i32, [34 x i8] }* @"'BUG: Thread.current...'" to %String*)), !dbg !1259 | |
unreachable, !dbg !1259 | |
exit: ; preds = %then | |
%5 = phi %Thread* [ %4, %then ], !dbg !1259 | |
ret %Thread* %5, !dbg !1259 | |
} | |
; Function Attrs: uwtable | |
define internal %"Crystal::Scheduler"* @"*Thread#scheduler:Crystal::Scheduler"(%Thread* %self) #0 !dbg !1260 { | |
alloca: | |
%__temp_46 = alloca %"Crystal::Scheduler"*, !dbg !1261 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 8, !dbg !1262 | |
%1 = load %"Crystal::Scheduler"*, %"Crystal::Scheduler"** %0, !dbg !1262 | |
store %"Crystal::Scheduler"* %1, %"Crystal::Scheduler"** %__temp_46, !dbg !1262 | |
%2 = icmp ne %"Crystal::Scheduler"* %1, null, !dbg !1262 | |
br i1 %2, label %then, label %else, !dbg !1262 | |
then: ; preds = %entry | |
%3 = load %"Crystal::Scheduler"*, %"Crystal::Scheduler"** %__temp_46, !dbg !1262 | |
br label %exit, !dbg !1262 | |
else: ; preds = %entry | |
%4 = call %Fiber* @"*Thread#main_fiber:Fiber"(%Thread* %self), !dbg !1263 | |
%5 = call %"Crystal::Scheduler"* @"*Crystal::Scheduler::new<Fiber>:Crystal::Scheduler"(%Fiber* %4), !dbg !1264 | |
%6 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 8, !dbg !1262 | |
store %"Crystal::Scheduler"* %5, %"Crystal::Scheduler"** %6, !dbg !1262 | |
br label %exit, !dbg !1262 | |
exit: ; preds = %else, %then | |
%7 = phi %"Crystal::Scheduler"* [ %3, %then ], [ %5, %else ], !dbg !1262 | |
ret %"Crystal::Scheduler"* %7, !dbg !1262 | |
} | |
; Function Attrs: uwtable | |
define internal %Fiber* @"*Thread#main_fiber:Fiber"(%Thread* %self) #0 !dbg !1265 { | |
entry: | |
%0 = getelementptr inbounds %Thread, %Thread* %self, i32 0, i32 3, !dbg !1266 | |
%1 = load %Fiber*, %Fiber** %0, !dbg !1266 | |
%2 = icmp eq %Fiber* %1, null, !dbg !1266 | |
%3 = select i1 %2, i32 0, i32 103, !dbg !1266 | |
%4 = icmp eq i32 0, %3, !dbg !1266 | |
br i1 %4, label %current_def, label %next_def, !dbg !1266 | |
current_def: ; preds = %entry | |
call void @"*Nil#not_nil!:NoReturn"(%Nil zeroinitializer), !dbg !1267 | |
unreachable, !dbg !1267 | |
next_def: ; preds = %entry | |
%5 = icmp eq i32 103, %3, !dbg !1267 | |
br i1 %5, label %current_def1, label %next_def2, !dbg !1267 | |
current_def1: ; preds = %next_def | |
br label %exit, !dbg !1267 | |
next_def2: ; preds = %next_def | |
unreachable, !dbg !1267 | |
exit: ; preds = %current_def1 | |
%6 = phi %Fiber* [ %1, %current_def1 ], !dbg !1267 | |
ret %Fiber* %6, !dbg !1267 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*Nil#not_nil!:NoReturn"(%Nil %self) #1 !dbg !1268 { | |
entry: | |
%0 = call %NilAssertionError* @"*NilAssertionError::new:NilAssertionError"(), !dbg !1270 | |
call void @"*raise<NilAssertionError>:NoReturn"(%NilAssertionError* %0), !dbg !1271 | |
unreachable, !dbg !1271 | |
} | |
; Function Attrs: uwtable | |
define internal %NilAssertionError* @"*NilAssertionError::new:NilAssertionError"() #0 !dbg !1272 { | |
alloca: | |
%_ = alloca %NilAssertionError*, !dbg !1273 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%NilAssertionError* getelementptr (%NilAssertionError, %NilAssertionError* null, i32 1) to i64)), !dbg !1273 | |
%1 = bitcast i8* %0 to %NilAssertionError*, !dbg !1273 | |
%2 = bitcast %NilAssertionError* %1 to i8*, !dbg !1273 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%NilAssertionError* getelementptr (%NilAssertionError, %NilAssertionError* null, i32 1) to i32), i32 4, i1 false), !dbg !1273 | |
%3 = getelementptr inbounds %NilAssertionError, %NilAssertionError* %1, i32 0, i32 0, !dbg !1273 | |
store i32 46, i32* %3, !dbg !1273 | |
store %NilAssertionError* %1, %NilAssertionError** %_, !dbg !1273 | |
%4 = load %NilAssertionError*, %NilAssertionError** %_, !dbg !1273 | |
call void @"*NilAssertionError#initialize:Nil"(%NilAssertionError* %4), !dbg !1273 | |
%5 = load %NilAssertionError*, %NilAssertionError** %_, !dbg !1273 | |
ret %NilAssertionError* %5, !dbg !1273 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*NilAssertionError#initialize:Nil"(%NilAssertionError* %self) #0 !dbg !1274 { | |
alloca: | |
%message = alloca %String*, !dbg !1275 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* bitcast ({ i32, i32, i32, [21 x i8] }* @"'Nil assertion faile...'" to %String*), %String** %message, !dbg !1276 | |
%0 = load %String*, %String** %message, !dbg !1276 | |
call void @"*NilAssertionError#initialize<String>:Nil"(%NilAssertionError* %self, %String* %0), !dbg !1275 | |
ret void, !dbg !1275 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*NilAssertionError#initialize<String>:Nil"(%NilAssertionError* %self, %String* %message) #0 !dbg !1277 { | |
entry: | |
call void @"*NilAssertionError@Exception#initialize<String>:Nil"(%NilAssertionError* %self, %String* %message), !dbg !1278 | |
ret void, !dbg !1278 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*NilAssertionError@Exception#initialize<String>:Nil"(%NilAssertionError* %self, %String* %message) #0 !dbg !1279 { | |
alloca: | |
%cause = alloca %Nil, !dbg !1280 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %NilAssertionError, %NilAssertionError* %self, i32 0, i32 1, !dbg !1281 | |
store %String* %message, %String** %0, !dbg !1281 | |
%1 = load %Nil, %Nil* %cause, !dbg !1281 | |
%2 = getelementptr inbounds %NilAssertionError, %NilAssertionError* %self, i32 0, i32 2, !dbg !1282 | |
store i32* null, i32** %2, !dbg !1282 | |
ret void, !dbg !1282 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*raise<NilAssertionError>:NoReturn"(%NilAssertionError* %exception) #1 !dbg !1283 { | |
alloca: | |
%__temp_47 = alloca %"(CallStack | Nil)", !dbg !1284 | |
%unwind_ex = alloca %"struct.LibUnwind::Exception"*, !dbg !1284 | |
%0 = alloca %CallStack, !dbg !1284 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %NilAssertionError, %NilAssertionError* %exception, i32 0, i32 3, !dbg !1284 | |
%2 = load %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, !dbg !1284 | |
store %"(CallStack | Nil)" %2, %"(CallStack | Nil)"* %__temp_47, !dbg !1284 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %1, i32 0, i32 0, !dbg !1284 | |
%4 = load i32, i32* %3, !dbg !1284 | |
%5 = icmp eq i32 %4, 0, !dbg !1284 | |
%6 = xor i1 %5, true, !dbg !1284 | |
%7 = and i1 true, %6, !dbg !1284 | |
br i1 %7, label %then, label %else, !dbg !1284 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %__temp_47, i32 0, i32 1, !dbg !1284 | |
%9 = bitcast [2 x i64]* %8 to %CallStack*, !dbg !1284 | |
br label %exit, !dbg !1284 | |
else: ; preds = %entry | |
%10 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !1284 | |
store %CallStack %10, %CallStack* %0, !dbg !1284 | |
%11 = load %CallStack, %CallStack* %0, !dbg !1284 | |
%12 = call %CallStack @"*NilAssertionError@Exception#callstack=<CallStack>:CallStack"(%NilAssertionError* %exception, %CallStack %11), !dbg !1284 | |
br label %exit, !dbg !1284 | |
exit: ; preds = %else, %then | |
%13 = call %"struct.LibUnwind::Exception"* @"*Pointer(LibUnwind::Exception)@Pointer(T)::malloc:Pointer(LibUnwind::Exception)"(i32 728), !dbg !1284 | |
store %"struct.LibUnwind::Exception"* %13, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !1284 | |
%14 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !1284 | |
%15 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !1284 | |
%16 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %14, i32 0, i32 0, !dbg !1284 | |
store i64 %15, i64* %16, !dbg !1284 | |
%17 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !1284 | |
%18 = call i64 @"*UInt64@Number::zero:UInt64"(), !dbg !1284 | |
%19 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %17, i32 0, i32 1, !dbg !1284 | |
store i64 %18, i64* %19, !dbg !1284 | |
%20 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !1284 | |
%21 = ptrtoint %NilAssertionError* %exception to i64, !dbg !1284 | |
%22 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %20, i32 0, i32 4, !dbg !1284 | |
store i64 %21, i64* %22, !dbg !1284 | |
%23 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !1284 | |
%24 = getelementptr inbounds %"struct.LibUnwind::Exception", %"struct.LibUnwind::Exception"* %23, i32 0, i32 5, !dbg !1284 | |
store i32 46, i32* %24, !dbg !1284 | |
%25 = load %"struct.LibUnwind::Exception"*, %"struct.LibUnwind::Exception"** %unwind_ex, !dbg !1284 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %25), !dbg !1284 | |
unreachable, !dbg !1284 | |
} | |
; Function Attrs: uwtable | |
define internal %CallStack @"*NilAssertionError@Exception#callstack=<CallStack>:CallStack"(%NilAssertionError* %self, %CallStack %callstack) #0 !dbg !1285 { | |
alloca: | |
%callstack1 = alloca %CallStack, !dbg !1286 | |
br label %entry | |
entry: ; preds = %alloca | |
store %CallStack %callstack, %CallStack* %callstack1, !dbg !1286 | |
%0 = getelementptr inbounds %NilAssertionError, %NilAssertionError* %self, i32 0, i32 3, !dbg !1287 | |
%1 = load %CallStack, %CallStack* %callstack1, !dbg !1287 | |
%2 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 0, !dbg !1287 | |
store i32 353, i32* %2, !dbg !1287 | |
%3 = getelementptr inbounds %"(CallStack | Nil)", %"(CallStack | Nil)"* %0, i32 0, i32 1, !dbg !1287 | |
%4 = bitcast [2 x i64]* %3 to %CallStack*, !dbg !1287 | |
store %CallStack %1, %CallStack* %4, !dbg !1287 | |
%5 = load %CallStack, %CallStack* %callstack1, !dbg !1287 | |
ret %CallStack %5, !dbg !1287 | |
} | |
; Function Attrs: uwtable | |
define internal %"Crystal::Scheduler"* @"*Crystal::Scheduler::new<Fiber>:Crystal::Scheduler"(%Fiber* %main) #0 !dbg !1288 { | |
alloca: | |
%_ = alloca %"Crystal::Scheduler"*, !dbg !1289 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Crystal::Scheduler"* getelementptr (%"Crystal::Scheduler", %"Crystal::Scheduler"* null, i32 1) to i64)), !dbg !1289 | |
%1 = bitcast i8* %0 to %"Crystal::Scheduler"*, !dbg !1289 | |
%2 = bitcast %"Crystal::Scheduler"* %1 to i8*, !dbg !1289 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Crystal::Scheduler"* getelementptr (%"Crystal::Scheduler", %"Crystal::Scheduler"* null, i32 1) to i32), i32 4, i1 false), !dbg !1289 | |
%3 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %1, i32 0, i32 0, !dbg !1289 | |
store i32 115, i32* %3, !dbg !1289 | |
store %"Crystal::Scheduler"* %1, %"Crystal::Scheduler"** %_, !dbg !1289 | |
%4 = load %"Crystal::Scheduler"*, %"Crystal::Scheduler"** %_, !dbg !1289 | |
%5 = call %"Deque(Fiber)"* @"*Crystal::Scheduler#initialize<Fiber>:Deque(Fiber)"(%"Crystal::Scheduler"* %4, %Fiber* %main), !dbg !1289 | |
%6 = load %"Crystal::Scheduler"*, %"Crystal::Scheduler"** %_, !dbg !1289 | |
ret %"Crystal::Scheduler"* %6, !dbg !1289 | |
} | |
; Function Attrs: uwtable | |
define internal %"Deque(Fiber)"* @"*Crystal::Scheduler#initialize<Fiber>:Deque(Fiber)"(%"Crystal::Scheduler"* %self, %Fiber* %main) #0 !dbg !1290 { | |
entry: | |
%0 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 1, !dbg !1291 | |
store %Fiber* %main, %Fiber** %0, !dbg !1291 | |
%1 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 1, !dbg !1291 | |
%2 = load %Fiber*, %Fiber** %1, !dbg !1291 | |
%3 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 2, !dbg !1292 | |
store %Fiber* %2, %Fiber** %3, !dbg !1292 | |
%4 = call %"Deque(Fiber)"* @"*Deque(Fiber)@Deque(T)::new:Deque(Fiber)"(i32 648), !dbg !1293 | |
%5 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 3, !dbg !1294 | |
store %"Deque(Fiber)"* %4, %"Deque(Fiber)"** %5, !dbg !1294 | |
ret %"Deque(Fiber)"* %4, !dbg !1294 | |
} | |
; Function Attrs: uwtable | |
define internal %"Deque(Fiber)"* @"*Deque(Fiber)@Deque(T)::new:Deque(Fiber)"(i32 %self) #0 !dbg !1295 { | |
alloca: | |
%_ = alloca %"Deque(Fiber)"*, !dbg !1296 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i8* @__crystal_malloc64(i64 ptrtoint (%"Deque(Fiber)"* getelementptr (%"Deque(Fiber)", %"Deque(Fiber)"* null, i32 1) to i64)), !dbg !1296 | |
%1 = bitcast i8* %0 to %"Deque(Fiber)"*, !dbg !1296 | |
%2 = bitcast %"Deque(Fiber)"* %1 to i8*, !dbg !1296 | |
call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 ptrtoint (%"Deque(Fiber)"* getelementptr (%"Deque(Fiber)", %"Deque(Fiber)"* null, i32 1) to i32), i32 4, i1 false), !dbg !1296 | |
%3 = getelementptr inbounds %"Deque(Fiber)", %"Deque(Fiber)"* %1, i32 0, i32 1, !dbg !1296 | |
store i32 0, i32* %3, !dbg !1296 | |
%4 = getelementptr inbounds %"Deque(Fiber)", %"Deque(Fiber)"* %1, i32 0, i32 0, !dbg !1296 | |
store i32 117, i32* %4, !dbg !1296 | |
store %"Deque(Fiber)"* %1, %"Deque(Fiber)"** %_, !dbg !1296 | |
%5 = load %"Deque(Fiber)"*, %"Deque(Fiber)"** %_, !dbg !1296 | |
%6 = call %Fiber** @"*Deque(Fiber)@Deque(T)#initialize:Pointer(Fiber)"(%"Deque(Fiber)"* %5), !dbg !1296 | |
%7 = load %"Deque(Fiber)"*, %"Deque(Fiber)"** %_, !dbg !1296 | |
ret %"Deque(Fiber)"* %7, !dbg !1296 | |
} | |
; Function Attrs: uwtable | |
define internal %Fiber** @"*Deque(Fiber)@Deque(T)#initialize:Pointer(Fiber)"(%"Deque(Fiber)"* %self) #0 !dbg !1297 { | |
entry: | |
%0 = getelementptr inbounds %"Deque(Fiber)", %"Deque(Fiber)"* %self, i32 0, i32 2, !dbg !1298 | |
store i32 0, i32* %0, !dbg !1298 | |
%1 = getelementptr inbounds %"Deque(Fiber)", %"Deque(Fiber)"* %self, i32 0, i32 3, !dbg !1299 | |
store i32 0, i32* %1, !dbg !1299 | |
%2 = call %Fiber** @"*Pointer(Fiber)@Pointer(T)::null:Pointer(Fiber)"(i32 807), !dbg !1300 | |
%3 = getelementptr inbounds %"Deque(Fiber)", %"Deque(Fiber)"* %self, i32 0, i32 4, !dbg !1301 | |
store %Fiber** %2, %Fiber*** %3, !dbg !1301 | |
ret %Fiber** %2, !dbg !1301 | |
} | |
; Function Attrs: uwtable | |
define internal %Fiber** @"*Pointer(Fiber)@Pointer(T)::null:Pointer(Fiber)"(i32 %self) #0 !dbg !1302 { | |
entry: | |
ret %Fiber** null, !dbg !1303 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::Scheduler#yield:Nil"(%"Crystal::Scheduler"* %self) #0 !dbg !1304 { | |
alloca: | |
%0 = alloca %"Time::Span", !dbg !1305 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Time::Span" @"*Int32@Int#seconds:Time::Span"(i32 0), !dbg !1305 | |
store %"Time::Span" %1, %"Time::Span"* %0, !dbg !1305 | |
%2 = load %"Time::Span", %"Time::Span"* %0, !dbg !1305 | |
call void @"*Crystal::Scheduler#sleep<Time::Span>:Nil"(%"Crystal::Scheduler"* %self, %"Time::Span" %2), !dbg !1306 | |
ret void, !dbg !1306 | |
} | |
; Function Attrs: uwtable | |
define internal %"Time::Span" @"*Int32@Int#seconds:Time::Span"(i32 %self) #0 !dbg !1307 { | |
alloca: | |
%0 = alloca %"Time::Span", !dbg !1309 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Time::Span" @"*Time::Span::new<Int32, Int32, Int32>:Time::Span"(i32 0, i32 0, i32 %self), !dbg !1309 | |
store %"Time::Span" %1, %"Time::Span"* %0, !dbg !1309 | |
%2 = load %"Time::Span", %"Time::Span"* %0, !dbg !1309 | |
ret %"Time::Span" %2, !dbg !1309 | |
} | |
; Function Attrs: uwtable | |
define internal %"Time::Span" @"*Time::Span::new<Int32, Int32, Int32>:Time::Span"(i32 %hours, i32 %minutes, i32 %seconds) #0 !dbg !1310 { | |
alloca: | |
%0 = alloca %"Time::Span", !dbg !1311 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"Time::Span" @"*Time::Span::new<Int32, Int32, Int32, Int32>:Time::Span"(i32 0, i32 %hours, i32 %minutes, i32 %seconds), !dbg !1311 | |
store %"Time::Span" %1, %"Time::Span"* %0, !dbg !1311 | |
%2 = load %"Time::Span", %"Time::Span"* %0, !dbg !1311 | |
ret %"Time::Span" %2, !dbg !1311 | |
} | |
; Function Attrs: uwtable | |
define internal %"Time::Span" @"*Time::Span::new<Int32, Int32, Int32, Int32>:Time::Span"(i32 %days, i32 %hours, i32 %minutes, i32 %seconds) #0 !dbg !1312 { | |
alloca: | |
%nanoseconds = alloca i32, !dbg !1313 | |
%0 = alloca %"Time::Span", !dbg !1314 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 0, i32* %nanoseconds, !dbg !1315 | |
%1 = call i64 @"*Time::Span::compute_seconds!<Int32, Int32, Int32, Int32>:Int64"(i32 %days, i32 %hours, i32 %minutes, i32 %seconds), !dbg !1316 | |
%2 = load i32, i32* %nanoseconds, !dbg !1316 | |
%3 = sext i32 %2 to i64, !dbg !1316 | |
%4 = call %"Time::Span" @"*Time::Span::new:seconds:nanoseconds<Int64, Int64>:Time::Span"(i64 %1, i64 %3), !dbg !1314 | |
store %"Time::Span" %4, %"Time::Span"* %0, !dbg !1314 | |
%5 = load %"Time::Span", %"Time::Span"* %0, !dbg !1314 | |
ret %"Time::Span" %5, !dbg !1314 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Time::Span::compute_seconds!<Int32, Int32, Int32, Int32>:Int64"(i32 %days, i32 %hours, i32 %minutes, i32 %seconds) #0 !dbg !1317 { | |
alloca: | |
%0 = alloca %"(Int64 | Nil)", !dbg !1318 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %"(Int64 | Nil)" @"*Time::Span::compute_seconds<Int32, Int32, Int32, Int32, Bool>:(Int64 | Nil)"(i32 %days, i32 %hours, i32 %minutes, i32 %seconds, i1 true), !dbg !1318 | |
store %"(Int64 | Nil)" %1, %"(Int64 | Nil)"* %0, !dbg !1318 | |
%2 = getelementptr inbounds %"(Int64 | Nil)", %"(Int64 | Nil)"* %0, i32 0, i32 0, !dbg !1318 | |
%3 = load i32, i32* %2, !dbg !1318 | |
%4 = icmp eq i32 162, %3, !dbg !1318 | |
br i1 %4, label %current_def, label %next_def, !dbg !1318 | |
current_def: ; preds = %entry | |
%5 = getelementptr inbounds %"(Int64 | Nil)", %"(Int64 | Nil)"* %0, i32 0, i32 1, !dbg !1318 | |
%6 = bitcast [1 x i64]* %5 to i64*, !dbg !1318 | |
%7 = load i64, i64* %6, !dbg !1318 | |
br label %exit, !dbg !1318 | |
next_def: ; preds = %entry | |
%8 = icmp eq i32 0, %3, !dbg !1318 | |
br i1 %8, label %current_def1, label %next_def2, !dbg !1318 | |
exit: ; preds = %current_def | |
%9 = phi i64 [ %7, %current_def ], !dbg !1318 | |
ret i64 %9, !dbg !1318 | |
current_def1: ; preds = %next_def | |
call void @"*Nil#not_nil!:NoReturn"(%Nil zeroinitializer), !dbg !1318 | |
unreachable, !dbg !1318 | |
next_def2: ; preds = %next_def | |
unreachable, !dbg !1318 | |
} | |
; Function Attrs: uwtable | |
define internal %"(Int64 | Nil)" @"*Time::Span::compute_seconds<Int32, Int32, Int32, Int32, Bool>:(Int64 | Nil)"(i32 %days, i32 %hours, i32 %minutes, i32 %seconds, i1 %raise_exception) #0 !dbg !1319 { | |
alloca: | |
%hrssec = alloca i64, !dbg !1320 | |
%minsec = alloca i64, !dbg !1320 | |
%s = alloca i64, !dbg !1320 | |
%result = alloca i64, !dbg !1320 | |
%overflow = alloca i1, !dbg !1320 | |
%sd = alloca i64, !dbg !1320 | |
%temp = alloca i64, !dbg !1320 | |
%nanos = alloca i64, !dbg !1320 | |
%0 = alloca %"(Int64 | Nil)", !dbg !1321 | |
%1 = alloca %"(Int64 | Nil)", !dbg !1321 | |
br label %entry | |
entry: ; preds = %alloca | |
%2 = sext i32 %hours to i64, !dbg !1320 | |
%3 = mul i64 3600, %2, !dbg !1320 | |
store i64 %3, i64* %hrssec, !dbg !1322 | |
%4 = sext i32 %minutes to i64, !dbg !1322 | |
%5 = mul i64 60, %4, !dbg !1322 | |
store i64 %5, i64* %minsec, !dbg !1323 | |
%6 = load i64, i64* %hrssec, !dbg !1323 | |
%7 = load i64, i64* %minsec, !dbg !1323 | |
%8 = add i64 %6, %7, !dbg !1323 | |
%9 = sext i32 %seconds to i64, !dbg !1323 | |
%10 = add i64 %8, %9, !dbg !1323 | |
store i64 %10, i64* %s, !dbg !1324 | |
store i64 0, i64* %result, !dbg !1325 | |
store i1 false, i1* %overflow, !dbg !1326 | |
%11 = icmp sgt i32 %days, 0, !dbg !1327 | |
br i1 %11, label %then, label %else, !dbg !1327 | |
then: ; preds = %entry | |
%12 = sext i32 %days to i64, !dbg !1327 | |
%13 = mul i64 86400, %12, !dbg !1327 | |
store i64 %13, i64* %sd, !dbg !1328 | |
%14 = load i64, i64* %sd, !dbg !1329 | |
%15 = sext i32 %days to i64, !dbg !1329 | |
%16 = icmp slt i64 %14, %15, !dbg !1329 | |
br i1 %16, label %then1, label %else2, !dbg !1329 | |
else: ; preds = %entry | |
%17 = icmp slt i32 %days, 0, !dbg !1330 | |
br i1 %17, label %then7, label %else8, !dbg !1330 | |
then1: ; preds = %then | |
store i1 true, i1* %overflow, !dbg !1331 | |
br label %exit, !dbg !1331 | |
else2: ; preds = %then | |
%18 = load i64, i64* %s, !dbg !1332 | |
%19 = icmp slt i64 %18, 0, !dbg !1332 | |
br i1 %19, label %then3, label %else4, !dbg !1332 | |
exit: ; preds = %exit5, %then1 | |
br label %exit6, !dbg !1333 | |
then3: ; preds = %else2 | |
%20 = load i64, i64* %s, !dbg !1332 | |
store i64 %20, i64* %temp, !dbg !1334 | |
%21 = load i64, i64* %s, !dbg !1334 | |
%22 = load i64, i64* %sd, !dbg !1334 | |
%23 = add i64 %21, %22, !dbg !1334 | |
store i64 %23, i64* %s, !dbg !1335 | |
%24 = load i64, i64* %temp, !dbg !1335 | |
%25 = load i64, i64* %s, !dbg !1335 | |
%26 = icmp sgt i64 %24, %25, !dbg !1335 | |
store i1 %26, i1* %overflow, !dbg !1336 | |
br label %exit5, !dbg !1336 | |
else4: ; preds = %else2 | |
%27 = load i64, i64* %s, !dbg !1336 | |
%28 = load i64, i64* %sd, !dbg !1336 | |
%29 = add i64 %27, %28, !dbg !1336 | |
store i64 %29, i64* %s, !dbg !1337 | |
%30 = load i64, i64* %s, !dbg !1337 | |
%31 = icmp slt i64 %30, 0, !dbg !1337 | |
store i1 %31, i1* %overflow, !dbg !1333 | |
br label %exit5, !dbg !1333 | |
exit5: ; preds = %else4, %then3 | |
br label %exit, !dbg !1333 | |
exit6: ; preds = %exit15, %exit | |
%32 = load i1, i1* %overflow, !dbg !1338 | |
br i1 %32, label %then16, label %else17, !dbg !1338 | |
then7: ; preds = %else | |
%33 = sext i32 %days to i64, !dbg !1330 | |
%34 = mul i64 86400, %33, !dbg !1330 | |
store i64 %34, i64* %sd, !dbg !1339 | |
%35 = load i64, i64* %sd, !dbg !1340 | |
%36 = sext i32 %days to i64, !dbg !1340 | |
%37 = icmp sgt i64 %35, %36, !dbg !1340 | |
br i1 %37, label %then9, label %else10, !dbg !1340 | |
else8: ; preds = %else | |
br label %exit15, !dbg !1341 | |
then9: ; preds = %then7 | |
store i1 true, i1* %overflow, !dbg !1342 | |
br label %exit11, !dbg !1342 | |
else10: ; preds = %then7 | |
%38 = load i64, i64* %s, !dbg !1343 | |
%39 = icmp sle i64 %38, 0, !dbg !1343 | |
br i1 %39, label %then12, label %else13, !dbg !1343 | |
exit11: ; preds = %exit14, %then9 | |
br label %exit15, !dbg !1341 | |
then12: ; preds = %else10 | |
%40 = load i64, i64* %s, !dbg !1343 | |
%41 = load i64, i64* %sd, !dbg !1343 | |
%42 = add i64 %40, %41, !dbg !1343 | |
store i64 %42, i64* %s, !dbg !1344 | |
%43 = load i64, i64* %s, !dbg !1344 | |
%44 = icmp sgt i64 %43, 0, !dbg !1344 | |
store i1 %44, i1* %overflow, !dbg !1345 | |
br label %exit14, !dbg !1345 | |
else13: ; preds = %else10 | |
%45 = load i64, i64* %s, !dbg !1345 | |
store i64 %45, i64* %nanos, !dbg !1346 | |
%46 = load i64, i64* %s, !dbg !1346 | |
%47 = load i64, i64* %sd, !dbg !1346 | |
%48 = add i64 %46, %47, !dbg !1346 | |
store i64 %48, i64* %s, !dbg !1347 | |
%49 = load i64, i64* %s, !dbg !1347 | |
%50 = load i64, i64* %nanos, !dbg !1347 | |
%51 = icmp sgt i64 %49, %50, !dbg !1347 | |
store i1 %51, i1* %overflow, !dbg !1341 | |
br label %exit14, !dbg !1341 | |
exit14: ; preds = %else13, %then12 | |
br label %exit11, !dbg !1341 | |
exit15: ; preds = %else8, %exit11 | |
br label %exit6, !dbg !1341 | |
then16: ; preds = %exit6 | |
br i1 %raise_exception, label %then18, label %else19, !dbg !1348 | |
else17: ; preds = %exit6 | |
%52 = load i64, i64* %s, !dbg !1321 | |
%53 = getelementptr inbounds %"(Int64 | Nil)", %"(Int64 | Nil)"* %1, i32 0, i32 0, !dbg !1321 | |
store i32 162, i32* %53, !dbg !1321 | |
%54 = getelementptr inbounds %"(Int64 | Nil)", %"(Int64 | Nil)"* %1, i32 0, i32 1, !dbg !1321 | |
%55 = bitcast [1 x i64]* %54 to i64*, !dbg !1321 | |
store i64 %52, i64* %55, !dbg !1321 | |
%56 = load %"(Int64 | Nil)", %"(Int64 | Nil)"* %1, !dbg !1321 | |
ret %"(Int64 | Nil)" %56, !dbg !1321 | |
then18: ; preds = %then16 | |
%57 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [32 x i8] }* @"'Time::Span too big ...'" to %String*)), !dbg !1349 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %57), !dbg !1321 | |
unreachable, !dbg !1321 | |
else19: ; preds = %then16 | |
%58 = getelementptr inbounds %"(Int64 | Nil)", %"(Int64 | Nil)"* %0, i32 0, i32 0, !dbg !1321 | |
store i32 0, i32* %58, !dbg !1321 | |
%59 = getelementptr inbounds %"(Int64 | Nil)", %"(Int64 | Nil)"* %0, i32 0, i32 1, !dbg !1321 | |
store [1 x i64] zeroinitializer, [1 x i64]* %59, !dbg !1321 | |
%60 = load %"(Int64 | Nil)", %"(Int64 | Nil)"* %0, !dbg !1321 | |
ret %"(Int64 | Nil)" %60, !dbg !1321 | |
} | |
; Function Attrs: uwtable | |
define internal %"Time::Span" @"*Time::Span::new:seconds:nanoseconds<Int64, Int64>:Time::Span"(i64 %__temp_263, i64 %__temp_264) #0 !dbg !1350 { | |
alloca: | |
%_ = alloca %"Time::Span", !dbg !1351 | |
%0 = alloca %"Time::Span", !dbg !1351 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Time::Span"* %0 to i8*, !dbg !1351 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%"Time::Span"* getelementptr (%"Time::Span", %"Time::Span"* null, i32 1) to i32), i32 4, i1 false), !dbg !1351 | |
%2 = load %"Time::Span", %"Time::Span"* %0, !dbg !1351 | |
store %"Time::Span" %2, %"Time::Span"* %_, !dbg !1351 | |
%3 = call i32 @"*Time::Span#initialize:seconds:nanoseconds<Int64, Int64>:Int32"(%"Time::Span"* %_, i64 %__temp_263, i64 %__temp_264), !dbg !1351 | |
%4 = load %"Time::Span", %"Time::Span"* %_, !dbg !1351 | |
ret %"Time::Span" %4, !dbg !1351 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Time::Span#initialize:seconds:nanoseconds<Int64, Int64>:Int32"(%"Time::Span"* %self, i64 %seconds, i64 %nanoseconds) #0 !dbg !1352 { | |
alloca: | |
%__temp_269 = alloca i1, !dbg !1353 | |
%__temp_270 = alloca i1, !dbg !1353 | |
%seconds1 = alloca i64, !dbg !1353 | |
%nanoseconds2 = alloca i64, !dbg !1353 | |
br label %entry | |
entry: ; preds = %alloca | |
store i64 %seconds, i64* %seconds1, !dbg !1353 | |
store i64 %nanoseconds, i64* %nanoseconds2, !dbg !1353 | |
%0 = load i64, i64* %seconds1, !dbg !1353 | |
%1 = load i64, i64* %nanoseconds2, !dbg !1353 | |
%2 = call i64 @"*Int64@Int#tdiv<Int64>:Int64"(i64 %1, i64 1000000000), !dbg !1354 | |
%3 = add i64 %0, %2, !dbg !1354 | |
store i64 %3, i64* %seconds1, !dbg !1355 | |
%4 = load i64, i64* %nanoseconds2, !dbg !1355 | |
%5 = call i64 @"*Int64@Int#remainder<Int64>:Int64"(i64 %4, i64 1000000000), !dbg !1356 | |
store i64 %5, i64* %nanoseconds2, !dbg !1357 | |
%6 = load i64, i64* %seconds1, !dbg !1358 | |
%7 = icmp sgt i64 %6, 0, !dbg !1358 | |
store i1 %7, i1* %__temp_269, !dbg !1358 | |
br i1 %7, label %then3, label %else4, !dbg !1358 | |
then: ; preds = %exit | |
%8 = load i64, i64* %seconds1, !dbg !1358 | |
%9 = sub i64 %8, 1, !dbg !1358 | |
store i64 %9, i64* %seconds1, !dbg !1359 | |
%10 = load i64, i64* %nanoseconds2, !dbg !1359 | |
%11 = add i64 %10, 1000000000, !dbg !1359 | |
store i64 %11, i64* %nanoseconds2, !dbg !1360 | |
br label %exit5, !dbg !1360 | |
else: ; preds = %exit | |
%12 = load i64, i64* %seconds1, !dbg !1361 | |
%13 = icmp slt i64 %12, 0, !dbg !1361 | |
store i1 %13, i1* %__temp_270, !dbg !1361 | |
br i1 %13, label %then8, label %else9, !dbg !1361 | |
then3: ; preds = %entry | |
%14 = load i64, i64* %nanoseconds2, !dbg !1358 | |
%15 = icmp slt i64 %14, 0, !dbg !1358 | |
br label %exit, !dbg !1358 | |
else4: ; preds = %entry | |
%16 = load i1, i1* %__temp_269, !dbg !1358 | |
br label %exit, !dbg !1358 | |
exit: ; preds = %else4, %then3 | |
%17 = phi i1 [ %15, %then3 ], [ %16, %else4 ], !dbg !1358 | |
br i1 %17, label %then, label %else, !dbg !1358 | |
exit5: ; preds = %exit11, %then | |
%18 = load i64, i64* %seconds1, !dbg !1362 | |
%19 = getelementptr inbounds %"Time::Span", %"Time::Span"* %self, i32 0, i32 0, !dbg !1363 | |
store i64 %18, i64* %19, !dbg !1363 | |
%20 = load i64, i64* %nanoseconds2, !dbg !1363 | |
%21 = trunc i64 %20 to i32, !dbg !1363 | |
%22 = getelementptr inbounds %"Time::Span", %"Time::Span"* %self, i32 0, i32 1, !dbg !1364 | |
store i32 %21, i32* %22, !dbg !1364 | |
ret i32 %21, !dbg !1364 | |
then6: ; preds = %exit10 | |
%23 = load i64, i64* %seconds1, !dbg !1361 | |
%24 = add i64 %23, 1, !dbg !1361 | |
store i64 %24, i64* %seconds1, !dbg !1365 | |
%25 = load i64, i64* %nanoseconds2, !dbg !1365 | |
%26 = sub i64 %25, 1000000000, !dbg !1365 | |
store i64 %26, i64* %nanoseconds2, !dbg !1362 | |
br label %exit11, !dbg !1362 | |
else7: ; preds = %exit10 | |
br label %exit11, !dbg !1362 | |
then8: ; preds = %else | |
%27 = load i64, i64* %nanoseconds2, !dbg !1361 | |
%28 = icmp sgt i64 %27, 0, !dbg !1361 | |
br label %exit10, !dbg !1361 | |
else9: ; preds = %else | |
%29 = load i1, i1* %__temp_270, !dbg !1361 | |
br label %exit10, !dbg !1361 | |
exit10: ; preds = %else9, %then8 | |
%30 = phi i1 [ %28, %then8 ], [ %29, %else9 ], !dbg !1361 | |
br i1 %30, label %then6, label %else7, !dbg !1361 | |
exit11: ; preds = %else7, %then6 | |
br label %exit5, !dbg !1362 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Int64@Int#tdiv<Int64>:Int64"(i64 %self, i64 %other) #0 !dbg !1366 { | |
entry: | |
call void @"*Int64@Int#check_div_argument<Int64>:Nil"(i64 %self, i64 %other), !dbg !1367 | |
%0 = sdiv i64 %self, %other, !dbg !1367 | |
ret i64 %0, !dbg !1367 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Int64@Int#check_div_argument<Int64>:Nil"(i64 %self, i64 %other) #0 !dbg !1368 { | |
alloca: | |
%__temp_268 = alloca i1, !dbg !1369 | |
%__temp_267 = alloca i1, !dbg !1369 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = icmp eq i64 %other, 0, !dbg !1370 | |
br i1 %0, label %then, label %else, !dbg !1370 | |
then: ; preds = %entry | |
%1 = call %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"(), !dbg !1371 | |
call void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %1), !dbg !1372 | |
unreachable, !dbg !1372 | |
else: ; preds = %entry | |
%2 = icmp slt i64 %self, 0, !dbg !1373 | |
store i1 %2, i1* %__temp_268, !dbg !1373 | |
br i1 %2, label %then5, label %else6, !dbg !1373 | |
then1: ; preds = %exit7 | |
%3 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [26 x i8] }* @"'Overflow: Int64::MI...'" to %String*)), !dbg !1373 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %3), !dbg !1373 | |
unreachable, !dbg !1373 | |
else2: ; preds = %exit7 | |
ret void, !dbg !1373 | |
then3: ; preds = %exit | |
%4 = icmp eq i64 %other, -1, !dbg !1373 | |
br label %exit7, !dbg !1373 | |
else4: ; preds = %exit | |
%5 = load i1, i1* %__temp_267, !dbg !1373 | |
br label %exit7, !dbg !1373 | |
then5: ; preds = %else | |
%6 = icmp eq i64 %self, -9223372036854775808, !dbg !1373 | |
br label %exit, !dbg !1373 | |
else6: ; preds = %else | |
%7 = load i1, i1* %__temp_268, !dbg !1373 | |
br label %exit, !dbg !1373 | |
exit: ; preds = %else6, %then5 | |
%8 = phi i1 [ %6, %then5 ], [ %7, %else6 ], !dbg !1373 | |
store i1 %8, i1* %__temp_267, !dbg !1373 | |
br i1 %8, label %then3, label %else4, !dbg !1373 | |
exit7: ; preds = %else4, %then3 | |
%9 = phi i1 [ %4, %then3 ], [ %5, %else4 ], !dbg !1373 | |
br i1 %9, label %then1, label %else2, !dbg !1373 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*Int64@Int#remainder<Int64>:Int64"(i64 %self, i64 %other) #0 !dbg !1374 { | |
entry: | |
%0 = icmp eq i64 %other, 0, !dbg !1375 | |
br i1 %0, label %then, label %else, !dbg !1375 | |
then: ; preds = %entry | |
%1 = call %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"(), !dbg !1376 | |
call void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %1), !dbg !1377 | |
unreachable, !dbg !1377 | |
else: ; preds = %entry | |
%2 = srem i64 %self, %other, !dbg !1377 | |
ret i64 %2, !dbg !1377 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::Scheduler#sleep<Time::Span>:Nil"(%"Crystal::Scheduler"* %self, %"Time::Span" %time) #0 !dbg !1378 { | |
alloca: | |
%time1 = alloca %"Time::Span", !dbg !1379 | |
%0 = alloca %"Crystal::Event", !dbg !1380 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"Time::Span" %time, %"Time::Span"* %time1, !dbg !1379 | |
%1 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 2, !dbg !1379 | |
%2 = load %Fiber*, %Fiber** %1, !dbg !1379 | |
%3 = call %"Crystal::Event" @"*Fiber#resume_event:Crystal::Event"(%Fiber* %2), !dbg !1380 | |
store %"Crystal::Event" %3, %"Crystal::Event"* %0, !dbg !1380 | |
%4 = load %"Time::Span", %"Time::Span"* %time1, !dbg !1380 | |
%5 = call i32 @"*Crystal::Event#add<Time::Span>:Int32"(%"Crystal::Event"* %0, %"Time::Span" %4), !dbg !1380 | |
call void @"*Crystal::Scheduler#reschedule:Nil"(%"Crystal::Scheduler"* %self), !dbg !1381 | |
ret void, !dbg !1381 | |
} | |
; Function Attrs: uwtable | |
define internal %"Crystal::Event" @"*Fiber#resume_event:Crystal::Event"(%Fiber* %self) #0 !dbg !1382 { | |
alloca: | |
%__temp_271 = alloca %"(Crystal::Event | Nil)", !dbg !1383 | |
%0 = alloca %"Crystal::Event", !dbg !1384 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 3, !dbg !1385 | |
%2 = load %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)"* %1, !dbg !1385 | |
store %"(Crystal::Event | Nil)" %2, %"(Crystal::Event | Nil)"* %__temp_271, !dbg !1385 | |
%3 = getelementptr inbounds %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)"* %1, i32 0, i32 0, !dbg !1385 | |
%4 = load i32, i32* %3, !dbg !1385 | |
%5 = icmp eq i32 %4, 0, !dbg !1385 | |
%6 = xor i1 %5, true, !dbg !1385 | |
%7 = and i1 true, %6, !dbg !1385 | |
br i1 %7, label %then, label %else, !dbg !1385 | |
then: ; preds = %entry | |
%8 = getelementptr inbounds %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)"* %__temp_271, i32 0, i32 1, !dbg !1385 | |
%9 = bitcast [2 x i64]* %8 to %"Crystal::Event"*, !dbg !1385 | |
br label %exit, !dbg !1385 | |
else: ; preds = %entry | |
%10 = call %"Crystal::Event" @"*Crystal::EventLoop::create_resume_event<Fiber>:Crystal::Event"(%Fiber* %self), !dbg !1384 | |
store %"Crystal::Event" %10, %"Crystal::Event"* %0, !dbg !1384 | |
%11 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 3, !dbg !1385 | |
%12 = load %"Crystal::Event", %"Crystal::Event"* %0, !dbg !1385 | |
%13 = getelementptr inbounds %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)"* %11, i32 0, i32 0, !dbg !1385 | |
store i32 412, i32* %13, !dbg !1385 | |
%14 = getelementptr inbounds %"(Crystal::Event | Nil)", %"(Crystal::Event | Nil)"* %11, i32 0, i32 1, !dbg !1385 | |
%15 = bitcast [2 x i64]* %14 to %"Crystal::Event"*, !dbg !1385 | |
store %"Crystal::Event" %12, %"Crystal::Event"* %15, !dbg !1385 | |
br label %exit, !dbg !1385 | |
exit: ; preds = %else, %then | |
%16 = phi %"Crystal::Event"* [ %9, %then ], [ %0, %else ], !dbg !1385 | |
%17 = load %"Crystal::Event", %"Crystal::Event"* %16, !dbg !1385 | |
ret %"Crystal::Event" %17, !dbg !1385 | |
} | |
; Function Attrs: uwtable | |
define internal %"Crystal::Event" @"*Crystal::EventLoop::create_resume_event<Fiber>:Crystal::Event"(%Fiber* %fiber) #0 !dbg !1386 { | |
alloca: | |
%0 = alloca %"->", !dbg !1388 | |
%1 = alloca %"Crystal::Event", !dbg !1389 | |
br label %entry | |
entry: ; preds = %alloca | |
%2 = call %"Crystal::Event::Base"* @"~Crystal::EventLoop::eb:read"(), !dbg !1388 | |
%3 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 0, !dbg !1388 | |
store i8* bitcast (void (i32, i16, i8*)* @"~procProc(Int32, LibEvent2::EventFlags, Pointer(Void), Nil)@/usr/share/crystal/src/crystal/event_loop.cr:20" to i8*), i8** %3, !dbg !1388 | |
%4 = getelementptr inbounds %"->", %"->"* %0, i32 0, i32 1, !dbg !1388 | |
store i8* null, i8** %4, !dbg !1388 | |
%5 = load %"->", %"->"* %0, !dbg !1388 | |
%6 = call %"Crystal::Event" @"*Crystal::Event::Base#new_event<Int32, LibEvent2::EventFlags, Fiber, &Proc(Int32, LibEvent2::EventFlags, Pointer(Void), Nil)>:Crystal::Event"(%"Crystal::Event::Base"* %2, i32 -1, i16 0, %Fiber* %fiber, %"->" %5), !dbg !1389 | |
store %"Crystal::Event" %6, %"Crystal::Event"* %1, !dbg !1389 | |
%7 = load %"Crystal::Event", %"Crystal::Event"* %1, !dbg !1389 | |
ret %"Crystal::Event" %7, !dbg !1389 | |
} | |
define internal %"Crystal::Event::Base"* @"~Crystal::EventLoop::eb:read"() { | |
entry: | |
%0 = load i1, i1* @"Crystal::EventLoop::eb:init", !dbg !1388 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !1388 | |
initialized: ; preds = %not_initialized, %entry | |
ret %"Crystal::Event::Base"* @"Crystal::EventLoop::eb", !dbg !1388 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"Crystal::EventLoop::eb:init", !dbg !1388 | |
call void @"~Crystal::EventLoop::eb:init"(), !dbg !1388 | |
br label %initialized, !dbg !1388 | |
} | |
; Function Attrs: uwtable | |
define internal void @"~procProc(Int32, LibEvent2::EventFlags, Pointer(Void), Nil)@/usr/share/crystal/src/crystal/event_loop.cr:20"(i32 %s, i16 %flags, i8* %data) #0 !dbg !1390 { | |
entry: | |
%0 = bitcast i8* %data to %Fiber*, !dbg !1391 | |
call void @"*Fiber#resume:Nil"(%Fiber* %0), !dbg !1392 | |
ret void, !dbg !1392 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Fiber#resume:Nil"(%Fiber* %self) #0 !dbg !1393 { | |
entry: | |
call void @"*Crystal::Scheduler::resume<Fiber>:Nil"(%Fiber* %self), !dbg !1394 | |
ret void, !dbg !1394 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::Scheduler::resume<Fiber>:Nil"(%Fiber* %fiber) #0 !dbg !1395 { | |
entry: | |
%0 = call %Thread* @"*Thread::current:Thread"(), !dbg !1396 | |
%1 = call %"Crystal::Scheduler"* @"*Thread#scheduler:Crystal::Scheduler"(%Thread* %0), !dbg !1396 | |
call void @"*Crystal::Scheduler#resume<Fiber>:Nil"(%"Crystal::Scheduler"* %1, %Fiber* %fiber), !dbg !1396 | |
ret void, !dbg !1396 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::Scheduler#resume<Fiber>:Nil"(%"Crystal::Scheduler"* %self, %Fiber* %fiber) #0 !dbg !1397 { | |
alloca: | |
%__temp_258 = alloca %Fiber*, !dbg !1398 | |
%__temp_259 = alloca %Fiber*, !dbg !1398 | |
%current = alloca %Fiber*, !dbg !1398 | |
br label %entry | |
entry: ; preds = %alloca | |
call void @"*Crystal::Scheduler#validate_resumable<Fiber>:Nil"(%"Crystal::Scheduler"* %self, %Fiber* %fiber), !dbg !1399 | |
%0 = getelementptr inbounds %Fiber, %Fiber* %fiber, i32 0, i32 4, !dbg !1399 | |
%1 = load i8*, i8** %0, !dbg !1399 | |
%2 = call i8* @"*GC::set_stackbottom<Pointer(Void)>:Pointer(Void)"(i8* %1), !dbg !1400 | |
%3 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 2, !dbg !1400 | |
%4 = load %Fiber*, %Fiber** %3, !dbg !1400 | |
store %Fiber* %4, %Fiber** %__temp_258, !dbg !1401 | |
store %Fiber* %fiber, %Fiber** %__temp_259, !dbg !1401 | |
%5 = load %Fiber*, %Fiber** %__temp_258, !dbg !1401 | |
store %Fiber* %5, %Fiber** %current, !dbg !1401 | |
%6 = load %Fiber*, %Fiber** %__temp_259, !dbg !1401 | |
%7 = getelementptr inbounds %"Crystal::Scheduler", %"Crystal::Scheduler"* %self, i32 0, i32 2, !dbg !1402 | |
store %Fiber* %6, %Fiber** %7, !dbg !1402 | |
%8 = load %Fiber*, %Fiber** %current, !dbg !1402 | |
%9 = getelementptr inbounds %Fiber, %Fiber* %8, i32 0, i32 1, !dbg !1402 | |
%10 = getelementptr inbounds %Fiber, %Fiber* %fiber, i32 0, i32 1, !dbg !1402 | |
call void @"*Fiber::swapcontext<Pointer(Fiber::Context), Pointer(Fiber::Context)>:Nil"(%"struct.Fiber::Context"* %9, %"struct.Fiber::Context"* %10), !dbg !1403 | |
ret void, !dbg !1403 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Crystal::Scheduler#validate_resumable<Fiber>:Nil"(%"Crystal::Scheduler"* %self, %Fiber* %fiber) #0 !dbg !1404 { | |
entry: | |
%0 = call i1 @"*Fiber#resumable?:Bool"(%Fiber* %fiber), !dbg !1405 | |
br i1 %0, label %then, label %else, !dbg !1405 | |
then: ; preds = %entry | |
ret void, !dbg !1405 | |
else: ; preds = %entry | |
%1 = call i1 @"*Fiber#dead?:Bool"(%Fiber* %fiber), !dbg !1406 | |
br i1 %1, label %then1, label %else2, !dbg !1406 | |
then1: ; preds = %else | |
call void @"*Crystal::Scheduler#fatal_resume_error<Fiber, String>:NoReturn"(%"Crystal::Scheduler"* %self, %Fiber* %fiber, %String* bitcast ({ i32, i32, i32, [29 x i8] }* @"'tried to resume a d...'" to %String*)), !dbg !1407 | |
unreachable, !dbg !1407 | |
else2: ; preds = %else | |
call void @"*Crystal::Scheduler#fatal_resume_error<Fiber, String>:NoReturn"(%"Crystal::Scheduler"* %self, %Fiber* %fiber, %String* bitcast ({ i32, i32, i32, [29 x i8] }* @"'can't resume a runn...'" to %String*)), !dbg !1408 | |
unreachable, !dbg !1408 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Fiber#resumable?:Bool"(%Fiber* %self) #0 !dbg !1409 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 1, !dbg !1410 | |
%1 = getelementptr inbounds %"struct.Fiber::Context", %"struct.Fiber::Context"* %0, i32 0, i32 1, !dbg !1410 | |
%2 = load i64, i64* %1, !dbg !1410 | |
%3 = icmp eq i64 %2, 1, !dbg !1410 | |
ret i1 %3, !dbg !1410 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Fiber#dead?:Bool"(%Fiber* %self) #0 !dbg !1411 { | |
entry: | |
%0 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 8, !dbg !1412 | |
%1 = load i1, i1* %0, !dbg !1412 | |
%2 = icmp eq i1 %1, false, !dbg !1412 | |
ret i1 %2, !dbg !1412 | |
} | |
; Function Attrs: noreturn uwtable | |
define internal void @"*Crystal::Scheduler#fatal_resume_error<Fiber, String>:NoReturn"(%"Crystal::Scheduler"* %self, %Fiber* %fiber, %String* %message) #1 !dbg !1413 { | |
alloca: | |
%line = alloca %String*, !dbg !1414 | |
%i = alloca i32, !dbg !1415 | |
%i1 = alloca i32, !dbg !1415 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1416 | |
%1 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %0, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'\0A'" to %String*)), !dbg !1416 | |
%2 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1, %String* bitcast ({ i32, i32, i32, [8 x i8] }* @"'FATAL: '" to %String*)), !dbg !1416 | |
%3 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %2, %String* %message), !dbg !1416 | |
%4 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %3, %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"': '" to %String*)), !dbg !1416 | |
%5 = call %"String::Builder"* @"*String::Builder@IO#<<<Fiber>:String::Builder"(%"String::Builder"* %4, %Fiber* %fiber), !dbg !1416 | |
%6 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %5, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'\0A'" to %String*)), !dbg !1416 | |
%7 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %6), !dbg !1416 | |
%8 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %7), !dbg !1416 | |
%9 = call i32 (i32, i8*, ...) @dprintf(i32 2, i8* %8), !dbg !1417 | |
%10 = call %"Array(String)"* @"*caller:Array(String)"(), !dbg !1414 | |
store i32 0, i32* %i1, !dbg !1418 | |
br label %while, !dbg !1418 | |
while: ; preds = %body, %entry | |
%11 = load i32, i32* %i1, !dbg !1419 | |
%12 = getelementptr inbounds %"Array(String)", %"Array(String)"* %10, i32 0, i32 1, !dbg !1419 | |
%13 = load i32, i32* %12, !dbg !1419 | |
%14 = icmp slt i32 %11, %13, !dbg !1419 | |
br i1 %14, label %body, label %exit, !dbg !1419 | |
body: ; preds = %while | |
%15 = load i32, i32* %i1, !dbg !1419 | |
store i32 %15, i32* %i, !dbg !1419 | |
%16 = load i32, i32* %i, !dbg !1419 | |
%17 = call %String* @"*Array(String)@Array(T)#unsafe_fetch<Int32>:String"(%"Array(String)"* %10, i32 %16), !dbg !1420 | |
store %String* %17, %String** %line, !dbg !1420 | |
%18 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1421 | |
%19 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %18, %String* bitcast ({ i32, i32, i32, [8 x i8] }* @"' from '" to %String*)), !dbg !1421 | |
%20 = load %String*, %String** %line, !dbg !1421 | |
%21 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %19, %String* %20), !dbg !1421 | |
%22 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %21, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'\0A'" to %String*)), !dbg !1421 | |
%23 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %22), !dbg !1421 | |
%24 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %23), !dbg !1421 | |
%25 = call i32 (i32, i8*, ...) @dprintf(i32 2, i8* %24), !dbg !1422 | |
%26 = load i32, i32* %i1, !dbg !1422 | |
%27 = add i32 %26, 1, !dbg !1422 | |
store i32 %27, i32* %i1, !dbg !1423 | |
br label %while, !dbg !1423 | |
exit: ; preds = %while | |
call void @"*exit<Int32>:NoReturn"(i32 1), !dbg !1424 | |
unreachable, !dbg !1424 | |
} | |
; Function Attrs: uwtable | |
define internal %"String::Builder"* @"*String::Builder@IO#<<<Fiber>:String::Builder"(%"String::Builder"* %self, %Fiber* %obj) #0 !dbg !1425 { | |
entry: | |
call void @"*Fiber#to_s<String::Builder>:Nil"(%Fiber* %obj, %"String::Builder"* %self), !dbg !1426 | |
ret %"String::Builder"* %self, !dbg !1426 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*Fiber#to_s<String::Builder>:Nil"(%Fiber* %self, %"String::Builder"* %io) #0 !dbg !1427 { | |
alloca: | |
%name = alloca %String*, !dbg !1428 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %io, %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"'#<'" to %String*)), !dbg !1429 | |
%1 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %0, %String* bitcast ({ i32, i32, i32, [6 x i8] }* @"'Fiber'" to %String*)), !dbg !1429 | |
%2 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1, %String* bitcast ({ i32, i32, i32, [4 x i8] }* @"':0x'" to %String*)), !dbg !1429 | |
%3 = ptrtoint %Fiber* %self to i64, !dbg !1429 | |
call void @"*UInt64@Int#to_s<Int32, String::Builder>:Nil"(i64 %3, i32 16, %"String::Builder"* %io), !dbg !1430 | |
%4 = getelementptr inbounds %Fiber, %Fiber* %self, i32 0, i32 5, !dbg !1431 | |
%5 = load %String*, %String** %4, !dbg !1431 | |
store %String* %5, %String** %name, !dbg !1432 | |
%6 = icmp ne %String* %5, null, !dbg !1432 | |
br i1 %6, label %then, label %else, !dbg !1432 | |
then: ; preds = %entry | |
%7 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %io, %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"': '" to %String*)), !dbg !1433 | |
%8 = load %String*, %String** %name, !dbg !1433 | |
%9 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %7, %String* %8), !dbg !1433 | |
br label %exit, !dbg !1433 | |
else: ; preds = %entry | |
br label %exit, !dbg !1433 | |
exit: ; preds = %else, %then | |
%10 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %io, i32 62), !dbg !1434 | |
ret void, !dbg !1434 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*UInt64@Int#to_s<Int32, String::Builder>:Nil"(i64 %self, i32 %base, %"String::Builder"* %io) #0 !dbg !1435 { | |
alloca: | |
%upcase = alloca i1, !dbg !1436 | |
%__temp_50 = alloca i1, !dbg !1436 | |
%__temp_49 = alloca i1, !dbg !1436 | |
%ptr = alloca i8*, !dbg !1437 | |
%count = alloca i32, !dbg !1437 | |
%base16 = alloca i32, !dbg !1437 | |
%upcase17 = alloca i1, !dbg !1437 | |
%chars = alloca [129 x i8], !dbg !1437 | |
%ptr_end = alloca i8*, !dbg !1437 | |
%ptr18 = alloca i8*, !dbg !1437 | |
%num = alloca i64, !dbg !1437 | |
%neg = alloca i1, !dbg !1437 | |
%digits = alloca i8*, !dbg !1437 | |
%count19 = alloca i32, !dbg !1437 | |
%0 = alloca %"Slice(UInt8)", !dbg !1438 | |
br label %entry | |
entry: ; preds = %alloca | |
store i1 false, i1* %upcase, !dbg !1439 | |
%1 = icmp sle i32 2, %base, !dbg !1440 | |
store i1 %1, i1* %__temp_50, !dbg !1440 | |
br i1 %1, label %then3, label %else4, !dbg !1440 | |
then: ; preds = %exit5 | |
br label %exit6, !dbg !1440 | |
else: ; preds = %exit5 | |
%2 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1441 | |
%3 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %2, %String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'Invalid base '" to %String*)), !dbg !1441 | |
%4 = call %"String::Builder"* @"*String::Builder@IO#<<<Int32>:String::Builder"(%"String::Builder"* %3, i32 %base), !dbg !1441 | |
%5 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %4), !dbg !1441 | |
%6 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %5), !dbg !1442 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %6), !dbg !1443 | |
unreachable, !dbg !1443 | |
then1: ; preds = %exit | |
%7 = load i1, i1* %__temp_49, !dbg !1440 | |
br label %exit5, !dbg !1440 | |
else2: ; preds = %exit | |
%8 = icmp eq i32 %base, 62, !dbg !1440 | |
br label %exit5, !dbg !1440 | |
then3: ; preds = %entry | |
%9 = icmp sle i32 %base, 36, !dbg !1440 | |
br label %exit, !dbg !1440 | |
else4: ; preds = %entry | |
%10 = load i1, i1* %__temp_50, !dbg !1440 | |
br label %exit, !dbg !1440 | |
exit: ; preds = %else4, %then3 | |
%11 = phi i1 [ %9, %then3 ], [ %10, %else4 ], !dbg !1440 | |
store i1 %11, i1* %__temp_49, !dbg !1440 | |
br i1 %11, label %then1, label %else2, !dbg !1440 | |
exit5: ; preds = %else2, %then1 | |
%12 = phi i1 [ %7, %then1 ], [ %8, %else2 ], !dbg !1440 | |
br i1 %12, label %then, label %else, !dbg !1440 | |
exit6: ; preds = %then | |
%13 = load i1, i1* %upcase, !dbg !1444 | |
br i1 %13, label %then9, label %else10, !dbg !1444 | |
then7: ; preds = %exit11 | |
%14 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [33 x i8] }* @"'upcase must be fals...'" to %String*)), !dbg !1445 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %14), !dbg !1446 | |
unreachable, !dbg !1446 | |
else8: ; preds = %exit11 | |
%15 = call i1 @"*Int32@Object#===<UInt64>:Bool"(i32 0, i64 %self), !dbg !1447 | |
br i1 %15, label %then12, label %else13, !dbg !1447 | |
then9: ; preds = %exit6 | |
%16 = icmp eq i32 %base, 62, !dbg !1444 | |
br label %exit11, !dbg !1444 | |
else10: ; preds = %exit6 | |
%17 = load i1, i1* %upcase, !dbg !1444 | |
br label %exit11, !dbg !1444 | |
exit11: ; preds = %else10, %then9 | |
%18 = phi i1 [ %16, %then9 ], [ %17, %else10 ], !dbg !1444 | |
br i1 %18, label %then7, label %else8, !dbg !1444 | |
then12: ; preds = %else8 | |
%19 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %io, i32 48), !dbg !1448 | |
ret void, !dbg !1448 | |
else13: ; preds = %else8 | |
%20 = call i1 @"*Int32@Object#===<UInt64>:Bool"(i32 1, i64 %self), !dbg !1449 | |
br i1 %20, label %then14, label %else15, !dbg !1449 | |
then14: ; preds = %else13 | |
%21 = call %"String::Builder"* @"*String::Builder@IO#<<<Char>:String::Builder"(%"String::Builder"* %io, i32 49), !dbg !1450 | |
ret void, !dbg !1450 | |
else15: ; preds = %else13 | |
%22 = load i1, i1* %upcase, !dbg !1450 | |
store i32 %base, i32* %base16, !dbg !1437 | |
store i1 %22, i1* %upcase17, !dbg !1437 | |
%23 = call i8* @"*StaticArray(UInt8, 129)@StaticArray(T, N)#to_unsafe:Pointer(UInt8)"([129 x i8]* %chars), !dbg !1451 | |
%24 = call i8* @"*Pointer(UInt8)@Pointer(T)#+<Int32>:Pointer(UInt8)"(i8* %23, i32 128), !dbg !1451 | |
store i8* %24, i8** %ptr_end, !dbg !1452 | |
%25 = load i8*, i8** %ptr_end, !dbg !1452 | |
store i8* %25, i8** %ptr18, !dbg !1453 | |
store i64 %self, i64* %num, !dbg !1454 | |
%26 = load i64, i64* %num, !dbg !1454 | |
%27 = icmp ult i64 %26, 0, !dbg !1454 | |
%28 = and i1 true, %27, !dbg !1454 | |
store i1 %28, i1* %neg, !dbg !1455 | |
%29 = load i32, i32* %base16, !dbg !1456 | |
%30 = icmp eq i32 %29, 62, !dbg !1456 | |
br i1 %30, label %then20, label %else21, !dbg !1456 | |
then20: ; preds = %else15 | |
%31 = call %String** @"~Int::DIGITS_BASE62:read"(), !dbg !1456 | |
%32 = load %String*, %String** %31, !dbg !1456 | |
br label %exit22, !dbg !1456 | |
else21: ; preds = %else15 | |
%33 = load i1, i1* %upcase17, !dbg !1457 | |
br i1 %33, label %then23, label %else24, !dbg !1457 | |
exit22: ; preds = %exit25, %then20 | |
%34 = phi %String* [ %32, %then20 ], [ %40, %exit25 ], !dbg !1457 | |
%35 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %34), !dbg !1458 | |
store i8* %35, i8** %digits, !dbg !1459 | |
br label %while, !dbg !1459 | |
then23: ; preds = %else21 | |
%36 = call %String** @"~Int::DIGITS_UPCASE:read"(), !dbg !1457 | |
%37 = load %String*, %String** %36, !dbg !1457 | |
br label %exit25, !dbg !1457 | |
else24: ; preds = %else21 | |
%38 = call %String** @"~Int::DIGITS_DOWNCASE:read"(), !dbg !1457 | |
%39 = load %String*, %String** %38, !dbg !1457 | |
br label %exit25, !dbg !1457 | |
exit25: ; preds = %else24, %then23 | |
%40 = phi %String* [ %37, %then23 ], [ %39, %else24 ], !dbg !1457 | |
br label %exit22, !dbg !1457 | |
while: ; preds = %body, %exit22 | |
%41 = load i64, i64* %num, !dbg !1460 | |
%42 = icmp ne i64 %41, 0, !dbg !1460 | |
%43 = or i1 false, %42, !dbg !1460 | |
br i1 %43, label %body, label %exit26, !dbg !1460 | |
body: ; preds = %while | |
%44 = load i8*, i8** %ptr18, !dbg !1460 | |
%45 = call i8* @"*Pointer(UInt8)@Pointer(T)#-<Int32>:Pointer(UInt8)"(i8* %44, i32 1), !dbg !1461 | |
store i8* %45, i8** %ptr18, !dbg !1461 | |
%46 = load i8*, i8** %ptr18, !dbg !1461 | |
%47 = load i8*, i8** %digits, !dbg !1461 | |
%48 = load i64, i64* %num, !dbg !1461 | |
%49 = load i32, i32* %base16, !dbg !1461 | |
%50 = call i64 @"*UInt64@Int#remainder<Int32>:UInt64"(i64 %48, i32 %49), !dbg !1462 | |
%51 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<UInt64>:UInt8"(i8* %47, i64 %50), !dbg !1463 | |
store i8 %51, i8* %46, !dbg !1463 | |
%52 = load i64, i64* %num, !dbg !1463 | |
%53 = load i32, i32* %base16, !dbg !1463 | |
%54 = call i64 @"*UInt64@Int#tdiv<Int32>:UInt64"(i64 %52, i32 %53), !dbg !1464 | |
store i64 %54, i64* %num, !dbg !1465 | |
br label %while, !dbg !1465 | |
exit26: ; preds = %while | |
%55 = load i1, i1* %neg, !dbg !1466 | |
br i1 %55, label %then27, label %else28, !dbg !1466 | |
then27: ; preds = %exit26 | |
%56 = load i8*, i8** %ptr18, !dbg !1466 | |
%57 = call i8* @"*Pointer(UInt8)@Pointer(T)#-<Int32>:Pointer(UInt8)"(i8* %56, i32 1), !dbg !1467 | |
store i8* %57, i8** %ptr18, !dbg !1467 | |
%58 = load i8*, i8** %ptr18, !dbg !1467 | |
store i8 45, i8* %58, !dbg !1467 | |
br label %exit29, !dbg !1467 | |
else28: ; preds = %exit26 | |
br label %exit29, !dbg !1467 | |
exit29: ; preds = %else28, %then27 | |
%59 = load i8*, i8** %ptr_end, !dbg !1467 | |
%60 = load i8*, i8** %ptr18, !dbg !1467 | |
%61 = ptrtoint i8* %59 to i64, !dbg !1467 | |
%62 = ptrtoint i8* %60 to i64, !dbg !1467 | |
%63 = sub i64 %61, %62, !dbg !1467 | |
%64 = sdiv exact i64 %63, ptrtoint (i8* getelementptr inbounds (i8, i8* null, i32 1) to i64), !dbg !1467 | |
%65 = trunc i64 %64 to i32, !dbg !1467 | |
store i32 %65, i32* %count19, !dbg !1468 | |
%66 = load i8*, i8** %ptr18, !dbg !1468 | |
%67 = load i32, i32* %count19, !dbg !1468 | |
store i8* %66, i8** %ptr, !dbg !1468 | |
store i32 %67, i32* %count, !dbg !1468 | |
%68 = load i8*, i8** %ptr, !dbg !1468 | |
%69 = load i32, i32* %count, !dbg !1468 | |
%70 = call %"Slice(UInt8)" @"*Slice(T)::new<Pointer(UInt8), Int32>:Slice(UInt8)"(i8* %68, i32 %69), !dbg !1438 | |
store %"Slice(UInt8)" %70, %"Slice(UInt8)"* %0, !dbg !1438 | |
%71 = load %"Slice(UInt8)", %"Slice(UInt8)"* %0, !dbg !1438 | |
call void @"*String::Builder@IO#write_utf8<Slice(UInt8)>:Nil"(%"String::Builder"* %io, %"Slice(UInt8)" %71), !dbg !1469 | |
ret void, !dbg !1469 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*Int32@Object#===<UInt64>:Bool"(i32 %self, i64 %other) #0 !dbg !1470 { | |
entry: | |
%0 = sext i32 %self to i64, !dbg !1471 | |
%1 = icmp sge i64 %0, 0, !dbg !1471 | |
%2 = icmp eq i64 %0, %other, !dbg !1471 | |
%3 = and i1 %1, %2, !dbg !1471 | |
ret i1 %3, !dbg !1471 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*UInt64@Int#remainder<Int32>:UInt64"(i64 %self, i32 %other) #0 !dbg !1472 { | |
entry: | |
%0 = icmp eq i32 %other, 0, !dbg !1473 | |
br i1 %0, label %then, label %else, !dbg !1473 | |
then: ; preds = %entry | |
%1 = call %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"(), !dbg !1474 | |
call void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %1), !dbg !1475 | |
unreachable, !dbg !1475 | |
else: ; preds = %entry | |
%2 = sext i32 %other to i64, !dbg !1475 | |
%3 = urem i64 %self, %2, !dbg !1475 | |
ret i64 %3, !dbg !1475 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*UInt64@Int#tdiv<Int32>:UInt64"(i64 %self, i32 %other) #0 !dbg !1476 { | |
entry: | |
call void @"*UInt64@Int#check_div_argument<Int32>:Nil"(i64 %self, i32 %other), !dbg !1477 | |
%0 = sext i32 %other to i64, !dbg !1477 | |
%1 = udiv i64 %self, %0, !dbg !1477 | |
ret i64 %1, !dbg !1477 | |
} | |
; Function Attrs: uwtable | |
define internal void @"*UInt64@Int#check_div_argument<Int32>:Nil"(i64 %self, i32 %other) #0 !dbg !1478 { | |
alloca: | |
%__temp_62 = alloca i1, !dbg !1479 | |
%__temp_61 = alloca i1, !dbg !1479 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = icmp eq i32 %other, 0, !dbg !1480 | |
br i1 %0, label %then, label %else, !dbg !1480 | |
then: ; preds = %entry | |
%1 = call %DivisionByZeroError* @"*DivisionByZeroError::new:DivisionByZeroError"(), !dbg !1481 | |
call void @"*raise<DivisionByZeroError>:NoReturn"(%DivisionByZeroError* %1), !dbg !1482 | |
unreachable, !dbg !1482 | |
else: ; preds = %entry | |
%2 = icmp ult i64 %self, 0, !dbg !1483 | |
%3 = and i1 true, %2, !dbg !1483 | |
store i1 %3, i1* %__temp_62, !dbg !1483 | |
br i1 %3, label %then5, label %else6, !dbg !1483 | |
then1: ; preds = %exit7 | |
%4 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* bitcast ({ i32, i32, i32, [27 x i8] }* @"'Overflow: UInt64::M...'" to %String*)), !dbg !1483 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %4), !dbg !1483 | |
unreachable, !dbg !1483 | |
else2: ; preds = %exit7 | |
ret void, !dbg !1483 | |
then3: ; preds = %exit | |
%5 = icmp eq i32 %other, -1, !dbg !1483 | |
br label %exit7, !dbg !1483 | |
else4: ; preds = %exit | |
%6 = load i1, i1* %__temp_61, !dbg !1483 | |
br label %exit7, !dbg !1483 | |
then5: ; preds = %else | |
%7 = icmp eq i64 %self, 0, !dbg !1483 | |
br label %exit, !dbg !1483 | |
else6: ; preds = %else | |
%8 = load i1, i1* %__temp_62, !dbg !1483 | |
br label %exit, !dbg !1483 | |
exit: ; preds = %else6, %then5 | |
%9 = phi i1 [ %7, %then5 ], [ %8, %else6 ], !dbg !1483 | |
store i1 %9, i1* %__temp_61, !dbg !1483 | |
br i1 %9, label %then3, label %else4, !dbg !1483 | |
exit7: ; preds = %else4, %then3 | |
%10 = phi i1 [ %5, %then3 ], [ %6, %else4 ], !dbg !1483 | |
br i1 %10, label %then1, label %else2, !dbg !1483 | |
} | |
declare i32 @dprintf(i32, i8*, ...) | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*caller:Array(String)"() #0 !dbg !1484 { | |
alloca: | |
%0 = alloca %CallStack, !dbg !1485 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call %CallStack @"*CallStack::new:CallStack"(), !dbg !1485 | |
store %CallStack %1, %CallStack* %0, !dbg !1485 | |
%2 = call %"Array(String)"* @"*CallStack#printable_backtrace:Array(String)"(%CallStack* %0), !dbg !1485 | |
ret %"Array(String)"* %2, !dbg !1485 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*CallStack#printable_backtrace:Array(String)"(%CallStack* %self) #0 !dbg !1486 { | |
alloca: | |
%__temp_63 = alloca %"Array(String)"*, !dbg !1487 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = getelementptr inbounds %CallStack, %CallStack* %self, i32 0, i32 1, !dbg !1488 | |
%1 = load %"Array(String)"*, %"Array(String)"** %0, !dbg !1488 | |
store %"Array(String)"* %1, %"Array(String)"** %__temp_63, !dbg !1488 | |
%2 = icmp ne %"Array(String)"* %1, null, !dbg !1488 | |
br i1 %2, label %then, label %else, !dbg !1488 | |
then: ; preds = %entry | |
%3 = load %"Array(String)"*, %"Array(String)"** %__temp_63, !dbg !1488 | |
br label %exit, !dbg !1488 | |
else: ; preds = %entry | |
%4 = call %"Array(String)"* @"*CallStack#decode_backtrace:Array(String)"(%CallStack* %self), !dbg !1489 | |
%5 = getelementptr inbounds %CallStack, %CallStack* %self, i32 0, i32 1, !dbg !1488 | |
store %"Array(String)"* %4, %"Array(String)"** %5, !dbg !1488 | |
br label %exit, !dbg !1488 | |
exit: ; preds = %else, %then | |
%6 = phi %"Array(String)"* [ %3, %then ], [ %4, %else ], !dbg !1488 | |
ret %"Array(String)"* %6, !dbg !1488 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(String)"* @"*CallStack#decode_backtrace:Array(String)"(%CallStack* %self) #0 !dbg !1490 { | |
alloca: | |
%show_full_info = alloca i1, !dbg !1491 | |
%ip = alloca i8*, !dbg !1492 | |
%pc = alloca i64, !dbg !1492 | |
%__temp_64 = alloca %"Tuple(String, Int32, Int32)", !dbg !1492 | |
%file = alloca %String*, !dbg !1492 | |
%line = alloca %"(Int32 | String)", !dbg !1492 | |
%column = alloca i32, !dbg !1492 | |
%file_line_column = alloca %String*, !dbg !1492 | |
store %String* null, %String** %file_line_column, !dbg !1492 | |
%name = alloca %String*, !dbg !1492 | |
%function = alloca %String*, !dbg !1492 | |
%frame = alloca %"(Tuple(Int64, Pointer(UInt8)) | Nil)", !dbg !1492 | |
%__temp_249 = alloca %"Tuple(Int64, Pointer(UInt8))", !dbg !1492 | |
%sname = alloca i8*, !dbg !1492 | |
%__temp_251 = alloca i1, !dbg !1492 | |
%__temp_250 = alloca i1, !dbg !1492 | |
%__temp_253 = alloca %"Tuple(Int64, Pointer(UInt8))", !dbg !1492 | |
%ary = alloca %"Array(String)"*, !dbg !1492 | |
%e = alloca i8*, !dbg !1493 | |
%v = alloca %String*, !dbg !1493 | |
%i = alloca i32, !dbg !1494 | |
%i3 = alloca i32, !dbg !1494 | |
%0 = alloca %"Tuple(String, Int32, Int32)", !dbg !1495 | |
%1 = alloca %"(Bool | String)", !dbg !1496 | |
%2 = alloca %"(Bool | String)", !dbg !1496 | |
%3 = alloca %"(Tuple(Int64, Pointer(UInt8)) | Nil)", !dbg !1497 | |
%4 = alloca %"(Tuple(Int64, Pointer(UInt8)) | Nil)", !dbg !1498 | |
%5 = alloca %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)", !dbg !1499 | |
br label %entry | |
entry: ; preds = %alloca | |
%6 = call %String* @"*ENV::[]?<String>:(String | Nil)"(%String* bitcast ({ i32, i32, i32, [28 x i8] }* @"'CRYSTAL_CALLSTACK_F...'" to %String*)), !dbg !1500 | |
%7 = icmp eq %String* %6, null, !dbg !1500 | |
%8 = select i1 %7, i32 0, i32 1, !dbg !1500 | |
%9 = icmp eq i32 0, %8, !dbg !1500 | |
br i1 %9, label %current_def, label %next_def, !dbg !1500 | |
current_def: ; preds = %entry | |
br label %exit, !dbg !1500 | |
next_def: ; preds = %entry | |
%10 = icmp eq i32 1, %8, !dbg !1500 | |
br i1 %10, label %current_def1, label %next_def2, !dbg !1500 | |
exit: ; preds = %current_def1, %current_def | |
%11 = phi i1 [ false, %current_def ], [ %15, %current_def1 ], !dbg !1500 | |
store i1 %11, i1* %show_full_info, !dbg !1501 | |
%12 = getelementptr inbounds %CallStack, %CallStack* %self, i32 0, i32 0, !dbg !1501 | |
%13 = load %"Array(Pointer(Void))"*, %"Array(Pointer(Void))"** %12, !dbg !1501 | |
%14 = call %"Array(String)"* @"*Array(String)@Array(T)::new:Array(String)"(i32 513), !dbg !1502 | |
store %"Array(String)"* %14, %"Array(String)"** %ary, !dbg !1503 | |
store i32 0, i32* %i3, !dbg !1504 | |
br label %while, !dbg !1504 | |
current_def1: ; preds = %next_def | |
%15 = call i1 @"*String#==<String>:Bool"(%String* %6, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'1'" to %String*)), !dbg !1500 | |
br label %exit, !dbg !1500 | |
next_def2: ; preds = %next_def | |
unreachable, !dbg !1500 | |
while: ; preds = %exit40, %exit | |
%16 = load i32, i32* %i3, !dbg !1505 | |
%17 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %13, i32 0, i32 1, !dbg !1505 | |
%18 = load i32, i32* %17, !dbg !1505 | |
%19 = icmp slt i32 %16, %18, !dbg !1505 | |
br i1 %19, label %body, label %exit4, !dbg !1505 | |
body: ; preds = %while | |
%20 = load i32, i32* %i3, !dbg !1505 | |
store i32 %20, i32* %i, !dbg !1505 | |
%21 = load i32, i32* %i, !dbg !1505 | |
%22 = call i8* @"*Array(Pointer(Void))@Array(T)#unsafe_fetch<Int32>:Pointer(Void)"(%"Array(Pointer(Void))"* %13, i32 %21), !dbg !1506 | |
store i8* %22, i8** %e, !dbg !1506 | |
%23 = load i8*, i8** %e, !dbg !1506 | |
store i8* %23, i8** %ip, !dbg !1506 | |
store %String* null, %String** %file_line_column, !dbg !1506 | |
%24 = load i8*, i8** %ip, !dbg !1506 | |
%25 = call i64 @"*CallStack::decode_address<Pointer(Void)>:UInt64"(i8* %24), !dbg !1507 | |
store i64 %25, i64* %pc, !dbg !1508 | |
%26 = load i64, i64* %pc, !dbg !1508 | |
%27 = call %"Tuple(String, Int32, Int32)" @"*CallStack::decode_line_number<UInt64>:Tuple(String, Int32, Int32)"(i64 %26), !dbg !1495 | |
store %"Tuple(String, Int32, Int32)" %27, %"Tuple(String, Int32, Int32)"* %0, !dbg !1495 | |
%28 = load %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %0, !dbg !1495 | |
store %"Tuple(String, Int32, Int32)" %28, %"Tuple(String, Int32, Int32)"* %__temp_64, !dbg !1495 | |
%29 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %__temp_64, i32 0, i32 0, !dbg !1495 | |
%30 = load %String*, %String** %29, !dbg !1495 | |
store %String* %30, %String** %file, !dbg !1509 | |
%31 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %__temp_64, i32 0, i32 1, !dbg !1509 | |
%32 = load i32, i32* %31, !dbg !1509 | |
%33 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 0, !dbg !1510 | |
store i32 160, i32* %33, !dbg !1510 | |
%34 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1510 | |
%35 = bitcast [1 x i64]* %34 to i32*, !dbg !1510 | |
store i32 %32, i32* %35, !dbg !1510 | |
%36 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %__temp_64, i32 0, i32 2, !dbg !1510 | |
%37 = load i32, i32* %36, !dbg !1510 | |
store i32 %37, i32* %column, !dbg !1511 | |
%38 = load %String*, %String** %file, !dbg !1512 | |
br i1 true, label %then5, label %else6, !dbg !1512 | |
exit4: ; preds = %while | |
%39 = load %"Array(String)"*, %"Array(String)"** %ary, !dbg !1513 | |
ret %"Array(String)"* %39, !dbg !1513 | |
then: ; preds = %exit7 | |
%40 = call %"Array(String)"** @"~CallStack::skip:read"(), !dbg !1514 | |
%41 = load %"Array(String)"*, %"Array(String)"** %40, !dbg !1514 | |
%42 = load %String*, %String** %file, !dbg !1514 | |
%43 = call i1 @"*Array(String)@Enumerable(T)#includes?<String>:Bool"(%"Array(String)"* %41, %String* %42), !dbg !1515 | |
br i1 %43, label %then8, label %else9, !dbg !1515 | |
else: ; preds = %exit7 | |
br label %exit11, !dbg !1516 | |
then5: ; preds = %body | |
%44 = load %String*, %String** %file, !dbg !1512 | |
%45 = call i1 @"*String@Object#!=<String>:Bool"(%String* %44, %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"'??'" to %String*)), !dbg !1496 | |
%46 = getelementptr inbounds %"(Bool | String)", %"(Bool | String)"* %1, i32 0, i32 0, !dbg !1496 | |
store i32 171, i32* %46, !dbg !1496 | |
%47 = zext i1 %45 to i64, !dbg !1496 | |
%48 = getelementptr inbounds %"(Bool | String)", %"(Bool | String)"* %1, i32 0, i32 1, !dbg !1496 | |
%49 = bitcast [1 x i64]* %48 to i64*, !dbg !1496 | |
store i64 %47, i64* %49, !dbg !1496 | |
br label %exit7, !dbg !1496 | |
else6: ; preds = %body | |
%50 = load %String*, %String** %file, !dbg !1496 | |
%51 = getelementptr inbounds %"(Bool | String)", %"(Bool | String)"* %2, i32 0, i32 0, !dbg !1496 | |
store i32 1, i32* %51, !dbg !1496 | |
%52 = getelementptr inbounds %"(Bool | String)", %"(Bool | String)"* %2, i32 0, i32 1, !dbg !1496 | |
%53 = bitcast [1 x i64]* %52 to %String**, !dbg !1496 | |
store %String* %50, %String** %53, !dbg !1496 | |
br label %exit7, !dbg !1496 | |
exit7: ; preds = %else6, %then5 | |
%54 = phi %"(Bool | String)"* [ %1, %then5 ], [ %2, %else6 ], !dbg !1496 | |
%55 = getelementptr inbounds %"(Bool | String)", %"(Bool | String)"* %54, i32 0, i32 0, !dbg !1496 | |
%56 = load i32, i32* %55, !dbg !1496 | |
%57 = getelementptr inbounds %"(Bool | String)", %"(Bool | String)"* %54, i32 0, i32 1, !dbg !1496 | |
%58 = bitcast [1 x i64]* %57 to i1*, !dbg !1496 | |
%59 = load i1, i1* %58, !dbg !1496 | |
%60 = icmp eq i32 %56, 171, !dbg !1496 | |
%61 = xor i1 %59, true, !dbg !1496 | |
%62 = and i1 %60, %61, !dbg !1496 | |
%63 = xor i1 %62, true, !dbg !1496 | |
%64 = and i1 true, %63, !dbg !1496 | |
br i1 %64, label %then, label %else, !dbg !1496 | |
then8: ; preds = %then | |
br label %exit10, !dbg !1514 | |
else9: ; preds = %then | |
%65 = load %String*, %String** %file, !dbg !1514 | |
%66 = call %String** @"~CallStack::CURRENT_DIR:read"(), !dbg !1514 | |
%67 = load %String*, %String** %66, !dbg !1514 | |
%68 = call %String* @"*String#lchop<String>:String"(%String* %65, %String* %67), !dbg !1517 | |
store %String* %68, %String** %file, !dbg !1518 | |
%69 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1519 | |
%70 = load %String*, %String** %file, !dbg !1519 | |
%71 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %69, %String* %70), !dbg !1519 | |
%72 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %71, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"':'" to %String*)), !dbg !1519 | |
%73 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1519 | |
%74 = bitcast [1 x i64]* %73 to i32*, !dbg !1519 | |
%75 = load i32, i32* %74, !dbg !1519 | |
%76 = call %"String::Builder"* @"*String::Builder@IO#<<<Int32>:String::Builder"(%"String::Builder"* %72, i32 %75), !dbg !1519 | |
%77 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %76, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"':'" to %String*)), !dbg !1519 | |
%78 = load i32, i32* %column, !dbg !1519 | |
%79 = call %"String::Builder"* @"*String::Builder@IO#<<<Int32>:String::Builder"(%"String::Builder"* %77, i32 %78), !dbg !1519 | |
%80 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %79), !dbg !1519 | |
store %String* %80, %String** %file_line_column, !dbg !1516 | |
br label %exit11, !dbg !1516 | |
exit10: ; preds = %exit37, %then17, %then8 | |
%81 = phi %String* [ null, %then8 ], [ null, %then17 ], [ %196, %exit37 ], !dbg !1520 | |
store %String* %81, %String** %v, !dbg !1521 | |
%82 = load %String*, %String** %v, !dbg !1522 | |
%83 = icmp eq %String* %82, null, !dbg !1522 | |
%84 = select i1 %83, i32 0, i32 1, !dbg !1522 | |
%85 = icmp eq i32 0, %84, !dbg !1522 | |
br i1 %85, label %then38, label %else39, !dbg !1522 | |
exit11: ; preds = %else, %else9 | |
%86 = load i64, i64* %pc, !dbg !1523 | |
%87 = call %String* @"*CallStack::decode_function_name<UInt64>:(String | Nil)"(i64 %86), !dbg !1524 | |
store %String* %87, %String** %name, !dbg !1525 | |
%88 = icmp ne %String* %87, null, !dbg !1525 | |
br i1 %88, label %then12, label %else13, !dbg !1525 | |
then12: ; preds = %exit11 | |
%89 = load %String*, %String** %name, !dbg !1525 | |
store %String* %89, %String** %function, !dbg !1526 | |
br label %exit14, !dbg !1526 | |
else13: ; preds = %exit11 | |
%90 = load i8*, i8** %ip, !dbg !1527 | |
%91 = call %"(Tuple(Int64, Pointer(UInt8)) | Nil)" @"*CallStack::decode_frame<Pointer(Void)>:(Tuple(Int64, Pointer(UInt8)) | Nil)"(i8* %90), !dbg !1497 | |
store %"(Tuple(Int64, Pointer(UInt8)) | Nil)" %91, %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %3, !dbg !1497 | |
%92 = load %"(Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %3, !dbg !1528 | |
store %"(Tuple(Int64, Pointer(UInt8)) | Nil)" %92, %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %frame, !dbg !1528 | |
%93 = getelementptr inbounds %"(Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %3, i32 0, i32 0, !dbg !1528 | |
%94 = load i32, i32* %93, !dbg !1528 | |
%95 = icmp eq i32 %94, 0, !dbg !1528 | |
%96 = xor i1 %95, true, !dbg !1528 | |
%97 = and i1 true, %96, !dbg !1528 | |
br i1 %97, label %then15, label %else16, !dbg !1528 | |
exit14: ; preds = %exit25, %then12 | |
%98 = load %String*, %String** %file_line_column, !dbg !1529 | |
%99 = icmp ne %String* %98, null, !dbg !1529 | |
br i1 %99, label %then26, label %else27, !dbg !1529 | |
then15: ; preds = %else13 | |
%100 = getelementptr inbounds %"(Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %frame, i32 0, i32 1, !dbg !1528 | |
%101 = bitcast [2 x i64]* %100 to %"Tuple(Int64, Pointer(UInt8))"*, !dbg !1528 | |
%102 = load %"Tuple(Int64, Pointer(UInt8))", %"Tuple(Int64, Pointer(UInt8))"* %101, !dbg !1530 | |
store %"Tuple(Int64, Pointer(UInt8))" %102, %"Tuple(Int64, Pointer(UInt8))"* %__temp_249, !dbg !1530 | |
%103 = getelementptr inbounds %"Tuple(Int64, Pointer(UInt8))", %"Tuple(Int64, Pointer(UInt8))"* %__temp_249, i32 0, i32 0, !dbg !1530 | |
%104 = load i64, i64* %103, !dbg !1530 | |
%105 = getelementptr inbounds %"Tuple(Int64, Pointer(UInt8))", %"Tuple(Int64, Pointer(UInt8))"* %__temp_249, i32 0, i32 1, !dbg !1530 | |
%106 = load i8*, i8** %105, !dbg !1530 | |
store i8* %106, i8** %sname, !dbg !1531 | |
%107 = load i8*, i8** %sname, !dbg !1531 | |
%108 = call %String* @"*String::new<Pointer(UInt8)>:String"(i8* %107), !dbg !1532 | |
store %String* %108, %String** %function, !dbg !1533 | |
%109 = load %String*, %String** %function, !dbg !1534 | |
%110 = call i1 @"*String#starts_with?<String>:Bool"(%String* %109, %String* bitcast ({ i32, i32, i32, [8 x i8] }* @"'*raise<'" to %String*)), !dbg !1534 | |
store i1 %110, i1* %__temp_251, !dbg !1534 | |
br i1 %110, label %then21, label %else22, !dbg !1534 | |
else16: ; preds = %else13 | |
store %String* bitcast ({ i32, i32, i32, [4 x i8] }* @"'???'" to %String*), %String** %function, !dbg !1535 | |
br label %exit25, !dbg !1535 | |
then17: ; preds = %exit24 | |
br label %exit10, !dbg !1536 | |
else18: ; preds = %exit24 | |
%111 = load %String*, %String** %function, !dbg !1536 | |
%112 = call %String* @"*String#lchop<Char>:String"(%String* %111, i32 42), !dbg !1537 | |
store %String* %112, %String** %function, !dbg !1538 | |
br label %exit25, !dbg !1538 | |
then19: ; preds = %exit23 | |
%113 = load i1, i1* %__temp_250, !dbg !1534 | |
br label %exit24, !dbg !1534 | |
else20: ; preds = %exit23 | |
%114 = load %String*, %String** %function, !dbg !1534 | |
%115 = call i1 @"*String#starts_with?<String>:Bool"(%String* %114, %String* bitcast ({ i32, i32, i32, [12 x i8] }* @"'*CallStack#'" to %String*)), !dbg !1539 | |
br label %exit24, !dbg !1539 | |
then21: ; preds = %then15 | |
%116 = load i1, i1* %__temp_251, !dbg !1534 | |
br label %exit23, !dbg !1534 | |
else22: ; preds = %then15 | |
%117 = load %String*, %String** %function, !dbg !1534 | |
%118 = call i1 @"*String#starts_with?<String>:Bool"(%String* %117, %String* bitcast ({ i32, i32, i32, [13 x i8] }* @"'*CallStack::'" to %String*)), !dbg !1540 | |
br label %exit23, !dbg !1540 | |
exit23: ; preds = %else22, %then21 | |
%119 = phi i1 [ %116, %then21 ], [ %118, %else22 ], !dbg !1540 | |
store i1 %119, i1* %__temp_250, !dbg !1534 | |
br i1 %119, label %then19, label %else20, !dbg !1534 | |
exit24: ; preds = %else20, %then19 | |
%120 = phi i1 [ %113, %then19 ], [ %115, %else20 ], !dbg !1539 | |
br i1 %120, label %then17, label %else18, !dbg !1539 | |
exit25: ; preds = %else16, %else18 | |
br label %exit14, !dbg !1535 | |
then26: ; preds = %exit14 | |
%121 = load i1, i1* %show_full_info, !dbg !1541 | |
br i1 %121, label %then30, label %else31, !dbg !1541 | |
else27: ; preds = %exit14 | |
%122 = load %String*, %String** %function, !dbg !1542 | |
%123 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 0, !dbg !1543 | |
store i32 1, i32* %123, !dbg !1543 | |
%124 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1543 | |
%125 = bitcast [1 x i64]* %124 to %String**, !dbg !1543 | |
store %String* %122, %String** %125, !dbg !1543 | |
br label %exit34, !dbg !1543 | |
then28: ; preds = %exit32 | |
%126 = getelementptr inbounds %"(Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %frame, i32 0, i32 1, !dbg !1499 | |
%127 = bitcast [2 x i64]* %126 to %"Tuple(Int64, Pointer(UInt8))"*, !dbg !1499 | |
%128 = load %"Tuple(Int64, Pointer(UInt8))", %"Tuple(Int64, Pointer(UInt8))"* %127, !dbg !1544 | |
store %"Tuple(Int64, Pointer(UInt8))" %128, %"Tuple(Int64, Pointer(UInt8))"* %__temp_253, !dbg !1544 | |
%129 = getelementptr inbounds %"Tuple(Int64, Pointer(UInt8))", %"Tuple(Int64, Pointer(UInt8))"* %__temp_253, i32 0, i32 0, !dbg !1544 | |
%130 = load i64, i64* %129, !dbg !1544 | |
%131 = getelementptr inbounds %"Tuple(Int64, Pointer(UInt8))", %"Tuple(Int64, Pointer(UInt8))"* %__temp_253, i32 0, i32 1, !dbg !1544 | |
%132 = load i8*, i8** %131, !dbg !1544 | |
store i8* %132, i8** %sname, !dbg !1545 | |
%133 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1546 | |
%134 = load %String*, %String** %file_line_column, !dbg !1546 | |
%135 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %133, %String* %134), !dbg !1546 | |
%136 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %135, %String* bitcast ({ i32, i32, i32, [6 x i8] }* @"' in ''" to %String*)), !dbg !1546 | |
%137 = load i8*, i8** %sname, !dbg !1546 | |
%138 = call %String* @"*String::new<Pointer(UInt8)>:String"(i8* %137), !dbg !1547 | |
%139 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %136, %String* %138), !dbg !1546 | |
%140 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %139, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'''" to %String*)), !dbg !1546 | |
%141 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %140), !dbg !1546 | |
%142 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 0, !dbg !1548 | |
store i32 1, i32* %142, !dbg !1548 | |
%143 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1548 | |
%144 = bitcast [1 x i64]* %143 to %String**, !dbg !1548 | |
store %String* %141, %String** %144, !dbg !1548 | |
br label %exit33, !dbg !1548 | |
else29: ; preds = %exit32 | |
%145 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1549 | |
%146 = load %String*, %String** %file_line_column, !dbg !1549 | |
%147 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %145, %String* %146), !dbg !1549 | |
%148 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %147, %String* bitcast ({ i32, i32, i32, [6 x i8] }* @"' in ''" to %String*)), !dbg !1549 | |
%149 = load %String*, %String** %function, !dbg !1549 | |
%150 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %148, %String* %149), !dbg !1549 | |
%151 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %150, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'''" to %String*)), !dbg !1549 | |
%152 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %151), !dbg !1549 | |
%153 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 0, !dbg !1542 | |
store i32 1, i32* %153, !dbg !1542 | |
%154 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1542 | |
%155 = bitcast [1 x i64]* %154 to %String**, !dbg !1542 | |
store %String* %152, %String** %155, !dbg !1542 | |
br label %exit33, !dbg !1542 | |
then30: ; preds = %then26 | |
%156 = load i8*, i8** %ip, !dbg !1541 | |
%157 = call %"(Tuple(Int64, Pointer(UInt8)) | Nil)" @"*CallStack::decode_frame<Pointer(Void)>:(Tuple(Int64, Pointer(UInt8)) | Nil)"(i8* %156), !dbg !1498 | |
store %"(Tuple(Int64, Pointer(UInt8)) | Nil)" %157, %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %4, !dbg !1498 | |
%158 = load %"(Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %4, !dbg !1499 | |
store %"(Tuple(Int64, Pointer(UInt8)) | Nil)" %158, %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %frame, !dbg !1499 | |
%159 = bitcast %"(Tuple(Int64, Pointer(UInt8)) | Nil)"* %4 to %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)"*, !dbg !1499 | |
br label %exit32, !dbg !1499 | |
else31: ; preds = %then26 | |
%160 = load i1, i1* %show_full_info, !dbg !1499 | |
%161 = getelementptr inbounds %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)"* %5, i32 0, i32 0, !dbg !1499 | |
store i32 171, i32* %161, !dbg !1499 | |
%162 = zext i1 %160 to i128, !dbg !1499 | |
%163 = getelementptr inbounds %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)"* %5, i32 0, i32 1, !dbg !1499 | |
%164 = bitcast [2 x i64]* %163 to i128*, !dbg !1499 | |
store i128 %162, i128* %164, !dbg !1499 | |
br label %exit32, !dbg !1499 | |
exit32: ; preds = %else31, %then30 | |
%165 = phi %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)"* [ %159, %then30 ], [ %5, %else31 ], !dbg !1499 | |
%166 = getelementptr inbounds %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)"* %165, i32 0, i32 0, !dbg !1499 | |
%167 = load i32, i32* %166, !dbg !1499 | |
%168 = icmp eq i32 %167, 0, !dbg !1499 | |
%169 = xor i1 %168, true, !dbg !1499 | |
%170 = and i1 true, %169, !dbg !1499 | |
%171 = getelementptr inbounds %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)", %"(Bool | Tuple(Int64, Pointer(UInt8)) | Nil)"* %165, i32 0, i32 1, !dbg !1499 | |
%172 = bitcast [2 x i64]* %171 to i1*, !dbg !1499 | |
%173 = load i1, i1* %172, !dbg !1499 | |
%174 = icmp eq i32 %167, 171, !dbg !1499 | |
%175 = xor i1 %173, true, !dbg !1499 | |
%176 = and i1 %174, %175, !dbg !1499 | |
%177 = xor i1 %176, true, !dbg !1499 | |
%178 = and i1 %170, %177, !dbg !1499 | |
br i1 %178, label %then28, label %else29, !dbg !1499 | |
exit33: ; preds = %else29, %then28 | |
br label %exit34, !dbg !1542 | |
exit34: ; preds = %else27, %exit33 | |
%179 = load i1, i1* %show_full_info, !dbg !1550 | |
br i1 %179, label %then35, label %else36, !dbg !1550 | |
then35: ; preds = %exit34 | |
%180 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1551 | |
%181 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1551 | |
%182 = bitcast [1 x i64]* %181 to %String**, !dbg !1551 | |
%183 = load %String*, %String** %182, !dbg !1551 | |
%184 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %180, %String* %183), !dbg !1551 | |
%185 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %184, %String* bitcast ({ i32, i32, i32, [7 x i8] }* @"' at 0x'" to %String*)), !dbg !1551 | |
%186 = load i8*, i8** %ip, !dbg !1551 | |
%187 = ptrtoint i8* %186 to i64, !dbg !1551 | |
%188 = call %String* @"*UInt64@Int#to_s<Int32>:String"(i64 %187, i32 16), !dbg !1552 | |
%189 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %185, %String* %188), !dbg !1551 | |
%190 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %189), !dbg !1551 | |
%191 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 0, !dbg !1520 | |
store i32 1, i32* %191, !dbg !1520 | |
%192 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1520 | |
%193 = bitcast [1 x i64]* %192 to %String**, !dbg !1520 | |
store %String* %190, %String** %193, !dbg !1520 | |
br label %exit37, !dbg !1520 | |
else36: ; preds = %exit34 | |
br label %exit37, !dbg !1520 | |
exit37: ; preds = %else36, %then35 | |
%194 = getelementptr inbounds %"(Int32 | String)", %"(Int32 | String)"* %line, i32 0, i32 1, !dbg !1520 | |
%195 = bitcast [1 x i64]* %194 to %String**, !dbg !1520 | |
%196 = load %String*, %String** %195, !dbg !1520 | |
br label %exit10, !dbg !1520 | |
then38: ; preds = %exit10 | |
br label %exit40, !dbg !1522 | |
else39: ; preds = %exit10 | |
%197 = load %"Array(String)"*, %"Array(String)"** %ary, !dbg !1522 | |
%198 = load %String*, %String** %v, !dbg !1522 | |
%199 = call %"Array(String)"* @"*Array(String)@Array(T)#<<<String>:Array(String)"(%"Array(String)"* %197, %String* %198), !dbg !1553 | |
br label %exit40, !dbg !1553 | |
exit40: ; preds = %else39, %then38 | |
%200 = phi %"Array(String)"* [ null, %then38 ], [ %199, %else39 ], !dbg !1553 | |
%201 = load i32, i32* %i3, !dbg !1553 | |
%202 = add i32 %201, 1, !dbg !1553 | |
store i32 %202, i32* %i3, !dbg !1513 | |
br label %while, !dbg !1513 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*ENV::[]?<String>:(String | Nil)"(%String* %key) #0 !dbg !1554 { | |
entry: | |
%0 = call %String* @"*ENV::fetch<String, Nil>:(String | Nil)"(%String* %key, %Nil zeroinitializer), !dbg !1556 | |
ret %String* %0, !dbg !1556 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*ENV::fetch<String, Nil>:(String | Nil)"(%String* %key, %Nil %default) #0 !dbg !1557 { | |
alloca: | |
%key1 = alloca %String*, !dbg !1558 | |
%value = alloca %String*, !dbg !1558 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* %key, %String** %key1, !dbg !1558 | |
%0 = load %String*, %String** %key1, !dbg !1559 | |
%1 = call %String* @"*Crystal::System::Env::get<String>:(String | Nil)"(%String* %0), !dbg !1560 | |
store %String* %1, %String** %value, !dbg !1561 | |
%2 = icmp ne %String* %1, null, !dbg !1561 | |
br i1 %2, label %then, label %else, !dbg !1561 | |
then: ; preds = %entry | |
%3 = load %String*, %String** %value, !dbg !1561 | |
br label %exit, !dbg !1561 | |
else: ; preds = %entry | |
%4 = load %String*, %String** %key1, !dbg !1561 | |
br label %exit, !dbg !1561 | |
exit: ; preds = %else, %then | |
%5 = phi %String* [ %3, %then ], [ null, %else ], !dbg !1561 | |
ret %String* %5, !dbg !1561 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*Crystal::System::Env::get<String>:(String | Nil)"(%String* %key) #0 !dbg !1562 { | |
alloca: | |
%value = alloca i8*, !dbg !1564 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call %String* @"*String#check_no_null_byte<String>:String"(%String* %key, %String* bitcast ({ i32, i32, i32, [4 x i8] }* @"'key'" to %String*)), !dbg !1565 | |
%1 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %key), !dbg !1566 | |
%2 = call i8* @getenv(i8* %1), !dbg !1567 | |
store i8* %2, i8** %value, !dbg !1568 | |
%3 = icmp ne i8* %2, null, !dbg !1568 | |
br i1 %3, label %then, label %else, !dbg !1568 | |
then: ; preds = %entry | |
%4 = load i8*, i8** %value, !dbg !1568 | |
%5 = call %String* @"*String::new<Pointer(UInt8)>:String"(i8* %4), !dbg !1569 | |
br label %exit, !dbg !1569 | |
else: ; preds = %entry | |
br label %exit, !dbg !1569 | |
exit: ; preds = %else, %then | |
%6 = phi %String* [ %5, %then ], [ null, %else ], !dbg !1569 | |
ret %String* %6, !dbg !1569 | |
} | |
; Function Attrs: uwtable | |
define internal %String* @"*String#check_no_null_byte<String>:String"(%String* %self, %String* %name) #0 !dbg !1570 { | |
alloca: | |
%name1 = alloca %String*, !dbg !1571 | |
%0 = alloca %"(Int32 | Nil)", !dbg !1572 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* %name, %String** %name1, !dbg !1571 | |
%1 = call %"(Int32 | Nil)" @"*String#byte_index<Int32>:(Int32 | Nil)"(%String* %self, i32 0), !dbg !1572 | |
store %"(Int32 | Nil)" %1, %"(Int32 | Nil)"* %0, !dbg !1572 | |
%2 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 0, !dbg !1572 | |
%3 = load i32, i32* %2, !dbg !1572 | |
%4 = icmp eq i32 %3, 0, !dbg !1572 | |
%5 = xor i1 %4, true, !dbg !1572 | |
%6 = and i1 true, %5, !dbg !1572 | |
br i1 %6, label %then, label %else, !dbg !1572 | |
then: ; preds = %entry | |
%7 = load %String*, %String** %name1, !dbg !1573 | |
br i1 true, label %then2, label %else3, !dbg !1573 | |
else: ; preds = %entry | |
ret %String* %self, !dbg !1574 | |
then2: ; preds = %then | |
%8 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1575 | |
%9 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %8, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'`'" to %String*)), !dbg !1575 | |
%10 = load %String*, %String** %name1, !dbg !1575 | |
%11 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %9, %String* %10), !dbg !1575 | |
%12 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %11, %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"'` '" to %String*)), !dbg !1575 | |
%13 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %12), !dbg !1575 | |
store %String* %13, %String** %name1, !dbg !1573 | |
br label %exit, !dbg !1573 | |
else3: ; preds = %then | |
br label %exit, !dbg !1573 | |
exit: ; preds = %else3, %then2 | |
%14 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1576 | |
%15 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %14, %String* bitcast ({ i32, i32, i32, [8 x i8] }* @"'String '" to %String*)), !dbg !1576 | |
%16 = load %String*, %String** %name1, !dbg !1576 | |
%17 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %15, %String* %16), !dbg !1576 | |
%18 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %17, %String* bitcast ({ i32, i32, i32, [19 x i8] }* @"'contains null byte'" to %String*)), !dbg !1576 | |
%19 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %18), !dbg !1576 | |
%20 = call %ArgumentError* @"*ArgumentError::new<String>:ArgumentError"(%String* %19), !dbg !1577 | |
call void @"*raise<ArgumentError>:NoReturn"(%ArgumentError* %20), !dbg !1574 | |
unreachable, !dbg !1574 | |
} | |
; Function Attrs: uwtable | |
define internal %"(Int32 | Nil)" @"*String#byte_index<Int32>:(Int32 | Nil)"(%String* %self, i32 %byte) #0 !dbg !1578 { | |
alloca: | |
%offset = alloca i32, !dbg !1579 | |
%0 = alloca %"(Int32 | Nil)", !dbg !1579 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 0, i32* %offset, !dbg !1580 | |
%1 = load i32, i32* %offset, !dbg !1580 | |
%2 = call %"(Int32 | Nil)" @"*String#byte_index<Int32, Int32>:(Int32 | Nil)"(%String* %self, i32 %byte, i32 %1), !dbg !1579 | |
store %"(Int32 | Nil)" %2, %"(Int32 | Nil)"* %0, !dbg !1579 | |
%3 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, !dbg !1579 | |
ret %"(Int32 | Nil)" %3, !dbg !1579 | |
} | |
; Function Attrs: uwtable | |
define internal %"(Int32 | Nil)" @"*String#byte_index<Int32, Int32>:(Int32 | Nil)"(%String* %self, i32 %byte, i32 %offset) #0 !dbg !1581 { | |
alloca: | |
%i = alloca i32, !dbg !1582 | |
%to = alloca i32, !dbg !1582 | |
%x = alloca i32, !dbg !1582 | |
%0 = alloca %"(Int32 | Nil)", !dbg !1583 | |
%1 = alloca %"(Int32 | Nil)", !dbg !1584 | |
br label %entry | |
entry: ; preds = %alloca | |
%2 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1585 | |
%3 = load i32, i32* %2, !dbg !1585 | |
%4 = sub i32 %3, 1, !dbg !1585 | |
store i32 %4, i32* %to, !dbg !1582 | |
%5 = load i32, i32* %to, !dbg !1586 | |
%6 = icmp sle i32 %offset, %5, !dbg !1586 | |
br i1 %6, label %then, label %else, !dbg !1586 | |
then: ; preds = %entry | |
br label %exit, !dbg !1586 | |
else: ; preds = %entry | |
br label %exit1, !dbg !1586 | |
exit: ; preds = %then | |
store i32 %offset, i32* %x, !dbg !1587 | |
br label %while, !dbg !1587 | |
exit1: ; preds = %then5, %else | |
%7 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, i32 0, i32 0, !dbg !1584 | |
store i32 0, i32* %7, !dbg !1584 | |
%8 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, i32 0, i32 1, !dbg !1584 | |
store [1 x i64] zeroinitializer, [1 x i64]* %8, !dbg !1584 | |
%9 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, !dbg !1584 | |
ret %"(Int32 | Nil)" %9, !dbg !1584 | |
while: ; preds = %else6, %exit | |
br i1 true, label %body, label %exit2, !dbg !1588 | |
body: ; preds = %while | |
%10 = load i32, i32* %x, !dbg !1588 | |
store i32 %10, i32* %i, !dbg !1588 | |
%11 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !1583 | |
%12 = load i32, i32* %i, !dbg !1583 | |
%13 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %11, i32 %12), !dbg !1583 | |
%14 = zext i8 %13 to i32, !dbg !1583 | |
%15 = icmp sge i32 %byte, 0, !dbg !1583 | |
%16 = icmp eq i32 %14, %byte, !dbg !1583 | |
%17 = and i1 %15, %16, !dbg !1583 | |
br i1 %17, label %then3, label %else4, !dbg !1583 | |
exit2: ; preds = %while | |
unreachable, !dbg !1584 | |
then3: ; preds = %body | |
%18 = load i32, i32* %i, !dbg !1583 | |
%19 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 0, !dbg !1583 | |
store i32 160, i32* %19, !dbg !1583 | |
%20 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 1, !dbg !1583 | |
%21 = bitcast [1 x i64]* %20 to i32*, !dbg !1583 | |
store i32 %18, i32* %21, !dbg !1583 | |
%22 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, !dbg !1583 | |
ret %"(Int32 | Nil)" %22, !dbg !1583 | |
else4: ; preds = %body | |
%23 = load i32, i32* %x, !dbg !1589 | |
%24 = load i32, i32* %to, !dbg !1589 | |
%25 = icmp eq i32 %23, %24, !dbg !1589 | |
br i1 %25, label %then5, label %else6, !dbg !1589 | |
then5: ; preds = %else4 | |
br label %exit1, !dbg !1589 | |
else6: ; preds = %else4 | |
%26 = load i32, i32* %x, !dbg !1589 | |
%27 = add i32 %26, 1, !dbg !1589 | |
store i32 %27, i32* %x, !dbg !1584 | |
br label %while, !dbg !1584 | |
} | |
declare i8* @getenv(i8*) | |
; Function Attrs: alwaysinline uwtable | |
define internal i8* @"*Array(Pointer(Void))@Array(T)#unsafe_fetch<Int32>:Pointer(Void)"(%"Array(Pointer(Void))"* %self, i32 %index) #3 !dbg !1590 { | |
entry: | |
%0 = getelementptr inbounds %"Array(Pointer(Void))", %"Array(Pointer(Void))"* %self, i32 0, i32 3, !dbg !1591 | |
%1 = load i8**, i8*** %0, !dbg !1591 | |
%2 = call i8* @"*Pointer(Pointer(Void))@Pointer(T)#[]<Int32>:Pointer(Void)"(i8** %1, i32 %index), !dbg !1592 | |
ret i8* %2, !dbg !1592 | |
} | |
; Function Attrs: uwtable | |
define internal i8* @"*Pointer(Pointer(Void))@Pointer(T)#[]<Int32>:Pointer(Void)"(i8** %self, i32 %offset) #0 !dbg !1593 { | |
entry: | |
%0 = call i8** @"*Pointer(Pointer(Void))@Pointer(T)#+<Int32>:Pointer(Pointer(Void))"(i8** %self, i32 %offset), !dbg !1594 | |
%1 = load i8*, i8** %0, !dbg !1594 | |
ret i8* %1, !dbg !1594 | |
} | |
; Function Attrs: uwtable | |
define internal i64 @"*CallStack::decode_address<Pointer(Void)>:UInt64"(i8* %ip) #0 !dbg !1595 { | |
alloca: | |
%info = alloca %"struct.LibC::DlInfo", !dbg !1596 | |
%0 = alloca %"struct.LibC::DlInfo", !dbg !1596 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = call i32 @dladdr(i8* %ip, %"struct.LibC::DlInfo"* %0), !dbg !1596 | |
%2 = load %"struct.LibC::DlInfo", %"struct.LibC::DlInfo"* %0, !dbg !1596 | |
store %"struct.LibC::DlInfo" %2, %"struct.LibC::DlInfo"* %info, !dbg !1596 | |
%3 = icmp ne i32 %1, 0, !dbg !1596 | |
br i1 %3, label %then, label %else, !dbg !1596 | |
then: ; preds = %entry | |
%4 = getelementptr inbounds %"struct.LibC::DlInfo", %"struct.LibC::DlInfo"* %info, i32 0, i32 1, !dbg !1596 | |
%5 = load i8*, i8** %4, !dbg !1596 | |
%6 = ptrtoint i8* %5 to i64, !dbg !1596 | |
%7 = load i32, i32* getelementptr inbounds (%"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* @"CallStack::base_address", i32 0, i32 0), !dbg !1596 | |
%8 = icmp eq i32 161, %7, !dbg !1596 | |
%9 = and i1 true, %8, !dbg !1596 | |
br i1 %9, label %current_def, label %next_def, !dbg !1596 | |
else: ; preds = %entry | |
br label %exit10, !dbg !1596 | |
then1: ; preds = %exit | |
br label %exit9, !dbg !1596 | |
else2: ; preds = %exit | |
%10 = ptrtoint i8* %ip to i64, !dbg !1596 | |
%11 = getelementptr inbounds %"struct.LibC::DlInfo", %"struct.LibC::DlInfo"* %info, i32 0, i32 1, !dbg !1596 | |
%12 = load i8*, i8** %11, !dbg !1596 | |
%13 = ptrtoint i8* %12 to i64, !dbg !1596 | |
%14 = sub i64 %10, %13, !dbg !1596 | |
ret i64 %14, !dbg !1596 | |
current_def: ; preds = %then | |
%15 = load i32, i32* bitcast ([1 x i64]* getelementptr inbounds (%"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* @"CallStack::base_address", i32 0, i32 1) to i32*), !dbg !1596 | |
%16 = zext i32 %15 to i64, !dbg !1596 | |
%17 = icmp eq i64 %6, %16, !dbg !1596 | |
br label %exit, !dbg !1596 | |
next_def: ; preds = %then | |
%18 = icmp eq i32 163, %7, !dbg !1596 | |
%19 = and i1 true, %18, !dbg !1596 | |
br i1 %19, label %current_def3, label %next_def4, !dbg !1596 | |
exit: ; preds = %current_def7, %current_def5, %current_def3, %current_def | |
%20 = phi i1 [ %17, %current_def ], [ %22, %current_def3 ], [ %26, %current_def5 ], [ false, %current_def7 ], !dbg !1596 | |
br i1 %20, label %then1, label %else2, !dbg !1596 | |
current_def3: ; preds = %next_def | |
%21 = load i64, i64* getelementptr inbounds (%"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* @"CallStack::base_address", i32 0, i32 1, i32 0), !dbg !1596 | |
%22 = icmp eq i64 %6, %21, !dbg !1596 | |
br label %exit, !dbg !1596 | |
next_def4: ; preds = %next_def | |
%23 = call i1 @"~match<(UInt32 | UInt64)>"(i32 %7), !dbg !1596 | |
%24 = and i1 true, %23, !dbg !1596 | |
br i1 %24, label %current_def5, label %next_def6, !dbg !1596 | |
current_def5: ; preds = %next_def4 | |
%25 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* bitcast (%"(UInt32 | UInt64 | Nil)"* @"CallStack::base_address" to %"(UInt32 | UInt64)"*), !dbg !1596 | |
%26 = call i1 @"*UInt64@Comparable(T)#==<(UInt32 | UInt64)>:Bool"(i64 %6, %"(UInt32 | UInt64)" %25), !dbg !1596 | |
br label %exit, !dbg !1596 | |
next_def6: ; preds = %next_def4 | |
%27 = call i1 @"~match<(UInt32 | UInt64 | Nil)>"(i32 %7), !dbg !1596 | |
%28 = and i1 true, %27, !dbg !1596 | |
br i1 %28, label %current_def7, label %next_def8, !dbg !1596 | |
current_def7: ; preds = %next_def6 | |
%29 = load %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* @"CallStack::base_address", !dbg !1596 | |
br label %exit, !dbg !1596 | |
next_def8: ; preds = %next_def6 | |
unreachable, !dbg !1596 | |
exit9: ; preds = %then1 | |
br label %exit10, !dbg !1596 | |
exit10: ; preds = %else, %exit9 | |
%30 = ptrtoint i8* %ip to i64, !dbg !1596 | |
ret i64 %30, !dbg !1596 | |
} | |
declare i32 @dladdr(i8*, %"struct.LibC::DlInfo"*) | |
define internal i1 @"~match<(UInt32 | UInt64)>"(i32) { | |
entry: | |
%1 = icmp eq i32 161, %0, !dbg !1596 | |
%2 = icmp eq i32 163, %0, !dbg !1596 | |
%3 = or i1 %1, %2, !dbg !1596 | |
ret i1 %3, !dbg !1596 | |
} | |
; Function Attrs: uwtable | |
define internal i1 @"*UInt64@Comparable(T)#==<(UInt32 | UInt64)>:Bool"(i64 %self, %"(UInt32 | UInt64)" %other) #0 !dbg !1597 { | |
alloca: | |
%cmp = alloca i32, !dbg !1599 | |
%other1 = alloca %"(UInt32 | UInt64)", !dbg !1599 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"(UInt32 | UInt64)" %other, %"(UInt32 | UInt64)"* %other1, !dbg !1599 | |
%0 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, !dbg !1599 | |
%1 = call i32 @"*UInt64@Int#<=><(UInt32 | UInt64)>:Int32"(i64 %self, %"(UInt32 | UInt64)" %0), !dbg !1600 | |
store i32 %1, i32* %cmp, !dbg !1601 | |
%2 = load i32, i32* %cmp, !dbg !1602 | |
br i1 true, label %then, label %else, !dbg !1602 | |
then: ; preds = %entry | |
%3 = load i32, i32* %cmp, !dbg !1602 | |
%4 = icmp eq i32 %3, 0, !dbg !1602 | |
br label %exit, !dbg !1602 | |
else: ; preds = %entry | |
br label %exit, !dbg !1602 | |
exit: ; preds = %else, %then | |
%5 = phi i1 [ %4, %then ], [ false, %else ], !dbg !1602 | |
ret i1 %5, !dbg !1602 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*UInt64@Int#<=><(UInt32 | UInt64)>:Int32"(i64 %self, %"(UInt32 | UInt64)" %other) #0 !dbg !1603 { | |
alloca: | |
%other1 = alloca %"(UInt32 | UInt64)", !dbg !1604 | |
br label %entry | |
entry: ; preds = %alloca | |
store %"(UInt32 | UInt64)" %other, %"(UInt32 | UInt64)"* %other1, !dbg !1604 | |
%0 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, i32 0, i32 0, !dbg !1605 | |
%1 = load i32, i32* %0, !dbg !1605 | |
%2 = icmp eq i32 161, %1, !dbg !1605 | |
%3 = and i1 true, %2, !dbg !1605 | |
br i1 %3, label %current_def, label %next_def, !dbg !1605 | |
then: ; preds = %exit | |
br label %exit4, !dbg !1605 | |
else: ; preds = %exit | |
%4 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, i32 0, i32 0, !dbg !1606 | |
%5 = load i32, i32* %4, !dbg !1606 | |
%6 = icmp eq i32 161, %5, !dbg !1606 | |
%7 = and i1 true, %6, !dbg !1606 | |
br i1 %7, label %current_def7, label %next_def8, !dbg !1606 | |
current_def: ; preds = %entry | |
%8 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, i32 0, i32 1, !dbg !1605 | |
%9 = bitcast [1 x i64]* %8 to i32*, !dbg !1605 | |
%10 = load i32, i32* %9, !dbg !1605 | |
%11 = zext i32 %10 to i64, !dbg !1605 | |
%12 = icmp ugt i64 %self, %11, !dbg !1605 | |
br label %exit, !dbg !1605 | |
next_def: ; preds = %entry | |
%13 = icmp eq i32 163, %1, !dbg !1605 | |
%14 = and i1 true, %13, !dbg !1605 | |
br i1 %14, label %current_def2, label %next_def3, !dbg !1605 | |
exit: ; preds = %current_def2, %current_def | |
%15 = phi i1 [ %12, %current_def ], [ %19, %current_def2 ], !dbg !1605 | |
br i1 %15, label %then, label %else, !dbg !1605 | |
current_def2: ; preds = %next_def | |
%16 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, i32 0, i32 1, !dbg !1605 | |
%17 = bitcast [1 x i64]* %16 to i64*, !dbg !1605 | |
%18 = load i64, i64* %17, !dbg !1605 | |
%19 = icmp ugt i64 %self, %18, !dbg !1605 | |
br label %exit, !dbg !1605 | |
next_def3: ; preds = %next_def | |
unreachable, !dbg !1605 | |
exit4: ; preds = %exit12, %then | |
%20 = phi i32 [ 1, %then ], [ %33, %exit12 ], !dbg !1606 | |
ret i32 %20, !dbg !1606 | |
then5: ; preds = %exit9 | |
br label %exit12, !dbg !1606 | |
else6: ; preds = %exit9 | |
br label %exit12, !dbg !1606 | |
current_def7: ; preds = %else | |
%21 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, i32 0, i32 1, !dbg !1606 | |
%22 = bitcast [1 x i64]* %21 to i32*, !dbg !1606 | |
%23 = load i32, i32* %22, !dbg !1606 | |
%24 = zext i32 %23 to i64, !dbg !1606 | |
%25 = icmp ult i64 %self, %24, !dbg !1606 | |
br label %exit9, !dbg !1606 | |
next_def8: ; preds = %else | |
%26 = icmp eq i32 163, %5, !dbg !1606 | |
%27 = and i1 true, %26, !dbg !1606 | |
br i1 %27, label %current_def10, label %next_def11, !dbg !1606 | |
exit9: ; preds = %current_def10, %current_def7 | |
%28 = phi i1 [ %25, %current_def7 ], [ %32, %current_def10 ], !dbg !1606 | |
br i1 %28, label %then5, label %else6, !dbg !1606 | |
current_def10: ; preds = %next_def8 | |
%29 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %other1, i32 0, i32 1, !dbg !1606 | |
%30 = bitcast [1 x i64]* %29 to i64*, !dbg !1606 | |
%31 = load i64, i64* %30, !dbg !1606 | |
%32 = icmp ult i64 %self, %31, !dbg !1606 | |
br label %exit9, !dbg !1606 | |
next_def11: ; preds = %next_def8 | |
unreachable, !dbg !1606 | |
exit12: ; preds = %else6, %then5 | |
%33 = phi i32 [ -1, %then5 ], [ 0, %else6 ], !dbg !1606 | |
br label %exit4, !dbg !1606 | |
} | |
define internal i1 @"~match<(UInt32 | UInt64 | Nil)>"(i32) { | |
entry: | |
%1 = icmp eq i32 161, %0, !dbg !1596 | |
%2 = icmp eq i32 163, %0, !dbg !1596 | |
%3 = or i1 %1, %2, !dbg !1596 | |
%4 = icmp eq i32 0, %0, !dbg !1596 | |
%5 = or i1 %3, %4, !dbg !1596 | |
ret i1 %5, !dbg !1596 | |
} | |
; Function Attrs: uwtable | |
define internal %"Tuple(String, Int32, Int32)" @"*CallStack::decode_line_number<UInt64>:Tuple(String, Int32, Int32)"(i64 %pc) #0 !dbg !1607 { | |
alloca: | |
%ln = alloca %"(Debug::DWARF::LineNumbers | Nil)", !dbg !1608 | |
%row = alloca %"(Debug::DWARF::LineNumbers::Row | Nil)", !dbg !1608 | |
%path = alloca %String*, !dbg !1608 | |
%0 = alloca %"(Debug::DWARF::LineNumbers::Row | Nil)", !dbg !1608 | |
%1 = alloca %"Tuple(String, Int32, Int32)", !dbg !1608 | |
%2 = alloca %"Tuple(String, Int32, Int32)", !dbg !1608 | |
br label %entry | |
entry: ; preds = %alloca | |
%3 = load i32, i32* getelementptr inbounds (%"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* @"CallStack::dwarf_line_numbers", i32 0, i32 0), !dbg !1608 | |
%4 = icmp eq i32 %3, 0, !dbg !1608 | |
%5 = xor i1 %4, true, !dbg !1608 | |
%6 = and i1 true, %5, !dbg !1608 | |
br i1 %6, label %then, label %else, !dbg !1608 | |
then: ; preds = %entry | |
br label %exit, !dbg !1608 | |
else: ; preds = %entry | |
%7 = call %"Array(Tuple(UInt64, UInt64, String))"* @"*CallStack::read_dwarf_sections:(Array(Tuple(UInt64, UInt64, String)) | Nil)"(), !dbg !1608 | |
br label %exit, !dbg !1608 | |
exit: ; preds = %else, %then | |
%8 = load %"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* @"CallStack::dwarf_line_numbers", !dbg !1608 | |
store %"(Debug::DWARF::LineNumbers | Nil)" %8, %"(Debug::DWARF::LineNumbers | Nil)"* %ln, !dbg !1608 | |
%9 = load i32, i32* getelementptr inbounds (%"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* @"CallStack::dwarf_line_numbers", i32 0, i32 0), !dbg !1608 | |
%10 = icmp eq i32 %9, 0, !dbg !1608 | |
%11 = xor i1 %10, true, !dbg !1608 | |
%12 = and i1 true, %11, !dbg !1608 | |
br i1 %12, label %then1, label %else2, !dbg !1608 | |
then1: ; preds = %exit | |
%13 = getelementptr inbounds %"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* %ln, i32 0, i32 1, !dbg !1608 | |
%14 = bitcast [4 x i64]* %13 to %"Debug::DWARF::LineNumbers"*, !dbg !1608 | |
%15 = call %"(Debug::DWARF::LineNumbers::Row | Nil)" @"*Debug::DWARF::LineNumbers#find<UInt64>:(Debug::DWARF::LineNumbers::Row | Nil)"(%"Debug::DWARF::LineNumbers"* %14, i64 %pc), !dbg !1608 | |
store %"(Debug::DWARF::LineNumbers::Row | Nil)" %15, %"(Debug::DWARF::LineNumbers::Row | Nil)"* %0, !dbg !1608 | |
%16 = load %"(Debug::DWARF::LineNumbers::Row | Nil)", %"(Debug::DWARF::LineNumbers::Row | Nil)"* %0, !dbg !1608 | |
store %"(Debug::DWARF::LineNumbers::Row | Nil)" %16, %"(Debug::DWARF::LineNumbers::Row | Nil)"* %row, !dbg !1608 | |
%17 = getelementptr inbounds %"(Debug::DWARF::LineNumbers::Row | Nil)", %"(Debug::DWARF::LineNumbers::Row | Nil)"* %0, i32 0, i32 0, !dbg !1608 | |
%18 = load i32, i32* %17, !dbg !1608 | |
%19 = icmp eq i32 %18, 0, !dbg !1608 | |
%20 = xor i1 %19, true, !dbg !1608 | |
%21 = and i1 true, %20, !dbg !1608 | |
br i1 %21, label %then3, label %else4, !dbg !1608 | |
else2: ; preds = %exit | |
br label %exit5, !dbg !1608 | |
then3: ; preds = %then1 | |
%22 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1608 | |
%23 = getelementptr inbounds %"(Debug::DWARF::LineNumbers::Row | Nil)", %"(Debug::DWARF::LineNumbers::Row | Nil)"* %row, i32 0, i32 1, !dbg !1608 | |
%24 = bitcast [6 x i64]* %23 to %"Debug::DWARF::LineNumbers::Row"*, !dbg !1608 | |
%25 = getelementptr inbounds %"Debug::DWARF::LineNumbers::Row", %"Debug::DWARF::LineNumbers::Row"* %24, i32 0, i32 2, !dbg !1608 | |
%26 = load %String*, %String** %25, !dbg !1608 | |
%27 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %22, %String* %26), !dbg !1608 | |
%28 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %27, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'/'" to %String*)), !dbg !1608 | |
%29 = getelementptr inbounds %"(Debug::DWARF::LineNumbers::Row | Nil)", %"(Debug::DWARF::LineNumbers::Row | Nil)"* %row, i32 0, i32 1, !dbg !1608 | |
%30 = bitcast [6 x i64]* %29 to %"Debug::DWARF::LineNumbers::Row"*, !dbg !1608 | |
%31 = getelementptr inbounds %"Debug::DWARF::LineNumbers::Row", %"Debug::DWARF::LineNumbers::Row"* %30, i32 0, i32 3, !dbg !1608 | |
%32 = load %String*, %String** %31, !dbg !1608 | |
%33 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %28, %String* %32), !dbg !1608 | |
%34 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %33), !dbg !1608 | |
store %String* %34, %String** %path, !dbg !1608 | |
%35 = load %String*, %String** %path, !dbg !1608 | |
%36 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %1, i32 0, i32 0, !dbg !1608 | |
store %String* %35, %String** %36, !dbg !1608 | |
%37 = getelementptr inbounds %"(Debug::DWARF::LineNumbers::Row | Nil)", %"(Debug::DWARF::LineNumbers::Row | Nil)"* %row, i32 0, i32 1, !dbg !1608 | |
%38 = bitcast [6 x i64]* %37 to %"Debug::DWARF::LineNumbers::Row"*, !dbg !1608 | |
%39 = getelementptr inbounds %"Debug::DWARF::LineNumbers::Row", %"Debug::DWARF::LineNumbers::Row"* %38, i32 0, i32 4, !dbg !1608 | |
%40 = load i32, i32* %39, !dbg !1608 | |
%41 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %1, i32 0, i32 1, !dbg !1608 | |
store i32 %40, i32* %41, !dbg !1608 | |
%42 = getelementptr inbounds %"(Debug::DWARF::LineNumbers::Row | Nil)", %"(Debug::DWARF::LineNumbers::Row | Nil)"* %row, i32 0, i32 1, !dbg !1608 | |
%43 = bitcast [6 x i64]* %42 to %"Debug::DWARF::LineNumbers::Row"*, !dbg !1608 | |
%44 = getelementptr inbounds %"Debug::DWARF::LineNumbers::Row", %"Debug::DWARF::LineNumbers::Row"* %43, i32 0, i32 5, !dbg !1608 | |
%45 = load i32, i32* %44, !dbg !1608 | |
%46 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %1, i32 0, i32 2, !dbg !1608 | |
store i32 %45, i32* %46, !dbg !1608 | |
%47 = load %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %1, !dbg !1608 | |
ret %"Tuple(String, Int32, Int32)" %47, !dbg !1608 | |
else4: ; preds = %then1 | |
br label %exit5, !dbg !1608 | |
exit5: ; preds = %else2, %else4 | |
%48 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %2, i32 0, i32 0, !dbg !1608 | |
store %String* bitcast ({ i32, i32, i32, [3 x i8] }* @"'??'" to %String*), %String** %48, !dbg !1608 | |
%49 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %2, i32 0, i32 1, !dbg !1608 | |
store i32 0, i32* %49, !dbg !1608 | |
%50 = getelementptr inbounds %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %2, i32 0, i32 2, !dbg !1608 | |
store i32 0, i32* %50, !dbg !1608 | |
%51 = load %"Tuple(String, Int32, Int32)", %"Tuple(String, Int32, Int32)"* %2, !dbg !1608 | |
ret %"Tuple(String, Int32, Int32)" %51, !dbg !1608 | |
} | |
; Function Attrs: uwtable | |
define internal %"Array(Tuple(UInt64, UInt64, String))"* @"*CallStack::read_dwarf_sections:(Array(Tuple(UInt64, UInt64, String)) | Nil)"() #0 personality i32 (i32, i32, i64, %"struct.LibUnwind::Exception"*, i8*)* @__crystal_personality !dbg !1609 { | |
alloca: | |
%elf = alloca %"Debug::ELF", !dbg !1610 | |
%strings = alloca %"(Debug::DWARF::Strings | Nil)", !dbg !1610 | |
%path = alloca %String*, !dbg !1610 | |
%file = alloca %File*, !dbg !1611 | |
%filename = alloca %String*, !dbg !1611 | |
%mode = alloca %String*, !dbg !1611 | |
%perm = alloca i16, !dbg !1611 | |
%encoding = alloca %Nil, !dbg !1611 | |
%invalid = alloca %Nil, !dbg !1611 | |
%file1 = alloca %File*, !dbg !1611 | |
%0 = alloca %"Debug::ELF", !dbg !1612 | |
%sh = alloca %"Debug::ELF::SectionHeader", !dbg !1610 | |
%_ = alloca i32*, !dbg !1610 | |
%name = alloca %String*, !dbg !1610 | |
%sh2 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1610 | |
%sh4 = alloca %"Debug::ELF::SectionHeader", !dbg !1613 | |
%if_none = alloca %Nil, !dbg !1613 | |
%elem = alloca %"Debug::ELF::SectionHeader", !dbg !1614 | |
%i = alloca i32, !dbg !1615 | |
%i5 = alloca i32, !dbg !1615 | |
%1 = alloca %"Debug::ELF::SectionHeader", !dbg !1616 | |
%2 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1617 | |
%3 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1618 | |
%4 = alloca %"(UInt32 | UInt64)", !dbg !1619 | |
%offset = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%whence = alloca i32, !dbg !1620 | |
%original_pos = alloca i64, !dbg !1620 | |
%5 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%6 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%7 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%8 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%9 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%10 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%11 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%12 = alloca %"(UInt32 | UInt64 | Nil)", !dbg !1621 | |
%sh31 = alloca %"Debug::ELF::SectionHeader", !dbg !1610 | |
%io = alloca i32*, !dbg !1610 | |
%name32 = alloca %String*, !dbg !1610 | |
%sh33 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1610 | |
%sh37 = alloca %"Debug::ELF::SectionHeader", !dbg !1613 | |
%if_none38 = alloca %Nil, !dbg !1613 | |
%elem39 = alloca %"Debug::ELF::SectionHeader", !dbg !1614 | |
%i40 = alloca i32, !dbg !1615 | |
%i41 = alloca i32, !dbg !1615 | |
%13 = alloca %"Debug::ELF::SectionHeader", !dbg !1616 | |
%14 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1617 | |
%15 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1618 | |
%16 = alloca %"(UInt32 | UInt64)", !dbg !1619 | |
%offset53 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%whence54 = alloca i32, !dbg !1620 | |
%original_pos55 = alloca i64, !dbg !1620 | |
%17 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%18 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%19 = alloca %"Debug::DWARF::LineNumbers", !dbg !1610 | |
%20 = alloca %"(Debug::DWARF::LineNumbers | Nil)", !dbg !1621 | |
%21 = alloca %"(Debug::DWARF::LineNumbers | Nil)", !dbg !1621 | |
%sh66 = alloca %"Debug::ELF::SectionHeader", !dbg !1610 | |
%io67 = alloca i32*, !dbg !1610 | |
%name68 = alloca %String*, !dbg !1610 | |
%sh69 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1610 | |
%sh73 = alloca %"Debug::ELF::SectionHeader", !dbg !1613 | |
%if_none74 = alloca %Nil, !dbg !1613 | |
%elem75 = alloca %"Debug::ELF::SectionHeader", !dbg !1614 | |
%i76 = alloca i32, !dbg !1615 | |
%i77 = alloca i32, !dbg !1615 | |
%22 = alloca %"Debug::ELF::SectionHeader", !dbg !1616 | |
%23 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1617 | |
%24 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1618 | |
%25 = alloca %"(UInt32 | UInt64)", !dbg !1619 | |
%offset89 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%whence90 = alloca i32, !dbg !1620 | |
%original_pos91 = alloca i64, !dbg !1620 | |
%26 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%27 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%28 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%29 = alloca %"Debug::DWARF::Strings", !dbg !1610 | |
%30 = alloca %"(Debug::DWARF::Strings | Nil)", !dbg !1621 | |
%31 = alloca %"(Debug::DWARF::Strings | Nil)", !dbg !1621 | |
%sh103 = alloca %"Debug::ELF::SectionHeader", !dbg !1610 | |
%io104 = alloca i32*, !dbg !1610 | |
%names = alloca %"Array(Tuple(UInt64, UInt64, String))"*, !dbg !1610 | |
%offset105 = alloca i64, !dbg !1610 | |
%info = alloca %"Debug::DWARF::Info", !dbg !1610 | |
%name106 = alloca %String*, !dbg !1610 | |
%sh107 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1610 | |
%sh111 = alloca %"Debug::ELF::SectionHeader", !dbg !1613 | |
%if_none112 = alloca %Nil, !dbg !1613 | |
%elem113 = alloca %"Debug::ELF::SectionHeader", !dbg !1614 | |
%i114 = alloca i32, !dbg !1615 | |
%i115 = alloca i32, !dbg !1615 | |
%32 = alloca %"Debug::ELF::SectionHeader", !dbg !1616 | |
%33 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1617 | |
%34 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1618 | |
%35 = alloca %"(UInt32 | UInt64)", !dbg !1619 | |
%offset127 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%whence128 = alloca i32, !dbg !1620 | |
%original_pos129 = alloca i64, !dbg !1620 | |
%36 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%37 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%38 = alloca %"(UInt32 | UInt64)", !dbg !1610 | |
%39 = alloca %"Debug::DWARF::Info", !dbg !1610 | |
%sh150 = alloca %"Debug::ELF::SectionHeader", !dbg !1610 | |
%io151 = alloca i32*, !dbg !1610 | |
%name152 = alloca %String*, !dbg !1610 | |
%sh153 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1610 | |
%sh157 = alloca %"Debug::ELF::SectionHeader", !dbg !1613 | |
%if_none158 = alloca %Nil, !dbg !1613 | |
%elem159 = alloca %"Debug::ELF::SectionHeader", !dbg !1614 | |
%i160 = alloca i32, !dbg !1615 | |
%i161 = alloca i32, !dbg !1615 | |
%40 = alloca %"Debug::ELF::SectionHeader", !dbg !1616 | |
%41 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1617 | |
%42 = alloca %"(Debug::ELF::SectionHeader | Nil)", !dbg !1618 | |
%43 = alloca %"(UInt32 | UInt64)", !dbg !1619 | |
%offset173 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%whence174 = alloca i32, !dbg !1620 | |
%original_pos175 = alloca i64, !dbg !1620 | |
%44 = alloca %"(UInt32 | UInt64)", !dbg !1620 | |
%name185 = alloca i64, !dbg !1610 | |
%low_pc = alloca i64, !dbg !1610 | |
%high_pc = alloca %String*, !dbg !1610 | |
%info186 = alloca %"Debug::DWARF::Info", !dbg !1610 | |
%strings187 = alloca %"(Debug::DWARF::Strings | Nil)", !dbg !1610 | |
%45 = alloca %"Debug::DWARF::Info", !dbg !1610 | |
%46 = alloca %"(Debug::DWARF::Strings | Nil)", !dbg !1610 | |
%code = alloca i32, !dbg !1610 | |
%abbrev = alloca %"(Debug::DWARF::Abbrev | Nil)", !dbg !1610 | |
%attributes = alloca %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, !dbg !1610 | |
%high_pc188 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%low_pc189 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%name190 = alloca %String*, !dbg !1610 | |
%__temp_238 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%end_offset = alloca i64, !dbg !1610 | |
%attributes191 = alloca %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, !dbg !1610 | |
%code192 = alloca i32, !dbg !1610 | |
%abbrev193 = alloca %"(Debug::DWARF::Abbrev | Nil)", !dbg !1610 | |
%47 = alloca %"(Debug::DWARF::Abbrev | Nil)", !dbg !1622 | |
%attr = alloca %"Debug::DWARF::Abbrev::Attribute", !dbg !1623 | |
%value = alloca %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1623 | |
%i209 = alloca i32, !dbg !1615 | |
%i210 = alloca i32, !dbg !1615 | |
%48 = alloca %"Debug::DWARF::Abbrev::Attribute", !dbg !1616 | |
%49 = alloca %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1624 | |
%50 = alloca %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1625 | |
%51 = alloca %"(Bool | Nil)", !dbg !1610 | |
%52 = alloca %"(Bool | Nil)", !dbg !1610 | |
%at = alloca i32, !dbg !1610 | |
%form = alloca i32, !dbg !1610 | |
%value224 = alloca %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", !dbg !1610 | |
%__arg1 = alloca %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1610 | |
%i225 = alloca i32, !dbg !1615 | |
%i226 = alloca i32, !dbg !1615 | |
%53 = alloca %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1616 | |
%__arg2 = alloca %"Debug::DWARF::Strings", !dbg !1610 | |
%54 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%55 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%56 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%57 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%58 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%59 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%60 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%61 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%62 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%__arg2267 = alloca %"Debug::DWARF::Strings", !dbg !1610 | |
%63 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%64 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%65 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%66 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%67 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%68 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%69 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%70 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%71 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%72 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%73 = alloca %"(String | UInt64 | Nil)", !dbg !1610 | |
%74 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%75 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%76 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%77 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%78 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%79 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%80 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%81 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%82 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%83 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%84 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%85 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%86 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%87 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%88 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%89 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%90 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%91 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%92 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%93 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%94 = alloca %"(Nil.class | UInt64.class)", !dbg !1610 | |
%95 = alloca %"(Nil.class | UInt64.class)", !dbg !1610 | |
%96 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%97 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%98 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%99 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%100 = alloca %"(String | UInt64 | Nil)", !dbg !1610 | |
%101 = alloca %"Tuple(UInt64, UInt64, String)", !dbg !1610 | |
%102 = alloca %"(Bool | Nil)", !dbg !1610 | |
%103 = alloca %"(Bool | Nil)", !dbg !1610 | |
%at416 = alloca i32, !dbg !1610 | |
%form417 = alloca i32, !dbg !1610 | |
%value418 = alloca %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", !dbg !1610 | |
%__arg1419 = alloca %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1610 | |
%i420 = alloca i32, !dbg !1615 | |
%i421 = alloca i32, !dbg !1615 | |
%104 = alloca %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", !dbg !1616 | |
%__arg2432 = alloca %"Debug::DWARF::Strings", !dbg !1610 | |
%105 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%106 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%107 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%108 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%109 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%110 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%111 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%112 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%113 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%__arg2465 = alloca %"Debug::DWARF::Strings", !dbg !1610 | |
%114 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%115 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%116 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%117 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%118 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%119 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%120 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%121 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%122 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%123 = alloca %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%124 = alloca %"(String | UInt64 | Nil)", !dbg !1610 | |
%125 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%126 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%127 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%128 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%129 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%130 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%131 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%132 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%133 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%134 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%135 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%136 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%137 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%138 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%139 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%140 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%141 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%142 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%143 = alloca %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", !dbg !1610 | |
%144 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%145 = alloca %"(Nil.class | UInt64.class)", !dbg !1610 | |
%146 = alloca %"(Nil.class | UInt64.class)", !dbg !1610 | |
%147 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%148 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%149 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%150 = alloca %"(UInt64 | Nil)", !dbg !1610 | |
%151 = alloca %"(String | UInt64 | Nil)", !dbg !1610 | |
%152 = alloca %"Tuple(UInt64, UInt64, String)", !dbg !1610 | |
br label %entry | |
entry: ; preds = %alloca | |
%153 = call %String** @"~PROGRAM_NAME:read"() | |
%154 = load %String*, %String** %153 | |
store %String* %154, %String** %path, !dbg !1610 | |
%155 = load %String*, %String** %path, !dbg !1610 | |
store %String* %155, %String** %filename, !dbg !1611 | |
store %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'r'" to %String*), %String** %mode, !dbg !1611 | |
%156 = call i16* @"~File::DEFAULT_CREATE_PERMISSIONS:read"(), !dbg !1611 | |
%157 = load i16, i16* %156, !dbg !1611 | |
store i16 %157, i16* %perm, !dbg !1626 | |
%158 = load %String*, %String** %filename, !dbg !1627 | |
%159 = load %String*, %String** %mode, !dbg !1627 | |
%160 = load i16, i16* %perm, !dbg !1627 | |
%161 = load %Nil, %Nil* %encoding, !dbg !1627 | |
%162 = load %Nil, %Nil* %invalid, !dbg !1627 | |
%163 = call %File* @"*File::new<String, String, File::Permissions, Nil, Nil>:File"(%String* %158, %String* %159, i16 %160, %Nil zeroinitializer, %Nil zeroinitializer), !dbg !1628 | |
store %File* %163, %File** %file1, !dbg !1629 | |
%164 = load %File*, %File** %file1, !dbg !1629 | |
store %File* %164, %File** %file, !dbg !1629 | |
%165 = load %File*, %File** %file, !dbg !1629 | |
%166 = invoke %"Debug::ELF" @"*Debug::ELF::new<File>:Debug::ELF"(%File* %165) | |
to label %invoke_out unwind label %rescue, !dbg !1612 | |
rescue: ; preds = %exit606, %invoke_out607, %rescue131, %invoke_out126, %then108, %invoke_out123, %invoke_out122, %invoke_out119, %body117, %exit102, %exit98, %invoke_out99, %rescue93, %invoke_out88, %then70, %invoke_out85, %invoke_out84, %invoke_out81, %body79, %exit65, %exit61, %invoke_out62, %rescue57, %invoke_out52, %then34, %invoke_out49, %invoke_out48, %invoke_out45, %body43, %exit30, %exit26, %invoke_out27, %rescue15, %invoke_out13, %then, %invoke_out10, %invoke_out9, %invoke_out6, %body, %invoke_out, %entry | |
%167 = landingpad %landing_pad | |
cleanup, !dbg !1621 | |
%168 = extractvalue %landing_pad %167, 0, !dbg !1621 | |
%169 = extractvalue %landing_pad %167, 1, !dbg !1621 | |
%170 = bitcast i8* %168 to %"struct.LibUnwind::Exception"*, !dbg !1630 | |
%171 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %170), !dbg !1630 | |
%172 = inttoptr i64 %171 to i32*, !dbg !1630 | |
%173 = load %File*, %File** %file1, !dbg !1630 | |
call void @"*File@IO::Buffered#close:Nil"(%File* %173), !dbg !1631 | |
%174 = bitcast i8* %168 to %"struct.LibUnwind::Exception"*, !dbg !1631 | |
call void @__crystal_raise(%"struct.LibUnwind::Exception"* %174), !dbg !1630 | |
unreachable, !dbg !1630 | |
invoke_out: ; preds = %entry | |
store %"Debug::ELF" %166, %"Debug::ELF"* %0, !dbg !1612 | |
%175 = load %"Debug::ELF", %"Debug::ELF"* %0, !dbg !1612 | |
store %"Debug::ELF" %175, %"Debug::ELF"* %elf, !dbg !1612 | |
store %String* bitcast ({ i32, i32, i32, [6 x i8] }* @"'.text'" to %String*), %String** %name, !dbg !1610 | |
%176 = invoke %"Array(Debug::ELF::SectionHeader)"* @"*Debug::ELF#section_headers:Array(Debug::ELF::SectionHeader)"(%"Debug::ELF"* %elf) | |
to label %invoke_out3 unwind label %rescue, !dbg !1613 | |
then: ; preds = %exit12 | |
%177 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1632 | |
%178 = load i32*, i32** %177, !dbg !1632 | |
%179 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh2, i32 0, i32 1, !dbg !1632 | |
%180 = bitcast [20 x i64]* %179 to %"Debug::ELF::SectionHeader"*, !dbg !1632 | |
%181 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %180) | |
to label %invoke_out13 unwind label %rescue, !dbg !1619 | |
else: ; preds = %exit12 | |
%182 = getelementptr inbounds %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* %12, i32 0, i32 0, !dbg !1621 | |
store i32 0, i32* %182, !dbg !1621 | |
%183 = getelementptr inbounds %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* %12, i32 0, i32 1, !dbg !1621 | |
store [1 x i64] zeroinitializer, [1 x i64]* %183, !dbg !1621 | |
br label %exit30, !dbg !1621 | |
invoke_out3: ; preds = %invoke_out | |
store i32 0, i32* %i5, !dbg !1633 | |
br label %while, !dbg !1633 | |
while: ; preds = %else8, %invoke_out3 | |
%184 = load i32, i32* %i5, !dbg !1634 | |
%185 = getelementptr inbounds %"Array(Debug::ELF::SectionHeader)", %"Array(Debug::ELF::SectionHeader)"* %176, i32 0, i32 1, !dbg !1634 | |
%186 = load i32, i32* %185, !dbg !1634 | |
%187 = icmp slt i32 %184, %186, !dbg !1634 | |
br i1 %187, label %body, label %exit, !dbg !1634 | |
body: ; preds = %while | |
%188 = load i32, i32* %i5, !dbg !1634 | |
store i32 %188, i32* %i, !dbg !1634 | |
%189 = load i32, i32* %i, !dbg !1634 | |
%190 = invoke %"Debug::ELF::SectionHeader" @"*Array(Debug::ELF::SectionHeader)@Array(T)#unsafe_fetch<Int32>:Debug::ELF::SectionHeader"(%"Array(Debug::ELF::SectionHeader)"* %176, i32 %189) | |
to label %invoke_out6 unwind label %rescue, !dbg !1616 | |
exit: ; preds = %while | |
%191 = load %Nil, %Nil* %if_none, !dbg !1618 | |
%192 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %3, i32 0, i32 0, !dbg !1618 | |
store i32 0, i32* %192, !dbg !1618 | |
%193 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %3, i32 0, i32 1, !dbg !1618 | |
store [20 x i64] zeroinitializer, [20 x i64]* %193, !dbg !1618 | |
br label %exit12, !dbg !1618 | |
invoke_out6: ; preds = %body | |
store %"Debug::ELF::SectionHeader" %190, %"Debug::ELF::SectionHeader"* %1, !dbg !1616 | |
%194 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %1, !dbg !1616 | |
store %"Debug::ELF::SectionHeader" %194, %"Debug::ELF::SectionHeader"* %elem, !dbg !1616 | |
%195 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem, !dbg !1635 | |
store %"Debug::ELF::SectionHeader" %195, %"Debug::ELF::SectionHeader"* %sh4, !dbg !1635 | |
%196 = invoke i32 @"*Debug::ELF::SectionHeader#name:UInt32"(%"Debug::ELF::SectionHeader"* %sh4) | |
to label %invoke_out9 unwind label %rescue, !dbg !1636 | |
then7: ; preds = %invoke_out11 | |
%197 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem, !dbg !1617 | |
%198 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %2, i32 0, i32 0, !dbg !1617 | |
store i32 342, i32* %198, !dbg !1617 | |
%199 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %2, i32 0, i32 1, !dbg !1617 | |
%200 = bitcast [20 x i64]* %199 to %"Debug::ELF::SectionHeader"*, !dbg !1617 | |
store %"Debug::ELF::SectionHeader" %197, %"Debug::ELF::SectionHeader"* %200, !dbg !1617 | |
br label %exit12, !dbg !1617 | |
else8: ; preds = %invoke_out11 | |
%201 = load i32, i32* %i5, !dbg !1617 | |
%202 = add i32 %201, 1, !dbg !1617 | |
store i32 %202, i32* %i5, !dbg !1618 | |
br label %while, !dbg !1618 | |
invoke_out9: ; preds = %invoke_out6 | |
%203 = invoke %String* @"*Debug::ELF#sh_name<UInt32>:String"(%"Debug::ELF"* %elf, i32 %196) | |
to label %invoke_out10 unwind label %rescue, !dbg !1617 | |
invoke_out10: ; preds = %invoke_out9 | |
%204 = load %String*, %String** %name, !dbg !1617 | |
%205 = invoke i1 @"*String#==<String>:Bool"(%String* %203, %String* %204) | |
to label %invoke_out11 unwind label %rescue, !dbg !1617 | |
invoke_out11: ; preds = %invoke_out10 | |
br i1 %205, label %then7, label %else8, !dbg !1617 | |
exit12: ; preds = %exit, %then7 | |
%206 = phi %"(Debug::ELF::SectionHeader | Nil)"* [ %2, %then7 ], [ %3, %exit ], !dbg !1618 | |
%207 = load %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %206, !dbg !1632 | |
store %"(Debug::ELF::SectionHeader | Nil)" %207, %"(Debug::ELF::SectionHeader | Nil)"* %sh2, !dbg !1632 | |
%208 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %206, i32 0, i32 0, !dbg !1632 | |
%209 = load i32, i32* %208, !dbg !1632 | |
%210 = icmp eq i32 %209, 0, !dbg !1632 | |
%211 = xor i1 %210, true, !dbg !1632 | |
%212 = and i1 true, %211, !dbg !1632 | |
br i1 %212, label %then, label %else, !dbg !1632 | |
invoke_out13: ; preds = %then | |
store %"(UInt32 | UInt64)" %181, %"(UInt32 | UInt64)"* %4, !dbg !1619 | |
%213 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %4, !dbg !1619 | |
store %"(UInt32 | UInt64)" %213, %"(UInt32 | UInt64)"* %5, !dbg !1620 | |
%214 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %5, !dbg !1620 | |
store %"(UInt32 | UInt64)" %214, %"(UInt32 | UInt64)"* %offset, !dbg !1620 | |
store i32 0, i32* %whence, !dbg !1637 | |
%215 = invoke i64 @"*IO::FileDescriptor+@IO#tell:Int64"(i32* %178) | |
to label %invoke_out14 unwind label %rescue, !dbg !1638 | |
invoke_out14: ; preds = %invoke_out13 | |
store i64 %215, i64* %original_pos, !dbg !1639 | |
%216 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %offset, !dbg !1639 | |
%217 = load i32, i32* %whence, !dbg !1639 | |
%218 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<(UInt32 | UInt64), IO::Seek>:IO::FileDescriptor+"(i32* %178, %"(UInt32 | UInt64)" %216, i32 %217) | |
to label %invoke_out16 unwind label %rescue15, !dbg !1640 | |
rescue15: ; preds = %invoke_out17, %invoke_out16, %invoke_out14 | |
%219 = landingpad %landing_pad | |
cleanup, !dbg !1610 | |
%220 = extractvalue %landing_pad %219, 0, !dbg !1610 | |
%221 = extractvalue %landing_pad %219, 1, !dbg !1610 | |
%222 = bitcast i8* %220 to %"struct.LibUnwind::Exception"*, !dbg !1640 | |
%223 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %222), !dbg !1640 | |
%224 = inttoptr i64 %223 to i32*, !dbg !1640 | |
%225 = load i64, i64* %original_pos, !dbg !1640 | |
%226 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %178, i64 %225) | |
to label %invoke_out27 unwind label %rescue, !dbg !1621 | |
invoke_out16: ; preds = %invoke_out14 | |
%227 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh2, i32 0, i32 1, !dbg !1640 | |
%228 = bitcast [20 x i64]* %227 to %"Debug::ELF::SectionHeader"*, !dbg !1640 | |
%229 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1640 | |
%230 = load i32*, i32** %229, !dbg !1640 | |
%231 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %228, !dbg !1640 | |
store %"Debug::ELF::SectionHeader" %231, %"Debug::ELF::SectionHeader"* %sh, !dbg !1640 | |
%232 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#addr:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh) | |
to label %invoke_out17 unwind label %rescue15, !dbg !1610 | |
invoke_out17: ; preds = %invoke_out16 | |
store %"(UInt32 | UInt64)" %232, %"(UInt32 | UInt64)"* %6, !dbg !1610 | |
%233 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %6, i32 0, i32 0, !dbg !1610 | |
%234 = load i32, i32* %233, !dbg !1610 | |
%235 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh) | |
to label %invoke_out18 unwind label %rescue15, !dbg !1610 | |
invoke_out18: ; preds = %invoke_out17 | |
store %"(UInt32 | UInt64)" %235, %"(UInt32 | UInt64)"* %7, !dbg !1610 | |
%236 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %7, i32 0, i32 0, !dbg !1610 | |
%237 = load i32, i32* %236, !dbg !1610 | |
%238 = icmp eq i32 161, %234, !dbg !1610 | |
%239 = icmp eq i32 161, %237, !dbg !1610 | |
%240 = and i1 %238, %239, !dbg !1610 | |
br i1 %240, label %current_def, label %next_def, !dbg !1610 | |
current_def: ; preds = %invoke_out18 | |
%241 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %6, i32 0, i32 1, !dbg !1610 | |
%242 = bitcast [1 x i64]* %241 to i32*, !dbg !1610 | |
%243 = load i32, i32* %242, !dbg !1610 | |
%244 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %7, i32 0, i32 1, !dbg !1610 | |
%245 = bitcast [1 x i64]* %244 to i32*, !dbg !1610 | |
%246 = load i32, i32* %245, !dbg !1610 | |
%247 = sub i32 %243, %246, !dbg !1610 | |
%248 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %8, i32 0, i32 0, !dbg !1610 | |
store i32 161, i32* %248, !dbg !1610 | |
%249 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %8, i32 0, i32 1, !dbg !1610 | |
%250 = bitcast [1 x i64]* %249 to i32*, !dbg !1610 | |
store i32 %247, i32* %250, !dbg !1610 | |
br label %exit19, !dbg !1610 | |
next_def: ; preds = %invoke_out18 | |
%251 = icmp eq i32 161, %234, !dbg !1610 | |
%252 = icmp eq i32 163, %237, !dbg !1610 | |
%253 = and i1 %251, %252, !dbg !1610 | |
br i1 %253, label %current_def20, label %next_def21, !dbg !1610 | |
exit19: ; preds = %current_def24, %current_def22, %current_def20, %current_def | |
%254 = phi %"(UInt32 | UInt64)"* [ %8, %current_def ], [ %9, %current_def20 ], [ %10, %current_def22 ], [ %11, %current_def24 ], !dbg !1610 | |
%255 = bitcast %"(UInt32 | UInt64)"* %254 to %"(UInt32 | UInt64 | Nil)"*, !dbg !1610 | |
%256 = load %"(UInt32 | UInt64 | Nil)", %"(UInt32 | UInt64 | Nil)"* %255, !dbg !1610 | |
store %"(UInt32 | UInt64 | Nil)" %256, %"(UInt32 | UInt64 | Nil)"* @"CallStack::base_address", !dbg !1610 | |
br label %exit26, !dbg !1610 | |
current_def20: ; preds = %next_def | |
%257 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %6, i32 0, i32 1, !dbg !1610 | |
%258 = bitcast [1 x i64]* %257 to i32*, !dbg !1610 | |
%259 = load i32, i32* %258, !dbg !1610 | |
%260 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %7, i32 0, i32 1, !dbg !1610 | |
%261 = bitcast [1 x i64]* %260 to i64*, !dbg !1610 | |
%262 = load i64, i64* %261, !dbg !1610 | |
%263 = zext i32 %259 to i64, !dbg !1610 | |
%264 = sub i64 %263, %262, !dbg !1610 | |
%265 = trunc i64 %264 to i32, !dbg !1610 | |
%266 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %9, i32 0, i32 0, !dbg !1610 | |
store i32 161, i32* %266, !dbg !1610 | |
%267 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %9, i32 0, i32 1, !dbg !1610 | |
%268 = bitcast [1 x i64]* %267 to i32*, !dbg !1610 | |
store i32 %265, i32* %268, !dbg !1610 | |
br label %exit19, !dbg !1610 | |
next_def21: ; preds = %next_def | |
%269 = icmp eq i32 163, %234, !dbg !1610 | |
%270 = icmp eq i32 161, %237, !dbg !1610 | |
%271 = and i1 %269, %270, !dbg !1610 | |
br i1 %271, label %current_def22, label %next_def23, !dbg !1610 | |
current_def22: ; preds = %next_def21 | |
%272 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %6, i32 0, i32 1, !dbg !1610 | |
%273 = bitcast [1 x i64]* %272 to i64*, !dbg !1610 | |
%274 = load i64, i64* %273, !dbg !1610 | |
%275 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %7, i32 0, i32 1, !dbg !1610 | |
%276 = bitcast [1 x i64]* %275 to i32*, !dbg !1610 | |
%277 = load i32, i32* %276, !dbg !1610 | |
%278 = zext i32 %277 to i64, !dbg !1610 | |
%279 = sub i64 %274, %278, !dbg !1610 | |
%280 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %10, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %280, !dbg !1610 | |
%281 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %10, i32 0, i32 1, !dbg !1610 | |
%282 = bitcast [1 x i64]* %281 to i64*, !dbg !1610 | |
store i64 %279, i64* %282, !dbg !1610 | |
br label %exit19, !dbg !1610 | |
next_def23: ; preds = %next_def21 | |
%283 = icmp eq i32 163, %234, !dbg !1610 | |
%284 = icmp eq i32 163, %237, !dbg !1610 | |
%285 = and i1 %283, %284, !dbg !1610 | |
br i1 %285, label %current_def24, label %next_def25, !dbg !1610 | |
current_def24: ; preds = %next_def23 | |
%286 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %6, i32 0, i32 1, !dbg !1610 | |
%287 = bitcast [1 x i64]* %286 to i64*, !dbg !1610 | |
%288 = load i64, i64* %287, !dbg !1610 | |
%289 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %7, i32 0, i32 1, !dbg !1610 | |
%290 = bitcast [1 x i64]* %289 to i64*, !dbg !1610 | |
%291 = load i64, i64* %290, !dbg !1610 | |
%292 = sub i64 %288, %291, !dbg !1610 | |
%293 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %11, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %293, !dbg !1610 | |
%294 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %11, i32 0, i32 1, !dbg !1610 | |
%295 = bitcast [1 x i64]* %294 to i64*, !dbg !1610 | |
store i64 %292, i64* %295, !dbg !1610 | |
br label %exit19, !dbg !1610 | |
next_def25: ; preds = %next_def23 | |
unreachable, !dbg !1610 | |
exit26: ; preds = %exit19 | |
%296 = phi %"(UInt32 | UInt64)"* [ %254, %exit19 ], !dbg !1640 | |
%297 = load i64, i64* %original_pos, !dbg !1640 | |
%298 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %178, i64 %297) | |
to label %invoke_out29 unwind label %rescue, !dbg !1621 | |
invoke_out27: ; preds = %rescue15 | |
%299 = bitcast i8* %220 to %"struct.LibUnwind::Exception"*, !dbg !1621 | |
invoke void @__crystal_raise(%"struct.LibUnwind::Exception"* %299) | |
to label %invoke_out28 unwind label %rescue, !dbg !1640 | |
invoke_out28: ; preds = %invoke_out27 | |
unreachable, !dbg !1640 | |
invoke_out29: ; preds = %exit26 | |
%300 = bitcast %"(UInt32 | UInt64)"* %296 to %"(UInt32 | UInt64 | Nil)"*, !dbg !1621 | |
br label %exit30, !dbg !1621 | |
exit30: ; preds = %else, %invoke_out29 | |
%301 = phi %"(UInt32 | UInt64 | Nil)"* [ %300, %invoke_out29 ], [ %12, %else ], !dbg !1621 | |
store %String* bitcast ({ i32, i32, i32, [12 x i8] }* @"'.debug_line'" to %String*), %String** %name32, !dbg !1610 | |
%302 = invoke %"Array(Debug::ELF::SectionHeader)"* @"*Debug::ELF#section_headers:Array(Debug::ELF::SectionHeader)"(%"Debug::ELF"* %elf) | |
to label %invoke_out36 unwind label %rescue, !dbg !1613 | |
then34: ; preds = %exit51 | |
%303 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1632 | |
%304 = load i32*, i32** %303, !dbg !1632 | |
%305 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh33, i32 0, i32 1, !dbg !1632 | |
%306 = bitcast [20 x i64]* %305 to %"Debug::ELF::SectionHeader"*, !dbg !1632 | |
%307 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %306) | |
to label %invoke_out52 unwind label %rescue, !dbg !1619 | |
else35: ; preds = %exit51 | |
%308 = getelementptr inbounds %"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* %21, i32 0, i32 0, !dbg !1621 | |
store i32 0, i32* %308, !dbg !1621 | |
%309 = getelementptr inbounds %"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* %21, i32 0, i32 1, !dbg !1621 | |
store [4 x i64] zeroinitializer, [4 x i64]* %309, !dbg !1621 | |
br label %exit65, !dbg !1621 | |
invoke_out36: ; preds = %exit30 | |
store i32 0, i32* %i41, !dbg !1633 | |
br label %while42, !dbg !1633 | |
while42: ; preds = %else47, %invoke_out36 | |
%310 = load i32, i32* %i41, !dbg !1634 | |
%311 = getelementptr inbounds %"Array(Debug::ELF::SectionHeader)", %"Array(Debug::ELF::SectionHeader)"* %302, i32 0, i32 1, !dbg !1634 | |
%312 = load i32, i32* %311, !dbg !1634 | |
%313 = icmp slt i32 %310, %312, !dbg !1634 | |
br i1 %313, label %body43, label %exit44, !dbg !1634 | |
body43: ; preds = %while42 | |
%314 = load i32, i32* %i41, !dbg !1634 | |
store i32 %314, i32* %i40, !dbg !1634 | |
%315 = load i32, i32* %i40, !dbg !1634 | |
%316 = invoke %"Debug::ELF::SectionHeader" @"*Array(Debug::ELF::SectionHeader)@Array(T)#unsafe_fetch<Int32>:Debug::ELF::SectionHeader"(%"Array(Debug::ELF::SectionHeader)"* %302, i32 %315) | |
to label %invoke_out45 unwind label %rescue, !dbg !1616 | |
exit44: ; preds = %while42 | |
%317 = load %Nil, %Nil* %if_none38, !dbg !1618 | |
%318 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %15, i32 0, i32 0, !dbg !1618 | |
store i32 0, i32* %318, !dbg !1618 | |
%319 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %15, i32 0, i32 1, !dbg !1618 | |
store [20 x i64] zeroinitializer, [20 x i64]* %319, !dbg !1618 | |
br label %exit51, !dbg !1618 | |
invoke_out45: ; preds = %body43 | |
store %"Debug::ELF::SectionHeader" %316, %"Debug::ELF::SectionHeader"* %13, !dbg !1616 | |
%320 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %13, !dbg !1616 | |
store %"Debug::ELF::SectionHeader" %320, %"Debug::ELF::SectionHeader"* %elem39, !dbg !1616 | |
%321 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem39, !dbg !1635 | |
store %"Debug::ELF::SectionHeader" %321, %"Debug::ELF::SectionHeader"* %sh37, !dbg !1635 | |
%322 = invoke i32 @"*Debug::ELF::SectionHeader#name:UInt32"(%"Debug::ELF::SectionHeader"* %sh37) | |
to label %invoke_out48 unwind label %rescue, !dbg !1636 | |
then46: ; preds = %invoke_out50 | |
%323 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem39, !dbg !1617 | |
%324 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %14, i32 0, i32 0, !dbg !1617 | |
store i32 342, i32* %324, !dbg !1617 | |
%325 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %14, i32 0, i32 1, !dbg !1617 | |
%326 = bitcast [20 x i64]* %325 to %"Debug::ELF::SectionHeader"*, !dbg !1617 | |
store %"Debug::ELF::SectionHeader" %323, %"Debug::ELF::SectionHeader"* %326, !dbg !1617 | |
br label %exit51, !dbg !1617 | |
else47: ; preds = %invoke_out50 | |
%327 = load i32, i32* %i41, !dbg !1617 | |
%328 = add i32 %327, 1, !dbg !1617 | |
store i32 %328, i32* %i41, !dbg !1618 | |
br label %while42, !dbg !1618 | |
invoke_out48: ; preds = %invoke_out45 | |
%329 = invoke %String* @"*Debug::ELF#sh_name<UInt32>:String"(%"Debug::ELF"* %elf, i32 %322) | |
to label %invoke_out49 unwind label %rescue, !dbg !1617 | |
invoke_out49: ; preds = %invoke_out48 | |
%330 = load %String*, %String** %name32, !dbg !1617 | |
%331 = invoke i1 @"*String#==<String>:Bool"(%String* %329, %String* %330) | |
to label %invoke_out50 unwind label %rescue, !dbg !1617 | |
invoke_out50: ; preds = %invoke_out49 | |
br i1 %331, label %then46, label %else47, !dbg !1617 | |
exit51: ; preds = %exit44, %then46 | |
%332 = phi %"(Debug::ELF::SectionHeader | Nil)"* [ %14, %then46 ], [ %15, %exit44 ], !dbg !1618 | |
%333 = load %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %332, !dbg !1632 | |
store %"(Debug::ELF::SectionHeader | Nil)" %333, %"(Debug::ELF::SectionHeader | Nil)"* %sh33, !dbg !1632 | |
%334 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %332, i32 0, i32 0, !dbg !1632 | |
%335 = load i32, i32* %334, !dbg !1632 | |
%336 = icmp eq i32 %335, 0, !dbg !1632 | |
%337 = xor i1 %336, true, !dbg !1632 | |
%338 = and i1 true, %337, !dbg !1632 | |
br i1 %338, label %then34, label %else35, !dbg !1632 | |
invoke_out52: ; preds = %then34 | |
store %"(UInt32 | UInt64)" %307, %"(UInt32 | UInt64)"* %16, !dbg !1619 | |
%339 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %16, !dbg !1619 | |
store %"(UInt32 | UInt64)" %339, %"(UInt32 | UInt64)"* %17, !dbg !1620 | |
%340 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %17, !dbg !1620 | |
store %"(UInt32 | UInt64)" %340, %"(UInt32 | UInt64)"* %offset53, !dbg !1620 | |
store i32 0, i32* %whence54, !dbg !1637 | |
%341 = invoke i64 @"*IO::FileDescriptor+@IO#tell:Int64"(i32* %304) | |
to label %invoke_out56 unwind label %rescue, !dbg !1638 | |
invoke_out56: ; preds = %invoke_out52 | |
store i64 %341, i64* %original_pos55, !dbg !1639 | |
%342 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %offset53, !dbg !1639 | |
%343 = load i32, i32* %whence54, !dbg !1639 | |
%344 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<(UInt32 | UInt64), IO::Seek>:IO::FileDescriptor+"(i32* %304, %"(UInt32 | UInt64)" %342, i32 %343) | |
to label %invoke_out58 unwind label %rescue57, !dbg !1640 | |
rescue57: ; preds = %invoke_out59, %invoke_out58, %invoke_out56 | |
%345 = landingpad %landing_pad | |
cleanup, !dbg !1610 | |
%346 = extractvalue %landing_pad %345, 0, !dbg !1610 | |
%347 = extractvalue %landing_pad %345, 1, !dbg !1610 | |
%348 = bitcast i8* %346 to %"struct.LibUnwind::Exception"*, !dbg !1640 | |
%349 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %348), !dbg !1640 | |
%350 = inttoptr i64 %349 to i32*, !dbg !1640 | |
%351 = load i64, i64* %original_pos55, !dbg !1640 | |
%352 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %304, i64 %351) | |
to label %invoke_out62 unwind label %rescue, !dbg !1621 | |
invoke_out58: ; preds = %invoke_out56 | |
%353 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh33, i32 0, i32 1, !dbg !1640 | |
%354 = bitcast [20 x i64]* %353 to %"Debug::ELF::SectionHeader"*, !dbg !1640 | |
%355 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1640 | |
%356 = load i32*, i32** %355, !dbg !1640 | |
%357 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %354, !dbg !1640 | |
store %"Debug::ELF::SectionHeader" %357, %"Debug::ELF::SectionHeader"* %sh31, !dbg !1640 | |
store i32* %356, i32** %io, !dbg !1640 | |
%358 = load i32*, i32** %io, !dbg !1640 | |
%359 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#size:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh31) | |
to label %invoke_out59 unwind label %rescue57, !dbg !1610 | |
invoke_out59: ; preds = %invoke_out58 | |
store %"(UInt32 | UInt64)" %359, %"(UInt32 | UInt64)"* %18, !dbg !1610 | |
%360 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %18, !dbg !1610 | |
%361 = invoke %"Debug::DWARF::LineNumbers" @"*Debug::DWARF::LineNumbers::new<IO::FileDescriptor+, (UInt32 | UInt64)>:Debug::DWARF::LineNumbers"(i32* %358, %"(UInt32 | UInt64)" %360) | |
to label %invoke_out60 unwind label %rescue57, !dbg !1610 | |
invoke_out60: ; preds = %invoke_out59 | |
store %"Debug::DWARF::LineNumbers" %361, %"Debug::DWARF::LineNumbers"* %19, !dbg !1610 | |
%362 = load %"Debug::DWARF::LineNumbers", %"Debug::DWARF::LineNumbers"* %19, !dbg !1610 | |
store i32 350, i32* getelementptr inbounds (%"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* @"CallStack::dwarf_line_numbers", i32 0, i32 0), !dbg !1610 | |
store %"Debug::DWARF::LineNumbers" %362, %"Debug::DWARF::LineNumbers"* bitcast ([4 x i64]* getelementptr inbounds (%"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* @"CallStack::dwarf_line_numbers", i32 0, i32 1) to %"Debug::DWARF::LineNumbers"*), !dbg !1610 | |
br label %exit61, !dbg !1610 | |
exit61: ; preds = %invoke_out60 | |
%363 = phi %"Debug::DWARF::LineNumbers"* [ %19, %invoke_out60 ], !dbg !1640 | |
%364 = load i64, i64* %original_pos55, !dbg !1640 | |
%365 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %304, i64 %364) | |
to label %invoke_out64 unwind label %rescue, !dbg !1621 | |
invoke_out62: ; preds = %rescue57 | |
%366 = bitcast i8* %346 to %"struct.LibUnwind::Exception"*, !dbg !1621 | |
invoke void @__crystal_raise(%"struct.LibUnwind::Exception"* %366) | |
to label %invoke_out63 unwind label %rescue, !dbg !1640 | |
invoke_out63: ; preds = %invoke_out62 | |
unreachable, !dbg !1640 | |
invoke_out64: ; preds = %exit61 | |
%367 = load %"Debug::DWARF::LineNumbers", %"Debug::DWARF::LineNumbers"* %363, !dbg !1621 | |
%368 = getelementptr inbounds %"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* %20, i32 0, i32 0, !dbg !1621 | |
store i32 350, i32* %368, !dbg !1621 | |
%369 = getelementptr inbounds %"(Debug::DWARF::LineNumbers | Nil)", %"(Debug::DWARF::LineNumbers | Nil)"* %20, i32 0, i32 1, !dbg !1621 | |
%370 = bitcast [4 x i64]* %369 to %"Debug::DWARF::LineNumbers"*, !dbg !1621 | |
store %"Debug::DWARF::LineNumbers" %367, %"Debug::DWARF::LineNumbers"* %370, !dbg !1621 | |
br label %exit65, !dbg !1621 | |
exit65: ; preds = %else35, %invoke_out64 | |
%371 = phi %"(Debug::DWARF::LineNumbers | Nil)"* [ %20, %invoke_out64 ], [ %21, %else35 ], !dbg !1621 | |
store %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'.debug_str'" to %String*), %String** %name68, !dbg !1610 | |
%372 = invoke %"Array(Debug::ELF::SectionHeader)"* @"*Debug::ELF#section_headers:Array(Debug::ELF::SectionHeader)"(%"Debug::ELF"* %elf) | |
to label %invoke_out72 unwind label %rescue, !dbg !1613 | |
then70: ; preds = %exit87 | |
%373 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1632 | |
%374 = load i32*, i32** %373, !dbg !1632 | |
%375 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh69, i32 0, i32 1, !dbg !1632 | |
%376 = bitcast [20 x i64]* %375 to %"Debug::ELF::SectionHeader"*, !dbg !1632 | |
%377 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %376) | |
to label %invoke_out88 unwind label %rescue, !dbg !1619 | |
else71: ; preds = %exit87 | |
%378 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %31, i32 0, i32 0, !dbg !1621 | |
store i32 0, i32* %378, !dbg !1621 | |
%379 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %31, i32 0, i32 1, !dbg !1621 | |
store [5 x i64] zeroinitializer, [5 x i64]* %379, !dbg !1621 | |
br label %exit102, !dbg !1621 | |
invoke_out72: ; preds = %exit65 | |
store i32 0, i32* %i77, !dbg !1633 | |
br label %while78, !dbg !1633 | |
while78: ; preds = %else83, %invoke_out72 | |
%380 = load i32, i32* %i77, !dbg !1634 | |
%381 = getelementptr inbounds %"Array(Debug::ELF::SectionHeader)", %"Array(Debug::ELF::SectionHeader)"* %372, i32 0, i32 1, !dbg !1634 | |
%382 = load i32, i32* %381, !dbg !1634 | |
%383 = icmp slt i32 %380, %382, !dbg !1634 | |
br i1 %383, label %body79, label %exit80, !dbg !1634 | |
body79: ; preds = %while78 | |
%384 = load i32, i32* %i77, !dbg !1634 | |
store i32 %384, i32* %i76, !dbg !1634 | |
%385 = load i32, i32* %i76, !dbg !1634 | |
%386 = invoke %"Debug::ELF::SectionHeader" @"*Array(Debug::ELF::SectionHeader)@Array(T)#unsafe_fetch<Int32>:Debug::ELF::SectionHeader"(%"Array(Debug::ELF::SectionHeader)"* %372, i32 %385) | |
to label %invoke_out81 unwind label %rescue, !dbg !1616 | |
exit80: ; preds = %while78 | |
%387 = load %Nil, %Nil* %if_none74, !dbg !1618 | |
%388 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %24, i32 0, i32 0, !dbg !1618 | |
store i32 0, i32* %388, !dbg !1618 | |
%389 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %24, i32 0, i32 1, !dbg !1618 | |
store [20 x i64] zeroinitializer, [20 x i64]* %389, !dbg !1618 | |
br label %exit87, !dbg !1618 | |
invoke_out81: ; preds = %body79 | |
store %"Debug::ELF::SectionHeader" %386, %"Debug::ELF::SectionHeader"* %22, !dbg !1616 | |
%390 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %22, !dbg !1616 | |
store %"Debug::ELF::SectionHeader" %390, %"Debug::ELF::SectionHeader"* %elem75, !dbg !1616 | |
%391 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem75, !dbg !1635 | |
store %"Debug::ELF::SectionHeader" %391, %"Debug::ELF::SectionHeader"* %sh73, !dbg !1635 | |
%392 = invoke i32 @"*Debug::ELF::SectionHeader#name:UInt32"(%"Debug::ELF::SectionHeader"* %sh73) | |
to label %invoke_out84 unwind label %rescue, !dbg !1636 | |
then82: ; preds = %invoke_out86 | |
%393 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem75, !dbg !1617 | |
%394 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %23, i32 0, i32 0, !dbg !1617 | |
store i32 342, i32* %394, !dbg !1617 | |
%395 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %23, i32 0, i32 1, !dbg !1617 | |
%396 = bitcast [20 x i64]* %395 to %"Debug::ELF::SectionHeader"*, !dbg !1617 | |
store %"Debug::ELF::SectionHeader" %393, %"Debug::ELF::SectionHeader"* %396, !dbg !1617 | |
br label %exit87, !dbg !1617 | |
else83: ; preds = %invoke_out86 | |
%397 = load i32, i32* %i77, !dbg !1617 | |
%398 = add i32 %397, 1, !dbg !1617 | |
store i32 %398, i32* %i77, !dbg !1618 | |
br label %while78, !dbg !1618 | |
invoke_out84: ; preds = %invoke_out81 | |
%399 = invoke %String* @"*Debug::ELF#sh_name<UInt32>:String"(%"Debug::ELF"* %elf, i32 %392) | |
to label %invoke_out85 unwind label %rescue, !dbg !1617 | |
invoke_out85: ; preds = %invoke_out84 | |
%400 = load %String*, %String** %name68, !dbg !1617 | |
%401 = invoke i1 @"*String#==<String>:Bool"(%String* %399, %String* %400) | |
to label %invoke_out86 unwind label %rescue, !dbg !1617 | |
invoke_out86: ; preds = %invoke_out85 | |
br i1 %401, label %then82, label %else83, !dbg !1617 | |
exit87: ; preds = %exit80, %then82 | |
%402 = phi %"(Debug::ELF::SectionHeader | Nil)"* [ %23, %then82 ], [ %24, %exit80 ], !dbg !1618 | |
%403 = load %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %402, !dbg !1632 | |
store %"(Debug::ELF::SectionHeader | Nil)" %403, %"(Debug::ELF::SectionHeader | Nil)"* %sh69, !dbg !1632 | |
%404 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %402, i32 0, i32 0, !dbg !1632 | |
%405 = load i32, i32* %404, !dbg !1632 | |
%406 = icmp eq i32 %405, 0, !dbg !1632 | |
%407 = xor i1 %406, true, !dbg !1632 | |
%408 = and i1 true, %407, !dbg !1632 | |
br i1 %408, label %then70, label %else71, !dbg !1632 | |
invoke_out88: ; preds = %then70 | |
store %"(UInt32 | UInt64)" %377, %"(UInt32 | UInt64)"* %25, !dbg !1619 | |
%409 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %25, !dbg !1619 | |
store %"(UInt32 | UInt64)" %409, %"(UInt32 | UInt64)"* %26, !dbg !1620 | |
%410 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %26, !dbg !1620 | |
store %"(UInt32 | UInt64)" %410, %"(UInt32 | UInt64)"* %offset89, !dbg !1620 | |
store i32 0, i32* %whence90, !dbg !1637 | |
%411 = invoke i64 @"*IO::FileDescriptor+@IO#tell:Int64"(i32* %374) | |
to label %invoke_out92 unwind label %rescue, !dbg !1638 | |
invoke_out92: ; preds = %invoke_out88 | |
store i64 %411, i64* %original_pos91, !dbg !1639 | |
%412 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %offset89, !dbg !1639 | |
%413 = load i32, i32* %whence90, !dbg !1639 | |
%414 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<(UInt32 | UInt64), IO::Seek>:IO::FileDescriptor+"(i32* %374, %"(UInt32 | UInt64)" %412, i32 %413) | |
to label %invoke_out94 unwind label %rescue93, !dbg !1640 | |
rescue93: ; preds = %invoke_out96, %invoke_out95, %invoke_out94, %invoke_out92 | |
%415 = landingpad %landing_pad | |
cleanup, !dbg !1610 | |
%416 = extractvalue %landing_pad %415, 0, !dbg !1610 | |
%417 = extractvalue %landing_pad %415, 1, !dbg !1610 | |
%418 = bitcast i8* %416 to %"struct.LibUnwind::Exception"*, !dbg !1640 | |
%419 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %418), !dbg !1640 | |
%420 = inttoptr i64 %419 to i32*, !dbg !1640 | |
%421 = load i64, i64* %original_pos91, !dbg !1640 | |
%422 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %374, i64 %421) | |
to label %invoke_out99 unwind label %rescue, !dbg !1621 | |
invoke_out94: ; preds = %invoke_out92 | |
%423 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh69, i32 0, i32 1, !dbg !1640 | |
%424 = bitcast [20 x i64]* %423 to %"Debug::ELF::SectionHeader"*, !dbg !1640 | |
%425 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1640 | |
%426 = load i32*, i32** %425, !dbg !1640 | |
%427 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %424, !dbg !1640 | |
store %"Debug::ELF::SectionHeader" %427, %"Debug::ELF::SectionHeader"* %sh66, !dbg !1640 | |
store i32* %426, i32** %io67, !dbg !1640 | |
%428 = load i32*, i32** %io67, !dbg !1640 | |
%429 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh66) | |
to label %invoke_out95 unwind label %rescue93, !dbg !1610 | |
invoke_out95: ; preds = %invoke_out94 | |
store %"(UInt32 | UInt64)" %429, %"(UInt32 | UInt64)"* %27, !dbg !1610 | |
%430 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %27, !dbg !1610 | |
%431 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#size:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh66) | |
to label %invoke_out96 unwind label %rescue93, !dbg !1610 | |
invoke_out96: ; preds = %invoke_out95 | |
store %"(UInt32 | UInt64)" %431, %"(UInt32 | UInt64)"* %28, !dbg !1610 | |
%432 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %28, !dbg !1610 | |
%433 = invoke %"Debug::DWARF::Strings" @"*Debug::DWARF::Strings::new<IO::FileDescriptor+, (UInt32 | UInt64), (UInt32 | UInt64)>:Debug::DWARF::Strings"(i32* %428, %"(UInt32 | UInt64)" %430, %"(UInt32 | UInt64)" %432) | |
to label %invoke_out97 unwind label %rescue93, !dbg !1610 | |
invoke_out97: ; preds = %invoke_out96 | |
store %"Debug::DWARF::Strings" %433, %"Debug::DWARF::Strings"* %29, !dbg !1610 | |
br label %exit98, !dbg !1610 | |
exit98: ; preds = %invoke_out97 | |
%434 = phi %"Debug::DWARF::Strings"* [ %29, %invoke_out97 ], !dbg !1640 | |
%435 = load i64, i64* %original_pos91, !dbg !1640 | |
%436 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %374, i64 %435) | |
to label %invoke_out101 unwind label %rescue, !dbg !1621 | |
invoke_out99: ; preds = %rescue93 | |
%437 = bitcast i8* %416 to %"struct.LibUnwind::Exception"*, !dbg !1621 | |
invoke void @__crystal_raise(%"struct.LibUnwind::Exception"* %437) | |
to label %invoke_out100 unwind label %rescue, !dbg !1640 | |
invoke_out100: ; preds = %invoke_out99 | |
unreachable, !dbg !1640 | |
invoke_out101: ; preds = %exit98 | |
%438 = load %"Debug::DWARF::Strings", %"Debug::DWARF::Strings"* %434, !dbg !1621 | |
%439 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %30, i32 0, i32 0, !dbg !1621 | |
store i32 351, i32* %439, !dbg !1621 | |
%440 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %30, i32 0, i32 1, !dbg !1621 | |
%441 = bitcast [5 x i64]* %440 to %"Debug::DWARF::Strings"*, !dbg !1621 | |
store %"Debug::DWARF::Strings" %438, %"Debug::DWARF::Strings"* %441, !dbg !1621 | |
br label %exit102, !dbg !1621 | |
exit102: ; preds = %else71, %invoke_out101 | |
%442 = phi %"(Debug::DWARF::Strings | Nil)"* [ %30, %invoke_out101 ], [ %31, %else71 ], !dbg !1621 | |
%443 = load %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %442, !dbg !1610 | |
store %"(Debug::DWARF::Strings | Nil)" %443, %"(Debug::DWARF::Strings | Nil)"* %strings, !dbg !1610 | |
store %String* bitcast ({ i32, i32, i32, [12 x i8] }* @"'.debug_info'" to %String*), %String** %name106, !dbg !1610 | |
%444 = invoke %"Array(Debug::ELF::SectionHeader)"* @"*Debug::ELF#section_headers:Array(Debug::ELF::SectionHeader)"(%"Debug::ELF"* %elf) | |
to label %invoke_out110 unwind label %rescue, !dbg !1613 | |
then108: ; preds = %exit125 | |
%445 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1632 | |
%446 = load i32*, i32** %445, !dbg !1632 | |
%447 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh107, i32 0, i32 1, !dbg !1632 | |
%448 = bitcast [20 x i64]* %447 to %"Debug::ELF::SectionHeader"*, !dbg !1632 | |
%449 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %448) | |
to label %invoke_out126 unwind label %rescue, !dbg !1619 | |
else109: ; preds = %exit125 | |
br label %exit610, !dbg !1621 | |
invoke_out110: ; preds = %exit102 | |
store i32 0, i32* %i115, !dbg !1633 | |
br label %while116, !dbg !1633 | |
while116: ; preds = %else121, %invoke_out110 | |
%450 = load i32, i32* %i115, !dbg !1634 | |
%451 = getelementptr inbounds %"Array(Debug::ELF::SectionHeader)", %"Array(Debug::ELF::SectionHeader)"* %444, i32 0, i32 1, !dbg !1634 | |
%452 = load i32, i32* %451, !dbg !1634 | |
%453 = icmp slt i32 %450, %452, !dbg !1634 | |
br i1 %453, label %body117, label %exit118, !dbg !1634 | |
body117: ; preds = %while116 | |
%454 = load i32, i32* %i115, !dbg !1634 | |
store i32 %454, i32* %i114, !dbg !1634 | |
%455 = load i32, i32* %i114, !dbg !1634 | |
%456 = invoke %"Debug::ELF::SectionHeader" @"*Array(Debug::ELF::SectionHeader)@Array(T)#unsafe_fetch<Int32>:Debug::ELF::SectionHeader"(%"Array(Debug::ELF::SectionHeader)"* %444, i32 %455) | |
to label %invoke_out119 unwind label %rescue, !dbg !1616 | |
exit118: ; preds = %while116 | |
%457 = load %Nil, %Nil* %if_none112, !dbg !1618 | |
%458 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %34, i32 0, i32 0, !dbg !1618 | |
store i32 0, i32* %458, !dbg !1618 | |
%459 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %34, i32 0, i32 1, !dbg !1618 | |
store [20 x i64] zeroinitializer, [20 x i64]* %459, !dbg !1618 | |
br label %exit125, !dbg !1618 | |
invoke_out119: ; preds = %body117 | |
store %"Debug::ELF::SectionHeader" %456, %"Debug::ELF::SectionHeader"* %32, !dbg !1616 | |
%460 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %32, !dbg !1616 | |
store %"Debug::ELF::SectionHeader" %460, %"Debug::ELF::SectionHeader"* %elem113, !dbg !1616 | |
%461 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem113, !dbg !1635 | |
store %"Debug::ELF::SectionHeader" %461, %"Debug::ELF::SectionHeader"* %sh111, !dbg !1635 | |
%462 = invoke i32 @"*Debug::ELF::SectionHeader#name:UInt32"(%"Debug::ELF::SectionHeader"* %sh111) | |
to label %invoke_out122 unwind label %rescue, !dbg !1636 | |
then120: ; preds = %invoke_out124 | |
%463 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem113, !dbg !1617 | |
%464 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %33, i32 0, i32 0, !dbg !1617 | |
store i32 342, i32* %464, !dbg !1617 | |
%465 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %33, i32 0, i32 1, !dbg !1617 | |
%466 = bitcast [20 x i64]* %465 to %"Debug::ELF::SectionHeader"*, !dbg !1617 | |
store %"Debug::ELF::SectionHeader" %463, %"Debug::ELF::SectionHeader"* %466, !dbg !1617 | |
br label %exit125, !dbg !1617 | |
else121: ; preds = %invoke_out124 | |
%467 = load i32, i32* %i115, !dbg !1617 | |
%468 = add i32 %467, 1, !dbg !1617 | |
store i32 %468, i32* %i115, !dbg !1618 | |
br label %while116, !dbg !1618 | |
invoke_out122: ; preds = %invoke_out119 | |
%469 = invoke %String* @"*Debug::ELF#sh_name<UInt32>:String"(%"Debug::ELF"* %elf, i32 %462) | |
to label %invoke_out123 unwind label %rescue, !dbg !1617 | |
invoke_out123: ; preds = %invoke_out122 | |
%470 = load %String*, %String** %name106, !dbg !1617 | |
%471 = invoke i1 @"*String#==<String>:Bool"(%String* %469, %String* %470) | |
to label %invoke_out124 unwind label %rescue, !dbg !1617 | |
invoke_out124: ; preds = %invoke_out123 | |
br i1 %471, label %then120, label %else121, !dbg !1617 | |
exit125: ; preds = %exit118, %then120 | |
%472 = phi %"(Debug::ELF::SectionHeader | Nil)"* [ %33, %then120 ], [ %34, %exit118 ], !dbg !1618 | |
%473 = load %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %472, !dbg !1632 | |
store %"(Debug::ELF::SectionHeader | Nil)" %473, %"(Debug::ELF::SectionHeader | Nil)"* %sh107, !dbg !1632 | |
%474 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %472, i32 0, i32 0, !dbg !1632 | |
%475 = load i32, i32* %474, !dbg !1632 | |
%476 = icmp eq i32 %475, 0, !dbg !1632 | |
%477 = xor i1 %476, true, !dbg !1632 | |
%478 = and i1 true, %477, !dbg !1632 | |
br i1 %478, label %then108, label %else109, !dbg !1632 | |
invoke_out126: ; preds = %then108 | |
store %"(UInt32 | UInt64)" %449, %"(UInt32 | UInt64)"* %35, !dbg !1619 | |
%479 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %35, !dbg !1619 | |
store %"(UInt32 | UInt64)" %479, %"(UInt32 | UInt64)"* %36, !dbg !1620 | |
%480 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %36, !dbg !1620 | |
store %"(UInt32 | UInt64)" %480, %"(UInt32 | UInt64)"* %offset127, !dbg !1620 | |
store i32 0, i32* %whence128, !dbg !1637 | |
%481 = invoke i64 @"*IO::FileDescriptor+@IO#tell:Int64"(i32* %446) | |
to label %invoke_out130 unwind label %rescue, !dbg !1638 | |
invoke_out130: ; preds = %invoke_out126 | |
store i64 %481, i64* %original_pos129, !dbg !1639 | |
%482 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %offset127, !dbg !1639 | |
%483 = load i32, i32* %whence128, !dbg !1639 | |
%484 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<(UInt32 | UInt64), IO::Seek>:IO::FileDescriptor+"(i32* %446, %"(UInt32 | UInt64)" %482, i32 %483) | |
to label %invoke_out132 unwind label %rescue131, !dbg !1640 | |
rescue131: ; preds = %then596, %current_def583, %invoke_out576, %invoke_out575, %invoke_out574, %invoke_out573, %exit570, %invoke_out566, %doesnt_match565, %invoke_out559, %invoke_out558, %invoke_out557, %invoke_out556, %exit539, %invoke_out535, %doesnt_match534, %invoke_out526, %invoke_out525, %invoke_out524, %invoke_out523, %exit506, %invoke_out502, %doesnt_match501, %invoke_out495, %invoke_out494, %invoke_out493, %invoke_out492, %exit473, %invoke_out469, %doesnt_match468, %matches433, %invoke_out459, %invoke_out458, %invoke_out457, %invoke_out456, %exit439, %invoke_out435, %doesnt_match434, %body423, %then398, %current_def385, %invoke_out378, %invoke_out377, %invoke_out376, %invoke_out375, %exit372, %invoke_out368, %doesnt_match367, %invoke_out361, %invoke_out360, %invoke_out359, %invoke_out358, %exit341, %invoke_out337, %doesnt_match336, %invoke_out328, %invoke_out327, %invoke_out326, %invoke_out325, %exit308, %invoke_out304, %doesnt_match303, %invoke_out297, %invoke_out296, %invoke_out295, %invoke_out294, %exit275, %invoke_out271, %doesnt_match270, %matches, %invoke_out261, %invoke_out260, %invoke_out259, %invoke_out258, %exit241, %invoke_out237, %doesnt_match, %body228, %invoke_out215, %invoke_out214, %body212, %invoke_out207, %invoke_out204, %invoke_out203, %body200, %while199, %exit180, %invoke_out181, %rescue177, %invoke_out172, %then154, %invoke_out169, %invoke_out168, %invoke_out165, %body163, %invoke_out149, %body134, %exit140, %invoke_out136, %while133, %invoke_out130 | |
%485 = landingpad %landing_pad | |
cleanup, !dbg !1610 | |
%486 = extractvalue %landing_pad %485, 0, !dbg !1610 | |
%487 = extractvalue %landing_pad %485, 1, !dbg !1610 | |
%488 = bitcast i8* %486 to %"struct.LibUnwind::Exception"*, !dbg !1640 | |
%489 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %488), !dbg !1640 | |
%490 = inttoptr i64 %489 to i32*, !dbg !1640 | |
%491 = load i64, i64* %original_pos129, !dbg !1640 | |
%492 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %446, i64 %491) | |
to label %invoke_out607 unwind label %rescue, !dbg !1621 | |
invoke_out132: ; preds = %invoke_out130 | |
%493 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh107, i32 0, i32 1, !dbg !1640 | |
%494 = bitcast [20 x i64]* %493 to %"Debug::ELF::SectionHeader"*, !dbg !1640 | |
%495 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1640 | |
%496 = load i32*, i32** %495, !dbg !1640 | |
%497 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %494, !dbg !1640 | |
store %"Debug::ELF::SectionHeader" %497, %"Debug::ELF::SectionHeader"* %sh103, !dbg !1640 | |
store i32* %496, i32** %io104, !dbg !1640 | |
%498 = call %"Array(Tuple(UInt64, UInt64, String))"* @"*Array(Tuple(UInt64, UInt64, String))@Array(T)::new:Array(Tuple(UInt64, UInt64, String))"(i32 514), !dbg !1610 | |
store %"Array(Tuple(UInt64, UInt64, String))"* %498, %"Array(Tuple(UInt64, UInt64, String))"** %names, !dbg !1610 | |
br label %while133, !dbg !1610 | |
while133: ; preds = %exit201, %invoke_out132 | |
%499 = load i32*, i32** %io104, !dbg !1610 | |
%500 = invoke i64 @"*IO::FileDescriptor+@IO::FileDescriptor#pos:Int64"(i32* %499) | |
to label %invoke_out136 unwind label %rescue131, !dbg !1610 | |
body134: ; preds = %exit146 | |
%501 = load i32*, i32** %io104, !dbg !1610 | |
%502 = load i64, i64* %offset105, !dbg !1610 | |
%503 = invoke %"Debug::DWARF::Info" @"*Debug::DWARF::Info::new<IO::FileDescriptor+, Int64>:Debug::DWARF::Info"(i32* %501, i64 %502) | |
to label %invoke_out149 unwind label %rescue131, !dbg !1610 | |
exit135: ; preds = %exit146 | |
%504 = load %"Array(Tuple(UInt64, UInt64, String))"*, %"Array(Tuple(UInt64, UInt64, String))"** %names, !dbg !1610 | |
store %"Array(Tuple(UInt64, UInt64, String))"* %504, %"Array(Tuple(UInt64, UInt64, String))"** @"CallStack::dwarf_function_names", !dbg !1610 | |
br label %exit606, !dbg !1610 | |
invoke_out136: ; preds = %while133 | |
%505 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh103) | |
to label %invoke_out137 unwind label %rescue131, !dbg !1610 | |
invoke_out137: ; preds = %invoke_out136 | |
store %"(UInt32 | UInt64)" %505, %"(UInt32 | UInt64)"* %37, !dbg !1610 | |
%506 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %37, i32 0, i32 0, !dbg !1610 | |
%507 = load i32, i32* %506, !dbg !1610 | |
%508 = icmp eq i32 161, %507, !dbg !1610 | |
%509 = and i1 true, %508, !dbg !1610 | |
br i1 %509, label %current_def138, label %next_def139, !dbg !1610 | |
current_def138: ; preds = %invoke_out137 | |
%510 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %37, i32 0, i32 1, !dbg !1610 | |
%511 = bitcast [1 x i64]* %510 to i32*, !dbg !1610 | |
%512 = load i32, i32* %511, !dbg !1610 | |
%513 = zext i32 %512 to i64, !dbg !1610 | |
%514 = sub i64 %500, %513, !dbg !1610 | |
br label %exit140, !dbg !1610 | |
next_def139: ; preds = %invoke_out137 | |
%515 = icmp eq i32 163, %507, !dbg !1610 | |
%516 = and i1 true, %515, !dbg !1610 | |
br i1 %516, label %current_def141, label %next_def142, !dbg !1610 | |
exit140: ; preds = %current_def141, %current_def138 | |
%517 = phi i64 [ %514, %current_def138 ], [ %522, %current_def141 ], !dbg !1610 | |
store i64 %517, i64* %offset105, !dbg !1610 | |
%518 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#size:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %sh103) | |
to label %invoke_out143 unwind label %rescue131, !dbg !1610 | |
current_def141: ; preds = %next_def139 | |
%519 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %37, i32 0, i32 1, !dbg !1610 | |
%520 = bitcast [1 x i64]* %519 to i64*, !dbg !1610 | |
%521 = load i64, i64* %520, !dbg !1610 | |
%522 = sub i64 %500, %521, !dbg !1610 | |
br label %exit140, !dbg !1610 | |
next_def142: ; preds = %next_def139 | |
unreachable, !dbg !1610 | |
invoke_out143: ; preds = %exit140 | |
store %"(UInt32 | UInt64)" %518, %"(UInt32 | UInt64)"* %38, !dbg !1610 | |
%523 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %38, i32 0, i32 0, !dbg !1610 | |
%524 = load i32, i32* %523, !dbg !1610 | |
%525 = icmp eq i32 161, %524, !dbg !1610 | |
%526 = and i1 true, %525, !dbg !1610 | |
br i1 %526, label %current_def144, label %next_def145, !dbg !1610 | |
current_def144: ; preds = %invoke_out143 | |
%527 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %38, i32 0, i32 1, !dbg !1610 | |
%528 = bitcast [1 x i64]* %527 to i32*, !dbg !1610 | |
%529 = load i32, i32* %528, !dbg !1610 | |
%530 = icmp slt i64 %517, 0, !dbg !1610 | |
%531 = zext i32 %529 to i64, !dbg !1610 | |
%532 = icmp slt i64 %517, %531, !dbg !1610 | |
%533 = or i1 %530, %532, !dbg !1610 | |
br label %exit146, !dbg !1610 | |
next_def145: ; preds = %invoke_out143 | |
%534 = icmp eq i32 163, %524, !dbg !1610 | |
%535 = and i1 true, %534, !dbg !1610 | |
br i1 %535, label %current_def147, label %next_def148, !dbg !1610 | |
exit146: ; preds = %current_def147, %current_def144 | |
%536 = phi i1 [ %533, %current_def144 ], [ %542, %current_def147 ], !dbg !1610 | |
br i1 %536, label %body134, label %exit135, !dbg !1610 | |
current_def147: ; preds = %next_def145 | |
%537 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %38, i32 0, i32 1, !dbg !1610 | |
%538 = bitcast [1 x i64]* %537 to i64*, !dbg !1610 | |
%539 = load i64, i64* %538, !dbg !1610 | |
%540 = icmp slt i64 %517, 0, !dbg !1610 | |
%541 = icmp ult i64 %517, %539, !dbg !1610 | |
%542 = or i1 %540, %541, !dbg !1610 | |
br label %exit146, !dbg !1610 | |
next_def148: ; preds = %next_def145 | |
unreachable, !dbg !1610 | |
invoke_out149: ; preds = %body134 | |
store %"Debug::DWARF::Info" %503, %"Debug::DWARF::Info"* %39, !dbg !1610 | |
%543 = load %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %39, !dbg !1610 | |
store %"Debug::DWARF::Info" %543, %"Debug::DWARF::Info"* %info, !dbg !1610 | |
store %String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'.debug_abbrev'" to %String*), %String** %name152, !dbg !1610 | |
%544 = invoke %"Array(Debug::ELF::SectionHeader)"* @"*Debug::ELF#section_headers:Array(Debug::ELF::SectionHeader)"(%"Debug::ELF"* %elf) | |
to label %invoke_out156 unwind label %rescue131, !dbg !1613 | |
then154: ; preds = %exit171 | |
%545 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1632 | |
%546 = load i32*, i32** %545, !dbg !1632 | |
%547 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh153, i32 0, i32 1, !dbg !1632 | |
%548 = bitcast [20 x i64]* %547 to %"Debug::ELF::SectionHeader"*, !dbg !1632 | |
%549 = invoke %"(UInt32 | UInt64)" @"*Debug::ELF::SectionHeader#offset:(UInt32 | UInt64)"(%"Debug::ELF::SectionHeader"* %548) | |
to label %invoke_out172 unwind label %rescue131, !dbg !1619 | |
else155: ; preds = %exit171 | |
br label %exit184, !dbg !1621 | |
invoke_out156: ; preds = %invoke_out149 | |
store i32 0, i32* %i161, !dbg !1633 | |
br label %while162, !dbg !1633 | |
while162: ; preds = %else167, %invoke_out156 | |
%550 = load i32, i32* %i161, !dbg !1634 | |
%551 = getelementptr inbounds %"Array(Debug::ELF::SectionHeader)", %"Array(Debug::ELF::SectionHeader)"* %544, i32 0, i32 1, !dbg !1634 | |
%552 = load i32, i32* %551, !dbg !1634 | |
%553 = icmp slt i32 %550, %552, !dbg !1634 | |
br i1 %553, label %body163, label %exit164, !dbg !1634 | |
body163: ; preds = %while162 | |
%554 = load i32, i32* %i161, !dbg !1634 | |
store i32 %554, i32* %i160, !dbg !1634 | |
%555 = load i32, i32* %i160, !dbg !1634 | |
%556 = invoke %"Debug::ELF::SectionHeader" @"*Array(Debug::ELF::SectionHeader)@Array(T)#unsafe_fetch<Int32>:Debug::ELF::SectionHeader"(%"Array(Debug::ELF::SectionHeader)"* %544, i32 %555) | |
to label %invoke_out165 unwind label %rescue131, !dbg !1616 | |
exit164: ; preds = %while162 | |
%557 = load %Nil, %Nil* %if_none158, !dbg !1618 | |
%558 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %42, i32 0, i32 0, !dbg !1618 | |
store i32 0, i32* %558, !dbg !1618 | |
%559 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %42, i32 0, i32 1, !dbg !1618 | |
store [20 x i64] zeroinitializer, [20 x i64]* %559, !dbg !1618 | |
br label %exit171, !dbg !1618 | |
invoke_out165: ; preds = %body163 | |
store %"Debug::ELF::SectionHeader" %556, %"Debug::ELF::SectionHeader"* %40, !dbg !1616 | |
%560 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %40, !dbg !1616 | |
store %"Debug::ELF::SectionHeader" %560, %"Debug::ELF::SectionHeader"* %elem159, !dbg !1616 | |
%561 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem159, !dbg !1635 | |
store %"Debug::ELF::SectionHeader" %561, %"Debug::ELF::SectionHeader"* %sh157, !dbg !1635 | |
%562 = invoke i32 @"*Debug::ELF::SectionHeader#name:UInt32"(%"Debug::ELF::SectionHeader"* %sh157) | |
to label %invoke_out168 unwind label %rescue131, !dbg !1636 | |
then166: ; preds = %invoke_out170 | |
%563 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %elem159, !dbg !1617 | |
%564 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %41, i32 0, i32 0, !dbg !1617 | |
store i32 342, i32* %564, !dbg !1617 | |
%565 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %41, i32 0, i32 1, !dbg !1617 | |
%566 = bitcast [20 x i64]* %565 to %"Debug::ELF::SectionHeader"*, !dbg !1617 | |
store %"Debug::ELF::SectionHeader" %563, %"Debug::ELF::SectionHeader"* %566, !dbg !1617 | |
br label %exit171, !dbg !1617 | |
else167: ; preds = %invoke_out170 | |
%567 = load i32, i32* %i161, !dbg !1617 | |
%568 = add i32 %567, 1, !dbg !1617 | |
store i32 %568, i32* %i161, !dbg !1618 | |
br label %while162, !dbg !1618 | |
invoke_out168: ; preds = %invoke_out165 | |
%569 = invoke %String* @"*Debug::ELF#sh_name<UInt32>:String"(%"Debug::ELF"* %elf, i32 %562) | |
to label %invoke_out169 unwind label %rescue131, !dbg !1617 | |
invoke_out169: ; preds = %invoke_out168 | |
%570 = load %String*, %String** %name152, !dbg !1617 | |
%571 = invoke i1 @"*String#==<String>:Bool"(%String* %569, %String* %570) | |
to label %invoke_out170 unwind label %rescue131, !dbg !1617 | |
invoke_out170: ; preds = %invoke_out169 | |
br i1 %571, label %then166, label %else167, !dbg !1617 | |
exit171: ; preds = %exit164, %then166 | |
%572 = phi %"(Debug::ELF::SectionHeader | Nil)"* [ %41, %then166 ], [ %42, %exit164 ], !dbg !1618 | |
%573 = load %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %572, !dbg !1632 | |
store %"(Debug::ELF::SectionHeader | Nil)" %573, %"(Debug::ELF::SectionHeader | Nil)"* %sh153, !dbg !1632 | |
%574 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %572, i32 0, i32 0, !dbg !1632 | |
%575 = load i32, i32* %574, !dbg !1632 | |
%576 = icmp eq i32 %575, 0, !dbg !1632 | |
%577 = xor i1 %576, true, !dbg !1632 | |
%578 = and i1 true, %577, !dbg !1632 | |
br i1 %578, label %then154, label %else155, !dbg !1632 | |
invoke_out172: ; preds = %then154 | |
store %"(UInt32 | UInt64)" %549, %"(UInt32 | UInt64)"* %43, !dbg !1619 | |
%579 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %43, !dbg !1619 | |
store %"(UInt32 | UInt64)" %579, %"(UInt32 | UInt64)"* %44, !dbg !1620 | |
%580 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %44, !dbg !1620 | |
store %"(UInt32 | UInt64)" %580, %"(UInt32 | UInt64)"* %offset173, !dbg !1620 | |
store i32 0, i32* %whence174, !dbg !1637 | |
%581 = invoke i64 @"*IO::FileDescriptor+@IO#tell:Int64"(i32* %546) | |
to label %invoke_out176 unwind label %rescue131, !dbg !1638 | |
invoke_out176: ; preds = %invoke_out172 | |
store i64 %581, i64* %original_pos175, !dbg !1639 | |
%582 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %offset173, !dbg !1639 | |
%583 = load i32, i32* %whence174, !dbg !1639 | |
%584 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<(UInt32 | UInt64), IO::Seek>:IO::FileDescriptor+"(i32* %546, %"(UInt32 | UInt64)" %582, i32 %583) | |
to label %invoke_out178 unwind label %rescue177, !dbg !1640 | |
rescue177: ; preds = %invoke_out178, %invoke_out176 | |
%585 = landingpad %landing_pad | |
cleanup, !dbg !1610 | |
%586 = extractvalue %landing_pad %585, 0, !dbg !1610 | |
%587 = extractvalue %landing_pad %585, 1, !dbg !1610 | |
%588 = bitcast i8* %586 to %"struct.LibUnwind::Exception"*, !dbg !1640 | |
%589 = call i64 @__crystal_get_exception(%"struct.LibUnwind::Exception"* %588), !dbg !1640 | |
%590 = inttoptr i64 %589 to i32*, !dbg !1640 | |
%591 = load i64, i64* %original_pos175, !dbg !1640 | |
%592 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %546, i64 %591) | |
to label %invoke_out181 unwind label %rescue131, !dbg !1621 | |
invoke_out178: ; preds = %invoke_out176 | |
%593 = getelementptr inbounds %"(Debug::ELF::SectionHeader | Nil)", %"(Debug::ELF::SectionHeader | Nil)"* %sh153, i32 0, i32 1, !dbg !1640 | |
%594 = bitcast [20 x i64]* %593 to %"Debug::ELF::SectionHeader"*, !dbg !1640 | |
%595 = getelementptr inbounds %"Debug::ELF", %"Debug::ELF"* %elf, i32 0, i32 14, !dbg !1640 | |
%596 = load i32*, i32** %595, !dbg !1640 | |
%597 = load %"Debug::ELF::SectionHeader", %"Debug::ELF::SectionHeader"* %594, !dbg !1640 | |
store %"Debug::ELF::SectionHeader" %597, %"Debug::ELF::SectionHeader"* %sh150, !dbg !1640 | |
store i32* %596, i32** %io151, !dbg !1640 | |
%598 = load i32*, i32** %io151, !dbg !1640 | |
%599 = invoke %"Array(Debug::DWARF::Abbrev)"* @"*Debug::DWARF::Info#read_abbreviations<IO::FileDescriptor+>:Array(Debug::DWARF::Abbrev)"(%"Debug::DWARF::Info"* %info, i32* %598) | |
to label %invoke_out179 unwind label %rescue177, !dbg !1610 | |
invoke_out179: ; preds = %invoke_out178 | |
br label %exit180, !dbg !1610 | |
exit180: ; preds = %invoke_out179 | |
%600 = phi %"Array(Debug::DWARF::Abbrev)"* [ %599, %invoke_out179 ], !dbg !1640 | |
%601 = load i64, i64* %original_pos175, !dbg !1640 | |
%602 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %546, i64 %601) | |
to label %invoke_out183 unwind label %rescue131, !dbg !1621 | |
invoke_out181: ; preds = %rescue177 | |
%603 = bitcast i8* %586 to %"struct.LibUnwind::Exception"*, !dbg !1621 | |
invoke void @__crystal_raise(%"struct.LibUnwind::Exception"* %603) | |
to label %invoke_out182 unwind label %rescue131, !dbg !1640 | |
invoke_out182: ; preds = %invoke_out181 | |
unreachable, !dbg !1640 | |
invoke_out183: ; preds = %exit180 | |
br label %exit184, !dbg !1621 | |
exit184: ; preds = %else155, %invoke_out183 | |
%604 = phi %"Array(Debug::DWARF::Abbrev)"* [ %600, %invoke_out183 ], [ null, %else155 ], !dbg !1621 | |
%605 = load %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %info, !dbg !1621 | |
%606 = load %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %strings, !dbg !1621 | |
store %"Debug::DWARF::Info" %605, %"Debug::DWARF::Info"* %45, !dbg !1610 | |
%607 = load %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %45, !dbg !1610 | |
store %"Debug::DWARF::Info" %607, %"Debug::DWARF::Info"* %info186, !dbg !1610 | |
store %"(Debug::DWARF::Strings | Nil)" %606, %"(Debug::DWARF::Strings | Nil)"* %46, !dbg !1610 | |
%608 = load %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %46, !dbg !1610 | |
store %"(Debug::DWARF::Strings | Nil)" %608, %"(Debug::DWARF::Strings | Nil)"* %strings187, !dbg !1610 | |
%609 = getelementptr inbounds %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %info186, i32 0, i32 6, !dbg !1610 | |
%610 = load i64, i64* %609, !dbg !1610 | |
%611 = getelementptr inbounds %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %info186, i32 0, i32 0, !dbg !1610 | |
%612 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %611, i32 0, i32 0, !dbg !1610 | |
%613 = load i32, i32* %612, !dbg !1610 | |
%614 = icmp eq i32 161, %613, !dbg !1610 | |
%615 = and i1 true, %614, !dbg !1610 | |
br i1 %615, label %current_def194, label %next_def195, !dbg !1610 | |
current_def194: ; preds = %exit184 | |
%616 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %611, i32 0, i32 1, !dbg !1610 | |
%617 = bitcast [1 x i64]* %616 to i32*, !dbg !1610 | |
%618 = load i32, i32* %617, !dbg !1610 | |
%619 = zext i32 %618 to i64, !dbg !1610 | |
%620 = add i64 %610, %619, !dbg !1610 | |
br label %exit196, !dbg !1610 | |
next_def195: ; preds = %exit184 | |
%621 = icmp eq i32 163, %613, !dbg !1610 | |
%622 = and i1 true, %621, !dbg !1610 | |
br i1 %622, label %current_def197, label %next_def198, !dbg !1610 | |
exit196: ; preds = %current_def197, %current_def194 | |
%623 = phi i64 [ %620, %current_def194 ], [ %628, %current_def197 ], !dbg !1610 | |
store i64 %623, i64* %end_offset, !dbg !1641 | |
%624 = call %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* @"*Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))@Array(T)::new:Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"(i32 538), !dbg !1642 | |
store %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %624, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes191, !dbg !1643 | |
br label %while199, !dbg !1643 | |
current_def197: ; preds = %next_def195 | |
%625 = getelementptr inbounds %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %611, i32 0, i32 1, !dbg !1610 | |
%626 = bitcast [1 x i64]* %625 to i64*, !dbg !1610 | |
%627 = load i64, i64* %626, !dbg !1610 | |
%628 = add i64 %610, %627, !dbg !1610 | |
br label %exit196, !dbg !1610 | |
next_def198: ; preds = %next_def195 | |
unreachable, !dbg !1610 | |
while199: ; preds = %exit408, %exit196 | |
%629 = getelementptr inbounds %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %info186, i32 0, i32 8, !dbg !1644 | |
%630 = load i32*, i32** %629, !dbg !1644 | |
%631 = invoke i64 @"*IO::FileDescriptor+@IO#tell:Int64"(i32* %630) | |
to label %invoke_out202 unwind label %rescue131, !dbg !1644 | |
body200: ; preds = %invoke_out202 | |
%632 = getelementptr inbounds %"Debug::DWARF::Info", %"Debug::DWARF::Info"* %info186, i32 0, i32 8, !dbg !1644 | |
%633 = load i32*, i32** %632, !dbg !1644 | |
%634 = invoke i32 @"*Debug::DWARF::read_unsigned_leb128<IO::FileDescriptor+>:UInt32"(i32* %633) | |
to label %invoke_out203 unwind label %rescue131, !dbg !1645 | |
exit201: ; preds = %invoke_out202 | |
br label %while133, !dbg !1610 | |
invoke_out202: ; preds = %while199 | |
%635 = load i64, i64* %end_offset, !dbg !1644 | |
%636 = icmp slt i64 %631, %635, !dbg !1644 | |
br i1 %636, label %body200, label %exit201, !dbg !1644 | |
invoke_out203: ; preds = %body200 | |
store i32 %634, i32* %code192, !dbg !1646 | |
%637 = load %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes191, !dbg !1646 | |
%638 = invoke %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* @"*Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))@Array(T)#clear:Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"(%"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %637) | |
to label %invoke_out204 unwind label %rescue131, !dbg !1647 | |
invoke_out204: ; preds = %invoke_out203 | |
%639 = invoke %"Array(Debug::DWARF::Abbrev)"* @"*Debug::DWARF::Info#abbreviations:Array(Debug::DWARF::Abbrev)"(%"Debug::DWARF::Info"* %info186) | |
to label %invoke_out207 unwind label %rescue131, !dbg !1622 | |
then205: ; preds = %invoke_out208 | |
%640 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev193, i32 0, i32 1, !dbg !1648 | |
%641 = bitcast [3 x i64]* %640 to %"Debug::DWARF::Abbrev"*, !dbg !1648 | |
%642 = getelementptr inbounds %"Debug::DWARF::Abbrev", %"Debug::DWARF::Abbrev"* %641, i32 0, i32 2, !dbg !1648 | |
%643 = load %"Array(Debug::DWARF::Abbrev::Attribute)"*, %"Array(Debug::DWARF::Abbrev::Attribute)"** %642, !dbg !1648 | |
store i32 0, i32* %i210, !dbg !1633 | |
br label %while211, !dbg !1633 | |
else206: ; preds = %invoke_out208 | |
%644 = load i32, i32* %code192, !dbg !1610 | |
%645 = load %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes191, !dbg !1610 | |
store i32 %644, i32* %code, !dbg !1610 | |
%646 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %646, !dbg !1610 | |
%647 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 1, !dbg !1610 | |
store [3 x i64] zeroinitializer, [3 x i64]* %647, !dbg !1610 | |
store %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %645, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes, !dbg !1610 | |
%648 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 0, !dbg !1610 | |
%649 = load i32, i32* %648, !dbg !1610 | |
%650 = icmp eq i32 %649, 0, !dbg !1610 | |
%651 = xor i1 %650, true, !dbg !1610 | |
%652 = and i1 true, %651, !dbg !1610 | |
br i1 %652, label %then411, label %else412, !dbg !1610 | |
invoke_out207: ; preds = %invoke_out204 | |
%653 = load i32, i32* %code192, !dbg !1622 | |
%654 = sub i32 %653, 1, !dbg !1622 | |
%655 = invoke %"(Debug::DWARF::Abbrev | Nil)" @"*Array(Debug::DWARF::Abbrev)@Indexable(T)#[]?<UInt32>:(Debug::DWARF::Abbrev | Nil)"(%"Array(Debug::DWARF::Abbrev)"* %639, i32 %654) | |
to label %invoke_out208 unwind label %rescue131, !dbg !1622 | |
invoke_out208: ; preds = %invoke_out207 | |
store %"(Debug::DWARF::Abbrev | Nil)" %655, %"(Debug::DWARF::Abbrev | Nil)"* %47, !dbg !1622 | |
%656 = load %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %47, !dbg !1648 | |
store %"(Debug::DWARF::Abbrev | Nil)" %656, %"(Debug::DWARF::Abbrev | Nil)"* %abbrev193, !dbg !1648 | |
%657 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %47, i32 0, i32 0, !dbg !1648 | |
%658 = load i32, i32* %657, !dbg !1648 | |
%659 = icmp eq i32 %658, 0, !dbg !1648 | |
%660 = xor i1 %659, true, !dbg !1648 | |
%661 = and i1 true, %660, !dbg !1648 | |
br i1 %661, label %then205, label %else206, !dbg !1648 | |
while211: ; preds = %invoke_out216, %then205 | |
%662 = load i32, i32* %i210, !dbg !1634 | |
%663 = getelementptr inbounds %"Array(Debug::DWARF::Abbrev::Attribute)", %"Array(Debug::DWARF::Abbrev::Attribute)"* %643, i32 0, i32 1, !dbg !1634 | |
%664 = load i32, i32* %663, !dbg !1634 | |
%665 = icmp slt i32 %662, %664, !dbg !1634 | |
br i1 %665, label %body212, label %exit213, !dbg !1634 | |
body212: ; preds = %while211 | |
%666 = load i32, i32* %i210, !dbg !1634 | |
store i32 %666, i32* %i209, !dbg !1634 | |
%667 = load i32, i32* %i209, !dbg !1634 | |
%668 = invoke %"Debug::DWARF::Abbrev::Attribute" @"*Array(Debug::DWARF::Abbrev::Attribute)@Array(T)#unsafe_fetch<Int32>:Debug::DWARF::Abbrev::Attribute"(%"Array(Debug::DWARF::Abbrev::Attribute)"* %643, i32 %667) | |
to label %invoke_out214 unwind label %rescue131, !dbg !1616 | |
exit213: ; preds = %while211 | |
%669 = load i32, i32* %code192, !dbg !1618 | |
%670 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev193, i32 0, i32 1, !dbg !1618 | |
%671 = bitcast [3 x i64]* %670 to %"Debug::DWARF::Abbrev"*, !dbg !1618 | |
%672 = load %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes191, !dbg !1618 | |
store i32 %669, i32* %code, !dbg !1618 | |
%673 = load %"Debug::DWARF::Abbrev", %"Debug::DWARF::Abbrev"* %671, !dbg !1618 | |
%674 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 0, !dbg !1618 | |
store i32 345, i32* %674, !dbg !1618 | |
%675 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 1, !dbg !1618 | |
%676 = bitcast [3 x i64]* %675 to %"Debug::DWARF::Abbrev"*, !dbg !1618 | |
store %"Debug::DWARF::Abbrev" %673, %"Debug::DWARF::Abbrev"* %676, !dbg !1618 | |
store %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %672, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes, !dbg !1618 | |
%677 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 0, !dbg !1610 | |
%678 = load i32, i32* %677, !dbg !1610 | |
%679 = icmp eq i32 %678, 0, !dbg !1610 | |
%680 = xor i1 %679, true, !dbg !1610 | |
%681 = and i1 true, %680, !dbg !1610 | |
br i1 %681, label %then219, label %else220, !dbg !1610 | |
invoke_out214: ; preds = %body212 | |
store %"Debug::DWARF::Abbrev::Attribute" %668, %"Debug::DWARF::Abbrev::Attribute"* %48, !dbg !1616 | |
%682 = load %"Debug::DWARF::Abbrev::Attribute", %"Debug::DWARF::Abbrev::Attribute"* %48, !dbg !1616 | |
store %"Debug::DWARF::Abbrev::Attribute" %682, %"Debug::DWARF::Abbrev::Attribute"* %attr, !dbg !1616 | |
%683 = getelementptr inbounds %"Debug::DWARF::Abbrev::Attribute", %"Debug::DWARF::Abbrev::Attribute"* %attr, i32 0, i32 1, !dbg !1616 | |
%684 = load i32, i32* %683, !dbg !1616 | |
%685 = invoke %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" @"*Debug::DWARF::Info#read_attribute_value<Debug::DWARF::FORM>:(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"(%"Debug::DWARF::Info"* %info186, i32 %684) | |
to label %invoke_out215 unwind label %rescue131, !dbg !1624 | |
invoke_out215: ; preds = %invoke_out214 | |
store %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %685, %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %49, !dbg !1624 | |
%686 = load %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %49, !dbg !1625 | |
store %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %686, %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %value, !dbg !1625 | |
%687 = load %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes191, !dbg !1625 | |
%688 = getelementptr inbounds %"Debug::DWARF::Abbrev::Attribute", %"Debug::DWARF::Abbrev::Attribute"* %attr, i32 0, i32 0, !dbg !1625 | |
%689 = load i32, i32* %688, !dbg !1625 | |
%690 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %50, i32 0, i32 0, !dbg !1625 | |
store i32 %689, i32* %690, !dbg !1625 | |
%691 = getelementptr inbounds %"Debug::DWARF::Abbrev::Attribute", %"Debug::DWARF::Abbrev::Attribute"* %attr, i32 0, i32 1, !dbg !1625 | |
%692 = load i32, i32* %691, !dbg !1625 | |
%693 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %50, i32 0, i32 1, !dbg !1625 | |
store i32 %692, i32* %693, !dbg !1625 | |
%694 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %50, i32 0, i32 2, !dbg !1625 | |
%695 = load %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %value, !dbg !1625 | |
store %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %695, %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %694, !dbg !1625 | |
%696 = load %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %50, !dbg !1625 | |
%697 = invoke %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* @"*Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))@Array(T)#<<<Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)>:Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"(%"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %687, %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %696) | |
to label %invoke_out216 unwind label %rescue131, !dbg !1649 | |
invoke_out216: ; preds = %invoke_out215 | |
%698 = load i32, i32* %i210, !dbg !1649 | |
%699 = add i32 %698, 1, !dbg !1649 | |
store i32 %699, i32* %i210, !dbg !1618 | |
br label %while211, !dbg !1618 | |
then217: ; preds = %exit221 | |
br label %exit222, !dbg !1610 | |
else218: ; preds = %exit221 | |
br label %exit223, !dbg !1610 | |
then219: ; preds = %exit213 | |
%700 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 1, !dbg !1610 | |
%701 = bitcast [3 x i64]* %700 to %"Debug::DWARF::Abbrev"*, !dbg !1610 | |
%702 = getelementptr inbounds %"Debug::DWARF::Abbrev", %"Debug::DWARF::Abbrev"* %701, i32 0, i32 1, !dbg !1610 | |
%703 = load i32, i32* %702, !dbg !1610 | |
%704 = call i1 @"*Debug::DWARF::TAG#subprogram?:Bool"(i32 %703), !dbg !1610 | |
%705 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %51, i32 0, i32 0, !dbg !1610 | |
store i32 171, i32* %705, !dbg !1610 | |
%706 = zext i1 %704 to i64, !dbg !1610 | |
%707 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %51, i32 0, i32 1, !dbg !1610 | |
%708 = bitcast [1 x i64]* %707 to i64*, !dbg !1610 | |
store i64 %706, i64* %708, !dbg !1610 | |
br label %exit221, !dbg !1610 | |
else220: ; preds = %exit213 | |
%709 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %52, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %709, !dbg !1610 | |
%710 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %52, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %710, !dbg !1610 | |
br label %exit221, !dbg !1610 | |
exit221: ; preds = %else220, %then219 | |
%711 = phi %"(Bool | Nil)"* [ %51, %then219 ], [ %52, %else220 ], !dbg !1610 | |
%712 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %711, i32 0, i32 0, !dbg !1610 | |
%713 = load i32, i32* %712, !dbg !1610 | |
%714 = icmp eq i32 %713, 0, !dbg !1610 | |
%715 = xor i1 %714, true, !dbg !1610 | |
%716 = and i1 true, %715, !dbg !1610 | |
%717 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %711, i32 0, i32 1, !dbg !1610 | |
%718 = bitcast [1 x i64]* %717 to i1*, !dbg !1610 | |
%719 = load i1, i1* %718, !dbg !1610 | |
%720 = icmp eq i32 %713, 171, !dbg !1610 | |
%721 = xor i1 %719, true, !dbg !1610 | |
%722 = and i1 %720, %721, !dbg !1610 | |
%723 = xor i1 %722, true, !dbg !1610 | |
%724 = and i1 %716, %723, !dbg !1610 | |
br i1 %724, label %then217, label %else218, !dbg !1610 | |
exit222: ; preds = %then217 | |
%725 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %725, !dbg !1610 | |
%726 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %726, !dbg !1610 | |
%727 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %727, !dbg !1610 | |
%728 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %728, !dbg !1610 | |
store %String* null, %String** %name190, !dbg !1610 | |
%729 = load %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes, !dbg !1610 | |
store i32 0, i32* %i226, !dbg !1633 | |
br label %while227, !dbg !1633 | |
exit223: ; preds = %exit407, %else218 | |
br label %exit408, !dbg !1610 | |
while227: ; preds = %exit299, %exit222 | |
%730 = load i32, i32* %i226, !dbg !1634 | |
%731 = getelementptr inbounds %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))", %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %729, i32 0, i32 1, !dbg !1634 | |
%732 = load i32, i32* %731, !dbg !1634 | |
%733 = icmp slt i32 %730, %732, !dbg !1634 | |
br i1 %733, label %body228, label %exit229, !dbg !1634 | |
body228: ; preds = %while227 | |
%734 = load i32, i32* %i226, !dbg !1634 | |
store i32 %734, i32* %i225, !dbg !1634 | |
%735 = load i32, i32* %i225, !dbg !1634 | |
%736 = invoke %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" @"*Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))@Array(T)#unsafe_fetch<Int32>:Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"(%"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %729, i32 %735) | |
to label %invoke_out230 unwind label %rescue131, !dbg !1616 | |
exit229: ; preds = %while227 | |
%737 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
%738 = load i32, i32* %737, !dbg !1610 | |
%739 = icmp eq i32 %738, 0, !dbg !1610 | |
%740 = xor i1 %739, true, !dbg !1610 | |
%741 = and i1 true, %740, !dbg !1610 | |
br i1 %741, label %then402, label %else403, !dbg !1610 | |
invoke_out230: ; preds = %body228 | |
store %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %736, %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %53, !dbg !1616 | |
%742 = load %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %53, !dbg !1616 | |
store %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %742, %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1, !dbg !1616 | |
%743 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1, i32 0, i32 0, !dbg !1616 | |
%744 = load i32, i32* %743, !dbg !1616 | |
store i32 %744, i32* %at, !dbg !1610 | |
%745 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1, i32 0, i32 1, !dbg !1610 | |
%746 = load i32, i32* %745, !dbg !1610 | |
store i32 %746, i32* %form, !dbg !1610 | |
%747 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1, i32 0, i32 2, !dbg !1610 | |
%748 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %747 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"*, !dbg !1610 | |
%749 = load %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %748, !dbg !1610 | |
store %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)" %749, %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, !dbg !1610 | |
%750 = load i32, i32* %at, !dbg !1610 | |
%751 = call i1 @"*Debug::DWARF::AT@Object#===<Debug::DWARF::AT>:Bool"(i32 3, i32 %750), !dbg !1610 | |
br i1 %751, label %then231, label %else232, !dbg !1610 | |
then231: ; preds = %invoke_out230 | |
%752 = load i32, i32* %form, !dbg !1610 | |
%753 = call i1 @"*Debug::DWARF::FORM#strp?:Bool"(i32 %752), !dbg !1610 | |
br i1 %753, label %then233, label %else234, !dbg !1610 | |
else232: ; preds = %invoke_out230 | |
%754 = load i32, i32* %at, !dbg !1610 | |
%755 = call i1 @"*Debug::DWARF::AT@Object#===<Debug::DWARF::AT>:Bool"(i32 17, i32 %754), !dbg !1610 | |
br i1 %755, label %then300, label %else301, !dbg !1610 | |
then233: ; preds = %then231 | |
%756 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %strings187, i32 0, i32 0, !dbg !1610 | |
%757 = load i32, i32* %756, !dbg !1610 | |
%758 = icmp eq i32 351, %757, !dbg !1610 | |
br i1 %758, label %current_def235, label %next_def236, !dbg !1610 | |
else234: ; preds = %then231 | |
br label %exit268, !dbg !1610 | |
current_def235: ; preds = %then233 | |
%759 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %strings187, i32 0, i32 1, !dbg !1610 | |
%760 = bitcast [5 x i64]* %759 to %"Debug::DWARF::Strings"*, !dbg !1610 | |
%761 = load %"Debug::DWARF::Strings", %"Debug::DWARF::Strings"* %760, !dbg !1610 | |
store %"Debug::DWARF::Strings" %761, %"Debug::DWARF::Strings"* %__arg2, !dbg !1610 | |
%762 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%763 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 0, !dbg !1610 | |
%764 = load i32, i32* %763, !dbg !1610 | |
%765 = call i1 @"~match<(UInt32 | UInt64)>"(i32 %764), !dbg !1610 | |
br i1 %765, label %matches, label %doesnt_match, !dbg !1610 | |
next_def236: ; preds = %then233 | |
%766 = icmp eq i32 0, %757, !dbg !1610 | |
br i1 %766, label %current_def265, label %next_def266, !dbg !1610 | |
matches: ; preds = %current_def235 | |
%767 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762 to %"(UInt32 | UInt64)"*, !dbg !1610 | |
%768 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %767, !dbg !1610 | |
%769 = invoke %String* @"*Debug::DWARF::Strings#decode<(UInt32 | UInt64)>:String"(%"Debug::DWARF::Strings"* %__arg2, %"(UInt32 | UInt64)" %768) | |
to label %invoke_out263 unwind label %rescue131, !dbg !1610 | |
doesnt_match: ; preds = %current_def235 | |
%770 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 102) | |
to label %invoke_out237 unwind label %rescue131, !dbg !1610 | |
invoke_out237: ; preds = %doesnt_match | |
%771 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %770, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out238 unwind label %rescue131, !dbg !1610 | |
invoke_out238: ; preds = %invoke_out237 | |
%772 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 0, !dbg !1610 | |
%773 = load i32, i32* %772, !dbg !1610 | |
%774 = icmp eq i32 171, %773, !dbg !1610 | |
br i1 %774, label %current_def239, label %next_def240, !dbg !1610 | |
current_def239: ; preds = %invoke_out238 | |
%775 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%776 = bitcast [2 x i64]* %775 to i8*, !dbg !1610 | |
%777 = load i8, i8* %776, !dbg !1610 | |
%778 = trunc i8 %777 to i1, !dbg !1610 | |
%779 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %54, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %779, !dbg !1610 | |
%780 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %54, i32 0, i32 1, !dbg !1610 | |
%781 = bitcast [1 x i64]* %780 to i32*, !dbg !1610 | |
store i32 718, i32* %781, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def240: ; preds = %invoke_out238 | |
%782 = icmp eq i32 160, %773, !dbg !1610 | |
br i1 %782, label %current_def242, label %next_def243, !dbg !1610 | |
exit241: ; preds = %current_def256, %current_def254, %current_def252, %current_def250, %current_def248, %current_def246, %current_def244, %current_def242, %current_def239 | |
%783 = phi %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %54, %current_def239 ], [ %55, %current_def242 ], [ %56, %current_def244 ], [ %57, %current_def246 ], [ %58, %current_def248 ], [ %59, %current_def250 ], [ %60, %current_def252 ], [ %61, %current_def254 ], [ %62, %current_def256 ], !dbg !1610 | |
%784 = load %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %783, !dbg !1610 | |
%785 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %771, %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %784) | |
to label %invoke_out258 unwind label %rescue131, !dbg !1610 | |
current_def242: ; preds = %next_def240 | |
%786 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%787 = bitcast [2 x i64]* %786 to i32*, !dbg !1610 | |
%788 = load i32, i32* %787, !dbg !1610 | |
%789 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %55, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %789, !dbg !1610 | |
%790 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %55, i32 0, i32 1, !dbg !1610 | |
%791 = bitcast [1 x i64]* %790 to i32*, !dbg !1610 | |
store i32 708, i32* %791, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def243: ; preds = %next_def240 | |
%792 = icmp eq i32 162, %773, !dbg !1610 | |
br i1 %792, label %current_def244, label %next_def245, !dbg !1610 | |
current_def244: ; preds = %next_def243 | |
%793 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%794 = bitcast [2 x i64]* %793 to i64*, !dbg !1610 | |
%795 = load i64, i64* %794, !dbg !1610 | |
%796 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %56, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %796, !dbg !1610 | |
%797 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %56, i32 0, i32 1, !dbg !1610 | |
%798 = bitcast [1 x i64]* %797 to i32*, !dbg !1610 | |
store i32 710, i32* %798, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def245: ; preds = %next_def243 | |
%799 = icmp eq i32 438, %773, !dbg !1610 | |
br i1 %799, label %current_def246, label %next_def247, !dbg !1610 | |
current_def246: ; preds = %next_def245 | |
%800 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%801 = bitcast [2 x i64]* %800 to %"Slice(UInt8)"*, !dbg !1610 | |
%802 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %57, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %802, !dbg !1610 | |
%803 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %57, i32 0, i32 1, !dbg !1610 | |
%804 = bitcast [1 x i64]* %803 to i32*, !dbg !1610 | |
store i32 1092, i32* %804, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def247: ; preds = %next_def245 | |
%805 = icmp eq i32 1, %773, !dbg !1610 | |
br i1 %805, label %current_def248, label %next_def249, !dbg !1610 | |
current_def248: ; preds = %next_def247 | |
%806 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%807 = bitcast [2 x i64]* %806 to %String**, !dbg !1610 | |
%808 = load %String*, %String** %807, !dbg !1610 | |
%809 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %58, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %809, !dbg !1610 | |
%810 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %58, i32 0, i32 1, !dbg !1610 | |
%811 = bitcast [1 x i64]* %810 to i32*, !dbg !1610 | |
store i32 485, i32* %811, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def249: ; preds = %next_def247 | |
%812 = icmp eq i32 159, %773, !dbg !1610 | |
br i1 %812, label %current_def250, label %next_def251, !dbg !1610 | |
current_def250: ; preds = %next_def249 | |
%813 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%814 = bitcast [2 x i64]* %813 to i16*, !dbg !1610 | |
%815 = load i16, i16* %814, !dbg !1610 | |
%816 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %59, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %816, !dbg !1610 | |
%817 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %59, i32 0, i32 1, !dbg !1610 | |
%818 = bitcast [1 x i64]* %817 to i32*, !dbg !1610 | |
store i32 707, i32* %818, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def251: ; preds = %next_def249 | |
%819 = icmp eq i32 161, %773, !dbg !1610 | |
br i1 %819, label %current_def252, label %next_def253, !dbg !1610 | |
current_def252: ; preds = %next_def251 | |
%820 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%821 = bitcast [2 x i64]* %820 to i32*, !dbg !1610 | |
%822 = load i32, i32* %821, !dbg !1610 | |
%823 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %60, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %823, !dbg !1610 | |
%824 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %60, i32 0, i32 1, !dbg !1610 | |
%825 = bitcast [1 x i64]* %824 to i32*, !dbg !1610 | |
store i32 709, i32* %825, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def253: ; preds = %next_def251 | |
%826 = icmp eq i32 163, %773, !dbg !1610 | |
br i1 %826, label %current_def254, label %next_def255, !dbg !1610 | |
current_def254: ; preds = %next_def253 | |
%827 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%828 = bitcast [2 x i64]* %827 to i64*, !dbg !1610 | |
%829 = load i64, i64* %828, !dbg !1610 | |
%830 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %61, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %830, !dbg !1610 | |
%831 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %61, i32 0, i32 1, !dbg !1610 | |
%832 = bitcast [1 x i64]* %831 to i32*, !dbg !1610 | |
store i32 711, i32* %832, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def255: ; preds = %next_def253 | |
%833 = icmp eq i32 157, %773, !dbg !1610 | |
br i1 %833, label %current_def256, label %next_def257, !dbg !1610 | |
current_def256: ; preds = %next_def255 | |
%834 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %762, i32 0, i32 1, !dbg !1610 | |
%835 = bitcast [2 x i64]* %834 to i8*, !dbg !1610 | |
%836 = load i8, i8* %835, !dbg !1610 | |
%837 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %62, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %837, !dbg !1610 | |
%838 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %62, i32 0, i32 1, !dbg !1610 | |
%839 = bitcast [1 x i64]* %838 to i32*, !dbg !1610 | |
store i32 705, i32* %839, !dbg !1610 | |
br label %exit241, !dbg !1610 | |
next_def257: ; preds = %next_def255 | |
unreachable, !dbg !1610 | |
invoke_out258: ; preds = %exit241 | |
%840 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %785, %String* bitcast ({ i32, i32, i32, [29 x i8] }* @"' to (UInt32 | UInt6...'" to %String*)) | |
to label %invoke_out259 unwind label %rescue131, !dbg !1610 | |
invoke_out259: ; preds = %invoke_out258 | |
%841 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %840, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'" to %String*)) | |
to label %invoke_out260 unwind label %rescue131, !dbg !1610 | |
invoke_out260: ; preds = %invoke_out259 | |
%842 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %841) | |
to label %invoke_out261 unwind label %rescue131, !dbg !1610 | |
invoke_out261: ; preds = %invoke_out260 | |
%843 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %842), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %843) | |
to label %invoke_out262 unwind label %rescue131, !dbg !1610 | |
invoke_out262: ; preds = %invoke_out261 | |
unreachable, !dbg !1610 | |
invoke_out263: ; preds = %matches | |
br label %exit264, !dbg !1610 | |
exit264: ; preds = %current_def265, %invoke_out263 | |
%844 = phi %String* [ %769, %invoke_out263 ], [ null, %current_def265 ], !dbg !1610 | |
%845 = icmp eq %String* %844, null, !dbg !1610 | |
%846 = select i1 %845, i32 0, i32 1, !dbg !1610 | |
%847 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 0, !dbg !1610 | |
store i32 %846, i32* %847, !dbg !1610 | |
%848 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%849 = bitcast [2 x i64]* %848 to %String**, !dbg !1610 | |
store %String* %844, %String** %849, !dbg !1610 | |
br label %exit268, !dbg !1610 | |
current_def265: ; preds = %next_def236 | |
br label %exit264, !dbg !1610 | |
next_def266: ; preds = %next_def236 | |
unreachable, !dbg !1610 | |
exit268: ; preds = %else234, %exit264 | |
%850 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 0, !dbg !1610 | |
%851 = load i32, i32* %850, !dbg !1610 | |
%852 = icmp eq i32 1, %851, !dbg !1610 | |
br i1 %852, label %matches269, label %doesnt_match270, !dbg !1610 | |
matches269: ; preds = %exit268 | |
%853 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%854 = bitcast [2 x i64]* %853 to %String**, !dbg !1610 | |
%855 = load %String*, %String** %854, !dbg !1610 | |
store %String* %855, %String** %name190, !dbg !1610 | |
%856 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %73, i32 0, i32 0, !dbg !1610 | |
store i32 1, i32* %856, !dbg !1610 | |
%857 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %73, i32 0, i32 1, !dbg !1610 | |
%858 = bitcast [1 x i64]* %857 to %String**, !dbg !1610 | |
store %String* %855, %String** %858, !dbg !1610 | |
br label %exit299, !dbg !1610 | |
doesnt_match270: ; preds = %exit268 | |
%859 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out271 unwind label %rescue131, !dbg !1610 | |
invoke_out271: ; preds = %doesnt_match270 | |
%860 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %859, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out272 unwind label %rescue131, !dbg !1610 | |
invoke_out272: ; preds = %invoke_out271 | |
%861 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 0, !dbg !1610 | |
%862 = load i32, i32* %861, !dbg !1610 | |
%863 = icmp eq i32 171, %862, !dbg !1610 | |
br i1 %863, label %current_def273, label %next_def274, !dbg !1610 | |
current_def273: ; preds = %invoke_out272 | |
%864 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%865 = bitcast [2 x i64]* %864 to i8*, !dbg !1610 | |
%866 = load i8, i8* %865, !dbg !1610 | |
%867 = trunc i8 %866 to i1, !dbg !1610 | |
%868 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %63, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %868, !dbg !1610 | |
%869 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %63, i32 0, i32 1, !dbg !1610 | |
%870 = bitcast [1 x i64]* %869 to i32*, !dbg !1610 | |
store i32 718, i32* %870, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def274: ; preds = %invoke_out272 | |
%871 = icmp eq i32 160, %862, !dbg !1610 | |
br i1 %871, label %current_def276, label %next_def277, !dbg !1610 | |
exit275: ; preds = %current_def292, %current_def290, %current_def288, %current_def286, %current_def284, %current_def282, %current_def280, %current_def278, %current_def276, %current_def273 | |
%872 = phi %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %63, %current_def273 ], [ %64, %current_def276 ], [ %65, %current_def278 ], [ %66, %current_def280 ], [ %67, %current_def282 ], [ %68, %current_def284 ], [ %69, %current_def286 ], [ %70, %current_def288 ], [ %71, %current_def290 ], [ %72, %current_def292 ], !dbg !1610 | |
%873 = load %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %872, !dbg !1610 | |
%874 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %860, %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %873) | |
to label %invoke_out294 unwind label %rescue131, !dbg !1610 | |
current_def276: ; preds = %next_def274 | |
%875 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%876 = bitcast [2 x i64]* %875 to i32*, !dbg !1610 | |
%877 = load i32, i32* %876, !dbg !1610 | |
%878 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %64, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %878, !dbg !1610 | |
%879 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %64, i32 0, i32 1, !dbg !1610 | |
%880 = bitcast [1 x i64]* %879 to i32*, !dbg !1610 | |
store i32 708, i32* %880, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def277: ; preds = %next_def274 | |
%881 = icmp eq i32 162, %862, !dbg !1610 | |
br i1 %881, label %current_def278, label %next_def279, !dbg !1610 | |
current_def278: ; preds = %next_def277 | |
%882 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%883 = bitcast [2 x i64]* %882 to i64*, !dbg !1610 | |
%884 = load i64, i64* %883, !dbg !1610 | |
%885 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %65, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %885, !dbg !1610 | |
%886 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %65, i32 0, i32 1, !dbg !1610 | |
%887 = bitcast [1 x i64]* %886 to i32*, !dbg !1610 | |
store i32 710, i32* %887, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def279: ; preds = %next_def277 | |
%888 = icmp eq i32 438, %862, !dbg !1610 | |
br i1 %888, label %current_def280, label %next_def281, !dbg !1610 | |
current_def280: ; preds = %next_def279 | |
%889 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%890 = bitcast [2 x i64]* %889 to %"Slice(UInt8)"*, !dbg !1610 | |
%891 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %66, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %891, !dbg !1610 | |
%892 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %66, i32 0, i32 1, !dbg !1610 | |
%893 = bitcast [1 x i64]* %892 to i32*, !dbg !1610 | |
store i32 1092, i32* %893, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def281: ; preds = %next_def279 | |
%894 = icmp eq i32 1, %862, !dbg !1610 | |
br i1 %894, label %current_def282, label %next_def283, !dbg !1610 | |
current_def282: ; preds = %next_def281 | |
%895 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%896 = bitcast [2 x i64]* %895 to %String**, !dbg !1610 | |
%897 = load %String*, %String** %896, !dbg !1610 | |
%898 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %67, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %898, !dbg !1610 | |
%899 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %67, i32 0, i32 1, !dbg !1610 | |
%900 = bitcast [1 x i64]* %899 to i32*, !dbg !1610 | |
store i32 485, i32* %900, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def283: ; preds = %next_def281 | |
%901 = icmp eq i32 159, %862, !dbg !1610 | |
br i1 %901, label %current_def284, label %next_def285, !dbg !1610 | |
current_def284: ; preds = %next_def283 | |
%902 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%903 = bitcast [2 x i64]* %902 to i16*, !dbg !1610 | |
%904 = load i16, i16* %903, !dbg !1610 | |
%905 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %68, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %905, !dbg !1610 | |
%906 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %68, i32 0, i32 1, !dbg !1610 | |
%907 = bitcast [1 x i64]* %906 to i32*, !dbg !1610 | |
store i32 707, i32* %907, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def285: ; preds = %next_def283 | |
%908 = icmp eq i32 161, %862, !dbg !1610 | |
br i1 %908, label %current_def286, label %next_def287, !dbg !1610 | |
current_def286: ; preds = %next_def285 | |
%909 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%910 = bitcast [2 x i64]* %909 to i32*, !dbg !1610 | |
%911 = load i32, i32* %910, !dbg !1610 | |
%912 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %69, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %912, !dbg !1610 | |
%913 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %69, i32 0, i32 1, !dbg !1610 | |
%914 = bitcast [1 x i64]* %913 to i32*, !dbg !1610 | |
store i32 709, i32* %914, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def287: ; preds = %next_def285 | |
%915 = icmp eq i32 163, %862, !dbg !1610 | |
br i1 %915, label %current_def288, label %next_def289, !dbg !1610 | |
current_def288: ; preds = %next_def287 | |
%916 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%917 = bitcast [2 x i64]* %916 to i64*, !dbg !1610 | |
%918 = load i64, i64* %917, !dbg !1610 | |
%919 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %70, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %919, !dbg !1610 | |
%920 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %70, i32 0, i32 1, !dbg !1610 | |
%921 = bitcast [1 x i64]* %920 to i32*, !dbg !1610 | |
store i32 711, i32* %921, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def289: ; preds = %next_def287 | |
%922 = icmp eq i32 157, %862, !dbg !1610 | |
br i1 %922, label %current_def290, label %next_def291, !dbg !1610 | |
current_def290: ; preds = %next_def289 | |
%923 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224, i32 0, i32 1, !dbg !1610 | |
%924 = bitcast [2 x i64]* %923 to i8*, !dbg !1610 | |
%925 = load i8, i8* %924, !dbg !1610 | |
%926 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %71, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %926, !dbg !1610 | |
%927 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %71, i32 0, i32 1, !dbg !1610 | |
%928 = bitcast [1 x i64]* %927 to i32*, !dbg !1610 | |
store i32 705, i32* %928, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def291: ; preds = %next_def289 | |
%929 = icmp eq i32 0, %862, !dbg !1610 | |
br i1 %929, label %current_def292, label %next_def293, !dbg !1610 | |
current_def292: ; preds = %next_def291 | |
%930 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %72, i32 0, i32 0, !dbg !1610 | |
store i32 717, i32* %930, !dbg !1610 | |
%931 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %72, i32 0, i32 1, !dbg !1610 | |
%932 = bitcast [1 x i64]* %931 to i32*, !dbg !1610 | |
store i32 717, i32* %932, !dbg !1610 | |
br label %exit275, !dbg !1610 | |
next_def293: ; preds = %next_def291 | |
unreachable, !dbg !1610 | |
invoke_out294: ; preds = %exit275 | |
%933 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %874, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to String failed'" to %String*)) | |
to label %invoke_out295 unwind label %rescue131, !dbg !1610 | |
invoke_out295: ; preds = %invoke_out294 | |
%934 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %933, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.6" to %String*)) | |
to label %invoke_out296 unwind label %rescue131, !dbg !1610 | |
invoke_out296: ; preds = %invoke_out295 | |
%935 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %934) | |
to label %invoke_out297 unwind label %rescue131, !dbg !1610 | |
invoke_out297: ; preds = %invoke_out296 | |
%936 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %935), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %936) | |
to label %invoke_out298 unwind label %rescue131, !dbg !1610 | |
invoke_out298: ; preds = %invoke_out297 | |
unreachable, !dbg !1610 | |
exit299: ; preds = %exit330, %matches269 | |
%937 = phi %"(String | UInt64 | Nil)"* [ %73, %matches269 ], [ %1030, %exit330 ], !dbg !1610 | |
%938 = load i32, i32* %i226, !dbg !1610 | |
%939 = add i32 %938, 1, !dbg !1610 | |
store i32 %939, i32* %i226, !dbg !1618 | |
br label %while227, !dbg !1618 | |
then300: ; preds = %else232 | |
%940 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%941 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 0, !dbg !1610 | |
%942 = load i32, i32* %941, !dbg !1610 | |
%943 = icmp eq i32 163, %942, !dbg !1610 | |
br i1 %943, label %matches302, label %doesnt_match303, !dbg !1610 | |
else301: ; preds = %else232 | |
%944 = load i32, i32* %at, !dbg !1610 | |
%945 = call i1 @"*Debug::DWARF::AT@Object#===<Debug::DWARF::AT>:Bool"(i32 18, i32 %944), !dbg !1610 | |
br i1 %945, label %then331, label %else332, !dbg !1610 | |
matches302: ; preds = %then300 | |
%946 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%947 = bitcast [2 x i64]* %946 to i64*, !dbg !1610 | |
%948 = load i64, i64* %947, !dbg !1610 | |
%949 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %949, !dbg !1610 | |
%950 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%951 = bitcast [1 x i64]* %950 to i64*, !dbg !1610 | |
store i64 %948, i64* %951, !dbg !1610 | |
%952 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %83, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %952, !dbg !1610 | |
%953 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %83, i32 0, i32 1, !dbg !1610 | |
%954 = bitcast [1 x i64]* %953 to i64*, !dbg !1610 | |
store i64 %948, i64* %954, !dbg !1610 | |
br label %exit330, !dbg !1610 | |
doesnt_match303: ; preds = %then300 | |
%955 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out304 unwind label %rescue131, !dbg !1610 | |
invoke_out304: ; preds = %doesnt_match303 | |
%956 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %955, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out305 unwind label %rescue131, !dbg !1610 | |
invoke_out305: ; preds = %invoke_out304 | |
%957 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 0, !dbg !1610 | |
%958 = load i32, i32* %957, !dbg !1610 | |
%959 = icmp eq i32 171, %958, !dbg !1610 | |
br i1 %959, label %current_def306, label %next_def307, !dbg !1610 | |
current_def306: ; preds = %invoke_out305 | |
%960 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%961 = bitcast [2 x i64]* %960 to i8*, !dbg !1610 | |
%962 = load i8, i8* %961, !dbg !1610 | |
%963 = trunc i8 %962 to i1, !dbg !1610 | |
%964 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %74, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %964, !dbg !1610 | |
%965 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %74, i32 0, i32 1, !dbg !1610 | |
%966 = bitcast [1 x i64]* %965 to i32*, !dbg !1610 | |
store i32 718, i32* %966, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def307: ; preds = %invoke_out305 | |
%967 = icmp eq i32 160, %958, !dbg !1610 | |
br i1 %967, label %current_def309, label %next_def310, !dbg !1610 | |
exit308: ; preds = %current_def323, %current_def321, %current_def319, %current_def317, %current_def315, %current_def313, %current_def311, %current_def309, %current_def306 | |
%968 = phi %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %74, %current_def306 ], [ %75, %current_def309 ], [ %76, %current_def311 ], [ %77, %current_def313 ], [ %78, %current_def315 ], [ %79, %current_def317 ], [ %80, %current_def319 ], [ %81, %current_def321 ], [ %82, %current_def323 ], !dbg !1610 | |
%969 = load %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %968, !dbg !1610 | |
%970 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %956, %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %969) | |
to label %invoke_out325 unwind label %rescue131, !dbg !1610 | |
current_def309: ; preds = %next_def307 | |
%971 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%972 = bitcast [2 x i64]* %971 to i32*, !dbg !1610 | |
%973 = load i32, i32* %972, !dbg !1610 | |
%974 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %75, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %974, !dbg !1610 | |
%975 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %75, i32 0, i32 1, !dbg !1610 | |
%976 = bitcast [1 x i64]* %975 to i32*, !dbg !1610 | |
store i32 708, i32* %976, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def310: ; preds = %next_def307 | |
%977 = icmp eq i32 162, %958, !dbg !1610 | |
br i1 %977, label %current_def311, label %next_def312, !dbg !1610 | |
current_def311: ; preds = %next_def310 | |
%978 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%979 = bitcast [2 x i64]* %978 to i64*, !dbg !1610 | |
%980 = load i64, i64* %979, !dbg !1610 | |
%981 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %76, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %981, !dbg !1610 | |
%982 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %76, i32 0, i32 1, !dbg !1610 | |
%983 = bitcast [1 x i64]* %982 to i32*, !dbg !1610 | |
store i32 710, i32* %983, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def312: ; preds = %next_def310 | |
%984 = icmp eq i32 438, %958, !dbg !1610 | |
br i1 %984, label %current_def313, label %next_def314, !dbg !1610 | |
current_def313: ; preds = %next_def312 | |
%985 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%986 = bitcast [2 x i64]* %985 to %"Slice(UInt8)"*, !dbg !1610 | |
%987 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %77, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %987, !dbg !1610 | |
%988 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %77, i32 0, i32 1, !dbg !1610 | |
%989 = bitcast [1 x i64]* %988 to i32*, !dbg !1610 | |
store i32 1092, i32* %989, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def314: ; preds = %next_def312 | |
%990 = icmp eq i32 1, %958, !dbg !1610 | |
br i1 %990, label %current_def315, label %next_def316, !dbg !1610 | |
current_def315: ; preds = %next_def314 | |
%991 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%992 = bitcast [2 x i64]* %991 to %String**, !dbg !1610 | |
%993 = load %String*, %String** %992, !dbg !1610 | |
%994 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %78, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %994, !dbg !1610 | |
%995 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %78, i32 0, i32 1, !dbg !1610 | |
%996 = bitcast [1 x i64]* %995 to i32*, !dbg !1610 | |
store i32 485, i32* %996, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def316: ; preds = %next_def314 | |
%997 = icmp eq i32 159, %958, !dbg !1610 | |
br i1 %997, label %current_def317, label %next_def318, !dbg !1610 | |
current_def317: ; preds = %next_def316 | |
%998 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%999 = bitcast [2 x i64]* %998 to i16*, !dbg !1610 | |
%1000 = load i16, i16* %999, !dbg !1610 | |
%1001 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %79, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %1001, !dbg !1610 | |
%1002 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %79, i32 0, i32 1, !dbg !1610 | |
%1003 = bitcast [1 x i64]* %1002 to i32*, !dbg !1610 | |
store i32 707, i32* %1003, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def318: ; preds = %next_def316 | |
%1004 = icmp eq i32 161, %958, !dbg !1610 | |
br i1 %1004, label %current_def319, label %next_def320, !dbg !1610 | |
current_def319: ; preds = %next_def318 | |
%1005 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%1006 = bitcast [2 x i64]* %1005 to i32*, !dbg !1610 | |
%1007 = load i32, i32* %1006, !dbg !1610 | |
%1008 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %80, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %1008, !dbg !1610 | |
%1009 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %80, i32 0, i32 1, !dbg !1610 | |
%1010 = bitcast [1 x i64]* %1009 to i32*, !dbg !1610 | |
store i32 709, i32* %1010, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def320: ; preds = %next_def318 | |
%1011 = icmp eq i32 163, %958, !dbg !1610 | |
br i1 %1011, label %current_def321, label %next_def322, !dbg !1610 | |
current_def321: ; preds = %next_def320 | |
%1012 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%1013 = bitcast [2 x i64]* %1012 to i64*, !dbg !1610 | |
%1014 = load i64, i64* %1013, !dbg !1610 | |
%1015 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %81, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1015, !dbg !1610 | |
%1016 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %81, i32 0, i32 1, !dbg !1610 | |
%1017 = bitcast [1 x i64]* %1016 to i32*, !dbg !1610 | |
store i32 711, i32* %1017, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def322: ; preds = %next_def320 | |
%1018 = icmp eq i32 157, %958, !dbg !1610 | |
br i1 %1018, label %current_def323, label %next_def324, !dbg !1610 | |
current_def323: ; preds = %next_def322 | |
%1019 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %940, i32 0, i32 1, !dbg !1610 | |
%1020 = bitcast [2 x i64]* %1019 to i8*, !dbg !1610 | |
%1021 = load i8, i8* %1020, !dbg !1610 | |
%1022 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %82, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %1022, !dbg !1610 | |
%1023 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %82, i32 0, i32 1, !dbg !1610 | |
%1024 = bitcast [1 x i64]* %1023 to i32*, !dbg !1610 | |
store i32 705, i32* %1024, !dbg !1610 | |
br label %exit308, !dbg !1610 | |
next_def324: ; preds = %next_def322 | |
unreachable, !dbg !1610 | |
invoke_out325: ; preds = %exit308 | |
%1025 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %970, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to UInt64 failed'" to %String*)) | |
to label %invoke_out326 unwind label %rescue131, !dbg !1610 | |
invoke_out326: ; preds = %invoke_out325 | |
%1026 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1025, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.7" to %String*)) | |
to label %invoke_out327 unwind label %rescue131, !dbg !1610 | |
invoke_out327: ; preds = %invoke_out326 | |
%1027 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1026) | |
to label %invoke_out328 unwind label %rescue131, !dbg !1610 | |
invoke_out328: ; preds = %invoke_out327 | |
%1028 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1027), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1028) | |
to label %invoke_out329 unwind label %rescue131, !dbg !1610 | |
invoke_out329: ; preds = %invoke_out328 | |
unreachable, !dbg !1610 | |
exit330: ; preds = %exit397, %matches302 | |
%1029 = phi %"(UInt64 | Nil)"* [ %83, %matches302 ], [ %1203, %exit397 ], !dbg !1610 | |
%1030 = bitcast %"(UInt64 | Nil)"* %1029 to %"(String | UInt64 | Nil)"*, !dbg !1610 | |
br label %exit299, !dbg !1610 | |
then331: ; preds = %else301 | |
%1031 = load i32, i32* %form, !dbg !1610 | |
%1032 = call i1 @"*Debug::DWARF::FORM#addr?:Bool"(i32 %1031), !dbg !1610 | |
br i1 %1032, label %then333, label %else334, !dbg !1610 | |
else332: ; preds = %else301 | |
%1033 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %98, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1033, !dbg !1610 | |
%1034 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %98, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1034, !dbg !1610 | |
br label %exit397, !dbg !1610 | |
then333: ; preds = %then331 | |
%1035 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1036 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 0, !dbg !1610 | |
%1037 = load i32, i32* %1036, !dbg !1610 | |
%1038 = icmp eq i32 163, %1037, !dbg !1610 | |
br i1 %1038, label %matches335, label %doesnt_match336, !dbg !1610 | |
else334: ; preds = %then331 | |
%1039 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1040 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1039, i32 0, i32 0, !dbg !1610 | |
%1041 = load i32, i32* %1040, !dbg !1610 | |
%1042 = call i1 @"~match<(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)>"(i32 %1041), !dbg !1610 | |
br i1 %1042, label %then364, label %else365, !dbg !1610 | |
matches335: ; preds = %then333 | |
%1043 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1044 = bitcast [2 x i64]* %1043 to i64*, !dbg !1610 | |
%1045 = load i64, i64* %1044, !dbg !1610 | |
%1046 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1046, !dbg !1610 | |
%1047 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
%1048 = bitcast [1 x i64]* %1047 to i64*, !dbg !1610 | |
store i64 %1045, i64* %1048, !dbg !1610 | |
%1049 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %93, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1049, !dbg !1610 | |
%1050 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %93, i32 0, i32 1, !dbg !1610 | |
%1051 = bitcast [1 x i64]* %1050 to i64*, !dbg !1610 | |
store i64 %1045, i64* %1051, !dbg !1610 | |
br label %exit363, !dbg !1610 | |
doesnt_match336: ; preds = %then333 | |
%1052 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out337 unwind label %rescue131, !dbg !1610 | |
invoke_out337: ; preds = %doesnt_match336 | |
%1053 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1052, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out338 unwind label %rescue131, !dbg !1610 | |
invoke_out338: ; preds = %invoke_out337 | |
%1054 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 0, !dbg !1610 | |
%1055 = load i32, i32* %1054, !dbg !1610 | |
%1056 = icmp eq i32 171, %1055, !dbg !1610 | |
br i1 %1056, label %current_def339, label %next_def340, !dbg !1610 | |
current_def339: ; preds = %invoke_out338 | |
%1057 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1058 = bitcast [2 x i64]* %1057 to i8*, !dbg !1610 | |
%1059 = load i8, i8* %1058, !dbg !1610 | |
%1060 = trunc i8 %1059 to i1, !dbg !1610 | |
%1061 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %84, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %1061, !dbg !1610 | |
%1062 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %84, i32 0, i32 1, !dbg !1610 | |
%1063 = bitcast [1 x i64]* %1062 to i32*, !dbg !1610 | |
store i32 718, i32* %1063, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def340: ; preds = %invoke_out338 | |
%1064 = icmp eq i32 160, %1055, !dbg !1610 | |
br i1 %1064, label %current_def342, label %next_def343, !dbg !1610 | |
exit341: ; preds = %current_def356, %current_def354, %current_def352, %current_def350, %current_def348, %current_def346, %current_def344, %current_def342, %current_def339 | |
%1065 = phi %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %84, %current_def339 ], [ %85, %current_def342 ], [ %86, %current_def344 ], [ %87, %current_def346 ], [ %88, %current_def348 ], [ %89, %current_def350 ], [ %90, %current_def352 ], [ %91, %current_def354 ], [ %92, %current_def356 ], !dbg !1610 | |
%1066 = load %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %1065, !dbg !1610 | |
%1067 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %1053, %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %1066) | |
to label %invoke_out358 unwind label %rescue131, !dbg !1610 | |
current_def342: ; preds = %next_def340 | |
%1068 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1069 = bitcast [2 x i64]* %1068 to i32*, !dbg !1610 | |
%1070 = load i32, i32* %1069, !dbg !1610 | |
%1071 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %85, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %1071, !dbg !1610 | |
%1072 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %85, i32 0, i32 1, !dbg !1610 | |
%1073 = bitcast [1 x i64]* %1072 to i32*, !dbg !1610 | |
store i32 708, i32* %1073, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def343: ; preds = %next_def340 | |
%1074 = icmp eq i32 162, %1055, !dbg !1610 | |
br i1 %1074, label %current_def344, label %next_def345, !dbg !1610 | |
current_def344: ; preds = %next_def343 | |
%1075 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1076 = bitcast [2 x i64]* %1075 to i64*, !dbg !1610 | |
%1077 = load i64, i64* %1076, !dbg !1610 | |
%1078 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %86, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %1078, !dbg !1610 | |
%1079 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %86, i32 0, i32 1, !dbg !1610 | |
%1080 = bitcast [1 x i64]* %1079 to i32*, !dbg !1610 | |
store i32 710, i32* %1080, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def345: ; preds = %next_def343 | |
%1081 = icmp eq i32 438, %1055, !dbg !1610 | |
br i1 %1081, label %current_def346, label %next_def347, !dbg !1610 | |
current_def346: ; preds = %next_def345 | |
%1082 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1083 = bitcast [2 x i64]* %1082 to %"Slice(UInt8)"*, !dbg !1610 | |
%1084 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %87, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %1084, !dbg !1610 | |
%1085 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %87, i32 0, i32 1, !dbg !1610 | |
%1086 = bitcast [1 x i64]* %1085 to i32*, !dbg !1610 | |
store i32 1092, i32* %1086, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def347: ; preds = %next_def345 | |
%1087 = icmp eq i32 1, %1055, !dbg !1610 | |
br i1 %1087, label %current_def348, label %next_def349, !dbg !1610 | |
current_def348: ; preds = %next_def347 | |
%1088 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1089 = bitcast [2 x i64]* %1088 to %String**, !dbg !1610 | |
%1090 = load %String*, %String** %1089, !dbg !1610 | |
%1091 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %88, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %1091, !dbg !1610 | |
%1092 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %88, i32 0, i32 1, !dbg !1610 | |
%1093 = bitcast [1 x i64]* %1092 to i32*, !dbg !1610 | |
store i32 485, i32* %1093, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def349: ; preds = %next_def347 | |
%1094 = icmp eq i32 159, %1055, !dbg !1610 | |
br i1 %1094, label %current_def350, label %next_def351, !dbg !1610 | |
current_def350: ; preds = %next_def349 | |
%1095 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1096 = bitcast [2 x i64]* %1095 to i16*, !dbg !1610 | |
%1097 = load i16, i16* %1096, !dbg !1610 | |
%1098 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %89, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %1098, !dbg !1610 | |
%1099 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %89, i32 0, i32 1, !dbg !1610 | |
%1100 = bitcast [1 x i64]* %1099 to i32*, !dbg !1610 | |
store i32 707, i32* %1100, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def351: ; preds = %next_def349 | |
%1101 = icmp eq i32 161, %1055, !dbg !1610 | |
br i1 %1101, label %current_def352, label %next_def353, !dbg !1610 | |
current_def352: ; preds = %next_def351 | |
%1102 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1103 = bitcast [2 x i64]* %1102 to i32*, !dbg !1610 | |
%1104 = load i32, i32* %1103, !dbg !1610 | |
%1105 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %90, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %1105, !dbg !1610 | |
%1106 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %90, i32 0, i32 1, !dbg !1610 | |
%1107 = bitcast [1 x i64]* %1106 to i32*, !dbg !1610 | |
store i32 709, i32* %1107, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def353: ; preds = %next_def351 | |
%1108 = icmp eq i32 163, %1055, !dbg !1610 | |
br i1 %1108, label %current_def354, label %next_def355, !dbg !1610 | |
current_def354: ; preds = %next_def353 | |
%1109 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1110 = bitcast [2 x i64]* %1109 to i64*, !dbg !1610 | |
%1111 = load i64, i64* %1110, !dbg !1610 | |
%1112 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %91, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1112, !dbg !1610 | |
%1113 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %91, i32 0, i32 1, !dbg !1610 | |
%1114 = bitcast [1 x i64]* %1113 to i32*, !dbg !1610 | |
store i32 711, i32* %1114, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def355: ; preds = %next_def353 | |
%1115 = icmp eq i32 157, %1055, !dbg !1610 | |
br i1 %1115, label %current_def356, label %next_def357, !dbg !1610 | |
current_def356: ; preds = %next_def355 | |
%1116 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1035, i32 0, i32 1, !dbg !1610 | |
%1117 = bitcast [2 x i64]* %1116 to i8*, !dbg !1610 | |
%1118 = load i8, i8* %1117, !dbg !1610 | |
%1119 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %92, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %1119, !dbg !1610 | |
%1120 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %92, i32 0, i32 1, !dbg !1610 | |
%1121 = bitcast [1 x i64]* %1120 to i32*, !dbg !1610 | |
store i32 705, i32* %1121, !dbg !1610 | |
br label %exit341, !dbg !1610 | |
next_def357: ; preds = %next_def355 | |
unreachable, !dbg !1610 | |
invoke_out358: ; preds = %exit341 | |
%1122 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1067, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to UInt64 failed'" to %String*)) | |
to label %invoke_out359 unwind label %rescue131, !dbg !1610 | |
invoke_out359: ; preds = %invoke_out358 | |
%1123 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1122, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.8" to %String*)) | |
to label %invoke_out360 unwind label %rescue131, !dbg !1610 | |
invoke_out360: ; preds = %invoke_out359 | |
%1124 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1123) | |
to label %invoke_out361 unwind label %rescue131, !dbg !1610 | |
invoke_out361: ; preds = %invoke_out360 | |
%1125 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1124), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1125) | |
to label %invoke_out362 unwind label %rescue131, !dbg !1610 | |
invoke_out362: ; preds = %invoke_out361 | |
unreachable, !dbg !1610 | |
exit363: ; preds = %exit396, %matches335 | |
%1126 = phi %"(UInt64 | Nil)"* [ %93, %matches335 ], [ %1202, %exit396 ], !dbg !1610 | |
br label %exit397, !dbg !1610 | |
then364: ; preds = %else334 | |
%1127 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
%1128 = load i32, i32* %1127, !dbg !1610 | |
%1129 = icmp eq i32 163, %1128, !dbg !1610 | |
br i1 %1129, label %matches366, label %doesnt_match367, !dbg !1610 | |
else365: ; preds = %else334 | |
%1130 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %97, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1130, !dbg !1610 | |
%1131 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %97, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1131, !dbg !1610 | |
br label %exit396, !dbg !1610 | |
matches366: ; preds = %then364 | |
%1132 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1133 = bitcast [1 x i64]* %1132 to i64*, !dbg !1610 | |
%1134 = load i64, i64* %1133, !dbg !1610 | |
%1135 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value224 to %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1136 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 0, !dbg !1610 | |
%1137 = load i32, i32* %1136, !dbg !1610 | |
%1138 = icmp eq i32 160, %1137, !dbg !1610 | |
br i1 %1138, label %current_def380, label %next_def381, !dbg !1610 | |
doesnt_match367: ; preds = %then364 | |
%1139 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out368 unwind label %rescue131, !dbg !1610 | |
invoke_out368: ; preds = %doesnt_match367 | |
%1140 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1139, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out369 unwind label %rescue131, !dbg !1610 | |
invoke_out369: ; preds = %invoke_out368 | |
%1141 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
%1142 = load i32, i32* %1141, !dbg !1610 | |
%1143 = icmp eq i32 163, %1142, !dbg !1610 | |
br i1 %1143, label %current_def370, label %next_def371, !dbg !1610 | |
current_def370: ; preds = %invoke_out369 | |
%1144 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1145 = bitcast [1 x i64]* %1144 to i64*, !dbg !1610 | |
%1146 = load i64, i64* %1145, !dbg !1610 | |
%1147 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %94, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1147, !dbg !1610 | |
%1148 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %94, i32 0, i32 1, !dbg !1610 | |
%1149 = bitcast [1 x i64]* %1148 to i32*, !dbg !1610 | |
store i32 711, i32* %1149, !dbg !1610 | |
br label %exit372, !dbg !1610 | |
next_def371: ; preds = %invoke_out369 | |
%1150 = icmp eq i32 0, %1142, !dbg !1610 | |
br i1 %1150, label %current_def373, label %next_def374, !dbg !1610 | |
exit372: ; preds = %current_def373, %current_def370 | |
%1151 = phi %"(Nil.class | UInt64.class)"* [ %94, %current_def370 ], [ %95, %current_def373 ], !dbg !1610 | |
%1152 = load %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %1151, !dbg !1610 | |
%1153 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Nil.class | UInt64.class)>:String::Builder"(%"String::Builder"* %1140, %"(Nil.class | UInt64.class)" %1152) | |
to label %invoke_out375 unwind label %rescue131, !dbg !1610 | |
current_def373: ; preds = %next_def371 | |
%1154 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %95, i32 0, i32 0, !dbg !1610 | |
store i32 717, i32* %1154, !dbg !1610 | |
%1155 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %95, i32 0, i32 1, !dbg !1610 | |
%1156 = bitcast [1 x i64]* %1155 to i32*, !dbg !1610 | |
store i32 717, i32* %1156, !dbg !1610 | |
br label %exit372, !dbg !1610 | |
next_def374: ; preds = %next_def371 | |
unreachable, !dbg !1610 | |
invoke_out375: ; preds = %exit372 | |
%1157 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1153, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to UInt64 failed'" to %String*)) | |
to label %invoke_out376 unwind label %rescue131, !dbg !1610 | |
invoke_out376: ; preds = %invoke_out375 | |
%1158 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1157, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.9" to %String*)) | |
to label %invoke_out377 unwind label %rescue131, !dbg !1610 | |
invoke_out377: ; preds = %invoke_out376 | |
%1159 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1158) | |
to label %invoke_out378 unwind label %rescue131, !dbg !1610 | |
invoke_out378: ; preds = %invoke_out377 | |
%1160 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1159), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1160) | |
to label %invoke_out379 unwind label %rescue131, !dbg !1610 | |
invoke_out379: ; preds = %invoke_out378 | |
unreachable, !dbg !1610 | |
current_def380: ; preds = %matches366 | |
%1161 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1162 = bitcast [1 x i64]* %1161 to i32*, !dbg !1610 | |
%1163 = load i32, i32* %1162, !dbg !1610 | |
br label %exit382, !dbg !1610 | |
next_def381: ; preds = %matches366 | |
%1164 = icmp eq i32 162, %1137, !dbg !1610 | |
br i1 %1164, label %current_def383, label %next_def384, !dbg !1610 | |
exit382: ; preds = %current_def394, %current_def392, %current_def390, %current_def388, %invoke_out387, %current_def383, %current_def380 | |
%1165 = phi i32 [ %1163, %current_def380 ], [ %1177, %current_def383 ], [ %1182, %invoke_out387 ], [ %1187, %current_def388 ], [ %1191, %current_def390 ], [ %1196, %current_def392 ], [ %1201, %current_def394 ], !dbg !1610 | |
%1166 = sext i32 %1165 to i64, !dbg !1610 | |
%1167 = add i64 %1134, %1166, !dbg !1610 | |
%1168 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1168, !dbg !1610 | |
%1169 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
%1170 = bitcast [1 x i64]* %1169 to i64*, !dbg !1610 | |
store i64 %1167, i64* %1170, !dbg !1610 | |
%1171 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %96, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1171, !dbg !1610 | |
%1172 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %96, i32 0, i32 1, !dbg !1610 | |
%1173 = bitcast [1 x i64]* %1172 to i64*, !dbg !1610 | |
store i64 %1167, i64* %1173, !dbg !1610 | |
br label %exit396, !dbg !1610 | |
current_def383: ; preds = %next_def381 | |
%1174 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1175 = bitcast [1 x i64]* %1174 to i64*, !dbg !1610 | |
%1176 = load i64, i64* %1175, !dbg !1610 | |
%1177 = trunc i64 %1176 to i32, !dbg !1610 | |
br label %exit382, !dbg !1610 | |
next_def384: ; preds = %next_def381 | |
%1178 = icmp eq i32 1, %1137, !dbg !1610 | |
br i1 %1178, label %current_def385, label %next_def386, !dbg !1610 | |
current_def385: ; preds = %next_def384 | |
%1179 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1180 = bitcast [1 x i64]* %1179 to %String**, !dbg !1610 | |
%1181 = load %String*, %String** %1180, !dbg !1610 | |
%1182 = invoke i32 @"*String#to_i:Int32"(%String* %1181) | |
to label %invoke_out387 unwind label %rescue131, !dbg !1610 | |
next_def386: ; preds = %next_def384 | |
%1183 = icmp eq i32 159, %1137, !dbg !1610 | |
br i1 %1183, label %current_def388, label %next_def389, !dbg !1610 | |
invoke_out387: ; preds = %current_def385 | |
br label %exit382, !dbg !1610 | |
current_def388: ; preds = %next_def386 | |
%1184 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1185 = bitcast [1 x i64]* %1184 to i16*, !dbg !1610 | |
%1186 = load i16, i16* %1185, !dbg !1610 | |
%1187 = zext i16 %1186 to i32, !dbg !1610 | |
br label %exit382, !dbg !1610 | |
next_def389: ; preds = %next_def386 | |
%1188 = icmp eq i32 161, %1137, !dbg !1610 | |
br i1 %1188, label %current_def390, label %next_def391, !dbg !1610 | |
current_def390: ; preds = %next_def389 | |
%1189 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1190 = bitcast [1 x i64]* %1189 to i32*, !dbg !1610 | |
%1191 = load i32, i32* %1190, !dbg !1610 | |
br label %exit382, !dbg !1610 | |
next_def391: ; preds = %next_def389 | |
%1192 = icmp eq i32 163, %1137, !dbg !1610 | |
br i1 %1192, label %current_def392, label %next_def393, !dbg !1610 | |
current_def392: ; preds = %next_def391 | |
%1193 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1194 = bitcast [1 x i64]* %1193 to i64*, !dbg !1610 | |
%1195 = load i64, i64* %1194, !dbg !1610 | |
%1196 = trunc i64 %1195 to i32, !dbg !1610 | |
br label %exit382, !dbg !1610 | |
next_def393: ; preds = %next_def391 | |
%1197 = icmp eq i32 157, %1137, !dbg !1610 | |
br i1 %1197, label %current_def394, label %next_def395, !dbg !1610 | |
current_def394: ; preds = %next_def393 | |
%1198 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1135, i32 0, i32 1, !dbg !1610 | |
%1199 = bitcast [1 x i64]* %1198 to i8*, !dbg !1610 | |
%1200 = load i8, i8* %1199, !dbg !1610 | |
%1201 = zext i8 %1200 to i32, !dbg !1610 | |
br label %exit382, !dbg !1610 | |
next_def395: ; preds = %next_def393 | |
unreachable, !dbg !1610 | |
exit396: ; preds = %else365, %exit382 | |
%1202 = phi %"(UInt64 | Nil)"* [ %96, %exit382 ], [ %97, %else365 ], !dbg !1610 | |
br label %exit363, !dbg !1610 | |
exit397: ; preds = %else332, %exit363 | |
%1203 = phi %"(UInt64 | Nil)"* [ %1126, %exit363 ], [ %98, %else332 ], !dbg !1610 | |
br label %exit330, !dbg !1610 | |
then398: ; preds = %exit405 | |
%1204 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1205 = bitcast [1 x i64]* %1204 to i64*, !dbg !1610 | |
%1206 = load i64, i64* %1205, !dbg !1610 | |
%1207 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
%1208 = bitcast [1 x i64]* %1207 to i64*, !dbg !1610 | |
%1209 = load i64, i64* %1208, !dbg !1610 | |
%1210 = load %String*, %String** %name190, !dbg !1610 | |
store i64 %1206, i64* %name185, !dbg !1610 | |
store i64 %1209, i64* %low_pc, !dbg !1610 | |
store %String* %1210, %String** %high_pc, !dbg !1610 | |
%1211 = load %"Array(Tuple(UInt64, UInt64, String))"*, %"Array(Tuple(UInt64, UInt64, String))"** %names, !dbg !1610 | |
%1212 = load i64, i64* %name185, !dbg !1610 | |
%1213 = getelementptr inbounds %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %101, i32 0, i32 0, !dbg !1610 | |
store i64 %1212, i64* %1213, !dbg !1610 | |
%1214 = load i64, i64* %low_pc, !dbg !1610 | |
%1215 = getelementptr inbounds %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %101, i32 0, i32 1, !dbg !1610 | |
store i64 %1214, i64* %1215, !dbg !1610 | |
%1216 = load %String*, %String** %high_pc, !dbg !1610 | |
%1217 = getelementptr inbounds %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %101, i32 0, i32 2, !dbg !1610 | |
store %String* %1216, %String** %1217, !dbg !1610 | |
%1218 = load %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %101, !dbg !1610 | |
%1219 = invoke %"Array(Tuple(UInt64, UInt64, String))"* @"*Array(Tuple(UInt64, UInt64, String))@Array(T)#<<<Tuple(UInt64, UInt64, String)>:Array(Tuple(UInt64, UInt64, String))"(%"Array(Tuple(UInt64, UInt64, String))"* %1211, %"Tuple(UInt64, UInt64, String)" %1218) | |
to label %invoke_out406 unwind label %rescue131, !dbg !1610 | |
else399: ; preds = %exit405 | |
br label %exit407, !dbg !1610 | |
then400: ; preds = %exit404 | |
%1220 = load %String*, %String** %name190, !dbg !1610 | |
%1221 = icmp eq %String* %1220, null, !dbg !1610 | |
%1222 = select i1 %1221, i32 0, i32 1, !dbg !1610 | |
%1223 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %100, i32 0, i32 0, !dbg !1610 | |
store i32 %1222, i32* %1223, !dbg !1610 | |
%1224 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %100, i32 0, i32 1, !dbg !1610 | |
%1225 = bitcast [1 x i64]* %1224 to %String**, !dbg !1610 | |
store %String* %1220, %String** %1225, !dbg !1610 | |
br label %exit405, !dbg !1610 | |
else401: ; preds = %exit404 | |
%1226 = bitcast %"(UInt64 | Nil)"* %__temp_238 to %"(String | UInt64 | Nil)"*, !dbg !1610 | |
br label %exit405, !dbg !1610 | |
then402: ; preds = %exit229 | |
br label %exit404, !dbg !1610 | |
else403: ; preds = %exit229 | |
%1227 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %99, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1227, !dbg !1610 | |
%1228 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %99, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1228, !dbg !1610 | |
br label %exit404, !dbg !1610 | |
exit404: ; preds = %else403, %then402 | |
%1229 = phi %"(UInt64 | Nil)"* [ %high_pc188, %then402 ], [ %99, %else403 ], !dbg !1610 | |
%1230 = load %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %1229, !dbg !1610 | |
store %"(UInt64 | Nil)" %1230, %"(UInt64 | Nil)"* %__temp_238, !dbg !1610 | |
%1231 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %1229, i32 0, i32 0, !dbg !1610 | |
%1232 = load i32, i32* %1231, !dbg !1610 | |
%1233 = icmp eq i32 %1232, 0, !dbg !1610 | |
%1234 = xor i1 %1233, true, !dbg !1610 | |
%1235 = and i1 true, %1234, !dbg !1610 | |
br i1 %1235, label %then400, label %else401, !dbg !1610 | |
exit405: ; preds = %else401, %then400 | |
%1236 = phi %"(String | UInt64 | Nil)"* [ %100, %then400 ], [ %1226, %else401 ], !dbg !1610 | |
%1237 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %1236, i32 0, i32 0, !dbg !1610 | |
%1238 = load i32, i32* %1237, !dbg !1610 | |
%1239 = icmp eq i32 %1238, 0, !dbg !1610 | |
%1240 = xor i1 %1239, true, !dbg !1610 | |
%1241 = and i1 true, %1240, !dbg !1610 | |
br i1 %1241, label %then398, label %else399, !dbg !1610 | |
invoke_out406: ; preds = %then398 | |
br label %exit407, !dbg !1610 | |
exit407: ; preds = %else399, %invoke_out406 | |
%1242 = phi %"Array(Tuple(UInt64, UInt64, String))"* [ %1219, %invoke_out406 ], [ null, %else399 ], !dbg !1610 | |
br label %exit223, !dbg !1610 | |
exit408: ; preds = %exit415, %exit223 | |
br label %while199, !dbg !1610 | |
then409: ; preds = %exit413 | |
br label %exit414, !dbg !1610 | |
else410: ; preds = %exit413 | |
br label %exit415, !dbg !1610 | |
then411: ; preds = %else206 | |
%1243 = getelementptr inbounds %"(Debug::DWARF::Abbrev | Nil)", %"(Debug::DWARF::Abbrev | Nil)"* %abbrev, i32 0, i32 1, !dbg !1610 | |
%1244 = bitcast [3 x i64]* %1243 to %"Debug::DWARF::Abbrev"*, !dbg !1610 | |
%1245 = getelementptr inbounds %"Debug::DWARF::Abbrev", %"Debug::DWARF::Abbrev"* %1244, i32 0, i32 1, !dbg !1610 | |
%1246 = load i32, i32* %1245, !dbg !1610 | |
%1247 = call i1 @"*Debug::DWARF::TAG#subprogram?:Bool"(i32 %1246), !dbg !1610 | |
%1248 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %102, i32 0, i32 0, !dbg !1610 | |
store i32 171, i32* %1248, !dbg !1610 | |
%1249 = zext i1 %1247 to i64, !dbg !1610 | |
%1250 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %102, i32 0, i32 1, !dbg !1610 | |
%1251 = bitcast [1 x i64]* %1250 to i64*, !dbg !1610 | |
store i64 %1249, i64* %1251, !dbg !1610 | |
br label %exit413, !dbg !1610 | |
else412: ; preds = %else206 | |
%1252 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %103, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1252, !dbg !1610 | |
%1253 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %103, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1253, !dbg !1610 | |
br label %exit413, !dbg !1610 | |
exit413: ; preds = %else412, %then411 | |
%1254 = phi %"(Bool | Nil)"* [ %102, %then411 ], [ %103, %else412 ], !dbg !1610 | |
%1255 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %1254, i32 0, i32 0, !dbg !1610 | |
%1256 = load i32, i32* %1255, !dbg !1610 | |
%1257 = icmp eq i32 %1256, 0, !dbg !1610 | |
%1258 = xor i1 %1257, true, !dbg !1610 | |
%1259 = and i1 true, %1258, !dbg !1610 | |
%1260 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %1254, i32 0, i32 1, !dbg !1610 | |
%1261 = bitcast [1 x i64]* %1260 to i1*, !dbg !1610 | |
%1262 = load i1, i1* %1261, !dbg !1610 | |
%1263 = icmp eq i32 %1256, 171, !dbg !1610 | |
%1264 = xor i1 %1262, true, !dbg !1610 | |
%1265 = and i1 %1263, %1264, !dbg !1610 | |
%1266 = xor i1 %1265, true, !dbg !1610 | |
%1267 = and i1 %1259, %1266, !dbg !1610 | |
br i1 %1267, label %then409, label %else410, !dbg !1610 | |
exit414: ; preds = %then409 | |
%1268 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1268, !dbg !1610 | |
%1269 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1269, !dbg !1610 | |
%1270 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1270, !dbg !1610 | |
%1271 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1271, !dbg !1610 | |
store %String* null, %String** %name190, !dbg !1610 | |
%1272 = load %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"*, %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"** %attributes, !dbg !1610 | |
store i32 0, i32* %i421, !dbg !1633 | |
br label %while422, !dbg !1633 | |
exit415: ; preds = %exit605, %else410 | |
br label %exit408, !dbg !1610 | |
while422: ; preds = %exit497, %exit414 | |
%1273 = load i32, i32* %i421, !dbg !1634 | |
%1274 = getelementptr inbounds %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))", %"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %1272, i32 0, i32 1, !dbg !1634 | |
%1275 = load i32, i32* %1274, !dbg !1634 | |
%1276 = icmp slt i32 %1273, %1275, !dbg !1634 | |
br i1 %1276, label %body423, label %exit424, !dbg !1634 | |
body423: ; preds = %while422 | |
%1277 = load i32, i32* %i421, !dbg !1634 | |
store i32 %1277, i32* %i420, !dbg !1634 | |
%1278 = load i32, i32* %i420, !dbg !1634 | |
%1279 = invoke %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" @"*Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))@Array(T)#unsafe_fetch<Int32>:Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"(%"Array(Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8))"* %1272, i32 %1278) | |
to label %invoke_out425 unwind label %rescue131, !dbg !1616 | |
exit424: ; preds = %while422 | |
%1280 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
%1281 = load i32, i32* %1280, !dbg !1610 | |
%1282 = icmp eq i32 %1281, 0, !dbg !1610 | |
%1283 = xor i1 %1282, true, !dbg !1610 | |
%1284 = and i1 true, %1283, !dbg !1610 | |
br i1 %1284, label %then600, label %else601, !dbg !1610 | |
invoke_out425: ; preds = %body423 | |
store %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %1279, %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %104, !dbg !1616 | |
%1285 = load %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %104, !dbg !1616 | |
store %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)" %1285, %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1419, !dbg !1616 | |
%1286 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1419, i32 0, i32 0, !dbg !1616 | |
%1287 = load i32, i32* %1286, !dbg !1616 | |
store i32 %1287, i32* %at416, !dbg !1610 | |
%1288 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1419, i32 0, i32 1, !dbg !1610 | |
%1289 = load i32, i32* %1288, !dbg !1610 | |
store i32 %1289, i32* %form417, !dbg !1610 | |
%1290 = getelementptr inbounds %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"Tuple(Debug::DWARF::AT, Debug::DWARF::FORM, Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %__arg1419, i32 0, i32 2, !dbg !1610 | |
%1291 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1290 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"*, !dbg !1610 | |
%1292 = load %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %1291, !dbg !1610 | |
store %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)" %1292, %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, !dbg !1610 | |
%1293 = load i32, i32* %at416, !dbg !1610 | |
%1294 = call i1 @"*Debug::DWARF::AT@Object#===<Debug::DWARF::AT>:Bool"(i32 3, i32 %1293), !dbg !1610 | |
br i1 %1294, label %then426, label %else427, !dbg !1610 | |
then426: ; preds = %invoke_out425 | |
%1295 = load i32, i32* %form417, !dbg !1610 | |
%1296 = call i1 @"*Debug::DWARF::FORM#strp?:Bool"(i32 %1295), !dbg !1610 | |
br i1 %1296, label %then428, label %else429, !dbg !1610 | |
else427: ; preds = %invoke_out425 | |
%1297 = load i32, i32* %at416, !dbg !1610 | |
%1298 = call i1 @"*Debug::DWARF::AT@Object#===<Debug::DWARF::AT>:Bool"(i32 17, i32 %1297), !dbg !1610 | |
br i1 %1298, label %then498, label %else499, !dbg !1610 | |
then428: ; preds = %then426 | |
%1299 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %strings187, i32 0, i32 0, !dbg !1610 | |
%1300 = load i32, i32* %1299, !dbg !1610 | |
%1301 = icmp eq i32 351, %1300, !dbg !1610 | |
br i1 %1301, label %current_def430, label %next_def431, !dbg !1610 | |
else429: ; preds = %then426 | |
br label %exit466, !dbg !1610 | |
current_def430: ; preds = %then428 | |
%1302 = getelementptr inbounds %"(Debug::DWARF::Strings | Nil)", %"(Debug::DWARF::Strings | Nil)"* %strings187, i32 0, i32 1, !dbg !1610 | |
%1303 = bitcast [5 x i64]* %1302 to %"Debug::DWARF::Strings"*, !dbg !1610 | |
%1304 = load %"Debug::DWARF::Strings", %"Debug::DWARF::Strings"* %1303, !dbg !1610 | |
store %"Debug::DWARF::Strings" %1304, %"Debug::DWARF::Strings"* %__arg2432, !dbg !1610 | |
%1305 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1306 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 0, !dbg !1610 | |
%1307 = load i32, i32* %1306, !dbg !1610 | |
%1308 = call i1 @"~match<(UInt32 | UInt64)>"(i32 %1307), !dbg !1610 | |
br i1 %1308, label %matches433, label %doesnt_match434, !dbg !1610 | |
next_def431: ; preds = %then428 | |
%1309 = icmp eq i32 0, %1300, !dbg !1610 | |
br i1 %1309, label %current_def463, label %next_def464, !dbg !1610 | |
matches433: ; preds = %current_def430 | |
%1310 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305 to %"(UInt32 | UInt64)"*, !dbg !1610 | |
%1311 = load %"(UInt32 | UInt64)", %"(UInt32 | UInt64)"* %1310, !dbg !1610 | |
%1312 = invoke %String* @"*Debug::DWARF::Strings#decode<(UInt32 | UInt64)>:String"(%"Debug::DWARF::Strings"* %__arg2432, %"(UInt32 | UInt64)" %1311) | |
to label %invoke_out461 unwind label %rescue131, !dbg !1610 | |
doesnt_match434: ; preds = %current_def430 | |
%1313 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 102) | |
to label %invoke_out435 unwind label %rescue131, !dbg !1610 | |
invoke_out435: ; preds = %doesnt_match434 | |
%1314 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1313, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out436 unwind label %rescue131, !dbg !1610 | |
invoke_out436: ; preds = %invoke_out435 | |
%1315 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 0, !dbg !1610 | |
%1316 = load i32, i32* %1315, !dbg !1610 | |
%1317 = icmp eq i32 171, %1316, !dbg !1610 | |
br i1 %1317, label %current_def437, label %next_def438, !dbg !1610 | |
current_def437: ; preds = %invoke_out436 | |
%1318 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1319 = bitcast [2 x i64]* %1318 to i8*, !dbg !1610 | |
%1320 = load i8, i8* %1319, !dbg !1610 | |
%1321 = trunc i8 %1320 to i1, !dbg !1610 | |
%1322 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %105, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %1322, !dbg !1610 | |
%1323 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %105, i32 0, i32 1, !dbg !1610 | |
%1324 = bitcast [1 x i64]* %1323 to i32*, !dbg !1610 | |
store i32 718, i32* %1324, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def438: ; preds = %invoke_out436 | |
%1325 = icmp eq i32 160, %1316, !dbg !1610 | |
br i1 %1325, label %current_def440, label %next_def441, !dbg !1610 | |
exit439: ; preds = %current_def454, %current_def452, %current_def450, %current_def448, %current_def446, %current_def444, %current_def442, %current_def440, %current_def437 | |
%1326 = phi %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %105, %current_def437 ], [ %106, %current_def440 ], [ %107, %current_def442 ], [ %108, %current_def444 ], [ %109, %current_def446 ], [ %110, %current_def448 ], [ %111, %current_def450 ], [ %112, %current_def452 ], [ %113, %current_def454 ], !dbg !1610 | |
%1327 = load %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %1326, !dbg !1610 | |
%1328 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %1314, %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %1327) | |
to label %invoke_out456 unwind label %rescue131, !dbg !1610 | |
current_def440: ; preds = %next_def438 | |
%1329 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1330 = bitcast [2 x i64]* %1329 to i32*, !dbg !1610 | |
%1331 = load i32, i32* %1330, !dbg !1610 | |
%1332 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %106, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %1332, !dbg !1610 | |
%1333 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %106, i32 0, i32 1, !dbg !1610 | |
%1334 = bitcast [1 x i64]* %1333 to i32*, !dbg !1610 | |
store i32 708, i32* %1334, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def441: ; preds = %next_def438 | |
%1335 = icmp eq i32 162, %1316, !dbg !1610 | |
br i1 %1335, label %current_def442, label %next_def443, !dbg !1610 | |
current_def442: ; preds = %next_def441 | |
%1336 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1337 = bitcast [2 x i64]* %1336 to i64*, !dbg !1610 | |
%1338 = load i64, i64* %1337, !dbg !1610 | |
%1339 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %107, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %1339, !dbg !1610 | |
%1340 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %107, i32 0, i32 1, !dbg !1610 | |
%1341 = bitcast [1 x i64]* %1340 to i32*, !dbg !1610 | |
store i32 710, i32* %1341, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def443: ; preds = %next_def441 | |
%1342 = icmp eq i32 438, %1316, !dbg !1610 | |
br i1 %1342, label %current_def444, label %next_def445, !dbg !1610 | |
current_def444: ; preds = %next_def443 | |
%1343 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1344 = bitcast [2 x i64]* %1343 to %"Slice(UInt8)"*, !dbg !1610 | |
%1345 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %108, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %1345, !dbg !1610 | |
%1346 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %108, i32 0, i32 1, !dbg !1610 | |
%1347 = bitcast [1 x i64]* %1346 to i32*, !dbg !1610 | |
store i32 1092, i32* %1347, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def445: ; preds = %next_def443 | |
%1348 = icmp eq i32 1, %1316, !dbg !1610 | |
br i1 %1348, label %current_def446, label %next_def447, !dbg !1610 | |
current_def446: ; preds = %next_def445 | |
%1349 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1350 = bitcast [2 x i64]* %1349 to %String**, !dbg !1610 | |
%1351 = load %String*, %String** %1350, !dbg !1610 | |
%1352 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %109, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %1352, !dbg !1610 | |
%1353 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %109, i32 0, i32 1, !dbg !1610 | |
%1354 = bitcast [1 x i64]* %1353 to i32*, !dbg !1610 | |
store i32 485, i32* %1354, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def447: ; preds = %next_def445 | |
%1355 = icmp eq i32 159, %1316, !dbg !1610 | |
br i1 %1355, label %current_def448, label %next_def449, !dbg !1610 | |
current_def448: ; preds = %next_def447 | |
%1356 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1357 = bitcast [2 x i64]* %1356 to i16*, !dbg !1610 | |
%1358 = load i16, i16* %1357, !dbg !1610 | |
%1359 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %110, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %1359, !dbg !1610 | |
%1360 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %110, i32 0, i32 1, !dbg !1610 | |
%1361 = bitcast [1 x i64]* %1360 to i32*, !dbg !1610 | |
store i32 707, i32* %1361, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def449: ; preds = %next_def447 | |
%1362 = icmp eq i32 161, %1316, !dbg !1610 | |
br i1 %1362, label %current_def450, label %next_def451, !dbg !1610 | |
current_def450: ; preds = %next_def449 | |
%1363 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1364 = bitcast [2 x i64]* %1363 to i32*, !dbg !1610 | |
%1365 = load i32, i32* %1364, !dbg !1610 | |
%1366 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %111, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %1366, !dbg !1610 | |
%1367 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %111, i32 0, i32 1, !dbg !1610 | |
%1368 = bitcast [1 x i64]* %1367 to i32*, !dbg !1610 | |
store i32 709, i32* %1368, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def451: ; preds = %next_def449 | |
%1369 = icmp eq i32 163, %1316, !dbg !1610 | |
br i1 %1369, label %current_def452, label %next_def453, !dbg !1610 | |
current_def452: ; preds = %next_def451 | |
%1370 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1371 = bitcast [2 x i64]* %1370 to i64*, !dbg !1610 | |
%1372 = load i64, i64* %1371, !dbg !1610 | |
%1373 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %112, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1373, !dbg !1610 | |
%1374 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %112, i32 0, i32 1, !dbg !1610 | |
%1375 = bitcast [1 x i64]* %1374 to i32*, !dbg !1610 | |
store i32 711, i32* %1375, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def453: ; preds = %next_def451 | |
%1376 = icmp eq i32 157, %1316, !dbg !1610 | |
br i1 %1376, label %current_def454, label %next_def455, !dbg !1610 | |
current_def454: ; preds = %next_def453 | |
%1377 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1305, i32 0, i32 1, !dbg !1610 | |
%1378 = bitcast [2 x i64]* %1377 to i8*, !dbg !1610 | |
%1379 = load i8, i8* %1378, !dbg !1610 | |
%1380 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %113, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %1380, !dbg !1610 | |
%1381 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %113, i32 0, i32 1, !dbg !1610 | |
%1382 = bitcast [1 x i64]* %1381 to i32*, !dbg !1610 | |
store i32 705, i32* %1382, !dbg !1610 | |
br label %exit439, !dbg !1610 | |
next_def455: ; preds = %next_def453 | |
unreachable, !dbg !1610 | |
invoke_out456: ; preds = %exit439 | |
%1383 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1328, %String* bitcast ({ i32, i32, i32, [29 x i8] }* @"' to (UInt32 | UInt6...'" to %String*)) | |
to label %invoke_out457 unwind label %rescue131, !dbg !1610 | |
invoke_out457: ; preds = %invoke_out456 | |
%1384 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1383, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'" to %String*)) | |
to label %invoke_out458 unwind label %rescue131, !dbg !1610 | |
invoke_out458: ; preds = %invoke_out457 | |
%1385 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1384) | |
to label %invoke_out459 unwind label %rescue131, !dbg !1610 | |
invoke_out459: ; preds = %invoke_out458 | |
%1386 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1385), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1386) | |
to label %invoke_out460 unwind label %rescue131, !dbg !1610 | |
invoke_out460: ; preds = %invoke_out459 | |
unreachable, !dbg !1610 | |
invoke_out461: ; preds = %matches433 | |
br label %exit462, !dbg !1610 | |
exit462: ; preds = %current_def463, %invoke_out461 | |
%1387 = phi %String* [ %1312, %invoke_out461 ], [ null, %current_def463 ], !dbg !1610 | |
%1388 = icmp eq %String* %1387, null, !dbg !1610 | |
%1389 = select i1 %1388, i32 0, i32 1, !dbg !1610 | |
%1390 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 0, !dbg !1610 | |
store i32 %1389, i32* %1390, !dbg !1610 | |
%1391 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1392 = bitcast [2 x i64]* %1391 to %String**, !dbg !1610 | |
store %String* %1387, %String** %1392, !dbg !1610 | |
br label %exit466, !dbg !1610 | |
current_def463: ; preds = %next_def431 | |
br label %exit462, !dbg !1610 | |
next_def464: ; preds = %next_def431 | |
unreachable, !dbg !1610 | |
exit466: ; preds = %else429, %exit462 | |
%1393 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 0, !dbg !1610 | |
%1394 = load i32, i32* %1393, !dbg !1610 | |
%1395 = icmp eq i32 1, %1394, !dbg !1610 | |
br i1 %1395, label %matches467, label %doesnt_match468, !dbg !1610 | |
matches467: ; preds = %exit466 | |
%1396 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1397 = bitcast [2 x i64]* %1396 to %String**, !dbg !1610 | |
%1398 = load %String*, %String** %1397, !dbg !1610 | |
store %String* %1398, %String** %name190, !dbg !1610 | |
%1399 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %124, i32 0, i32 0, !dbg !1610 | |
store i32 1, i32* %1399, !dbg !1610 | |
%1400 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %124, i32 0, i32 1, !dbg !1610 | |
%1401 = bitcast [1 x i64]* %1400 to %String**, !dbg !1610 | |
store %String* %1398, %String** %1401, !dbg !1610 | |
br label %exit497, !dbg !1610 | |
doesnt_match468: ; preds = %exit466 | |
%1402 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out469 unwind label %rescue131, !dbg !1610 | |
invoke_out469: ; preds = %doesnt_match468 | |
%1403 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1402, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out470 unwind label %rescue131, !dbg !1610 | |
invoke_out470: ; preds = %invoke_out469 | |
%1404 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 0, !dbg !1610 | |
%1405 = load i32, i32* %1404, !dbg !1610 | |
%1406 = icmp eq i32 171, %1405, !dbg !1610 | |
br i1 %1406, label %current_def471, label %next_def472, !dbg !1610 | |
current_def471: ; preds = %invoke_out470 | |
%1407 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1408 = bitcast [2 x i64]* %1407 to i8*, !dbg !1610 | |
%1409 = load i8, i8* %1408, !dbg !1610 | |
%1410 = trunc i8 %1409 to i1, !dbg !1610 | |
%1411 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %114, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %1411, !dbg !1610 | |
%1412 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %114, i32 0, i32 1, !dbg !1610 | |
%1413 = bitcast [1 x i64]* %1412 to i32*, !dbg !1610 | |
store i32 718, i32* %1413, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def472: ; preds = %invoke_out470 | |
%1414 = icmp eq i32 160, %1405, !dbg !1610 | |
br i1 %1414, label %current_def474, label %next_def475, !dbg !1610 | |
exit473: ; preds = %current_def490, %current_def488, %current_def486, %current_def484, %current_def482, %current_def480, %current_def478, %current_def476, %current_def474, %current_def471 | |
%1415 = phi %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %114, %current_def471 ], [ %115, %current_def474 ], [ %116, %current_def476 ], [ %117, %current_def478 ], [ %118, %current_def480 ], [ %119, %current_def482 ], [ %120, %current_def484 ], [ %121, %current_def486 ], [ %122, %current_def488 ], [ %123, %current_def490 ], !dbg !1610 | |
%1416 = load %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %1415, !dbg !1610 | |
%1417 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %1403, %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %1416) | |
to label %invoke_out492 unwind label %rescue131, !dbg !1610 | |
current_def474: ; preds = %next_def472 | |
%1418 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1419 = bitcast [2 x i64]* %1418 to i32*, !dbg !1610 | |
%1420 = load i32, i32* %1419, !dbg !1610 | |
%1421 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %115, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %1421, !dbg !1610 | |
%1422 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %115, i32 0, i32 1, !dbg !1610 | |
%1423 = bitcast [1 x i64]* %1422 to i32*, !dbg !1610 | |
store i32 708, i32* %1423, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def475: ; preds = %next_def472 | |
%1424 = icmp eq i32 162, %1405, !dbg !1610 | |
br i1 %1424, label %current_def476, label %next_def477, !dbg !1610 | |
current_def476: ; preds = %next_def475 | |
%1425 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1426 = bitcast [2 x i64]* %1425 to i64*, !dbg !1610 | |
%1427 = load i64, i64* %1426, !dbg !1610 | |
%1428 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %116, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %1428, !dbg !1610 | |
%1429 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %116, i32 0, i32 1, !dbg !1610 | |
%1430 = bitcast [1 x i64]* %1429 to i32*, !dbg !1610 | |
store i32 710, i32* %1430, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def477: ; preds = %next_def475 | |
%1431 = icmp eq i32 438, %1405, !dbg !1610 | |
br i1 %1431, label %current_def478, label %next_def479, !dbg !1610 | |
current_def478: ; preds = %next_def477 | |
%1432 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1433 = bitcast [2 x i64]* %1432 to %"Slice(UInt8)"*, !dbg !1610 | |
%1434 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %117, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %1434, !dbg !1610 | |
%1435 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %117, i32 0, i32 1, !dbg !1610 | |
%1436 = bitcast [1 x i64]* %1435 to i32*, !dbg !1610 | |
store i32 1092, i32* %1436, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def479: ; preds = %next_def477 | |
%1437 = icmp eq i32 1, %1405, !dbg !1610 | |
br i1 %1437, label %current_def480, label %next_def481, !dbg !1610 | |
current_def480: ; preds = %next_def479 | |
%1438 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1439 = bitcast [2 x i64]* %1438 to %String**, !dbg !1610 | |
%1440 = load %String*, %String** %1439, !dbg !1610 | |
%1441 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %118, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %1441, !dbg !1610 | |
%1442 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %118, i32 0, i32 1, !dbg !1610 | |
%1443 = bitcast [1 x i64]* %1442 to i32*, !dbg !1610 | |
store i32 485, i32* %1443, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def481: ; preds = %next_def479 | |
%1444 = icmp eq i32 159, %1405, !dbg !1610 | |
br i1 %1444, label %current_def482, label %next_def483, !dbg !1610 | |
current_def482: ; preds = %next_def481 | |
%1445 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1446 = bitcast [2 x i64]* %1445 to i16*, !dbg !1610 | |
%1447 = load i16, i16* %1446, !dbg !1610 | |
%1448 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %119, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %1448, !dbg !1610 | |
%1449 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %119, i32 0, i32 1, !dbg !1610 | |
%1450 = bitcast [1 x i64]* %1449 to i32*, !dbg !1610 | |
store i32 707, i32* %1450, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def483: ; preds = %next_def481 | |
%1451 = icmp eq i32 161, %1405, !dbg !1610 | |
br i1 %1451, label %current_def484, label %next_def485, !dbg !1610 | |
current_def484: ; preds = %next_def483 | |
%1452 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1453 = bitcast [2 x i64]* %1452 to i32*, !dbg !1610 | |
%1454 = load i32, i32* %1453, !dbg !1610 | |
%1455 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %120, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %1455, !dbg !1610 | |
%1456 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %120, i32 0, i32 1, !dbg !1610 | |
%1457 = bitcast [1 x i64]* %1456 to i32*, !dbg !1610 | |
store i32 709, i32* %1457, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def485: ; preds = %next_def483 | |
%1458 = icmp eq i32 163, %1405, !dbg !1610 | |
br i1 %1458, label %current_def486, label %next_def487, !dbg !1610 | |
current_def486: ; preds = %next_def485 | |
%1459 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1460 = bitcast [2 x i64]* %1459 to i64*, !dbg !1610 | |
%1461 = load i64, i64* %1460, !dbg !1610 | |
%1462 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %121, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1462, !dbg !1610 | |
%1463 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %121, i32 0, i32 1, !dbg !1610 | |
%1464 = bitcast [1 x i64]* %1463 to i32*, !dbg !1610 | |
store i32 711, i32* %1464, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def487: ; preds = %next_def485 | |
%1465 = icmp eq i32 157, %1405, !dbg !1610 | |
br i1 %1465, label %current_def488, label %next_def489, !dbg !1610 | |
current_def488: ; preds = %next_def487 | |
%1466 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418, i32 0, i32 1, !dbg !1610 | |
%1467 = bitcast [2 x i64]* %1466 to i8*, !dbg !1610 | |
%1468 = load i8, i8* %1467, !dbg !1610 | |
%1469 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %122, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %1469, !dbg !1610 | |
%1470 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %122, i32 0, i32 1, !dbg !1610 | |
%1471 = bitcast [1 x i64]* %1470 to i32*, !dbg !1610 | |
store i32 705, i32* %1471, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def489: ; preds = %next_def487 | |
%1472 = icmp eq i32 0, %1405, !dbg !1610 | |
br i1 %1472, label %current_def490, label %next_def491, !dbg !1610 | |
current_def490: ; preds = %next_def489 | |
%1473 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %123, i32 0, i32 0, !dbg !1610 | |
store i32 717, i32* %1473, !dbg !1610 | |
%1474 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Nil.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %123, i32 0, i32 1, !dbg !1610 | |
%1475 = bitcast [1 x i64]* %1474 to i32*, !dbg !1610 | |
store i32 717, i32* %1475, !dbg !1610 | |
br label %exit473, !dbg !1610 | |
next_def491: ; preds = %next_def489 | |
unreachable, !dbg !1610 | |
invoke_out492: ; preds = %exit473 | |
%1476 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1417, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to String failed'" to %String*)) | |
to label %invoke_out493 unwind label %rescue131, !dbg !1610 | |
invoke_out493: ; preds = %invoke_out492 | |
%1477 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1476, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.6" to %String*)) | |
to label %invoke_out494 unwind label %rescue131, !dbg !1610 | |
invoke_out494: ; preds = %invoke_out493 | |
%1478 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1477) | |
to label %invoke_out495 unwind label %rescue131, !dbg !1610 | |
invoke_out495: ; preds = %invoke_out494 | |
%1479 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1478), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1479) | |
to label %invoke_out496 unwind label %rescue131, !dbg !1610 | |
invoke_out496: ; preds = %invoke_out495 | |
unreachable, !dbg !1610 | |
exit497: ; preds = %exit528, %matches467 | |
%1480 = phi %"(String | UInt64 | Nil)"* [ %124, %matches467 ], [ %1573, %exit528 ], !dbg !1610 | |
%1481 = load i32, i32* %i421, !dbg !1610 | |
%1482 = add i32 %1481, 1, !dbg !1610 | |
store i32 %1482, i32* %i421, !dbg !1618 | |
br label %while422, !dbg !1618 | |
then498: ; preds = %else427 | |
%1483 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1484 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 0, !dbg !1610 | |
%1485 = load i32, i32* %1484, !dbg !1610 | |
%1486 = icmp eq i32 163, %1485, !dbg !1610 | |
br i1 %1486, label %matches500, label %doesnt_match501, !dbg !1610 | |
else499: ; preds = %else427 | |
%1487 = load i32, i32* %at416, !dbg !1610 | |
%1488 = call i1 @"*Debug::DWARF::AT@Object#===<Debug::DWARF::AT>:Bool"(i32 18, i32 %1487), !dbg !1610 | |
br i1 %1488, label %then529, label %else530, !dbg !1610 | |
matches500: ; preds = %then498 | |
%1489 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1490 = bitcast [2 x i64]* %1489 to i64*, !dbg !1610 | |
%1491 = load i64, i64* %1490, !dbg !1610 | |
%1492 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1492, !dbg !1610 | |
%1493 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1494 = bitcast [1 x i64]* %1493 to i64*, !dbg !1610 | |
store i64 %1491, i64* %1494, !dbg !1610 | |
%1495 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %134, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1495, !dbg !1610 | |
%1496 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %134, i32 0, i32 1, !dbg !1610 | |
%1497 = bitcast [1 x i64]* %1496 to i64*, !dbg !1610 | |
store i64 %1491, i64* %1497, !dbg !1610 | |
br label %exit528, !dbg !1610 | |
doesnt_match501: ; preds = %then498 | |
%1498 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out502 unwind label %rescue131, !dbg !1610 | |
invoke_out502: ; preds = %doesnt_match501 | |
%1499 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1498, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out503 unwind label %rescue131, !dbg !1610 | |
invoke_out503: ; preds = %invoke_out502 | |
%1500 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 0, !dbg !1610 | |
%1501 = load i32, i32* %1500, !dbg !1610 | |
%1502 = icmp eq i32 171, %1501, !dbg !1610 | |
br i1 %1502, label %current_def504, label %next_def505, !dbg !1610 | |
current_def504: ; preds = %invoke_out503 | |
%1503 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1504 = bitcast [2 x i64]* %1503 to i8*, !dbg !1610 | |
%1505 = load i8, i8* %1504, !dbg !1610 | |
%1506 = trunc i8 %1505 to i1, !dbg !1610 | |
%1507 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %125, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %1507, !dbg !1610 | |
%1508 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %125, i32 0, i32 1, !dbg !1610 | |
%1509 = bitcast [1 x i64]* %1508 to i32*, !dbg !1610 | |
store i32 718, i32* %1509, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def505: ; preds = %invoke_out503 | |
%1510 = icmp eq i32 160, %1501, !dbg !1610 | |
br i1 %1510, label %current_def507, label %next_def508, !dbg !1610 | |
exit506: ; preds = %current_def521, %current_def519, %current_def517, %current_def515, %current_def513, %current_def511, %current_def509, %current_def507, %current_def504 | |
%1511 = phi %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %125, %current_def504 ], [ %126, %current_def507 ], [ %127, %current_def509 ], [ %128, %current_def511 ], [ %129, %current_def513 ], [ %130, %current_def515 ], [ %131, %current_def517 ], [ %132, %current_def519 ], [ %133, %current_def521 ], !dbg !1610 | |
%1512 = load %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %1511, !dbg !1610 | |
%1513 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %1499, %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %1512) | |
to label %invoke_out523 unwind label %rescue131, !dbg !1610 | |
current_def507: ; preds = %next_def505 | |
%1514 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1515 = bitcast [2 x i64]* %1514 to i32*, !dbg !1610 | |
%1516 = load i32, i32* %1515, !dbg !1610 | |
%1517 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %126, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %1517, !dbg !1610 | |
%1518 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %126, i32 0, i32 1, !dbg !1610 | |
%1519 = bitcast [1 x i64]* %1518 to i32*, !dbg !1610 | |
store i32 708, i32* %1519, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def508: ; preds = %next_def505 | |
%1520 = icmp eq i32 162, %1501, !dbg !1610 | |
br i1 %1520, label %current_def509, label %next_def510, !dbg !1610 | |
current_def509: ; preds = %next_def508 | |
%1521 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1522 = bitcast [2 x i64]* %1521 to i64*, !dbg !1610 | |
%1523 = load i64, i64* %1522, !dbg !1610 | |
%1524 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %127, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %1524, !dbg !1610 | |
%1525 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %127, i32 0, i32 1, !dbg !1610 | |
%1526 = bitcast [1 x i64]* %1525 to i32*, !dbg !1610 | |
store i32 710, i32* %1526, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def510: ; preds = %next_def508 | |
%1527 = icmp eq i32 438, %1501, !dbg !1610 | |
br i1 %1527, label %current_def511, label %next_def512, !dbg !1610 | |
current_def511: ; preds = %next_def510 | |
%1528 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1529 = bitcast [2 x i64]* %1528 to %"Slice(UInt8)"*, !dbg !1610 | |
%1530 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %128, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %1530, !dbg !1610 | |
%1531 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %128, i32 0, i32 1, !dbg !1610 | |
%1532 = bitcast [1 x i64]* %1531 to i32*, !dbg !1610 | |
store i32 1092, i32* %1532, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def512: ; preds = %next_def510 | |
%1533 = icmp eq i32 1, %1501, !dbg !1610 | |
br i1 %1533, label %current_def513, label %next_def514, !dbg !1610 | |
current_def513: ; preds = %next_def512 | |
%1534 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1535 = bitcast [2 x i64]* %1534 to %String**, !dbg !1610 | |
%1536 = load %String*, %String** %1535, !dbg !1610 | |
%1537 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %129, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %1537, !dbg !1610 | |
%1538 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %129, i32 0, i32 1, !dbg !1610 | |
%1539 = bitcast [1 x i64]* %1538 to i32*, !dbg !1610 | |
store i32 485, i32* %1539, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def514: ; preds = %next_def512 | |
%1540 = icmp eq i32 159, %1501, !dbg !1610 | |
br i1 %1540, label %current_def515, label %next_def516, !dbg !1610 | |
current_def515: ; preds = %next_def514 | |
%1541 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1542 = bitcast [2 x i64]* %1541 to i16*, !dbg !1610 | |
%1543 = load i16, i16* %1542, !dbg !1610 | |
%1544 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %130, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %1544, !dbg !1610 | |
%1545 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %130, i32 0, i32 1, !dbg !1610 | |
%1546 = bitcast [1 x i64]* %1545 to i32*, !dbg !1610 | |
store i32 707, i32* %1546, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def516: ; preds = %next_def514 | |
%1547 = icmp eq i32 161, %1501, !dbg !1610 | |
br i1 %1547, label %current_def517, label %next_def518, !dbg !1610 | |
current_def517: ; preds = %next_def516 | |
%1548 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1549 = bitcast [2 x i64]* %1548 to i32*, !dbg !1610 | |
%1550 = load i32, i32* %1549, !dbg !1610 | |
%1551 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %131, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %1551, !dbg !1610 | |
%1552 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %131, i32 0, i32 1, !dbg !1610 | |
%1553 = bitcast [1 x i64]* %1552 to i32*, !dbg !1610 | |
store i32 709, i32* %1553, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def518: ; preds = %next_def516 | |
%1554 = icmp eq i32 163, %1501, !dbg !1610 | |
br i1 %1554, label %current_def519, label %next_def520, !dbg !1610 | |
current_def519: ; preds = %next_def518 | |
%1555 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1556 = bitcast [2 x i64]* %1555 to i64*, !dbg !1610 | |
%1557 = load i64, i64* %1556, !dbg !1610 | |
%1558 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %132, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1558, !dbg !1610 | |
%1559 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %132, i32 0, i32 1, !dbg !1610 | |
%1560 = bitcast [1 x i64]* %1559 to i32*, !dbg !1610 | |
store i32 711, i32* %1560, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def520: ; preds = %next_def518 | |
%1561 = icmp eq i32 157, %1501, !dbg !1610 | |
br i1 %1561, label %current_def521, label %next_def522, !dbg !1610 | |
current_def521: ; preds = %next_def520 | |
%1562 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1483, i32 0, i32 1, !dbg !1610 | |
%1563 = bitcast [2 x i64]* %1562 to i8*, !dbg !1610 | |
%1564 = load i8, i8* %1563, !dbg !1610 | |
%1565 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %133, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %1565, !dbg !1610 | |
%1566 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %133, i32 0, i32 1, !dbg !1610 | |
%1567 = bitcast [1 x i64]* %1566 to i32*, !dbg !1610 | |
store i32 705, i32* %1567, !dbg !1610 | |
br label %exit506, !dbg !1610 | |
next_def522: ; preds = %next_def520 | |
unreachable, !dbg !1610 | |
invoke_out523: ; preds = %exit506 | |
%1568 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1513, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to UInt64 failed'" to %String*)) | |
to label %invoke_out524 unwind label %rescue131, !dbg !1610 | |
invoke_out524: ; preds = %invoke_out523 | |
%1569 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1568, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.7" to %String*)) | |
to label %invoke_out525 unwind label %rescue131, !dbg !1610 | |
invoke_out525: ; preds = %invoke_out524 | |
%1570 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1569) | |
to label %invoke_out526 unwind label %rescue131, !dbg !1610 | |
invoke_out526: ; preds = %invoke_out525 | |
%1571 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1570), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1571) | |
to label %invoke_out527 unwind label %rescue131, !dbg !1610 | |
invoke_out527: ; preds = %invoke_out526 | |
unreachable, !dbg !1610 | |
exit528: ; preds = %exit595, %matches500 | |
%1572 = phi %"(UInt64 | Nil)"* [ %134, %matches500 ], [ %1746, %exit595 ], !dbg !1610 | |
%1573 = bitcast %"(UInt64 | Nil)"* %1572 to %"(String | UInt64 | Nil)"*, !dbg !1610 | |
br label %exit497, !dbg !1610 | |
then529: ; preds = %else499 | |
%1574 = load i32, i32* %form417, !dbg !1610 | |
%1575 = call i1 @"*Debug::DWARF::FORM#addr?:Bool"(i32 %1574), !dbg !1610 | |
br i1 %1575, label %then531, label %else532, !dbg !1610 | |
else530: ; preds = %else499 | |
%1576 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %149, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1576, !dbg !1610 | |
%1577 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %149, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1577, !dbg !1610 | |
br label %exit595, !dbg !1610 | |
then531: ; preds = %then529 | |
%1578 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1579 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 0, !dbg !1610 | |
%1580 = load i32, i32* %1579, !dbg !1610 | |
%1581 = icmp eq i32 163, %1580, !dbg !1610 | |
br i1 %1581, label %matches533, label %doesnt_match534, !dbg !1610 | |
else532: ; preds = %then529 | |
%1582 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418 to %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1583 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1582, i32 0, i32 0, !dbg !1610 | |
%1584 = load i32, i32* %1583, !dbg !1610 | |
%1585 = call i1 @"~match<(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)>"(i32 %1584), !dbg !1610 | |
br i1 %1585, label %then562, label %else563, !dbg !1610 | |
matches533: ; preds = %then531 | |
%1586 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1587 = bitcast [2 x i64]* %1586 to i64*, !dbg !1610 | |
%1588 = load i64, i64* %1587, !dbg !1610 | |
%1589 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1589, !dbg !1610 | |
%1590 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
%1591 = bitcast [1 x i64]* %1590 to i64*, !dbg !1610 | |
store i64 %1588, i64* %1591, !dbg !1610 | |
%1592 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %144, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1592, !dbg !1610 | |
%1593 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %144, i32 0, i32 1, !dbg !1610 | |
%1594 = bitcast [1 x i64]* %1593 to i64*, !dbg !1610 | |
store i64 %1588, i64* %1594, !dbg !1610 | |
br label %exit561, !dbg !1610 | |
doesnt_match534: ; preds = %then531 | |
%1595 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out535 unwind label %rescue131, !dbg !1610 | |
invoke_out535: ; preds = %doesnt_match534 | |
%1596 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1595, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out536 unwind label %rescue131, !dbg !1610 | |
invoke_out536: ; preds = %invoke_out535 | |
%1597 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 0, !dbg !1610 | |
%1598 = load i32, i32* %1597, !dbg !1610 | |
%1599 = icmp eq i32 171, %1598, !dbg !1610 | |
br i1 %1599, label %current_def537, label %next_def538, !dbg !1610 | |
current_def537: ; preds = %invoke_out536 | |
%1600 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1601 = bitcast [2 x i64]* %1600 to i8*, !dbg !1610 | |
%1602 = load i8, i8* %1601, !dbg !1610 | |
%1603 = trunc i8 %1602 to i1, !dbg !1610 | |
%1604 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %135, i32 0, i32 0, !dbg !1610 | |
store i32 718, i32* %1604, !dbg !1610 | |
%1605 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %135, i32 0, i32 1, !dbg !1610 | |
%1606 = bitcast [1 x i64]* %1605 to i32*, !dbg !1610 | |
store i32 718, i32* %1606, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def538: ; preds = %invoke_out536 | |
%1607 = icmp eq i32 160, %1598, !dbg !1610 | |
br i1 %1607, label %current_def540, label %next_def541, !dbg !1610 | |
exit539: ; preds = %current_def554, %current_def552, %current_def550, %current_def548, %current_def546, %current_def544, %current_def542, %current_def540, %current_def537 | |
%1608 = phi %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* [ %135, %current_def537 ], [ %136, %current_def540 ], [ %137, %current_def542 ], [ %138, %current_def544 ], [ %139, %current_def546 ], [ %140, %current_def548 ], [ %141, %current_def550 ], [ %142, %current_def552 ], [ %143, %current_def554 ], !dbg !1610 | |
%1609 = load %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %1608, !dbg !1610 | |
%1610 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)>:String::Builder"(%"String::Builder"* %1596, %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)" %1609) | |
to label %invoke_out556 unwind label %rescue131, !dbg !1610 | |
current_def540: ; preds = %next_def538 | |
%1611 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1612 = bitcast [2 x i64]* %1611 to i32*, !dbg !1610 | |
%1613 = load i32, i32* %1612, !dbg !1610 | |
%1614 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %136, i32 0, i32 0, !dbg !1610 | |
store i32 708, i32* %1614, !dbg !1610 | |
%1615 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %136, i32 0, i32 1, !dbg !1610 | |
%1616 = bitcast [1 x i64]* %1615 to i32*, !dbg !1610 | |
store i32 708, i32* %1616, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def541: ; preds = %next_def538 | |
%1617 = icmp eq i32 162, %1598, !dbg !1610 | |
br i1 %1617, label %current_def542, label %next_def543, !dbg !1610 | |
current_def542: ; preds = %next_def541 | |
%1618 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1619 = bitcast [2 x i64]* %1618 to i64*, !dbg !1610 | |
%1620 = load i64, i64* %1619, !dbg !1610 | |
%1621 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %137, i32 0, i32 0, !dbg !1610 | |
store i32 710, i32* %1621, !dbg !1610 | |
%1622 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %137, i32 0, i32 1, !dbg !1610 | |
%1623 = bitcast [1 x i64]* %1622 to i32*, !dbg !1610 | |
store i32 710, i32* %1623, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def543: ; preds = %next_def541 | |
%1624 = icmp eq i32 438, %1598, !dbg !1610 | |
br i1 %1624, label %current_def544, label %next_def545, !dbg !1610 | |
current_def544: ; preds = %next_def543 | |
%1625 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1626 = bitcast [2 x i64]* %1625 to %"Slice(UInt8)"*, !dbg !1610 | |
%1627 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %138, i32 0, i32 0, !dbg !1610 | |
store i32 1092, i32* %1627, !dbg !1610 | |
%1628 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %138, i32 0, i32 1, !dbg !1610 | |
%1629 = bitcast [1 x i64]* %1628 to i32*, !dbg !1610 | |
store i32 1092, i32* %1629, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def545: ; preds = %next_def543 | |
%1630 = icmp eq i32 1, %1598, !dbg !1610 | |
br i1 %1630, label %current_def546, label %next_def547, !dbg !1610 | |
current_def546: ; preds = %next_def545 | |
%1631 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1632 = bitcast [2 x i64]* %1631 to %String**, !dbg !1610 | |
%1633 = load %String*, %String** %1632, !dbg !1610 | |
%1634 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %139, i32 0, i32 0, !dbg !1610 | |
store i32 485, i32* %1634, !dbg !1610 | |
%1635 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %139, i32 0, i32 1, !dbg !1610 | |
%1636 = bitcast [1 x i64]* %1635 to i32*, !dbg !1610 | |
store i32 485, i32* %1636, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def547: ; preds = %next_def545 | |
%1637 = icmp eq i32 159, %1598, !dbg !1610 | |
br i1 %1637, label %current_def548, label %next_def549, !dbg !1610 | |
current_def548: ; preds = %next_def547 | |
%1638 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1639 = bitcast [2 x i64]* %1638 to i16*, !dbg !1610 | |
%1640 = load i16, i16* %1639, !dbg !1610 | |
%1641 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %140, i32 0, i32 0, !dbg !1610 | |
store i32 707, i32* %1641, !dbg !1610 | |
%1642 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %140, i32 0, i32 1, !dbg !1610 | |
%1643 = bitcast [1 x i64]* %1642 to i32*, !dbg !1610 | |
store i32 707, i32* %1643, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def549: ; preds = %next_def547 | |
%1644 = icmp eq i32 161, %1598, !dbg !1610 | |
br i1 %1644, label %current_def550, label %next_def551, !dbg !1610 | |
current_def550: ; preds = %next_def549 | |
%1645 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1646 = bitcast [2 x i64]* %1645 to i32*, !dbg !1610 | |
%1647 = load i32, i32* %1646, !dbg !1610 | |
%1648 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %141, i32 0, i32 0, !dbg !1610 | |
store i32 709, i32* %1648, !dbg !1610 | |
%1649 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %141, i32 0, i32 1, !dbg !1610 | |
%1650 = bitcast [1 x i64]* %1649 to i32*, !dbg !1610 | |
store i32 709, i32* %1650, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def551: ; preds = %next_def549 | |
%1651 = icmp eq i32 163, %1598, !dbg !1610 | |
br i1 %1651, label %current_def552, label %next_def553, !dbg !1610 | |
current_def552: ; preds = %next_def551 | |
%1652 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1653 = bitcast [2 x i64]* %1652 to i64*, !dbg !1610 | |
%1654 = load i64, i64* %1653, !dbg !1610 | |
%1655 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %142, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1655, !dbg !1610 | |
%1656 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %142, i32 0, i32 1, !dbg !1610 | |
%1657 = bitcast [1 x i64]* %1656 to i32*, !dbg !1610 | |
store i32 711, i32* %1657, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def553: ; preds = %next_def551 | |
%1658 = icmp eq i32 157, %1598, !dbg !1610 | |
br i1 %1658, label %current_def554, label %next_def555, !dbg !1610 | |
current_def554: ; preds = %next_def553 | |
%1659 = getelementptr inbounds %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1578, i32 0, i32 1, !dbg !1610 | |
%1660 = bitcast [2 x i64]* %1659 to i8*, !dbg !1610 | |
%1661 = load i8, i8* %1660, !dbg !1610 | |
%1662 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %143, i32 0, i32 0, !dbg !1610 | |
store i32 705, i32* %1662, !dbg !1610 | |
%1663 = getelementptr inbounds %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)", %"(Bool.class | Int32.class | Int64.class | Slice(UInt8).class | String.class | UInt16.class | UInt32.class | UInt64.class | UInt8.class)"* %143, i32 0, i32 1, !dbg !1610 | |
%1664 = bitcast [1 x i64]* %1663 to i32*, !dbg !1610 | |
store i32 705, i32* %1664, !dbg !1610 | |
br label %exit539, !dbg !1610 | |
next_def555: ; preds = %next_def553 | |
unreachable, !dbg !1610 | |
invoke_out556: ; preds = %exit539 | |
%1665 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1610, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to UInt64 failed'" to %String*)) | |
to label %invoke_out557 unwind label %rescue131, !dbg !1610 | |
invoke_out557: ; preds = %invoke_out556 | |
%1666 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1665, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.8" to %String*)) | |
to label %invoke_out558 unwind label %rescue131, !dbg !1610 | |
invoke_out558: ; preds = %invoke_out557 | |
%1667 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1666) | |
to label %invoke_out559 unwind label %rescue131, !dbg !1610 | |
invoke_out559: ; preds = %invoke_out558 | |
%1668 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1667), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1668) | |
to label %invoke_out560 unwind label %rescue131, !dbg !1610 | |
invoke_out560: ; preds = %invoke_out559 | |
unreachable, !dbg !1610 | |
exit561: ; preds = %exit594, %matches533 | |
%1669 = phi %"(UInt64 | Nil)"* [ %144, %matches533 ], [ %1745, %exit594 ], !dbg !1610 | |
br label %exit595, !dbg !1610 | |
then562: ; preds = %else532 | |
%1670 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
%1671 = load i32, i32* %1670, !dbg !1610 | |
%1672 = icmp eq i32 163, %1671, !dbg !1610 | |
br i1 %1672, label %matches564, label %doesnt_match565, !dbg !1610 | |
else563: ; preds = %else532 | |
%1673 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %148, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1673, !dbg !1610 | |
%1674 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %148, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1674, !dbg !1610 | |
br label %exit594, !dbg !1610 | |
matches564: ; preds = %then562 | |
%1675 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1676 = bitcast [1 x i64]* %1675 to i64*, !dbg !1610 | |
%1677 = load i64, i64* %1676, !dbg !1610 | |
%1678 = bitcast %"(Bool | Int32 | Int64 | Slice(UInt8) | String | UInt16 | UInt32 | UInt64 | UInt8 | Nil)"* %value418 to %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"*, !dbg !1610 | |
%1679 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 0, !dbg !1610 | |
%1680 = load i32, i32* %1679, !dbg !1610 | |
%1681 = icmp eq i32 160, %1680, !dbg !1610 | |
br i1 %1681, label %current_def578, label %next_def579, !dbg !1610 | |
doesnt_match565: ; preds = %then562 | |
%1682 = invoke %"String::Builder"* @"*String::Builder::new<Int32>:String::Builder"(i32 91) | |
to label %invoke_out566 unwind label %rescue131, !dbg !1610 | |
invoke_out566: ; preds = %doesnt_match565 | |
%1683 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1682, %String* bitcast ({ i32, i32, i32, [11 x i8] }* @"'cast from '" to %String*)) | |
to label %invoke_out567 unwind label %rescue131, !dbg !1610 | |
invoke_out567: ; preds = %invoke_out566 | |
%1684 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 0, !dbg !1610 | |
%1685 = load i32, i32* %1684, !dbg !1610 | |
%1686 = icmp eq i32 163, %1685, !dbg !1610 | |
br i1 %1686, label %current_def568, label %next_def569, !dbg !1610 | |
current_def568: ; preds = %invoke_out567 | |
%1687 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1688 = bitcast [1 x i64]* %1687 to i64*, !dbg !1610 | |
%1689 = load i64, i64* %1688, !dbg !1610 | |
%1690 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %145, i32 0, i32 0, !dbg !1610 | |
store i32 711, i32* %1690, !dbg !1610 | |
%1691 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %145, i32 0, i32 1, !dbg !1610 | |
%1692 = bitcast [1 x i64]* %1691 to i32*, !dbg !1610 | |
store i32 711, i32* %1692, !dbg !1610 | |
br label %exit570, !dbg !1610 | |
next_def569: ; preds = %invoke_out567 | |
%1693 = icmp eq i32 0, %1685, !dbg !1610 | |
br i1 %1693, label %current_def571, label %next_def572, !dbg !1610 | |
exit570: ; preds = %current_def571, %current_def568 | |
%1694 = phi %"(Nil.class | UInt64.class)"* [ %145, %current_def568 ], [ %146, %current_def571 ], !dbg !1610 | |
%1695 = load %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %1694, !dbg !1610 | |
%1696 = invoke %"String::Builder"* @"*String::Builder@IO#<<<(Nil.class | UInt64.class)>:String::Builder"(%"String::Builder"* %1683, %"(Nil.class | UInt64.class)" %1695) | |
to label %invoke_out573 unwind label %rescue131, !dbg !1610 | |
current_def571: ; preds = %next_def569 | |
%1697 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %146, i32 0, i32 0, !dbg !1610 | |
store i32 717, i32* %1697, !dbg !1610 | |
%1698 = getelementptr inbounds %"(Nil.class | UInt64.class)", %"(Nil.class | UInt64.class)"* %146, i32 0, i32 1, !dbg !1610 | |
%1699 = bitcast [1 x i64]* %1698 to i32*, !dbg !1610 | |
store i32 717, i32* %1699, !dbg !1610 | |
br label %exit570, !dbg !1610 | |
next_def572: ; preds = %next_def569 | |
unreachable, !dbg !1610 | |
invoke_out573: ; preds = %exit570 | |
%1700 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1696, %String* bitcast ({ i32, i32, i32, [18 x i8] }* @"' to UInt64 failed'" to %String*)) | |
to label %invoke_out574 unwind label %rescue131, !dbg !1610 | |
invoke_out574: ; preds = %invoke_out573 | |
%1701 = invoke %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %1700, %String* bitcast ({ i32, i32, i32, [50 x i8] }* @"', at /usr/share/cry...'.9" to %String*)) | |
to label %invoke_out575 unwind label %rescue131, !dbg !1610 | |
invoke_out575: ; preds = %invoke_out574 | |
%1702 = invoke %String* @"*String::Builder#to_s:String"(%"String::Builder"* %1701) | |
to label %invoke_out576 unwind label %rescue131, !dbg !1610 | |
invoke_out576: ; preds = %invoke_out575 | |
%1703 = call %TypeCastError* @"*TypeCastError::new<String>:TypeCastError"(%String* %1702), !dbg !1610 | |
invoke void @"*raise<TypeCastError>:NoReturn"(%TypeCastError* %1703) | |
to label %invoke_out577 unwind label %rescue131, !dbg !1610 | |
invoke_out577: ; preds = %invoke_out576 | |
unreachable, !dbg !1610 | |
current_def578: ; preds = %matches564 | |
%1704 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1705 = bitcast [1 x i64]* %1704 to i32*, !dbg !1610 | |
%1706 = load i32, i32* %1705, !dbg !1610 | |
br label %exit580, !dbg !1610 | |
next_def579: ; preds = %matches564 | |
%1707 = icmp eq i32 162, %1680, !dbg !1610 | |
br i1 %1707, label %current_def581, label %next_def582, !dbg !1610 | |
exit580: ; preds = %current_def592, %current_def590, %current_def588, %current_def586, %invoke_out585, %current_def581, %current_def578 | |
%1708 = phi i32 [ %1706, %current_def578 ], [ %1720, %current_def581 ], [ %1725, %invoke_out585 ], [ %1730, %current_def586 ], [ %1734, %current_def588 ], [ %1739, %current_def590 ], [ %1744, %current_def592 ], !dbg !1610 | |
%1709 = sext i32 %1708 to i64, !dbg !1610 | |
%1710 = add i64 %1677, %1709, !dbg !1610 | |
%1711 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1711, !dbg !1610 | |
%1712 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
%1713 = bitcast [1 x i64]* %1712 to i64*, !dbg !1610 | |
store i64 %1710, i64* %1713, !dbg !1610 | |
%1714 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %147, i32 0, i32 0, !dbg !1610 | |
store i32 163, i32* %1714, !dbg !1610 | |
%1715 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %147, i32 0, i32 1, !dbg !1610 | |
%1716 = bitcast [1 x i64]* %1715 to i64*, !dbg !1610 | |
store i64 %1710, i64* %1716, !dbg !1610 | |
br label %exit594, !dbg !1610 | |
current_def581: ; preds = %next_def579 | |
%1717 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1718 = bitcast [1 x i64]* %1717 to i64*, !dbg !1610 | |
%1719 = load i64, i64* %1718, !dbg !1610 | |
%1720 = trunc i64 %1719 to i32, !dbg !1610 | |
br label %exit580, !dbg !1610 | |
next_def582: ; preds = %next_def579 | |
%1721 = icmp eq i32 1, %1680, !dbg !1610 | |
br i1 %1721, label %current_def583, label %next_def584, !dbg !1610 | |
current_def583: ; preds = %next_def582 | |
%1722 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1723 = bitcast [1 x i64]* %1722 to %String**, !dbg !1610 | |
%1724 = load %String*, %String** %1723, !dbg !1610 | |
%1725 = invoke i32 @"*String#to_i:Int32"(%String* %1724) | |
to label %invoke_out585 unwind label %rescue131, !dbg !1610 | |
next_def584: ; preds = %next_def582 | |
%1726 = icmp eq i32 159, %1680, !dbg !1610 | |
br i1 %1726, label %current_def586, label %next_def587, !dbg !1610 | |
invoke_out585: ; preds = %current_def583 | |
br label %exit580, !dbg !1610 | |
current_def586: ; preds = %next_def584 | |
%1727 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1728 = bitcast [1 x i64]* %1727 to i16*, !dbg !1610 | |
%1729 = load i16, i16* %1728, !dbg !1610 | |
%1730 = zext i16 %1729 to i32, !dbg !1610 | |
br label %exit580, !dbg !1610 | |
next_def587: ; preds = %next_def584 | |
%1731 = icmp eq i32 161, %1680, !dbg !1610 | |
br i1 %1731, label %current_def588, label %next_def589, !dbg !1610 | |
current_def588: ; preds = %next_def587 | |
%1732 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1733 = bitcast [1 x i64]* %1732 to i32*, !dbg !1610 | |
%1734 = load i32, i32* %1733, !dbg !1610 | |
br label %exit580, !dbg !1610 | |
next_def589: ; preds = %next_def587 | |
%1735 = icmp eq i32 163, %1680, !dbg !1610 | |
br i1 %1735, label %current_def590, label %next_def591, !dbg !1610 | |
current_def590: ; preds = %next_def589 | |
%1736 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1737 = bitcast [1 x i64]* %1736 to i64*, !dbg !1610 | |
%1738 = load i64, i64* %1737, !dbg !1610 | |
%1739 = trunc i64 %1738 to i32, !dbg !1610 | |
br label %exit580, !dbg !1610 | |
next_def591: ; preds = %next_def589 | |
%1740 = icmp eq i32 157, %1680, !dbg !1610 | |
br i1 %1740, label %current_def592, label %next_def593, !dbg !1610 | |
current_def592: ; preds = %next_def591 | |
%1741 = getelementptr inbounds %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)", %"(Int32 | Int64 | String | UInt16 | UInt32 | UInt64 | UInt8)"* %1678, i32 0, i32 1, !dbg !1610 | |
%1742 = bitcast [1 x i64]* %1741 to i8*, !dbg !1610 | |
%1743 = load i8, i8* %1742, !dbg !1610 | |
%1744 = zext i8 %1743 to i32, !dbg !1610 | |
br label %exit580, !dbg !1610 | |
next_def593: ; preds = %next_def591 | |
unreachable, !dbg !1610 | |
exit594: ; preds = %else563, %exit580 | |
%1745 = phi %"(UInt64 | Nil)"* [ %147, %exit580 ], [ %148, %else563 ], !dbg !1610 | |
br label %exit561, !dbg !1610 | |
exit595: ; preds = %else530, %exit561 | |
%1746 = phi %"(UInt64 | Nil)"* [ %1669, %exit561 ], [ %149, %else530 ], !dbg !1610 | |
br label %exit528, !dbg !1610 | |
then596: ; preds = %exit603 | |
%1747 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %low_pc189, i32 0, i32 1, !dbg !1610 | |
%1748 = bitcast [1 x i64]* %1747 to i64*, !dbg !1610 | |
%1749 = load i64, i64* %1748, !dbg !1610 | |
%1750 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %high_pc188, i32 0, i32 1, !dbg !1610 | |
%1751 = bitcast [1 x i64]* %1750 to i64*, !dbg !1610 | |
%1752 = load i64, i64* %1751, !dbg !1610 | |
%1753 = load %String*, %String** %name190, !dbg !1610 | |
store i64 %1749, i64* %name185, !dbg !1610 | |
store i64 %1752, i64* %low_pc, !dbg !1610 | |
store %String* %1753, %String** %high_pc, !dbg !1610 | |
%1754 = load %"Array(Tuple(UInt64, UInt64, String))"*, %"Array(Tuple(UInt64, UInt64, String))"** %names, !dbg !1610 | |
%1755 = load i64, i64* %name185, !dbg !1610 | |
%1756 = getelementptr inbounds %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %152, i32 0, i32 0, !dbg !1610 | |
store i64 %1755, i64* %1756, !dbg !1610 | |
%1757 = load i64, i64* %low_pc, !dbg !1610 | |
%1758 = getelementptr inbounds %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %152, i32 0, i32 1, !dbg !1610 | |
store i64 %1757, i64* %1758, !dbg !1610 | |
%1759 = load %String*, %String** %high_pc, !dbg !1610 | |
%1760 = getelementptr inbounds %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %152, i32 0, i32 2, !dbg !1610 | |
store %String* %1759, %String** %1760, !dbg !1610 | |
%1761 = load %"Tuple(UInt64, UInt64, String)", %"Tuple(UInt64, UInt64, String)"* %152, !dbg !1610 | |
%1762 = invoke %"Array(Tuple(UInt64, UInt64, String))"* @"*Array(Tuple(UInt64, UInt64, String))@Array(T)#<<<Tuple(UInt64, UInt64, String)>:Array(Tuple(UInt64, UInt64, String))"(%"Array(Tuple(UInt64, UInt64, String))"* %1754, %"Tuple(UInt64, UInt64, String)" %1761) | |
to label %invoke_out604 unwind label %rescue131, !dbg !1610 | |
else597: ; preds = %exit603 | |
br label %exit605, !dbg !1610 | |
then598: ; preds = %exit602 | |
%1763 = load %String*, %String** %name190, !dbg !1610 | |
%1764 = icmp eq %String* %1763, null, !dbg !1610 | |
%1765 = select i1 %1764, i32 0, i32 1, !dbg !1610 | |
%1766 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %151, i32 0, i32 0, !dbg !1610 | |
store i32 %1765, i32* %1766, !dbg !1610 | |
%1767 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %151, i32 0, i32 1, !dbg !1610 | |
%1768 = bitcast [1 x i64]* %1767 to %String**, !dbg !1610 | |
store %String* %1763, %String** %1768, !dbg !1610 | |
br label %exit603, !dbg !1610 | |
else599: ; preds = %exit602 | |
%1769 = bitcast %"(UInt64 | Nil)"* %__temp_238 to %"(String | UInt64 | Nil)"*, !dbg !1610 | |
br label %exit603, !dbg !1610 | |
then600: ; preds = %exit424 | |
br label %exit602, !dbg !1610 | |
else601: ; preds = %exit424 | |
%1770 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %150, i32 0, i32 0, !dbg !1610 | |
store i32 0, i32* %1770, !dbg !1610 | |
%1771 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %150, i32 0, i32 1, !dbg !1610 | |
store [1 x i64] zeroinitializer, [1 x i64]* %1771, !dbg !1610 | |
br label %exit602, !dbg !1610 | |
exit602: ; preds = %else601, %then600 | |
%1772 = phi %"(UInt64 | Nil)"* [ %high_pc188, %then600 ], [ %150, %else601 ], !dbg !1610 | |
%1773 = load %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %1772, !dbg !1610 | |
store %"(UInt64 | Nil)" %1773, %"(UInt64 | Nil)"* %__temp_238, !dbg !1610 | |
%1774 = getelementptr inbounds %"(UInt64 | Nil)", %"(UInt64 | Nil)"* %1772, i32 0, i32 0, !dbg !1610 | |
%1775 = load i32, i32* %1774, !dbg !1610 | |
%1776 = icmp eq i32 %1775, 0, !dbg !1610 | |
%1777 = xor i1 %1776, true, !dbg !1610 | |
%1778 = and i1 true, %1777, !dbg !1610 | |
br i1 %1778, label %then598, label %else599, !dbg !1610 | |
exit603: ; preds = %else599, %then598 | |
%1779 = phi %"(String | UInt64 | Nil)"* [ %151, %then598 ], [ %1769, %else599 ], !dbg !1610 | |
%1780 = getelementptr inbounds %"(String | UInt64 | Nil)", %"(String | UInt64 | Nil)"* %1779, i32 0, i32 0, !dbg !1610 | |
%1781 = load i32, i32* %1780, !dbg !1610 | |
%1782 = icmp eq i32 %1781, 0, !dbg !1610 | |
%1783 = xor i1 %1782, true, !dbg !1610 | |
%1784 = and i1 true, %1783, !dbg !1610 | |
br i1 %1784, label %then596, label %else597, !dbg !1610 | |
invoke_out604: ; preds = %then596 | |
br label %exit605, !dbg !1610 | |
exit605: ; preds = %else597, %invoke_out604 | |
%1785 = phi %"Array(Tuple(UInt64, UInt64, String))"* [ %1762, %invoke_out604 ], [ null, %else597 ], !dbg !1610 | |
br label %exit415, !dbg !1610 | |
exit606: ; preds = %exit135 | |
%1786 = phi %"Array(Tuple(UInt64, UInt64, String))"* [ %504, %exit135 ], !dbg !1640 | |
%1787 = load i64, i64* %original_pos129, !dbg !1640 | |
%1788 = invoke i32* @"*IO::FileDescriptor+@IO::FileDescriptor#seek<Int64>:IO::FileDescriptor+"(i32* %446, i64 %1787) | |
to label %invoke_out609 unwind label %rescue, !dbg !1621 | |
invoke_out607: ; preds = %rescue131 | |
%1789 = bitcast i8* %486 to %"struct.LibUnwind::Exception"*, !dbg !1621 | |
invoke void @__crystal_raise(%"struct.LibUnwind::Exception"* %1789) | |
to label %invoke_out608 unwind label %rescue, !dbg !1640 | |
invoke_out608: ; preds = %invoke_out607 | |
unreachable, !dbg !1640 | |
invoke_out609: ; preds = %exit606 | |
br label %exit610, !dbg !1621 | |
exit610: ; preds = %else109, %invoke_out609 | |
%1790 = phi %"Array(Tuple(UInt64, UInt64, String))"* [ %1786, %invoke_out609 ], [ null, %else109 ], !dbg !1621 | |
br label %exit611, !dbg !1621 | |
exit611: ; preds = %exit610 | |
%1791 = phi %"Array(Tuple(UInt64, UInt64, String))"* [ %1790, %exit610 ], !dbg !1630 | |
%1792 = load %File*, %File** %file1, !dbg !1630 | |
call void @"*File@IO::Buffered#close:Nil"(%File* %1792), !dbg !1631 | |
ret %"Array(Tuple(UInt64, UInt64, String))"* %1791, !dbg !1631 | |
} | |
define internal %String** @"~PROGRAM_NAME:read"() { | |
entry: | |
%0 = load i1, i1* @"PROGRAM_NAME:init", !dbg !1610 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !1610 | |
initialized: ; preds = %not_initialized, %entry | |
ret %String** @PROGRAM_NAME | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"PROGRAM_NAME:init", !dbg !1610 | |
call void @"~PROGRAM_NAME:init"() | |
br label %initialized | |
} | |
define internal void @"~PROGRAM_NAME:init"() { | |
entry: | |
%0 = load i8**, i8*** @ARGV_UNSAFE, !dbg !1610 | |
%1 = load i8*, i8** %0, !dbg !1610 | |
%2 = call %String* @"*String::new<Pointer(UInt8)>:String"(i8* %1) | |
store %String* %2, %String** @PROGRAM_NAME | |
ret void | |
} | |
define internal i16* @"~File::DEFAULT_CREATE_PERMISSIONS:read"() { | |
entry: | |
%0 = load i1, i1* @"File::DEFAULT_CREATE_PERMISSIONS:init", !dbg !1611 | |
br i1 %0, label %initialized, label %not_initialized, !dbg !1611 | |
initialized: ; preds = %not_initialized, %entry | |
ret i16* @"File::DEFAULT_CREATE_PERMISSIONS", !dbg !1611 | |
not_initialized: ; preds = %entry | |
store i1 true, i1* @"File::DEFAULT_CREATE_PERMISSIONS:init", !dbg !1611 | |
call void @"~File::DEFAULT_CREATE_PERMISSIONS:init"(), !dbg !1611 | |
br label %initialized, !dbg !1611 | |
} | |
; Function Attrs: uwtable | |
define internal %File* @"*File::new<String, String, File::Permissions, Nil, Nil>:File"(%String* %filename, %String* %mode, i16 %perm, %Nil %encoding, %Nil %invalid) #0 !dbg !1650 { | |
alloca: | |
%fd = alloca i32, !dbg !1652 | |
%filename1 = alloca %String*, !dbg !1652 | |
br label %entry | |
entry: ; preds = %alloca | |
store %String* %filename, %String** %filename1, !dbg !1652 | |
%0 = load %String*, %String** %filename1, !dbg !1652 | |
store %String* %0, %String** %filename1, !dbg !1653 | |
%1 = load %String*, %String** %filename1, !dbg !1653 | |
%2 = call i32 @"*Crystal::System::File::open<String, String, File::Permissions>:Int32"(%String* %1, %String* %mode, i16 %perm), !dbg !1654 | |
store i32 %2, i32* %fd, !dbg !1655 | |
%3 = load %String*, %String** %filename1, !dbg !1655 | |
%4 = load i32, i32* %fd, !dbg !1655 | |
%5 = call %File* @"*File::new:blocking:encoding:invalid<String, Int32, Bool, Nil, Nil>:File"(%String* %3, i32 %4, i1 true, %Nil zeroinitializer, %Nil zeroinitializer), !dbg !1656 | |
ret %File* %5, !dbg !1656 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Crystal::System::File::open<String, String, File::Permissions>:Int32"(%String* %filename, %String* %mode, i16 %perm) #0 !dbg !1657 { | |
alloca: | |
%oflag = alloca i32, !dbg !1659 | |
%fd = alloca i32, !dbg !1659 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i32 @"*Crystal::System::File::open_flag<String>:Int32"(%String* %mode), !dbg !1660 | |
%1 = or i32 %0, 524288, !dbg !1660 | |
store i32 %1, i32* %oflag, !dbg !1661 | |
%2 = call %String* @"*String#check_no_null_byte:String"(%String* %filename), !dbg !1662 | |
%3 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %2), !dbg !1662 | |
%4 = load i32, i32* %oflag, !dbg !1662 | |
%5 = call i32 (i8*, i32, ...) @open(i8* %3, i32 %4, i16 %perm), !dbg !1663 | |
store i32 %5, i32* %fd, !dbg !1664 | |
%6 = load i32, i32* %fd, !dbg !1665 | |
%7 = icmp slt i32 %6, 0, !dbg !1665 | |
br i1 %7, label %then, label %else, !dbg !1665 | |
then: ; preds = %entry | |
%8 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1666 | |
%9 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %8, %String* bitcast ({ i32, i32, i32, [21 x i8] }* @"'Error opening file ...'" to %String*)), !dbg !1666 | |
%10 = call %String* @"*String#inspect_unquoted:String"(%String* %filename), !dbg !1667 | |
%11 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %9, %String* %10), !dbg !1666 | |
%12 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %11, %String* bitcast ({ i32, i32, i32, [14 x i8] }* @"'' with mode ''" to %String*)), !dbg !1666 | |
%13 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %12, %String* %mode), !dbg !1666 | |
%14 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %13, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'''" to %String*)), !dbg !1666 | |
%15 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %14), !dbg !1666 | |
%16 = call %Errno* @"*Errno::new<String>:Errno"(%String* %15), !dbg !1668 | |
call void @"*raise<Errno>:NoReturn"(%Errno* %16), !dbg !1669 | |
unreachable, !dbg !1669 | |
else: ; preds = %entry | |
%17 = load i32, i32* %fd, !dbg !1669 | |
ret i32 %17, !dbg !1669 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Crystal::System::File::open_flag<String>:Int32"(%String* %mode) #0 !dbg !1670 { | |
alloca: | |
%m = alloca i32, !dbg !1672 | |
%o = alloca i32, !dbg !1672 | |
%__temp_68 = alloca i32, !dbg !1672 | |
%__temp_77 = alloca i32, !dbg !1672 | |
%__temp_78 = alloca i32, !dbg !1672 | |
%oflag = alloca i32, !dbg !1672 | |
br label %entry | |
entry: ; preds = %alloca | |
%0 = call i32 @"*String#size:Int32"(%String* %mode), !dbg !1673 | |
%1 = icmp eq i32 %0, 0, !dbg !1673 | |
br i1 %1, label %then, label %else, !dbg !1673 | |
then: ; preds = %entry | |
call void @"*raise<String>:NoReturn"(%String* bitcast ({ i32, i32, i32, [28 x i8] }* @"'No file open mode s...'" to %String*)), !dbg !1674 | |
unreachable, !dbg !1674 | |
else: ; preds = %entry | |
store i32 0, i32* %m, !dbg !1675 | |
store i32 0, i32* %o, !dbg !1676 | |
%2 = call i32 @"*String#[]<Int32>:Char"(%String* %mode, i32 0), !dbg !1677 | |
store i32 %2, i32* %__temp_68, !dbg !1677 | |
%3 = load i32, i32* %__temp_68, !dbg !1678 | |
%4 = call i1 @"*Char@Object#===<Char>:Bool"(i32 114, i32 %3), !dbg !1678 | |
br i1 %4, label %then1, label %else2, !dbg !1678 | |
then1: ; preds = %else | |
store i32 0, i32* %m, !dbg !1679 | |
br label %exit, !dbg !1679 | |
else2: ; preds = %else | |
%5 = load i32, i32* %__temp_68, !dbg !1680 | |
%6 = call i1 @"*Char@Object#===<Char>:Bool"(i32 119, i32 %5), !dbg !1680 | |
br i1 %6, label %then3, label %else4, !dbg !1680 | |
exit: ; preds = %exit5, %then1 | |
%7 = call i32 @"*String#size:Int32"(%String* %mode), !dbg !1681 | |
store i32 %7, i32* %__temp_77, !dbg !1681 | |
%8 = load i32, i32* %__temp_77, !dbg !1682 | |
%9 = call i1 @"*Int32@Object#===<Int32>:Bool"(i32 1, i32 %8), !dbg !1682 | |
br i1 %9, label %then9, label %else10, !dbg !1682 | |
then3: ; preds = %else2 | |
store i32 1, i32* %m, !dbg !1683 | |
store i32 576, i32* %o, !dbg !1684 | |
br label %exit5, !dbg !1684 | |
else4: ; preds = %else2 | |
%10 = load i32, i32* %__temp_68, !dbg !1685 | |
%11 = call i1 @"*Char@Object#===<Char>:Bool"(i32 97, i32 %10), !dbg !1685 | |
br i1 %11, label %then6, label %else7, !dbg !1685 | |
exit5: ; preds = %exit8, %then3 | |
br label %exit, !dbg !1686 | |
then6: ; preds = %else4 | |
store i32 1, i32* %m, !dbg !1687 | |
store i32 1088, i32* %o, !dbg !1688 | |
br label %exit8, !dbg !1688 | |
else7: ; preds = %else4 | |
%12 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1689 | |
%13 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %12, %String* bitcast ({ i32, i32, i32, [26 x i8] }* @"'Invalid file open m...'" to %String*)), !dbg !1689 | |
%14 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %13, %String* %mode), !dbg !1689 | |
%15 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %14, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'''" to %String*)), !dbg !1689 | |
%16 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %15), !dbg !1689 | |
call void @"*raise<String>:NoReturn"(%String* %16), !dbg !1686 | |
unreachable, !dbg !1686 | |
exit8: ; preds = %then6 | |
br label %exit5, !dbg !1686 | |
then9: ; preds = %exit | |
br label %exit11, !dbg !1682 | |
else10: ; preds = %exit | |
%17 = load i32, i32* %__temp_77, !dbg !1690 | |
%18 = call i1 @"*Int32@Object#===<Int32>:Bool"(i32 2, i32 %17), !dbg !1690 | |
br i1 %18, label %then12, label %else13, !dbg !1690 | |
exit11: ; preds = %exit20, %then9 | |
%19 = load i32, i32* %m, !dbg !1691 | |
%20 = load i32, i32* %o, !dbg !1691 | |
%21 = or i32 %19, %20, !dbg !1691 | |
store i32 %21, i32* %oflag, !dbg !1692 | |
ret i32 %21, !dbg !1692 | |
then12: ; preds = %else10 | |
%22 = call i32 @"*String#[]<Int32>:Char"(%String* %mode, i32 1), !dbg !1693 | |
store i32 %22, i32* %__temp_78, !dbg !1693 | |
%23 = load i32, i32* %__temp_78, !dbg !1694 | |
%24 = call i1 @"*Char@Object#===<Char>:Bool"(i32 43, i32 %23), !dbg !1694 | |
br i1 %24, label %then14, label %else15, !dbg !1694 | |
else13: ; preds = %else10 | |
%25 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1695 | |
%26 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %25, %String* bitcast ({ i32, i32, i32, [26 x i8] }* @"'Invalid file open m...'" to %String*)), !dbg !1695 | |
%27 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %26, %String* %mode), !dbg !1695 | |
%28 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %27, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'''" to %String*)), !dbg !1695 | |
%29 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %28), !dbg !1695 | |
call void @"*raise<String>:NoReturn"(%String* %29), !dbg !1691 | |
unreachable, !dbg !1691 | |
then14: ; preds = %then12 | |
store i32 2, i32* %m, !dbg !1696 | |
br label %exit16, !dbg !1696 | |
else15: ; preds = %then12 | |
%30 = load i32, i32* %__temp_78, !dbg !1697 | |
%31 = call i1 @"*Char@Object#===<Char>:Bool"(i32 98, i32 %30), !dbg !1697 | |
br i1 %31, label %then17, label %else18, !dbg !1697 | |
exit16: ; preds = %exit19, %then14 | |
br label %exit20, !dbg !1698 | |
then17: ; preds = %else15 | |
br label %exit19, !dbg !1697 | |
else18: ; preds = %else15 | |
%32 = call %"String::Builder"* @"*String::Builder::new:String::Builder"(), !dbg !1699 | |
%33 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %32, %String* bitcast ({ i32, i32, i32, [26 x i8] }* @"'Invalid file open m...'" to %String*)), !dbg !1699 | |
%34 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %33, %String* %mode), !dbg !1699 | |
%35 = call %"String::Builder"* @"*String::Builder@IO#<<<String>:String::Builder"(%"String::Builder"* %34, %String* bitcast ({ i32, i32, i32, [2 x i8] }* @"'''" to %String*)), !dbg !1699 | |
%36 = call %String* @"*String::Builder#to_s:String"(%"String::Builder"* %35), !dbg !1699 | |
call void @"*raise<String>:NoReturn"(%String* %36), !dbg !1698 | |
unreachable, !dbg !1698 | |
exit19: ; preds = %then17 | |
br label %exit16, !dbg !1698 | |
exit20: ; preds = %exit16 | |
br label %exit11, !dbg !1691 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*String#[]<Int32>:Char"(%String* %self, i32 %index) #0 !dbg !1700 { | |
alloca: | |
%index1 = alloca i32, !dbg !1701 | |
%byte = alloca %"(UInt8 | Nil)", !dbg !1701 | |
%byte_index = alloca %"(Int32 | Nil)", !dbg !1701 | |
%reader = alloca %"Char::Reader", !dbg !1701 | |
%0 = alloca %"(UInt8 | Nil)", !dbg !1702 | |
%1 = alloca %"(Int32 | Nil)", !dbg !1703 | |
%2 = alloca %"(Bool | Nil)", !dbg !1704 | |
%3 = alloca %"(Bool | Nil)", !dbg !1704 | |
%4 = alloca %"Char::Reader", !dbg !1705 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %index, i32* %index1, !dbg !1701 | |
%5 = call i1 @"*String#ascii_only?:Bool"(%String* %self), !dbg !1706 | |
br i1 %5, label %then, label %else, !dbg !1706 | |
then: ; preds = %entry | |
%6 = load i32, i32* %index1, !dbg !1706 | |
%7 = call %"(UInt8 | Nil)" @"*String#byte_at?<Int32>:(UInt8 | Nil)"(%String* %self, i32 %6), !dbg !1702 | |
store %"(UInt8 | Nil)" %7, %"(UInt8 | Nil)"* %0, !dbg !1702 | |
%8 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %0, !dbg !1707 | |
store %"(UInt8 | Nil)" %8, %"(UInt8 | Nil)"* %byte, !dbg !1707 | |
%9 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %byte, i32 0, i32 0, !dbg !1708 | |
%10 = load i32, i32* %9, !dbg !1708 | |
%11 = icmp eq i32 %10, 0, !dbg !1708 | |
%12 = xor i1 %11, true, !dbg !1708 | |
%13 = and i1 true, %12, !dbg !1708 | |
br i1 %13, label %then2, label %else3, !dbg !1708 | |
else: ; preds = %entry | |
%14 = load i32, i32* %index1, !dbg !1709 | |
%15 = icmp slt i32 %14, 0, !dbg !1709 | |
br i1 %15, label %then7, label %else8, !dbg !1709 | |
then2: ; preds = %then | |
%16 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %byte, i32 0, i32 1, !dbg !1710 | |
%17 = bitcast [1 x i64]* %16 to i8*, !dbg !1710 | |
%18 = load i8, i8* %17, !dbg !1710 | |
%19 = zext i8 %18 to i32, !dbg !1710 | |
%20 = icmp slt i32 %19, 128, !dbg !1710 | |
%21 = and i1 true, %20, !dbg !1710 | |
br i1 %21, label %then4, label %else5, !dbg !1710 | |
else3: ; preds = %then | |
%22 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !1711 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %22), !dbg !1712 | |
unreachable, !dbg !1712 | |
then4: ; preds = %then2 | |
%23 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %byte, i32 0, i32 1, !dbg !1710 | |
%24 = bitcast [1 x i64]* %23 to i8*, !dbg !1710 | |
%25 = load i8, i8* %24, !dbg !1710 | |
%26 = zext i8 %25 to i32, !dbg !1710 | |
br label %exit, !dbg !1710 | |
else5: ; preds = %then2 | |
br label %exit, !dbg !1710 | |
exit: ; preds = %else5, %then4 | |
%27 = phi i32 [ %26, %then4 ], [ 65533, %else5 ], !dbg !1710 | |
br label %exit6, !dbg !1710 | |
exit6: ; preds = %then10, %exit | |
%28 = phi i32 [ %27, %exit ], [ %46, %then10 ], !dbg !1712 | |
ret i32 %28, !dbg !1712 | |
then7: ; preds = %else | |
%29 = load i32, i32* %index1, !dbg !1709 | |
%30 = call i32 @"*String#size:Int32"(%String* %self), !dbg !1713 | |
%31 = add i32 %29, %30, !dbg !1713 | |
store i32 %31, i32* %index1, !dbg !1709 | |
br label %exit9, !dbg !1709 | |
else8: ; preds = %else | |
br label %exit9, !dbg !1709 | |
exit9: ; preds = %else8, %then7 | |
%32 = load i32, i32* %index1, !dbg !1709 | |
%33 = call %"(Int32 | Nil)" @"*String#char_index_to_byte_index<Int32>:(Int32 | Nil)"(%String* %self, i32 %32), !dbg !1703 | |
store %"(Int32 | Nil)" %33, %"(Int32 | Nil)"* %1, !dbg !1703 | |
%34 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, !dbg !1714 | |
store %"(Int32 | Nil)" %34, %"(Int32 | Nil)"* %byte_index, !dbg !1714 | |
%35 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %byte_index, i32 0, i32 0, !dbg !1704 | |
%36 = load i32, i32* %35, !dbg !1704 | |
%37 = icmp eq i32 %36, 0, !dbg !1704 | |
%38 = xor i1 %37, true, !dbg !1704 | |
%39 = and i1 true, %38, !dbg !1704 | |
br i1 %39, label %then12, label %else13, !dbg !1704 | |
then10: ; preds = %exit14 | |
%40 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %byte_index, i32 0, i32 1, !dbg !1704 | |
%41 = bitcast [1 x i64]* %40 to i32*, !dbg !1704 | |
%42 = load i32, i32* %41, !dbg !1704 | |
%43 = call %"Char::Reader" @"*Char::Reader::new:pos<String, Int32>:Char::Reader"(%String* %self, i32 %42), !dbg !1705 | |
store %"Char::Reader" %43, %"Char::Reader"* %4, !dbg !1705 | |
%44 = load %"Char::Reader", %"Char::Reader"* %4, !dbg !1715 | |
store %"Char::Reader" %44, %"Char::Reader"* %reader, !dbg !1715 | |
%45 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %reader, i32 0, i32 1, !dbg !1715 | |
%46 = load i32, i32* %45, !dbg !1715 | |
br label %exit6, !dbg !1715 | |
else11: ; preds = %exit14 | |
%47 = call %IndexError* @"*IndexError::new:IndexError"(), !dbg !1711 | |
call void @"*raise<IndexError>:NoReturn"(%IndexError* %47), !dbg !1712 | |
unreachable, !dbg !1712 | |
then12: ; preds = %exit9 | |
%48 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %byte_index, i32 0, i32 1, !dbg !1704 | |
%49 = bitcast [1 x i64]* %48 to i32*, !dbg !1704 | |
%50 = load i32, i32* %49, !dbg !1704 | |
%51 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1704 | |
%52 = load i32, i32* %51, !dbg !1704 | |
%53 = icmp slt i32 %50, %52, !dbg !1704 | |
%54 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %2, i32 0, i32 0, !dbg !1704 | |
store i32 171, i32* %54, !dbg !1704 | |
%55 = zext i1 %53 to i64, !dbg !1704 | |
%56 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %2, i32 0, i32 1, !dbg !1704 | |
%57 = bitcast [1 x i64]* %56 to i64*, !dbg !1704 | |
store i64 %55, i64* %57, !dbg !1704 | |
br label %exit14, !dbg !1704 | |
else13: ; preds = %exit9 | |
%58 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %3, i32 0, i32 0, !dbg !1704 | |
store i32 0, i32* %58, !dbg !1704 | |
%59 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %3, i32 0, i32 1, !dbg !1704 | |
store [1 x i64] zeroinitializer, [1 x i64]* %59, !dbg !1704 | |
br label %exit14, !dbg !1704 | |
exit14: ; preds = %else13, %then12 | |
%60 = phi %"(Bool | Nil)"* [ %2, %then12 ], [ %3, %else13 ], !dbg !1704 | |
%61 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %60, i32 0, i32 0, !dbg !1704 | |
%62 = load i32, i32* %61, !dbg !1704 | |
%63 = icmp eq i32 %62, 0, !dbg !1704 | |
%64 = xor i1 %63, true, !dbg !1704 | |
%65 = and i1 true, %64, !dbg !1704 | |
%66 = getelementptr inbounds %"(Bool | Nil)", %"(Bool | Nil)"* %60, i32 0, i32 1, !dbg !1704 | |
%67 = bitcast [1 x i64]* %66 to i1*, !dbg !1704 | |
%68 = load i1, i1* %67, !dbg !1704 | |
%69 = icmp eq i32 %62, 171, !dbg !1704 | |
%70 = xor i1 %68, true, !dbg !1704 | |
%71 = and i1 %69, %70, !dbg !1704 | |
%72 = xor i1 %71, true, !dbg !1704 | |
%73 = and i1 %65, %72, !dbg !1704 | |
br i1 %73, label %then10, label %else11, !dbg !1704 | |
} | |
; Function Attrs: uwtable | |
define internal %"(UInt8 | Nil)" @"*String#byte_at?<Int32>:(UInt8 | Nil)"(%String* %self, i32 %index) #0 !dbg !1716 { | |
alloca: | |
%index1 = alloca i32, !dbg !1717 | |
%__temp_69 = alloca i1, !dbg !1717 | |
%0 = alloca %"(UInt8 | Nil)", !dbg !1718 | |
%1 = alloca %"(UInt8 | Nil)", !dbg !1718 | |
br label %entry | |
entry: ; preds = %alloca | |
store i32 %index, i32* %index1, !dbg !1717 | |
%2 = load i32, i32* %index1, !dbg !1719 | |
%3 = icmp slt i32 %2, 0, !dbg !1719 | |
br i1 %3, label %then, label %else, !dbg !1719 | |
then: ; preds = %entry | |
%4 = load i32, i32* %index1, !dbg !1719 | |
%5 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1719 | |
%6 = load i32, i32* %5, !dbg !1719 | |
%7 = add i32 %4, %6, !dbg !1719 | |
store i32 %7, i32* %index1, !dbg !1719 | |
br label %exit, !dbg !1719 | |
else: ; preds = %entry | |
br label %exit, !dbg !1719 | |
exit: ; preds = %else, %then | |
%8 = load i32, i32* %index1, !dbg !1720 | |
%9 = icmp sle i32 0, %8, !dbg !1720 | |
store i1 %9, i1* %__temp_69, !dbg !1720 | |
br i1 %9, label %then4, label %else5, !dbg !1720 | |
then2: ; preds = %exit6 | |
%10 = call i8* @"*String#to_unsafe:Pointer(UInt8)"(%String* %self), !dbg !1718 | |
%11 = load i32, i32* %index1, !dbg !1718 | |
%12 = call i8 @"*Pointer(UInt8)@Pointer(T)#[]<Int32>:UInt8"(i8* %10, i32 %11), !dbg !1718 | |
%13 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %0, i32 0, i32 0, !dbg !1718 | |
store i32 157, i32* %13, !dbg !1718 | |
%14 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %0, i32 0, i32 1, !dbg !1718 | |
%15 = bitcast [1 x i64]* %14 to i8*, !dbg !1718 | |
store i8 %12, i8* %15, !dbg !1718 | |
br label %exit7, !dbg !1718 | |
else3: ; preds = %exit6 | |
%16 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %1, i32 0, i32 0, !dbg !1718 | |
store i32 0, i32* %16, !dbg !1718 | |
%17 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %1, i32 0, i32 1, !dbg !1718 | |
store [1 x i64] zeroinitializer, [1 x i64]* %17, !dbg !1718 | |
br label %exit7, !dbg !1718 | |
then4: ; preds = %exit | |
%18 = load i32, i32* %index1, !dbg !1720 | |
%19 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1720 | |
%20 = load i32, i32* %19, !dbg !1720 | |
%21 = icmp slt i32 %18, %20, !dbg !1720 | |
br label %exit6, !dbg !1720 | |
else5: ; preds = %exit | |
%22 = load i1, i1* %__temp_69, !dbg !1720 | |
br label %exit6, !dbg !1720 | |
exit6: ; preds = %else5, %then4 | |
%23 = phi i1 [ %21, %then4 ], [ %22, %else5 ], !dbg !1720 | |
br i1 %23, label %then2, label %else3, !dbg !1720 | |
exit7: ; preds = %else3, %then2 | |
%24 = phi %"(UInt8 | Nil)"* [ %0, %then2 ], [ %1, %else3 ], !dbg !1718 | |
%25 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %24, !dbg !1718 | |
ret %"(UInt8 | Nil)" %25, !dbg !1718 | |
} | |
; Function Attrs: uwtable | |
define internal %"(Int32 | Nil)" @"*String#char_index_to_byte_index<Int32>:(Int32 | Nil)"(%String* %self, i32 %index) #0 !dbg !1721 { | |
alloca: | |
%__temp_70 = alloca i1, !dbg !1722 | |
%size = alloca i32, !dbg !1722 | |
%0 = alloca %"(Int32 | Nil)", !dbg !1723 | |
%1 = alloca %"(Int32 | Nil)", !dbg !1723 | |
%byte_index = alloca i32, !dbg !1724 | |
%char_index = alloca i32, !dbg !1724 | |
%byte_index6 = alloca i32, !dbg !1724 | |
%char_index7 = alloca i32, !dbg !1724 | |
%2 = alloca %"(Int32 | Nil)", !dbg !1725 | |
%3 = alloca %"(Int32 | Nil)", !dbg !1726 | |
%4 = alloca %"(Int32 | Nil)", !dbg !1726 | |
br label %entry | |
entry: ; preds = %alloca | |
%5 = call i1 @"*String#ascii_only?:Bool"(%String* %self), !dbg !1727 | |
br i1 %5, label %then, label %else, !dbg !1727 | |
then: ; preds = %entry | |
%6 = icmp sle i32 0, %index, !dbg !1723 | |
store i1 %6, i1* %__temp_70, !dbg !1723 | |
br i1 %6, label %then3, label %else4, !dbg !1723 | |
else: ; preds = %entry | |
store i32 0, i32* %byte_index6, !dbg !1728 | |
store i32 0, i32* %char_index7, !dbg !1729 | |
br label %while, !dbg !1729 | |
then1: ; preds = %exit | |
%7 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 0, !dbg !1723 | |
store i32 160, i32* %7, !dbg !1723 | |
%8 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %0, i32 0, i32 1, !dbg !1723 | |
%9 = bitcast [1 x i64]* %8 to i32*, !dbg !1723 | |
store i32 %index, i32* %9, !dbg !1723 | |
br label %exit5, !dbg !1723 | |
else2: ; preds = %exit | |
%10 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, i32 0, i32 0, !dbg !1723 | |
store i32 0, i32* %10, !dbg !1723 | |
%11 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %1, i32 0, i32 1, !dbg !1723 | |
store [1 x i64] zeroinitializer, [1 x i64]* %11, !dbg !1723 | |
br label %exit5, !dbg !1723 | |
then3: ; preds = %then | |
%12 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1723 | |
%13 = load i32, i32* %12, !dbg !1723 | |
%14 = icmp sle i32 %index, %13, !dbg !1723 | |
br label %exit, !dbg !1723 | |
else4: ; preds = %then | |
%15 = load i1, i1* %__temp_70, !dbg !1723 | |
br label %exit, !dbg !1723 | |
exit: ; preds = %else4, %then3 | |
%16 = phi i1 [ %14, %then3 ], [ %15, %else4 ], !dbg !1723 | |
br i1 %16, label %then1, label %else2, !dbg !1723 | |
exit5: ; preds = %else2, %then1 | |
%17 = phi %"(Int32 | Nil)"* [ %0, %then1 ], [ %1, %else2 ], !dbg !1723 | |
%18 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %17, !dbg !1723 | |
ret %"(Int32 | Nil)" %18, !dbg !1723 | |
while: ; preds = %else10, %else | |
%19 = load i32, i32* %byte_index6, !dbg !1730 | |
%20 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1730 | |
%21 = load i32, i32* %20, !dbg !1730 | |
%22 = icmp slt i32 %19, %21, !dbg !1730 | |
br i1 %22, label %body, label %exit8, !dbg !1730 | |
body: ; preds = %while | |
%23 = load i32, i32* %byte_index6, !dbg !1730 | |
%24 = load i32, i32* %char_index7, !dbg !1730 | |
store i32 %23, i32* %byte_index, !dbg !1730 | |
store i32 %24, i32* %char_index, !dbg !1730 | |
%25 = load i32, i32* %char_index, !dbg !1725 | |
%26 = icmp eq i32 %index, %25, !dbg !1725 | |
br i1 %26, label %then9, label %else10, !dbg !1725 | |
exit8: ; preds = %while | |
%27 = load i32, i32* %char_index7, !dbg !1731 | |
store i32 %27, i32* %size, !dbg !1732 | |
%28 = load i32, i32* %size, !dbg !1726 | |
%29 = icmp eq i32 %index, %28, !dbg !1726 | |
br i1 %29, label %then11, label %else12, !dbg !1726 | |
then9: ; preds = %body | |
%30 = load i32, i32* %byte_index, !dbg !1725 | |
%31 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %2, i32 0, i32 0, !dbg !1725 | |
store i32 160, i32* %31, !dbg !1725 | |
%32 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %2, i32 0, i32 1, !dbg !1725 | |
%33 = bitcast [1 x i64]* %32 to i32*, !dbg !1725 | |
store i32 %30, i32* %33, !dbg !1725 | |
%34 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %2, !dbg !1725 | |
ret %"(Int32 | Nil)" %34, !dbg !1725 | |
else10: ; preds = %body | |
%35 = load i32, i32* %byte_index6, !dbg !1725 | |
%36 = load i32, i32* %byte_index6, !dbg !1725 | |
%37 = call i32 @"*String#char_bytesize_at<Int32>:Int32"(%String* %self, i32 %36), !dbg !1733 | |
%38 = add i32 %35, %37, !dbg !1733 | |
store i32 %38, i32* %byte_index6, !dbg !1734 | |
%39 = load i32, i32* %char_index7, !dbg !1734 | |
%40 = add i32 %39, 1, !dbg !1734 | |
store i32 %40, i32* %char_index7, !dbg !1731 | |
br label %while, !dbg !1731 | |
then11: ; preds = %exit8 | |
%41 = getelementptr inbounds %String, %String* %self, i32 0, i32 1, !dbg !1726 | |
%42 = load i32, i32* %41, !dbg !1726 | |
%43 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %3, i32 0, i32 0, !dbg !1726 | |
store i32 160, i32* %43, !dbg !1726 | |
%44 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %3, i32 0, i32 1, !dbg !1726 | |
%45 = bitcast [1 x i64]* %44 to i32*, !dbg !1726 | |
store i32 %42, i32* %45, !dbg !1726 | |
%46 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %3, !dbg !1726 | |
ret %"(Int32 | Nil)" %46, !dbg !1726 | |
else12: ; preds = %exit8 | |
%47 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %4, i32 0, i32 0, !dbg !1726 | |
store i32 0, i32* %47, !dbg !1726 | |
%48 = getelementptr inbounds %"(Int32 | Nil)", %"(Int32 | Nil)"* %4, i32 0, i32 1, !dbg !1726 | |
store [1 x i64] zeroinitializer, [1 x i64]* %48, !dbg !1726 | |
%49 = load %"(Int32 | Nil)", %"(Int32 | Nil)"* %4, !dbg !1726 | |
ret %"(Int32 | Nil)" %49, !dbg !1726 | |
} | |
; Function Attrs: uwtable | |
define internal %"Char::Reader" @"*Char::Reader::new:pos<String, Int32>:Char::Reader"(%String* %__arg0, i32 %__temp_71) #0 !dbg !1735 { | |
alloca: | |
%_ = alloca %"Char::Reader", !dbg !1737 | |
%0 = alloca %"Char::Reader", !dbg !1737 | |
br label %entry | |
entry: ; preds = %alloca | |
%1 = bitcast %"Char::Reader"* %0 to i8*, !dbg !1737 | |
call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 ptrtoint (%"Char::Reader"* getelementptr (%"Char::Reader", %"Char::Reader"* null, i32 1) to i32), i32 4, i1 false), !dbg !1737 | |
%2 = load %"Char::Reader", %"Char::Reader"* %0, !dbg !1737 | |
store %"Char::Reader" %2, %"Char::Reader"* %_, !dbg !1737 | |
%3 = call i32 @"*Char::Reader#initialize<String, Int32>:Char"(%"Char::Reader"* %_, %String* %__arg0, i32 %__temp_71), !dbg !1737 | |
%4 = load %"Char::Reader", %"Char::Reader"* %_, !dbg !1737 | |
ret %"Char::Reader" %4, !dbg !1737 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"*Char::Reader#initialize<String, Int32>:Char"(%"Char::Reader"* %self, %String* %string, i32 %pos) #0 !dbg !1738 { | |
entry: | |
%0 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1739 | |
store %String* %string, %String** %0, !dbg !1739 | |
%1 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1740 | |
store i32 %pos, i32* %1, !dbg !1740 | |
%2 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1741 | |
store i32 0, i32* %2, !dbg !1741 | |
%3 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1742 | |
store i32 0, i32* %3, !dbg !1742 | |
%4 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1743 | |
store i1 false, i1* %4, !dbg !1743 | |
%5 = call i32 @"*Char::Reader#decode_current_char:Char"(%"Char::Reader"* %self), !dbg !1744 | |
ret i32 %5, !dbg !1744 | |
} | |
; Function Attrs: alwaysinline uwtable | |
define internal i32 @"*Char::Reader#decode_current_char:Char"(%"Char::Reader"* %self) #3 !dbg !1745 { | |
alloca: | |
%code_point = alloca %"(Int32 | UInt32)", !dbg !1746 | |
%width = alloca i32, !dbg !1746 | |
%error = alloca %"(UInt8 | Nil)", !dbg !1746 | |
%pos = alloca i32, !dbg !1746 | |
%__temp_72 = alloca %"(UInt32 | Nil)", !dbg !1746 | |
%first = alloca i32, !dbg !1746 | |
%second = alloca %"(UInt32 | Nil)", !dbg !1746 | |
%third = alloca %"(UInt32 | Nil)", !dbg !1746 | |
%__temp_73 = alloca i1, !dbg !1746 | |
%__temp_74 = alloca i1, !dbg !1746 | |
%__temp_75 = alloca i1, !dbg !1746 | |
%__temp_76 = alloca i1, !dbg !1746 | |
%fourth = alloca %"(UInt32 | Nil)", !dbg !1746 | |
%0 = alloca %"(UInt32 | Nil)", !dbg !1747 | |
%1 = alloca %"(UInt32 | Nil)", !dbg !1748 | |
%2 = alloca %"(UInt32 | Nil)", !dbg !1749 | |
%3 = alloca %"(UInt32 | Nil)", !dbg !1750 | |
br label %entry | |
entry: ; preds = %alloca | |
%4 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1751 | |
%5 = load i32, i32* %4, !dbg !1751 | |
store i32 %5, i32* %pos, !dbg !1746 | |
%6 = load i32, i32* %pos, !dbg !1747 | |
%7 = call %"(UInt32 | Nil)" @"*Char::Reader#byte_at?<Int32>:(UInt32 | Nil)"(%"Char::Reader"* %self, i32 %6), !dbg !1747 | |
store %"(UInt32 | Nil)" %7, %"(UInt32 | Nil)"* %0, !dbg !1747 | |
%8 = load %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %0, !dbg !1747 | |
store %"(UInt32 | Nil)" %8, %"(UInt32 | Nil)"* %__temp_72, !dbg !1747 | |
%9 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %0, i32 0, i32 0, !dbg !1747 | |
%10 = load i32, i32* %9, !dbg !1747 | |
%11 = icmp eq i32 %10, 0, !dbg !1747 | |
%12 = xor i1 %11, true, !dbg !1747 | |
%13 = and i1 true, %12, !dbg !1747 | |
br i1 %13, label %then, label %else, !dbg !1747 | |
then: ; preds = %entry | |
%14 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %__temp_72, i32 0, i32 1, !dbg !1747 | |
%15 = bitcast [1 x i64]* %14 to i32*, !dbg !1747 | |
%16 = load i32, i32* %15, !dbg !1747 | |
br label %exit, !dbg !1747 | |
else: ; preds = %entry | |
br label %exit, !dbg !1747 | |
exit: ; preds = %else, %then | |
%17 = phi i32 [ %16, %then ], [ 0, %else ], !dbg !1747 | |
store i32 %17, i32* %first, !dbg !1752 | |
%18 = load i32, i32* %first, !dbg !1753 | |
%19 = icmp ult i32 %18, 128, !dbg !1753 | |
%20 = and i1 true, %19, !dbg !1753 | |
br i1 %20, label %then1, label %else2, !dbg !1753 | |
then1: ; preds = %exit | |
%21 = load i32, i32* %first, !dbg !1753 | |
%22 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1753 | |
store i32 161, i32* %22, !dbg !1753 | |
%23 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1753 | |
%24 = bitcast [1 x i64]* %23 to i32*, !dbg !1753 | |
store i32 %21, i32* %24, !dbg !1753 | |
store i32 1, i32* %width, !dbg !1753 | |
%25 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1753 | |
store i32 0, i32* %25, !dbg !1753 | |
%26 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1753 | |
store [1 x i64] zeroinitializer, [1 x i64]* %26, !dbg !1753 | |
%27 = load i32, i32* %width, !dbg !1753 | |
%28 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %27, i32* %28, !dbg !1754 | |
%29 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%30 = load i32, i32* %29, !dbg !1754 | |
%31 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%32 = load %String*, %String** %31, !dbg !1754 | |
%33 = getelementptr inbounds %String, %String* %32, i32 0, i32 1, !dbg !1754 | |
%34 = load i32, i32* %33, !dbg !1754 | |
%35 = icmp eq i32 %30, %34, !dbg !1754 | |
%36 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %35, i1* %36, !dbg !1755 | |
%37 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%38 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %38, %"(UInt8 | Nil)"* %37, !dbg !1756 | |
%39 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%40 = load i32, i32* %39, !dbg !1756 | |
%41 = icmp eq i32 160, %40, !dbg !1756 | |
br i1 %41, label %current_def, label %next_def, !dbg !1756 | |
else2: ; preds = %exit | |
%42 = load i32, i32* %first, !dbg !1757 | |
%43 = icmp ult i32 %42, 194, !dbg !1757 | |
%44 = and i1 true, %43, !dbg !1757 | |
br i1 %44, label %then7, label %else8, !dbg !1757 | |
current_def: ; preds = %then1 | |
%45 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%46 = bitcast [1 x i64]* %45 to i32*, !dbg !1756 | |
%47 = load i32, i32* %46, !dbg !1756 | |
br label %exit3, !dbg !1756 | |
next_def: ; preds = %then1 | |
%48 = icmp eq i32 161, %40, !dbg !1756 | |
br i1 %48, label %current_def4, label %next_def5, !dbg !1756 | |
exit3: ; preds = %current_def4, %current_def | |
%49 = phi i32 [ %47, %current_def ], [ %53, %current_def4 ], !dbg !1756 | |
%50 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %49, i32* %50, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def4: ; preds = %next_def | |
%51 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%52 = bitcast [1 x i64]* %51 to i32*, !dbg !1756 | |
%53 = load i32, i32* %52, !dbg !1756 | |
br label %exit3, !dbg !1756 | |
next_def5: ; preds = %next_def | |
unreachable, !dbg !1756 | |
exit6: ; preds = %exit111, %exit106, %exit99, %exit92, %exit85, %exit75, %exit65, %exit60, %exit50, %exit38, %exit28, %exit21, %exit11, %exit3 | |
%54 = phi i32 [ %49, %exit3 ], [ %89, %exit11 ], [ %131, %exit21 ], [ %174, %exit28 ], [ %216, %exit38 ], [ %264, %exit50 ], [ %335, %exit60 ], [ %344, %exit65 ], [ %386, %exit75 ], [ %432, %exit85 ], [ %470, %exit92 ], [ %505, %exit99 ], [ %574, %exit106 ], [ %583, %exit111 ], !dbg !1758 | |
ret i32 %54, !dbg !1758 | |
then7: ; preds = %else2 | |
%55 = load i32, i32* %first, !dbg !1757 | |
%56 = trunc i32 %55 to i8, !dbg !1757 | |
%57 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1757 | |
store i32 160, i32* %57, !dbg !1757 | |
%58 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1757 | |
%59 = bitcast [1 x i64]* %58 to i32*, !dbg !1757 | |
store i32 65533, i32* %59, !dbg !1757 | |
store i32 1, i32* %width, !dbg !1757 | |
%60 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1757 | |
store i32 157, i32* %60, !dbg !1757 | |
%61 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1757 | |
%62 = bitcast [1 x i64]* %61 to i8*, !dbg !1757 | |
store i8 %56, i8* %62, !dbg !1757 | |
%63 = load i32, i32* %width, !dbg !1757 | |
%64 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %63, i32* %64, !dbg !1754 | |
%65 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%66 = load i32, i32* %65, !dbg !1754 | |
%67 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%68 = load %String*, %String** %67, !dbg !1754 | |
%69 = getelementptr inbounds %String, %String* %68, i32 0, i32 1, !dbg !1754 | |
%70 = load i32, i32* %69, !dbg !1754 | |
%71 = icmp eq i32 %66, %70, !dbg !1754 | |
%72 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %71, i1* %72, !dbg !1755 | |
%73 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%74 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %74, %"(UInt8 | Nil)"* %73, !dbg !1756 | |
%75 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%76 = load i32, i32* %75, !dbg !1756 | |
%77 = icmp eq i32 160, %76, !dbg !1756 | |
br i1 %77, label %current_def9, label %next_def10, !dbg !1756 | |
else8: ; preds = %else2 | |
%78 = load i32, i32* %pos, !dbg !1758 | |
%79 = add i32 %78, 1, !dbg !1758 | |
%80 = call %"(UInt32 | Nil)" @"*Char::Reader#byte_at?<Int32>:(UInt32 | Nil)"(%"Char::Reader"* %self, i32 %79), !dbg !1748 | |
store %"(UInt32 | Nil)" %80, %"(UInt32 | Nil)"* %1, !dbg !1748 | |
%81 = load %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %1, !dbg !1759 | |
store %"(UInt32 | Nil)" %81, %"(UInt32 | Nil)"* %second, !dbg !1759 | |
%82 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 0, !dbg !1760 | |
%83 = load i32, i32* %82, !dbg !1760 | |
%84 = icmp eq i32 0, %83, !dbg !1760 | |
br i1 %84, label %then16, label %else17, !dbg !1760 | |
current_def9: ; preds = %then7 | |
%85 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%86 = bitcast [1 x i64]* %85 to i32*, !dbg !1756 | |
%87 = load i32, i32* %86, !dbg !1756 | |
br label %exit11, !dbg !1756 | |
next_def10: ; preds = %then7 | |
%88 = icmp eq i32 161, %76, !dbg !1756 | |
br i1 %88, label %current_def12, label %next_def13, !dbg !1756 | |
exit11: ; preds = %current_def12, %current_def9 | |
%89 = phi i32 [ %87, %current_def9 ], [ %93, %current_def12 ], !dbg !1756 | |
%90 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %89, i32* %90, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def12: ; preds = %next_def10 | |
%91 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%92 = bitcast [1 x i64]* %91 to i32*, !dbg !1756 | |
%93 = load i32, i32* %92, !dbg !1756 | |
br label %exit11, !dbg !1756 | |
next_def13: ; preds = %next_def10 | |
unreachable, !dbg !1756 | |
then14: ; preds = %exit18 | |
%94 = load i32, i32* %first, !dbg !1760 | |
%95 = trunc i32 %94 to i8, !dbg !1760 | |
%96 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1760 | |
store i32 160, i32* %96, !dbg !1760 | |
%97 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1760 | |
%98 = bitcast [1 x i64]* %97 to i32*, !dbg !1760 | |
store i32 65533, i32* %98, !dbg !1760 | |
store i32 1, i32* %width, !dbg !1760 | |
%99 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1760 | |
store i32 157, i32* %99, !dbg !1760 | |
%100 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1760 | |
%101 = bitcast [1 x i64]* %100 to i8*, !dbg !1760 | |
store i8 %95, i8* %101, !dbg !1760 | |
%102 = load i32, i32* %width, !dbg !1760 | |
%103 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %102, i32* %103, !dbg !1754 | |
%104 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%105 = load i32, i32* %104, !dbg !1754 | |
%106 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%107 = load %String*, %String** %106, !dbg !1754 | |
%108 = getelementptr inbounds %String, %String* %107, i32 0, i32 1, !dbg !1754 | |
%109 = load i32, i32* %108, !dbg !1754 | |
%110 = icmp eq i32 %105, %109, !dbg !1754 | |
%111 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %110, i1* %111, !dbg !1755 | |
%112 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%113 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %113, %"(UInt8 | Nil)"* %112, !dbg !1756 | |
%114 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%115 = load i32, i32* %114, !dbg !1756 | |
%116 = icmp eq i32 160, %115, !dbg !1756 | |
br i1 %116, label %current_def19, label %next_def20, !dbg !1756 | |
else15: ; preds = %exit18 | |
%117 = load i32, i32* %first, !dbg !1761 | |
%118 = icmp ult i32 %117, 224, !dbg !1761 | |
%119 = and i1 true, %118, !dbg !1761 | |
br i1 %119, label %then24, label %else25, !dbg !1761 | |
then16: ; preds = %else8 | |
br label %exit18, !dbg !1760 | |
else17: ; preds = %else8 | |
%120 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1760 | |
%121 = bitcast [1 x i64]* %120 to i32*, !dbg !1760 | |
%122 = load i32, i32* %121, !dbg !1760 | |
%123 = and i32 %122, 192, !dbg !1760 | |
%124 = icmp ne i32 %123, 128, !dbg !1760 | |
%125 = or i1 false, %124, !dbg !1760 | |
br label %exit18, !dbg !1760 | |
exit18: ; preds = %else17, %then16 | |
%126 = phi i1 [ true, %then16 ], [ %125, %else17 ], !dbg !1760 | |
br i1 %126, label %then14, label %else15, !dbg !1760 | |
current_def19: ; preds = %then14 | |
%127 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%128 = bitcast [1 x i64]* %127 to i32*, !dbg !1756 | |
%129 = load i32, i32* %128, !dbg !1756 | |
br label %exit21, !dbg !1756 | |
next_def20: ; preds = %then14 | |
%130 = icmp eq i32 161, %115, !dbg !1756 | |
br i1 %130, label %current_def22, label %next_def23, !dbg !1756 | |
exit21: ; preds = %current_def22, %current_def19 | |
%131 = phi i32 [ %129, %current_def19 ], [ %135, %current_def22 ], !dbg !1756 | |
%132 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %131, i32* %132, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def22: ; preds = %next_def20 | |
%133 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%134 = bitcast [1 x i64]* %133 to i32*, !dbg !1756 | |
%135 = load i32, i32* %134, !dbg !1756 | |
br label %exit21, !dbg !1756 | |
next_def23: ; preds = %next_def20 | |
unreachable, !dbg !1756 | |
then24: ; preds = %else15 | |
%136 = load i32, i32* %first, !dbg !1761 | |
%137 = call i32 @"*UInt32@Int#<<<Int32>:UInt32"(i32 %136, i32 6), !dbg !1762 | |
%138 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1762 | |
%139 = bitcast [1 x i64]* %138 to i32*, !dbg !1762 | |
%140 = load i32, i32* %139, !dbg !1762 | |
%141 = sub i32 %140, 12416, !dbg !1762 | |
%142 = add i32 %137, %141, !dbg !1762 | |
%143 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1762 | |
store i32 161, i32* %143, !dbg !1762 | |
%144 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1762 | |
%145 = bitcast [1 x i64]* %144 to i32*, !dbg !1762 | |
store i32 %142, i32* %145, !dbg !1762 | |
store i32 2, i32* %width, !dbg !1762 | |
%146 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1762 | |
store i32 0, i32* %146, !dbg !1762 | |
%147 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1762 | |
store [1 x i64] zeroinitializer, [1 x i64]* %147, !dbg !1762 | |
%148 = load i32, i32* %width, !dbg !1762 | |
%149 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %148, i32* %149, !dbg !1754 | |
%150 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%151 = load i32, i32* %150, !dbg !1754 | |
%152 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%153 = load %String*, %String** %152, !dbg !1754 | |
%154 = getelementptr inbounds %String, %String* %153, i32 0, i32 1, !dbg !1754 | |
%155 = load i32, i32* %154, !dbg !1754 | |
%156 = icmp eq i32 %151, %155, !dbg !1754 | |
%157 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %156, i1* %157, !dbg !1755 | |
%158 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%159 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %159, %"(UInt8 | Nil)"* %158, !dbg !1756 | |
%160 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%161 = load i32, i32* %160, !dbg !1756 | |
%162 = icmp eq i32 160, %161, !dbg !1756 | |
br i1 %162, label %current_def26, label %next_def27, !dbg !1756 | |
else25: ; preds = %else15 | |
%163 = load i32, i32* %pos, !dbg !1758 | |
%164 = add i32 %163, 2, !dbg !1758 | |
%165 = call %"(UInt32 | Nil)" @"*Char::Reader#byte_at?<Int32>:(UInt32 | Nil)"(%"Char::Reader"* %self, i32 %164), !dbg !1749 | |
store %"(UInt32 | Nil)" %165, %"(UInt32 | Nil)"* %2, !dbg !1749 | |
%166 = load %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %2, !dbg !1763 | |
store %"(UInt32 | Nil)" %166, %"(UInt32 | Nil)"* %third, !dbg !1763 | |
%167 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %third, i32 0, i32 0, !dbg !1764 | |
%168 = load i32, i32* %167, !dbg !1764 | |
%169 = icmp eq i32 0, %168, !dbg !1764 | |
br i1 %169, label %then33, label %else34, !dbg !1764 | |
current_def26: ; preds = %then24 | |
%170 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%171 = bitcast [1 x i64]* %170 to i32*, !dbg !1756 | |
%172 = load i32, i32* %171, !dbg !1756 | |
br label %exit28, !dbg !1756 | |
next_def27: ; preds = %then24 | |
%173 = icmp eq i32 161, %161, !dbg !1756 | |
br i1 %173, label %current_def29, label %next_def30, !dbg !1756 | |
exit28: ; preds = %current_def29, %current_def26 | |
%174 = phi i32 [ %172, %current_def26 ], [ %178, %current_def29 ], !dbg !1756 | |
%175 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %174, i32* %175, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def29: ; preds = %next_def27 | |
%176 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%177 = bitcast [1 x i64]* %176 to i32*, !dbg !1756 | |
%178 = load i32, i32* %177, !dbg !1756 | |
br label %exit28, !dbg !1756 | |
next_def30: ; preds = %next_def27 | |
unreachable, !dbg !1756 | |
then31: ; preds = %exit35 | |
%179 = load i32, i32* %first, !dbg !1764 | |
%180 = trunc i32 %179 to i8, !dbg !1764 | |
%181 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1764 | |
store i32 160, i32* %181, !dbg !1764 | |
%182 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1764 | |
%183 = bitcast [1 x i64]* %182 to i32*, !dbg !1764 | |
store i32 65533, i32* %183, !dbg !1764 | |
store i32 2, i32* %width, !dbg !1764 | |
%184 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1764 | |
store i32 157, i32* %184, !dbg !1764 | |
%185 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1764 | |
%186 = bitcast [1 x i64]* %185 to i8*, !dbg !1764 | |
store i8 %180, i8* %186, !dbg !1764 | |
%187 = load i32, i32* %width, !dbg !1764 | |
%188 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %187, i32* %188, !dbg !1754 | |
%189 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%190 = load i32, i32* %189, !dbg !1754 | |
%191 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%192 = load %String*, %String** %191, !dbg !1754 | |
%193 = getelementptr inbounds %String, %String* %192, i32 0, i32 1, !dbg !1754 | |
%194 = load i32, i32* %193, !dbg !1754 | |
%195 = icmp eq i32 %190, %194, !dbg !1754 | |
%196 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %195, i1* %196, !dbg !1755 | |
%197 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%198 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %198, %"(UInt8 | Nil)"* %197, !dbg !1756 | |
%199 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%200 = load i32, i32* %199, !dbg !1756 | |
%201 = icmp eq i32 160, %200, !dbg !1756 | |
br i1 %201, label %current_def36, label %next_def37, !dbg !1756 | |
else32: ; preds = %exit35 | |
%202 = load i32, i32* %first, !dbg !1765 | |
%203 = icmp ult i32 %202, 240, !dbg !1765 | |
%204 = and i1 true, %203, !dbg !1765 | |
br i1 %204, label %then41, label %else42, !dbg !1765 | |
then33: ; preds = %else25 | |
br label %exit35, !dbg !1764 | |
else34: ; preds = %else25 | |
%205 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %third, i32 0, i32 1, !dbg !1764 | |
%206 = bitcast [1 x i64]* %205 to i32*, !dbg !1764 | |
%207 = load i32, i32* %206, !dbg !1764 | |
%208 = and i32 %207, 192, !dbg !1764 | |
%209 = icmp ne i32 %208, 128, !dbg !1764 | |
%210 = or i1 false, %209, !dbg !1764 | |
br label %exit35, !dbg !1764 | |
exit35: ; preds = %else34, %then33 | |
%211 = phi i1 [ true, %then33 ], [ %210, %else34 ], !dbg !1764 | |
br i1 %211, label %then31, label %else32, !dbg !1764 | |
current_def36: ; preds = %then31 | |
%212 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%213 = bitcast [1 x i64]* %212 to i32*, !dbg !1756 | |
%214 = load i32, i32* %213, !dbg !1756 | |
br label %exit38, !dbg !1756 | |
next_def37: ; preds = %then31 | |
%215 = icmp eq i32 161, %200, !dbg !1756 | |
br i1 %215, label %current_def39, label %next_def40, !dbg !1756 | |
exit38: ; preds = %current_def39, %current_def36 | |
%216 = phi i32 [ %214, %current_def36 ], [ %220, %current_def39 ], !dbg !1756 | |
%217 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %216, i32* %217, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def39: ; preds = %next_def37 | |
%218 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%219 = bitcast [1 x i64]* %218 to i32*, !dbg !1756 | |
%220 = load i32, i32* %219, !dbg !1756 | |
br label %exit38, !dbg !1756 | |
next_def40: ; preds = %next_def37 | |
unreachable, !dbg !1756 | |
then41: ; preds = %else32 | |
%221 = load i32, i32* %first, !dbg !1766 | |
%222 = icmp eq i32 %221, 224, !dbg !1766 | |
%223 = and i1 true, %222, !dbg !1766 | |
store i1 %223, i1* %__temp_73, !dbg !1766 | |
br i1 %223, label %then45, label %else46, !dbg !1766 | |
else42: ; preds = %else32 | |
%224 = load i32, i32* %first, !dbg !1767 | |
%225 = icmp eq i32 %224, 240, !dbg !1767 | |
%226 = and i1 true, %225, !dbg !1767 | |
store i1 %226, i1* %__temp_75, !dbg !1767 | |
br i1 %226, label %then70, label %else71, !dbg !1767 | |
then43: ; preds = %exit47 | |
%227 = load i32, i32* %first, !dbg !1766 | |
%228 = trunc i32 %227 to i8, !dbg !1766 | |
%229 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1766 | |
store i32 160, i32* %229, !dbg !1766 | |
%230 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1766 | |
%231 = bitcast [1 x i64]* %230 to i32*, !dbg !1766 | |
store i32 65533, i32* %231, !dbg !1766 | |
store i32 3, i32* %width, !dbg !1766 | |
%232 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1766 | |
store i32 157, i32* %232, !dbg !1766 | |
%233 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1766 | |
%234 = bitcast [1 x i64]* %233 to i8*, !dbg !1766 | |
store i8 %228, i8* %234, !dbg !1766 | |
%235 = load i32, i32* %width, !dbg !1766 | |
%236 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %235, i32* %236, !dbg !1754 | |
%237 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%238 = load i32, i32* %237, !dbg !1754 | |
%239 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%240 = load %String*, %String** %239, !dbg !1754 | |
%241 = getelementptr inbounds %String, %String* %240, i32 0, i32 1, !dbg !1754 | |
%242 = load i32, i32* %241, !dbg !1754 | |
%243 = icmp eq i32 %238, %242, !dbg !1754 | |
%244 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %243, i1* %244, !dbg !1755 | |
%245 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%246 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %246, %"(UInt8 | Nil)"* %245, !dbg !1756 | |
%247 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%248 = load i32, i32* %247, !dbg !1756 | |
%249 = icmp eq i32 160, %248, !dbg !1756 | |
br i1 %249, label %current_def48, label %next_def49, !dbg !1756 | |
else44: ; preds = %exit47 | |
%250 = load i32, i32* %first, !dbg !1768 | |
%251 = icmp eq i32 %250, 237, !dbg !1768 | |
%252 = and i1 true, %251, !dbg !1768 | |
store i1 %252, i1* %__temp_74, !dbg !1768 | |
br i1 %252, label %then55, label %else56, !dbg !1768 | |
then45: ; preds = %then41 | |
%253 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1766 | |
%254 = bitcast [1 x i64]* %253 to i32*, !dbg !1766 | |
%255 = load i32, i32* %254, !dbg !1766 | |
%256 = icmp ult i32 %255, 160, !dbg !1766 | |
%257 = and i1 true, %256, !dbg !1766 | |
br label %exit47, !dbg !1766 | |
else46: ; preds = %then41 | |
%258 = load i1, i1* %__temp_73, !dbg !1766 | |
br label %exit47, !dbg !1766 | |
exit47: ; preds = %else46, %then45 | |
%259 = phi i1 [ %257, %then45 ], [ %258, %else46 ], !dbg !1766 | |
br i1 %259, label %then43, label %else44, !dbg !1766 | |
current_def48: ; preds = %then43 | |
%260 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%261 = bitcast [1 x i64]* %260 to i32*, !dbg !1756 | |
%262 = load i32, i32* %261, !dbg !1756 | |
br label %exit50, !dbg !1756 | |
next_def49: ; preds = %then43 | |
%263 = icmp eq i32 161, %248, !dbg !1756 | |
br i1 %263, label %current_def51, label %next_def52, !dbg !1756 | |
exit50: ; preds = %current_def51, %current_def48 | |
%264 = phi i32 [ %262, %current_def48 ], [ %268, %current_def51 ], !dbg !1756 | |
%265 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %264, i32* %265, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def51: ; preds = %next_def49 | |
%266 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%267 = bitcast [1 x i64]* %266 to i32*, !dbg !1756 | |
%268 = load i32, i32* %267, !dbg !1756 | |
br label %exit50, !dbg !1756 | |
next_def52: ; preds = %next_def49 | |
unreachable, !dbg !1756 | |
then53: ; preds = %exit57 | |
%269 = load i32, i32* %first, !dbg !1768 | |
%270 = trunc i32 %269 to i8, !dbg !1768 | |
%271 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1768 | |
store i32 160, i32* %271, !dbg !1768 | |
%272 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1768 | |
%273 = bitcast [1 x i64]* %272 to i32*, !dbg !1768 | |
store i32 65533, i32* %273, !dbg !1768 | |
store i32 3, i32* %width, !dbg !1768 | |
%274 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1768 | |
store i32 157, i32* %274, !dbg !1768 | |
%275 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1768 | |
%276 = bitcast [1 x i64]* %275 to i8*, !dbg !1768 | |
store i8 %270, i8* %276, !dbg !1768 | |
%277 = load i32, i32* %width, !dbg !1768 | |
%278 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %277, i32* %278, !dbg !1754 | |
%279 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%280 = load i32, i32* %279, !dbg !1754 | |
%281 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%282 = load %String*, %String** %281, !dbg !1754 | |
%283 = getelementptr inbounds %String, %String* %282, i32 0, i32 1, !dbg !1754 | |
%284 = load i32, i32* %283, !dbg !1754 | |
%285 = icmp eq i32 %280, %284, !dbg !1754 | |
%286 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %285, i1* %286, !dbg !1755 | |
%287 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%288 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %288, %"(UInt8 | Nil)"* %287, !dbg !1756 | |
%289 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%290 = load i32, i32* %289, !dbg !1756 | |
%291 = icmp eq i32 160, %290, !dbg !1756 | |
br i1 %291, label %current_def58, label %next_def59, !dbg !1756 | |
else54: ; preds = %exit57 | |
%292 = load i32, i32* %first, !dbg !1758 | |
%293 = call i32 @"*UInt32@Int#<<<Int32>:UInt32"(i32 %292, i32 12), !dbg !1769 | |
%294 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1769 | |
%295 = bitcast [1 x i64]* %294 to i32*, !dbg !1769 | |
%296 = load i32, i32* %295, !dbg !1769 | |
%297 = call i32 @"*UInt32@Int#<<<Int32>:UInt32"(i32 %296, i32 6), !dbg !1770 | |
%298 = add i32 %293, %297, !dbg !1770 | |
%299 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %third, i32 0, i32 1, !dbg !1770 | |
%300 = bitcast [1 x i64]* %299 to i32*, !dbg !1770 | |
%301 = load i32, i32* %300, !dbg !1770 | |
%302 = sub i32 %301, 925824, !dbg !1770 | |
%303 = add i32 %298, %302, !dbg !1770 | |
%304 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1770 | |
store i32 161, i32* %304, !dbg !1770 | |
%305 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1770 | |
%306 = bitcast [1 x i64]* %305 to i32*, !dbg !1770 | |
store i32 %303, i32* %306, !dbg !1770 | |
store i32 3, i32* %width, !dbg !1770 | |
%307 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1770 | |
store i32 0, i32* %307, !dbg !1770 | |
%308 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1770 | |
store [1 x i64] zeroinitializer, [1 x i64]* %308, !dbg !1770 | |
%309 = load i32, i32* %width, !dbg !1770 | |
%310 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %309, i32* %310, !dbg !1754 | |
%311 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%312 = load i32, i32* %311, !dbg !1754 | |
%313 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%314 = load %String*, %String** %313, !dbg !1754 | |
%315 = getelementptr inbounds %String, %String* %314, i32 0, i32 1, !dbg !1754 | |
%316 = load i32, i32* %315, !dbg !1754 | |
%317 = icmp eq i32 %312, %316, !dbg !1754 | |
%318 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %317, i1* %318, !dbg !1755 | |
%319 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%320 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %320, %"(UInt8 | Nil)"* %319, !dbg !1756 | |
%321 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%322 = load i32, i32* %321, !dbg !1756 | |
%323 = icmp eq i32 160, %322, !dbg !1756 | |
br i1 %323, label %current_def63, label %next_def64, !dbg !1756 | |
then55: ; preds = %else44 | |
%324 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1768 | |
%325 = bitcast [1 x i64]* %324 to i32*, !dbg !1768 | |
%326 = load i32, i32* %325, !dbg !1768 | |
%327 = icmp uge i32 %326, 160, !dbg !1768 | |
%328 = or i1 false, %327, !dbg !1768 | |
br label %exit57, !dbg !1768 | |
else56: ; preds = %else44 | |
%329 = load i1, i1* %__temp_74, !dbg !1768 | |
br label %exit57, !dbg !1768 | |
exit57: ; preds = %else56, %then55 | |
%330 = phi i1 [ %328, %then55 ], [ %329, %else56 ], !dbg !1768 | |
br i1 %330, label %then53, label %else54, !dbg !1768 | |
current_def58: ; preds = %then53 | |
%331 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%332 = bitcast [1 x i64]* %331 to i32*, !dbg !1756 | |
%333 = load i32, i32* %332, !dbg !1756 | |
br label %exit60, !dbg !1756 | |
next_def59: ; preds = %then53 | |
%334 = icmp eq i32 161, %290, !dbg !1756 | |
br i1 %334, label %current_def61, label %next_def62, !dbg !1756 | |
exit60: ; preds = %current_def61, %current_def58 | |
%335 = phi i32 [ %333, %current_def58 ], [ %339, %current_def61 ], !dbg !1756 | |
%336 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %335, i32* %336, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def61: ; preds = %next_def59 | |
%337 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%338 = bitcast [1 x i64]* %337 to i32*, !dbg !1756 | |
%339 = load i32, i32* %338, !dbg !1756 | |
br label %exit60, !dbg !1756 | |
next_def62: ; preds = %next_def59 | |
unreachable, !dbg !1756 | |
current_def63: ; preds = %else54 | |
%340 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%341 = bitcast [1 x i64]* %340 to i32*, !dbg !1756 | |
%342 = load i32, i32* %341, !dbg !1756 | |
br label %exit65, !dbg !1756 | |
next_def64: ; preds = %else54 | |
%343 = icmp eq i32 161, %322, !dbg !1756 | |
br i1 %343, label %current_def66, label %next_def67, !dbg !1756 | |
exit65: ; preds = %current_def66, %current_def63 | |
%344 = phi i32 [ %342, %current_def63 ], [ %348, %current_def66 ], !dbg !1756 | |
%345 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %344, i32* %345, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def66: ; preds = %next_def64 | |
%346 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%347 = bitcast [1 x i64]* %346 to i32*, !dbg !1756 | |
%348 = load i32, i32* %347, !dbg !1756 | |
br label %exit65, !dbg !1756 | |
next_def67: ; preds = %next_def64 | |
unreachable, !dbg !1756 | |
then68: ; preds = %exit72 | |
%349 = load i32, i32* %first, !dbg !1767 | |
%350 = trunc i32 %349 to i8, !dbg !1767 | |
%351 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1767 | |
store i32 160, i32* %351, !dbg !1767 | |
%352 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1767 | |
%353 = bitcast [1 x i64]* %352 to i32*, !dbg !1767 | |
store i32 65533, i32* %353, !dbg !1767 | |
store i32 3, i32* %width, !dbg !1767 | |
%354 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1767 | |
store i32 157, i32* %354, !dbg !1767 | |
%355 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1767 | |
%356 = bitcast [1 x i64]* %355 to i8*, !dbg !1767 | |
store i8 %350, i8* %356, !dbg !1767 | |
%357 = load i32, i32* %width, !dbg !1767 | |
%358 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %357, i32* %358, !dbg !1754 | |
%359 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%360 = load i32, i32* %359, !dbg !1754 | |
%361 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%362 = load %String*, %String** %361, !dbg !1754 | |
%363 = getelementptr inbounds %String, %String* %362, i32 0, i32 1, !dbg !1754 | |
%364 = load i32, i32* %363, !dbg !1754 | |
%365 = icmp eq i32 %360, %364, !dbg !1754 | |
%366 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %365, i1* %366, !dbg !1755 | |
%367 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%368 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %368, %"(UInt8 | Nil)"* %367, !dbg !1756 | |
%369 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%370 = load i32, i32* %369, !dbg !1756 | |
%371 = icmp eq i32 160, %370, !dbg !1756 | |
br i1 %371, label %current_def73, label %next_def74, !dbg !1756 | |
else69: ; preds = %exit72 | |
%372 = load i32, i32* %first, !dbg !1771 | |
%373 = icmp eq i32 %372, 244, !dbg !1771 | |
%374 = and i1 true, %373, !dbg !1771 | |
store i1 %374, i1* %__temp_76, !dbg !1771 | |
br i1 %374, label %then80, label %else81, !dbg !1771 | |
then70: ; preds = %else42 | |
%375 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1767 | |
%376 = bitcast [1 x i64]* %375 to i32*, !dbg !1767 | |
%377 = load i32, i32* %376, !dbg !1767 | |
%378 = icmp ult i32 %377, 144, !dbg !1767 | |
%379 = and i1 true, %378, !dbg !1767 | |
br label %exit72, !dbg !1767 | |
else71: ; preds = %else42 | |
%380 = load i1, i1* %__temp_75, !dbg !1767 | |
br label %exit72, !dbg !1767 | |
exit72: ; preds = %else71, %then70 | |
%381 = phi i1 [ %379, %then70 ], [ %380, %else71 ], !dbg !1767 | |
br i1 %381, label %then68, label %else69, !dbg !1767 | |
current_def73: ; preds = %then68 | |
%382 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%383 = bitcast [1 x i64]* %382 to i32*, !dbg !1756 | |
%384 = load i32, i32* %383, !dbg !1756 | |
br label %exit75, !dbg !1756 | |
next_def74: ; preds = %then68 | |
%385 = icmp eq i32 161, %370, !dbg !1756 | |
br i1 %385, label %current_def76, label %next_def77, !dbg !1756 | |
exit75: ; preds = %current_def76, %current_def73 | |
%386 = phi i32 [ %384, %current_def73 ], [ %390, %current_def76 ], !dbg !1756 | |
%387 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %386, i32* %387, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def76: ; preds = %next_def74 | |
%388 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%389 = bitcast [1 x i64]* %388 to i32*, !dbg !1756 | |
%390 = load i32, i32* %389, !dbg !1756 | |
br label %exit75, !dbg !1756 | |
next_def77: ; preds = %next_def74 | |
unreachable, !dbg !1756 | |
then78: ; preds = %exit82 | |
%391 = load i32, i32* %first, !dbg !1771 | |
%392 = trunc i32 %391 to i8, !dbg !1771 | |
%393 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1771 | |
store i32 160, i32* %393, !dbg !1771 | |
%394 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1771 | |
%395 = bitcast [1 x i64]* %394 to i32*, !dbg !1771 | |
store i32 65533, i32* %395, !dbg !1771 | |
store i32 3, i32* %width, !dbg !1771 | |
%396 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1771 | |
store i32 157, i32* %396, !dbg !1771 | |
%397 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1771 | |
%398 = bitcast [1 x i64]* %397 to i8*, !dbg !1771 | |
store i8 %392, i8* %398, !dbg !1771 | |
%399 = load i32, i32* %width, !dbg !1771 | |
%400 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %399, i32* %400, !dbg !1754 | |
%401 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%402 = load i32, i32* %401, !dbg !1754 | |
%403 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%404 = load %String*, %String** %403, !dbg !1754 | |
%405 = getelementptr inbounds %String, %String* %404, i32 0, i32 1, !dbg !1754 | |
%406 = load i32, i32* %405, !dbg !1754 | |
%407 = icmp eq i32 %402, %406, !dbg !1754 | |
%408 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %407, i1* %408, !dbg !1755 | |
%409 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1756 | |
%410 = load %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, !dbg !1756 | |
store %"(UInt8 | Nil)" %410, %"(UInt8 | Nil)"* %409, !dbg !1756 | |
%411 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1756 | |
%412 = load i32, i32* %411, !dbg !1756 | |
%413 = icmp eq i32 160, %412, !dbg !1756 | |
br i1 %413, label %current_def83, label %next_def84, !dbg !1756 | |
else79: ; preds = %exit82 | |
%414 = load i32, i32* %pos, !dbg !1758 | |
%415 = add i32 %414, 3, !dbg !1758 | |
%416 = call %"(UInt32 | Nil)" @"*Char::Reader#byte_at?<Int32>:(UInt32 | Nil)"(%"Char::Reader"* %self, i32 %415), !dbg !1750 | |
store %"(UInt32 | Nil)" %416, %"(UInt32 | Nil)"* %3, !dbg !1750 | |
%417 = load %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %3, !dbg !1772 | |
store %"(UInt32 | Nil)" %417, %"(UInt32 | Nil)"* %fourth, !dbg !1772 | |
%418 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %fourth, i32 0, i32 0, !dbg !1773 | |
%419 = load i32, i32* %418, !dbg !1773 | |
%420 = icmp eq i32 0, %419, !dbg !1773 | |
br i1 %420, label %then88, label %else89, !dbg !1773 | |
then80: ; preds = %else69 | |
%421 = getelementptr inbounds %"(UInt32 | Nil)", %"(UInt32 | Nil)"* %second, i32 0, i32 1, !dbg !1771 | |
%422 = bitcast [1 x i64]* %421 to i32*, !dbg !1771 | |
%423 = load i32, i32* %422, !dbg !1771 | |
%424 = icmp uge i32 %423, 144, !dbg !1771 | |
%425 = or i1 false, %424, !dbg !1771 | |
br label %exit82, !dbg !1771 | |
else81: ; preds = %else69 | |
%426 = load i1, i1* %__temp_76, !dbg !1771 | |
br label %exit82, !dbg !1771 | |
exit82: ; preds = %else81, %then80 | |
%427 = phi i1 [ %425, %then80 ], [ %426, %else81 ], !dbg !1771 | |
br i1 %427, label %then78, label %else79, !dbg !1771 | |
current_def83: ; preds = %then78 | |
%428 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%429 = bitcast [1 x i64]* %428 to i32*, !dbg !1756 | |
%430 = load i32, i32* %429, !dbg !1756 | |
br label %exit85, !dbg !1756 | |
next_def84: ; preds = %then78 | |
%431 = icmp eq i32 161, %412, !dbg !1756 | |
br i1 %431, label %current_def86, label %next_def87, !dbg !1756 | |
exit85: ; preds = %current_def86, %current_def83 | |
%432 = phi i32 [ %430, %current_def83 ], [ %436, %current_def86 ], !dbg !1756 | |
%433 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 1, !dbg !1758 | |
store i32 %432, i32* %433, !dbg !1758 | |
br label %exit6, !dbg !1758 | |
current_def86: ; preds = %next_def84 | |
%434 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1756 | |
%435 = bitcast [1 x i64]* %434 to i32*, !dbg !1756 | |
%436 = load i32, i32* %435, !dbg !1756 | |
br label %exit85, !dbg !1756 | |
next_def87: ; preds = %next_def84 | |
unreachable, !dbg !1756 | |
then88: ; preds = %else79 | |
%437 = load i32, i32* %first, !dbg !1773 | |
%438 = trunc i32 %437 to i8, !dbg !1773 | |
%439 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 0, !dbg !1773 | |
store i32 160, i32* %439, !dbg !1773 | |
%440 = getelementptr inbounds %"(Int32 | UInt32)", %"(Int32 | UInt32)"* %code_point, i32 0, i32 1, !dbg !1773 | |
%441 = bitcast [1 x i64]* %440 to i32*, !dbg !1773 | |
store i32 65533, i32* %441, !dbg !1773 | |
store i32 3, i32* %width, !dbg !1773 | |
%442 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 0, !dbg !1773 | |
store i32 157, i32* %442, !dbg !1773 | |
%443 = getelementptr inbounds %"(UInt8 | Nil)", %"(UInt8 | Nil)"* %error, i32 0, i32 1, !dbg !1773 | |
%444 = bitcast [1 x i64]* %443 to i8*, !dbg !1773 | |
store i8 %438, i8* %444, !dbg !1773 | |
%445 = load i32, i32* %width, !dbg !1773 | |
%446 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 2, !dbg !1754 | |
store i32 %445, i32* %446, !dbg !1754 | |
%447 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 3, !dbg !1754 | |
%448 = load i32, i32* %447, !dbg !1754 | |
%449 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 0, !dbg !1754 | |
%450 = load %String*, %String** %449, !dbg !1754 | |
%451 = getelementptr inbounds %String, %String* %450, i32 0, i32 1, !dbg !1754 | |
%452 = load i32, i32* %451, !dbg !1754 | |
%453 = icmp eq i32 %448, %452, !dbg !1754 | |
%454 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 5, !dbg !1755 | |
store i1 %453, i1* %454, !dbg !1755 | |
%455 = getelementptr inbounds %"Char::Reader", %"Char::Reader"* %self, i32 0, i32 4, !dbg !1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment