Created
March 3, 2018 13:37
-
-
Save thebirk/24dc9274e92868ed3b2356beac227e94 to your computer and use it in GitHub Desktop.
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
target triple = "x86_64-pc-windows-msvc" | |
%..opaque = type {}; | |
%..string = type {i8*, i64} ; Basic_string | |
%..rawptr = type i8* ; Basic_rawptr | |
%..complex32 = type {half, half} ; Basic_complex32 | |
%..complex64 = type {float, float} ; Basic_complex64 | |
%..complex128 = type {double, double} ; Basic_complex128 | |
%..any = type {%..rawptr, %Type_Info*} ; Basic_any | |
declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone | |
%Calling_Convention = type i64 | |
%Type_Info_Enum_Value = type {[0 x <8 x i8>], [8 x i8], i8} | |
%Type_Info_Named = type {%..string, %Type_Info*} | |
%Type_Info_Integer = type {i8} | |
%Type_Info_Rune = type {} | |
%Type_Info_Float = type {} | |
%Type_Info_Complex = type {} | |
%Type_Info_String = type {} | |
%Type_Info_Boolean = type {} | |
%Type_Info_Any = type {} | |
%Type_Info_Pointer = type {%Type_Info*} | |
%Type_Info_Procedure = type {%Type_Info*, %Type_Info*, i8, i64} | |
%Type_Info_Array = type {%Type_Info*, i64, i64} | |
%Type_Info_Dynamic_Array = type {%Type_Info*, i64} | |
%Type_Info_Slice = type {%Type_Info*, i64} | |
%Type_Info_Tuple = type {{%Type_Info**, i64}, {%..string*, i64}} | |
%Type_Info_Struct = type {{%Type_Info**, i64}, {%..string*, i64}, {i64*, i64}, {i8*, i64}, i8, i8, i8} | |
%Type_Info_Union = type {{%Type_Info**, i64}, i64, %Type_Info*} | |
%Type_Info_Enum = type {%Type_Info*, {%..string*, i64}, {%Type_Info_Enum_Value*, i64}, i8} | |
%Type_Info_Map = type {%Type_Info*, %Type_Info*, %Type_Info*} | |
%Type_Info_Bit_Field = type {{%..string*, i64}, {i32*, i64}, {i32*, i64}} | |
%Type_Info = type {i64, i64, {[0 x <8 x i8>], [72 x i8], i8}} | |
%Source_Code_Location = type {%..string, i64, i64, %..string} | |
%Allocator_Mode = type i8 | |
%Allocator_Proc = type %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* | |
%Allocator = type {%..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr} | |
%Context = type {%Allocator, i64, %..any, i64, %Context*, %..any} | |
%__Map_Key = type {i64, %..string} | |
%__Map_Find_Result = type {i64, i64, i64} | |
%__Map_Entry_Header = type {%__Map_Key, i64} | |
%__Map_Header = type {%raw-5.Map*, i8, i64, i64, i64, i64} | |
%utf8-4.Accept_Range = type {i8, i8} | |
%raw-5.Any = type {%..rawptr, %Type_Info*} | |
%raw-5.String = type {i8*, i64} | |
%raw-5.Slice = type {%..rawptr, i64} | |
%raw-5.Dynamic_Array = type {%..rawptr, i64, i64, %Allocator} | |
%raw-5.Map = type {{i64*, i64, i64, %Allocator}, %raw-5.Dynamic_Array} | |
%main-0.TransferPayload = type {i64, i64, i64, i8} | |
%os_windows-6.Handle = type i64 | |
%os_windows-6.Errno = type i64 | |
%fmt-11.String_Buffer = type {i8*, i64, i64, %Allocator} | |
%fmt-11.Fmt_Info = type {i8, i8, i8, i8, i8, i8, i8, i64, i64, i64, i8, i8, {i8*, i64, i64, %Allocator}*, %..any} | |
%thread-13.Thread_Proc = type i64 (%thread-13.Thread*, %Context*)* | |
%thread-13.Thread_Os_Specific = type {%..rawptr, i32} | |
%thread-13.Thread = type {%thread-13.Thread_Os_Specific, i64 (%thread-13.Thread*, %Context*)*, %..rawptr, i64, %Context, i8} | |
%windows-15.Handle = type %..rawptr | |
%windows-15.Hwnd = type %..rawptr | |
%windows-15.Hdc = type %..rawptr | |
%windows-15.Hinstance = type %..rawptr | |
%windows-15.Hicon = type %..rawptr | |
%windows-15.Hcursor = type %..rawptr | |
%windows-15.Hmenu = type %..rawptr | |
%windows-15.Hbrush = type %..rawptr | |
%windows-15.Hmodule = type %..rawptr | |
%windows-15.Wparam = type i64 | |
%windows-15.Lparam = type i64 | |
%windows-15.Lresult = type i64 | |
%windows-15.Wnd_Proc = type i64 (%..rawptr, i32, i64, i64)* | |
%windows-15.Bool = type i32 | |
%windows-15.Point = type {i32, i32} | |
%windows-15.Wnd_Class_Ex_A = type {i32, i32, i64 (%..rawptr, i32, i64, i64)*, i32, i32, %..rawptr, %..rawptr, %..rawptr, %..rawptr, i8*, i8*, %..rawptr} | |
%windows-15.Msg = type {%..rawptr, i32, i64, i64, i32, %windows-15.Point} | |
%windows-15.Rect = type {i32, i32, i32, i32} | |
%windows-15.Filetime = type {i32, i32} | |
%windows-15.Systemtime = type {i16, i16, i16, i16, i16, i16, i16, i16} | |
%windows-15.Security_Attributes = type {i32, %..rawptr, i32} | |
%windows-15.Pixel_Format_Descriptor = type {i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32} | |
%windows-15.Critical_Section = type {%windows-15.Critical_Section_Debug*, i32, i32, %..rawptr, %..rawptr, i32*} | |
%windows-15.Critical_Section_Debug = type {i16, i16, %windows-15.Critical_Section*, %windows-15.List_Entry*, i32, i32, i32, i16, i16} | |
%windows-15.List_Entry = type {%windows-15.List_Entry*, %windows-15.List_Entry*} | |
%windows-15.Key_Code = type i32 | |
%brew_imgui-23.State = type {i32, %gl-24.Program, i32, i32, i32} | |
%brew_imgui-23.FrameState = type {float, i64, i64, i8, i64, i64, i64, i8, i8} | |
%gl-24.VAO = type i32 | |
%gl-24.VBO = type i32 | |
%gl-24.EBO = type i32 | |
%gl-24.BufferObject = type i32 | |
%gl-24.Texture = type i32 | |
%gl-24.Shader = type i32 | |
%gl-24.Program = type {i32, i32, i32, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %gl-24.Uniform}*, i64, i64, %Allocator}}, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %gl-24.Attrib}*, i64, i64, %Allocator}}} | |
%gl-24.Uniform = type {i32, %..string, i32, i32} | |
%gl-24.Attrib = type {i32, %..string, i32, i32} | |
%gl-24.DebugMessageCallbackProc = type void (i32, i32, i32, i32, i32, i8*, %..rawptr)* | |
%gl-24.set_proc_address = type void (%..rawptr, %..rawptr, %..string, %Context*)* | |
%gl-24.load_library = type %..rawptr (%..string, %Context*)* | |
%gl-24.free_library = type void (%..rawptr, %Context*)* | |
%imgui_console-28.CommandProc = type void ({%..string*, i64}*, %Context*)* | |
%imgui_console-28.LogData = type {[256 x i8], {%imgui_console-28.LogItem*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}, {%imgui_console-28.LogItem*, i64, i64, %Allocator}, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, void ({%..string*, i64}*, %Context*)*}*, i64, i64, %Allocator}}, %..string, i8, i64} | |
%imgui_console-28.LogItem = type {%..string, %windows-15.Systemtime, i64, %..string, i64} | |
%imgui_console-28.LogLevel = type i64 | |
%debug-30.Debug_Settings = type {i8, i8, i8} | |
%debug-30.Debug_State = type {%debug-30.Debug_Settings, i64} | |
%libgit2-29.Misc_Buf = type i64 | |
%log-33.Item = type {%commit-34.Commit, %misc-49.Datetime} | |
%log-33.Log = type {{%log-33.Item*, i64, i64, %Allocator}, i64} | |
%commit-34.Commit = type {%libgit2_types-55.Commit*, %libgit2_types-55.Signature, %libgit2_types-55.Signature, %..string, %..string} | |
%branch-35.Branch = type {%libgit2_types-55.Reference*, %libgit2_types-55.Reference*, %..string, i32, %commit-34.Commit, i64, i64} | |
%branch-35.Branch_Collection = type {%..string, {%branch-35.Branch*, i64, i64, %Allocator}} | |
%settings-36.Settings = type {%..string, %..string, %..string, %..string, i8, {%..string*, i64, i64, %Allocator}, i8, i8} | |
%state-38.State = type {i8, double, %..rawptr, %..rawptr, %..rawptr, %brew_imgui-23.State*, %msg-46.Msg, i64, i64, i8, %brew_imgui-23.FrameState, i8, i8, %misc-49.TimeData, i64, i64, i8, i8, i8, i8, i32, i32, i32, %..string, [256 x i8], [1024 x i8], [1024 x i8], i8, %log-33.Log, %status-39.Status, i8, [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], i8, %..string, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, %libgit2_types-55.Repository*, %..string, %libgit2_types-55.Status_List*, %branch-35.Branch, {%branch-35.Branch_Collection*, i64}, {%branch-35.Branch_Collection*, i64}, [513 x i8], [4097 x i8], %diff_view-37.Context*} | |
%diff_view-37.Context = type {%..string, %libgit2_types-55.Patch*, i64, i8} | |
%status-39.Status = type {%libgit2_types-55.Status_List*, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, %libgit2_types-55.Diff*} | |
%time_util-22.Timer = type {double, double} | |
%strconv-42.Int_Flag = type i64 | |
%strconv-42.DecimalSlice = type {{i8*, i64}, i64, i64, i8} | |
%strconv-42.FloatInfo = type {i64, i64, i64} | |
%sync_windows-43.Mutex = type {%windows-15.Critical_Section} | |
%window-45.Window_Style = type i32 | |
%msg-46.Msg = type {[0 x <8 x i8>], [16 x i8], i8} | |
%msg-46.MsgNotTranslated = type {} | |
%msg-46.MsgQuitMessage = type {i64} | |
%msg-46.MsgKey = type {i64, i8, i8} | |
%msg-46.MsgWindowFocus = type {i8} | |
%msg-46.MsgKeyboardFocus = type {i8} | |
%msg-46.MsgMouseMove = type {i64, i64} | |
%msg-46.MsgMouseButton = type {i64, i8, i8} | |
%msg-46.MsgSizeChange = type {i64, i64} | |
%msg-46.MsgChar = type {i32} | |
%msg-46.MsgMouseWheel = type {i64} | |
%misc-49.TimeData = type {i64, i64} | |
%misc-49.Week_Day = type i64 | |
%misc-49.Month = type i64 | |
%misc-49.Datetime = type {i64, i64, i64, i64, i64, i64, i64, i64} | |
%keys-47.VirtualKey = type i64 | |
%math-51.Mat4 = type [4 x [4 x float]] | |
%dear_imgui-50.DrawIdx = type i16 | |
%dear_imgui-50.Wchar = type i16 | |
%dear_imgui-50.TextureID = type %..rawptr | |
%dear_imgui-50.Cstring = type i8* | |
%dear_imgui-50.Font = type {} | |
%dear_imgui-50.FontAtlas = type {} | |
%dear_imgui-50.DrawList = type {} | |
%dear_imgui-50.Vec2 = type {float, float} | |
%dear_imgui-50.Vec4 = type {float, float, float, float} | |
%dear_imgui-50.TextEditCallbackData = type {i32, i32, %..rawptr, i8, i16, i32, i8*, i32, i32, i8, i32, i32, i32} | |
%dear_imgui-50.DrawCmd = type {i32, %dear_imgui-50.Vec4, %..rawptr, void (%dear_imgui-50.DrawList*, %dear_imgui-50.DrawCmd*)*, %..rawptr} | |
%dear_imgui-50.DrawVert = type {%dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i32} | |
%dear_imgui-50.DrawData = type {i8, %dear_imgui-50.DrawList**, i32, i32, i32} | |
%dear_imgui-50.FontConfig = type {%..rawptr, i32, i8, i32, float, i32, i32, i8, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i16*, i8, i32, float, [32 x i8], %dear_imgui-50.Font*} | |
%dear_imgui-50.ListClipper = type {float, float, i32, i32, i32, i32} | |
%dear_imgui-50.Style = type {float, %dear_imgui-50.Vec2, float, float, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, float, float, float, float, %dear_imgui-50.Vec2, float, float, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, float, float, float, float, float, float, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i8, i8, float, [43 x %dear_imgui-50.Vec4]} | |
%dear_imgui-50.IO = type {%dear_imgui-50.Vec2, float, float, i8*, i8*, float, float, float, [19 x i32], float, float, %..rawptr, %dear_imgui-50.FontAtlas*, float, i8, %dear_imgui-50.Font*, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, i8, i8, void (%dear_imgui-50.DrawData*)*, i8* (%..rawptr)*, void (%..rawptr, i8*)*, %..rawptr, %..rawptr (i64)*, void (%..rawptr)*, void (i32, i32)*, %..rawptr, %dear_imgui-50.Vec2, [5 x i8], float, i8, i8, i8, i8, i8, [512 x i8], [17 x i16], i8, i8, i8, float, i32, i32, i32, i32, %dear_imgui-50.Vec2, %dear_imgui-50.Vec2, [5 x i8], [5 x %dear_imgui-50.Vec2], [5 x float], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %dear_imgui-50.Vec2], [5 x float], [512 x float], [512 x float]} | |
%dear_imgui-50.text_edit_callback = type i32 (%dear_imgui-50.TextEditCallbackData*)* | |
%dear_imgui-50.draw_callback = type void (%dear_imgui-50.DrawList*, %dear_imgui-50.DrawCmd*)* | |
%dear_imgui-50.Window_Flags = type i32 | |
%dear_imgui-50.Input_Text_Flags = type i32 | |
%dear_imgui-50.Hovered_Flags = type i32 | |
%dear_imgui-50.Selectable_Flags = type i64 | |
%dear_imgui-50.Key = type i32 | |
%dear_imgui-50.Color = type i32 | |
%dear_imgui-50.Mouse_Cursor = type i32 | |
%dear_imgui-50.Set_Cond = type i32 | |
%gl_enums-52.UniformTypes = type i32 | |
%gl_enums-52.AttribTypes = type i32 | |
%gl_enums-52.DebugSource = type i32 | |
%gl_enums-52.DebugType = type i32 | |
%gl_enums-52.DebugSeverity = type i32 | |
%gl_enums-52.DrawModes = type i32 | |
%gl_enums-52.DrawElementsType = type i32 | |
%gl_enums-52.ShaderTypes = type i32 | |
%gl_enums-52.BlendFactors = type i32 | |
%gl_enums-52.BlendEquations = type i32 | |
%gl_enums-52.Capabilities = type i32 | |
%gl_enums-52.ClearFlags = type i32 | |
%gl_enums-52.GetIntegerNames = type i32 | |
%gl_enums-52.InternalColorFormat = type i32 | |
%gl_enums-52.PixelDataFormat = type i32 | |
%gl_enums-52.Texture2DDataType = type i32 | |
%gl_enums-52.VertexAttribDataType = type i32 | |
%gl_enums-52.TextureTargets = type i32 | |
%gl_enums-52.TextureParameters = type i32 | |
%gl_enums-52.TextureParametersValues = type i32 | |
%gl_enums-52.TextureUnits = type i32 | |
%gl_enums-52.BufferTargets = type i32 | |
%gl_enums-52.BufferDataUsage = type i32 | |
%gl_enums-52.PolygonFace = type i32 | |
%gl_enums-52.PolygonModes = type i32 | |
%libgit2_types-55.Repository = type {} | |
%libgit2_types-55.Remote = type {} | |
%libgit2_types-55.Tree = type {} | |
%libgit2_types-55.Index = type {} | |
%libgit2_types-55.Transport = type {} | |
%libgit2_types-55.Commit = type {} | |
%libgit2_types-55.Reference = type {} | |
%libgit2_types-55.Object = type {} | |
%libgit2_types-55.Revwalk = type {} | |
%libgit2_types-55.Branch_Iterator = type {} | |
%libgit2_types-55.Status_List = type {} | |
%libgit2_types-55.Diff = type {} | |
%libgit2_types-55.Patch = type {} | |
%libgit2_types-55.Oid = type {[20 x i8]} | |
%libgit2_types-55.Git_Signature = type {i8*, i8*, %libgit2_types-55.Time} | |
%libgit2_types-55.Signature = type {%libgit2_types-55.Git_Signature*, %..string, %..string, %libgit2_types-55.Time} | |
%libgit2_types-55.Git_Error = type {i8*, i32} | |
%libgit2_types-55.Error = type {%..string, i32} | |
%libgit2_types-55.Str_Array = type {i8**, i64} | |
%libgit2_types-55.Checkout_Perfdata = type {i32, i32, i32} | |
%libgit2_types-55.Cred = type {i32, void (%libgit2_types-55.Cred*)*} | |
%libgit2_types-55.Cert = type {i32} | |
%libgit2_types-55.Time = type {i64, i32, i8} | |
%libgit2_types-55.Stash_Apply_Options = type {i32, i32, %libgit2_types-55.Checkout_Options, i32 (i32, %..rawptr)*, %..rawptr} | |
%libgit2_types-55.Clone_Options = type {i32, %libgit2_types-55.Checkout_Options, %libgit2_types-55.Fetch_Options, i32, i32, i8*, i32 (%libgit2_types-55.Repository**, i8*, i32, %..rawptr)*, %..rawptr, i32 (%libgit2_types-55.Remote**, %libgit2_types-55.Repository*, i8*, i8*, %..rawptr)*, %..rawptr} | |
%libgit2_types-55.Checkout_Options = type {i32, i32, i32, i32, i32, i32, i32, i32 (i32, i8*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %..rawptr)*, %..rawptr, void (i8*, i64, i64, %..rawptr)*, %..rawptr, %libgit2_types-55.Str_Array, %libgit2_types-55.Tree*, %libgit2_types-55.Index*, i8*, i8*, i8*, i8*, void (%libgit2_types-55.Checkout_Perfdata*, %..rawptr)*, %..rawptr} | |
%libgit2_types-55.Fetch_Options = type {i32, %libgit2_types-55.Remote_Callbacks, i32, i32, i32, %libgit2_types-55.Proxy_Options, %libgit2_types-55.Str_Array} | |
%libgit2_types-55.Push_Options = type {i32, i32, %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Proxy_Options, %libgit2_types-55.Str_Array} | |
%libgit2_types-55.Remote_Callbacks = type {i32, i32 (i8*, i32, %..rawptr)*, void (i32, %..rawptr)*, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, i32 (%libgit2_types-55.Cert*, i32, i8*, %..rawptr)*, i32 (%libgit2_types-55.Transfer_Progress*, %..rawptr)*, i32 (i8*, %libgit2_types-55.Oid*, %libgit2_types-55.Oid*, %..rawptr)*, i32 (i32, i32, i32, %..rawptr)*, i32 (i32, i32, i64, %..rawptr)*, i32 (i8*, i8*, %..rawptr)*, i32 (%libgit2_types-55.Push_Update**, i64, %..rawptr)*, i32 (%libgit2_types-55.Transport**, %libgit2_types-55.Remote*, %..rawptr)*, %..rawptr} | |
%libgit2_types-55.Transfer_Progress = type {i32, i32, i32, i32, i32, i32, i64} | |
%libgit2_types-55.Push_Update = type {i8*, i8*, %libgit2_types-55.Oid, %libgit2_types-55.Oid} | |
%libgit2_types-55.Proxy_Options = type {i32, i32, i8*, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, i32 (%libgit2_types-55.Cert*, i32, i8*, %..rawptr)*, %..rawptr} | |
%libgit2_types-55.Submodule_Ignore = type i32 | |
%libgit2_types-55.Diff_Notify_Cb = type i32 (%libgit2_types-55.Diff*, %libgit2_types-55.Diff_Delta*, i8*, %..rawptr, %Context*)* | |
%libgit2_types-55.Diff_Progress_Cb = type i32 (%libgit2_types-55.Diff*, i8*, i8*, %..rawptr, %Context*)* | |
%libgit2_types-55.Diff_Hunk = type {i32, i32, i32, i32, i64, [128 x i8]} | |
%libgit2_types-55.Diff_Line = type {i8, i32, i32, i32, i64, i64, i8*} | |
%libgit2_types-55.Diff_Options = type {i32, i32, i32, %libgit2_types-55.Str_Array, i32 (%libgit2_types-55.Diff*, %libgit2_types-55.Diff_Delta*, i8*, %..rawptr, %Context*)*, i32 (%libgit2_types-55.Diff*, i8*, i8*, %..rawptr, %Context*)*, %..rawptr, i32, i32, i16, i64, i8*, i8*} | |
%libgit2_types-55.Diff_File = type {%libgit2_types-55.Oid, i8*, i64, i32, i16, i16} | |
%libgit2_types-55.Status_Options = type {i32, i32, i32, %libgit2_types-55.Str_Array} | |
%libgit2_types-55.Status_Entry = type {i32, %libgit2_types-55.Diff_Delta*, %libgit2_types-55.Diff_Delta*} | |
%libgit2_types-55.Diff_Delta = type {i32, i32, i16, i16, %libgit2_types-55.Diff_File, %libgit2_types-55.Diff_File} | |
%libgit2_types-55.Error_Code = type i32 | |
%libgit2_types-55.Obj_Type = type i32 | |
%libgit2_types-55.Cred_Type = type i32 | |
%libgit2_types-55.Stash_Apply_Flags = type i32 | |
%libgit2_types-55.Stash_Flags = type i32 | |
%libgit2_types-55.Stash_Apply_Progress = type i32 | |
%libgit2_types-55.Checkout_Strategy_Flags = type i32 | |
%libgit2_types-55.Cert_Type = type i32 | |
%libgit2_types-55.Fetch_Prune_Flags = type i32 | |
%libgit2_types-55.Remote_Autotag_Option_Flags = type i32 | |
%libgit2_types-55.Clone_Local_Flags = type i32 | |
%libgit2_types-55.Proxy_Flags = type i32 | |
%libgit2_types-55.Remote_Completion_Type = type i32 | |
%libgit2_types-55.Checkout_Notify_Flags = type i32 | |
%libgit2_types-55.ErrorType = type i32 | |
%libgit2_types-55.Lib_Features = type i32 | |
%libgit2_types-55.Repository_Open_Flags = type i32 | |
%libgit2_types-55.Status_Flags = type i32 | |
%libgit2_types-55.Direction = type i32 | |
%libgit2_types-55.Status_Show_Flags = type i32 | |
%libgit2_types-55.Delta = type i32 | |
%libgit2_types-55.Diff_Flags = type i32 | |
%libgit2_types-55.Status_Opt_Flags = type i32 | |
%libgit2_types-55.Branch_Type = type i32 | |
%libgit2_types-55.Stash_Apply_Progress_Cb = type i32 (i32, %..rawptr)* | |
%libgit2_types-55.Repository_Create_Cb = type i32 (%libgit2_types-55.Repository**, i8*, i32, %..rawptr)* | |
%libgit2_types-55.Remote_Create_Cb = type i32 (%libgit2_types-55.Remote**, %libgit2_types-55.Repository*, i8*, i8*, %..rawptr)* | |
%libgit2_types-55.Checkout_Notify_Cb = type i32 (i32, i8*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %libgit2_types-55.Diff_File*, %..rawptr)* | |
%libgit2_types-55.Checkout_Progress_Cb = type void (i8*, i64, i64, %..rawptr)* | |
%libgit2_types-55.Checkout_Perfdata_Cb = type void (%libgit2_types-55.Checkout_Perfdata*, %..rawptr)* | |
%libgit2_types-55.Transport_Message_Cb = type i32 (i8*, i32, %..rawptr)* | |
%libgit2_types-55.Transport_Certificate_Check_Cb = type i32 (%libgit2_types-55.Cert*, i32, i8*, %..rawptr)* | |
%libgit2_types-55.Cred_Acquire_Cb = type i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* | |
%libgit2_types-55.Transfer_Progress_Cb = type i32 (%libgit2_types-55.Transfer_Progress*, %..rawptr)* | |
%libgit2_types-55.Packbuilder_Progress_Cb = type i32 (i32, i32, i32, %..rawptr)* | |
%libgit2_types-55.Push_Transfer_Progress_Cb = type i32 (i32, i32, i64, %..rawptr)* | |
%libgit2_types-55.Push_Negotiation_Cb = type i32 (%libgit2_types-55.Push_Update**, i64, %..rawptr)* | |
%libgit2_types-55.Transport_Cb = type i32 (%libgit2_types-55.Transport**, %libgit2_types-55.Remote*, %..rawptr)* | |
%cel-53.Array = type {%cel-53.Value*, i64} | |
%cel-53.Dict = type {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %cel-53.Value}*, i64, i64, %Allocator}} | |
%cel-53.Nil_Value = type {} | |
%cel-53.Value = type {[0 x <8 x i8>], [80 x i8], i8} | |
%cel-53.Parser = type {{%token-65.Token*, i64, i64, %Allocator}, %token-65.Token, %token-65.Token, i64, {%..string*, i64, i64, %Allocator}, i64, {{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %cel-53.Value}*, i64, i64, %Allocator}}, {{{i64*, i64, i64, %Allocator}, {{%__Map_Key, i64, %cel-53.Value}*, i64, i64, %Allocator}}**, i64, i64, %Allocator}} | |
%opengl_wgl-62.Attrib = type {i32, i32} | |
%opengl_wgl-62.AccelerationArbValues = type i32 | |
%opengl_wgl-62.PixelTypeArbValues = type i32 | |
%opengl_wgl-62.ContextFlagsArbValues = type i32 | |
%opengl_wgl-62.ContextProfileMaskArbValues = type i32 | |
%opengl_wgl-62.CreateContextAttribsARB = type %..rawptr (%..rawptr, %..rawptr, i32*)* | |
%opengl_wgl-62.ChoosePixelFormatARB = type i32 (%..rawptr, i32*, float*, i32, i32*, i32*)* | |
%opengl_wgl-62.SwapIntervalEXT = type i8 (i32)* | |
%opengl_wgl-62.GetExtensionsStringARB = type i8* (%..rawptr)* | |
%decimal-58.Decimal = type {[384 x i8], i64, i64, i8, i8} | |
%wgl-61.Hglrc = type %..rawptr | |
%token-65.Kind = type i64 | |
%token-65.Pos = type {%..string, i64, i64} | |
%token-65.Token = type {i64, %token-65.Pos, %..string} | |
%token-65.Tokenizer = type {{i8*, i64}, %..string, i32, i64, i64, i64, i64, i8, i64} | |
%main-0.do_async_fetch._payload-1215 = type {%libgit2_types-55.Repository*} | |
%main-0.do_async_push._payload-1216 = type {%libgit2_types-55.Repository*, {%branch-35.Branch*, i64}} | |
%strconv-42.format_digits.Buffer-1220 = type {{i8*, i64}, i64} | |
declare ccc void @llvm.assume(i1) #0 | |
declare ccc void @llvm.debugtrap() #0 | |
declare ccc void @llvm.trap() #0 | |
declare ccc i64 @llvm.readcyclecounter() #0 | |
declare ccc float @llvm.sqrt.f32(float) #0 | |
declare ccc double @llvm.sqrt.f64(double) #0 | |
declare ccc float @llvm.sin.f32(float) #0 | |
declare ccc double @llvm.sin.f64(double) #0 | |
declare ccc float @llvm.cos.f32(float) #0 | |
declare ccc double @llvm.cos.f64(double) #0 | |
declare ccc float @llvm.pow.f32(float, float) #0 | |
declare ccc double @llvm.pow.f64(double, double) #0 | |
declare ccc float @llvm.fmuladd.f32(float, float, float) #0 | |
declare ccc double @llvm.fmuladd.f64(double, double, double) #0 | |
declare cc 64 i32 @GetLastError() #0 | |
declare cc 64 %..rawptr @GetModuleHandleA(i8*) #0 | |
declare cc 64 i32 @QueryPerformanceFrequency(i64*) #0 | |
declare cc 64 i32 @QueryPerformanceCounter(i64*) #0 | |
declare cc 64 i32 @GetCurrentThreadId() #0 | |
declare cc 64 void @GetSystemTimeAsFileTime(%windows-15.Filetime*) #0 | |
declare cc 64 i32 @FileTimeToSystemTime(%windows-15.Filetime*, %windows-15.Systemtime*) #0 | |
declare cc 64 i32 @CloseHandle(%..rawptr) #0 | |
declare cc 64 %..rawptr @GetStdHandle(i32) #0 | |
declare cc 64 %..rawptr @CreateFileA(i8*, i32, i32, %..rawptr, i32, i32, %..rawptr) #0 | |
declare cc 64 i32 @ReadFile(%..rawptr, %..rawptr, i32, i32*, %..rawptr) #0 | |
declare cc 64 i32 @WriteFile(%..rawptr, %..rawptr, i32, i32*, %..rawptr) #0 | |
declare cc 64 i32 @GetFileSizeEx(%..rawptr, i64*) #0 | |
declare cc 64 i32 @GetFileAttributesA(i8*) #0 | |
declare cc 64 i32 @SetHandleInformation(%..rawptr, i32, i32) #0 | |
declare cc 64 %..rawptr @HeapAlloc(%..rawptr, i32, i64) #0 | |
declare cc 64 %..rawptr @HeapReAlloc(%..rawptr, i32, %..rawptr, i64) #0 | |
declare cc 64 i32 @HeapFree(%..rawptr, i32, %..rawptr) #0 | |
declare cc 64 %..rawptr @GetProcessHeap() #0 | |
declare cc 64 %..rawptr @CreateThread(%windows-15.Security_Attributes*, i64, %..rawptr, %..rawptr, i32, i32*) #0 | |
declare cc 64 i32 @ResumeThread(%..rawptr) #0 | |
declare cc 64 void @InitializeCriticalSectionAndSpinCount(%windows-15.Critical_Section*, i32) #0 | |
declare cc 64 void @EnterCriticalSection(%windows-15.Critical_Section*) #0 | |
declare cc 64 void @LeaveCriticalSection(%windows-15.Critical_Section*) #0 | |
declare cc 64 %..rawptr @LoadLibraryA(i8*) #0 | |
declare cc 64 void @FreeLibrary(%..rawptr) #0 | |
declare cc 64 %..rawptr @GetProcAddress(%..rawptr, i8*) #0 | |
declare cc 64 i16 @RegisterClassExA(%windows-15.Wnd_Class_Ex_A*) #0 | |
declare cc 64 %..rawptr @CreateWindowExA(i32, i8*, i8*, i32, i32, i32, i32, i32, %..rawptr, %..rawptr, %..rawptr, %..rawptr) #0 | |
declare cc 64 i32 @TranslateMessage(%windows-15.Msg*) #0 | |
declare cc 64 i64 @DispatchMessageA(%windows-15.Msg*) #0 | |
declare cc 64 i32 @PeekMessageA(%windows-15.Msg*, %..rawptr, i32, i32, i32) #0 | |
declare cc 64 i32 @PostMessageA(%..rawptr, i32, i32, i32) #0 | |
declare cc 64 i64 @DefWindowProcA(%..rawptr, i32, i64, i64) #0 | |
declare cc 64 i32 @AdjustWindowRect(%windows-15.Rect*, i32, i1) #0 | |
declare cc 64 i32 @DestroyWindow(%..rawptr) #0 | |
declare cc 64 i32 @DescribePixelFormat(%..rawptr, i32, i32, %windows-15.Pixel_Format_Descriptor*) #0 | |
declare cc 64 %..rawptr @GetDC(%..rawptr) #0 | |
declare cc 64 i32 @ReleaseDC(%..rawptr, %..rawptr) #0 | |
declare cc 64 i32 @MapVirtualKeyA(i32, i32) #0 | |
declare cc 64 i16 @GetAsyncKeyState(i32) #0 | |
declare cc 64 %..rawptr @LoadCursorA(%..rawptr, i8*) #0 | |
declare cc 64 %..rawptr @SetCursor(%..rawptr) #0 | |
declare cc 64 i32 @SetPixelFormat(%..rawptr, i32, %windows-15.Pixel_Format_Descriptor*) #0 | |
declare cc 64 i32 @ChoosePixelFormat(%..rawptr, %windows-15.Pixel_Format_Descriptor*) #0 | |
declare cc 64 i32 @SwapBuffers(%..rawptr) #0 | |
declare ccc %dear_imgui-50.IO* @igGetIO() #0 | |
declare ccc %dear_imgui-50.Style* @igGetStyle() #0 | |
declare ccc %dear_imgui-50.DrawData* @igGetDrawData() #0 | |
declare ccc void @igNewFrame() #0 | |
declare ccc void @igRender() #0 | |
declare ccc void @igShowDemoWindow(i8*) #0 | |
declare ccc i8 @igBegin(i8*, i8*, i32) #0 | |
declare ccc void @igEnd() #0 | |
declare ccc i8 @igBeginChild(i8*, i64, i1, i32) #0 | |
declare ccc void @igEndChild() #0 | |
declare ccc void @igGetContentRegionMax(%dear_imgui-50.Vec2*) #0 | |
declare ccc void @igGetWindowPos(%dear_imgui-50.Vec2*) #0 | |
declare ccc void @igSetNextWindowPos(i64, i32, i64) #0 | |
declare ccc void @igSetNextWindowSize(i64, i32) #0 | |
declare ccc void @igSetScrollHere(float) #0 | |
declare ccc void @igSetKeyboardFocusHere(i32) #0 | |
declare ccc void @igPushFont(%dear_imgui-50.Font*) #0 | |
declare ccc void @igPopFont() #0 | |
declare ccc void @igPushStyleColor(i32, %dear_imgui-50.Vec4*) #0 | |
declare ccc void @igPopStyleColor(i32) #0 | |
declare ccc void @igSeparator() #0 | |
declare ccc void @igSameLine(float, float) #0 | |
declare ccc void @igIndent(float) #0 | |
declare ccc void @igUnindent(float) #0 | |
declare ccc void @igColumns(i32, i8*, i1) #0 | |
declare ccc void @igNextColumn() #0 | |
declare ccc float @igSetColumnWidth(i32, float) #0 | |
declare ccc void @igPushIDStr(i8*) #0 | |
declare ccc void @igPushIDInt(i32) #0 | |
declare ccc void @igPopID() #0 | |
declare ccc void @igTextColored(%dear_imgui-50.Vec4*, i8*) #0 | |
declare ccc void @igTextDisabled(i8*) #0 | |
declare ccc void @igTextWrapped(i8*) #0 | |
declare ccc void @igTextUnformatted(i8*, i8*) #0 | |
declare ccc i8 @igButton(i8*, i64) #0 | |
declare ccc i8 @igCheckbox(i8*, i8*) #0 | |
declare ccc void @igProgressBar(float, %dear_imgui-50.Vec2*, i8*) #0 | |
declare ccc i8 @igInputText(i8*, i8*, i64, i32, i32 (%dear_imgui-50.TextEditCallbackData*)*, %..rawptr) #0 | |
declare ccc i8 @igInputTextMultiline(i8*, i8*, i64, i64, i32, i32 (%dear_imgui-50.TextEditCallbackData*)*, %..rawptr) #0 | |
declare ccc i8 @igTreeNode(i8*) #0 | |
declare ccc void @igTreePop() #0 | |
declare ccc void @igSetNextTreeNodeOpen(i1, i32) #0 | |
declare ccc i8 @igSelectable(i8*, i1, i64, i64) #0 | |
declare ccc void @igBeginTooltip() #0 | |
declare ccc void @igEndTooltip() #0 | |
declare ccc i8 @igBeginMainMenuBar() #0 | |
declare ccc void @igEndMainMenuBar() #0 | |
declare ccc i8 @igBeginMenuBar() #0 | |
declare ccc void @igEndMenuBar() #0 | |
declare ccc i8 @igBeginMenu(i8*, i1) #0 | |
declare ccc void @igEndMenu() #0 | |
declare ccc i8 @igMenuItem(i8*, i8*, i1, i1) #0 | |
declare ccc void @igOpenPopup(i8*) #0 | |
declare ccc i8 @igBeginPopup(i8*) #0 | |
declare ccc i8 @igBeginPopupModal(i8*, i8*, i32) #0 | |
declare ccc i8 @igBeginPopupContextItem(i8*, i32) #0 | |
declare ccc void @igEndPopup() #0 | |
declare ccc void @igCloseCurrentPopup() #0 | |
declare ccc i8 @igIsItemHovered(i32) #0 | |
declare ccc i8 @igIsItemClicked(i32) #0 | |
declare ccc i8 @igIsMouseDoubleClicked(i32) #0 | |
declare ccc i32 @igGetMouseCursor() #0 | |
declare ccc void @ImFontConfig_DefaultConstructor(%dear_imgui-50.FontConfig*) #0 | |
declare ccc void @ImGuiIO_AddInputCharacter(i16) #0 | |
declare ccc i8 @ImGuiListClipper_Step(%dear_imgui-50.ListClipper*) #0 | |
declare ccc void @ImFontAtlas_GetTexDataAsRGBA32(%dear_imgui-50.FontAtlas*, i8**, i32*, i32*, i32*) #0 | |
declare ccc void @ImFontAtlas_SetTexID(%dear_imgui-50.FontAtlas*, %..rawptr) #0 | |
declare ccc %dear_imgui-50.Font* @ImFontAtlas_AddFontDefault(%dear_imgui-50.FontAtlas*, %dear_imgui-50.FontConfig*) #0 | |
declare ccc %dear_imgui-50.Font* @ImFontAtlas_AddFontFromFileTTF(%dear_imgui-50.FontAtlas*, i8*, float, %dear_imgui-50.FontConfig*, i16*) #0 | |
declare ccc i32 @ImDrawList_GetVertexBufferSize(%dear_imgui-50.DrawList*) #0 | |
declare ccc %dear_imgui-50.DrawVert* @ImDrawList_GetVertexPtr(%dear_imgui-50.DrawList*, i32) #0 | |
declare ccc i32 @ImDrawList_GetIndexBufferSize(%dear_imgui-50.DrawList*) #0 | |
declare ccc i16* @ImDrawList_GetIndexPtr(%dear_imgui-50.DrawList*, i32) #0 | |
declare ccc i32 @ImDrawList_GetCmdSize(%dear_imgui-50.DrawList*) #0 | |
declare ccc %dear_imgui-50.DrawCmd* @ImDrawList_GetCmdPtr(%dear_imgui-50.DrawList*, i32) #0 | |
declare cc 64 %libgit2_types-55.Git_Error* @giterr_last() #0 | |
declare cc 64 i32 @git_libgit2_init() #0 | |
declare cc 64 i32 @git_libgit2_shutdown() #0 | |
declare cc 64 i32 @git_libgit2_features() #0 | |
declare cc 64 void @git_libgit2_version(i32*, i32*, i32*) #0 | |
declare cc 64 void @git_repository_free(%libgit2_types-55.Repository*) #0 | |
declare cc 64 i32 @git_repository_open_ext(%libgit2_types-55.Repository**, i8*, i32, i8*) #0 | |
declare cc 64 i32 @git_repository_head(%libgit2_types-55.Reference**, %libgit2_types-55.Repository*) #0 | |
declare cc 64 i32 @git_repository_set_head(%libgit2_types-55.Repository*, i8*) #0 | |
declare cc 64 i8* @git_repository_path(%libgit2_types-55.Repository*) #0 | |
declare cc 64 i32 @git_repository_index(%libgit2_types-55.Index**, %libgit2_types-55.Repository*) #0 | |
declare cc 64 i32 @git_clone(%libgit2_types-55.Repository**, i8*, i8*, %libgit2_types-55.Clone_Options*) #0 | |
declare cc 64 i32 @git_clone_init_options(%libgit2_types-55.Clone_Options*, i32) #0 | |
declare cc 64 i32 @git_status_list_new(%libgit2_types-55.Status_List**, %libgit2_types-55.Repository*, %libgit2_types-55.Status_Options*) #0 | |
declare cc 64 void @git_status_list_free(%libgit2_types-55.Status_List*) #0 | |
declare cc 64 i64 @git_status_list_entrycount(%libgit2_types-55.Status_List*) #0 | |
declare cc 64 %libgit2_types-55.Status_Entry* @git_status_byindex(%libgit2_types-55.Status_List*, i64) #0 | |
declare cc 64 i32 @git_commit_create(%libgit2_types-55.Oid*, %libgit2_types-55.Repository*, i8*, %libgit2_types-55.Git_Signature*, %libgit2_types-55.Git_Signature*, i8*, i8*, %libgit2_types-55.Tree*, i64, %libgit2_types-55.Commit**) #0 | |
declare cc 64 void @git_commit_free(%libgit2_types-55.Commit*) #0 | |
declare cc 64 i32 @git_commit_lookup(%libgit2_types-55.Commit**, %libgit2_types-55.Repository*, %libgit2_types-55.Oid*) #0 | |
declare cc 64 i8* @git_commit_message(%libgit2_types-55.Commit*) #0 | |
declare cc 64 %libgit2_types-55.Git_Signature* @git_commit_committer(%libgit2_types-55.Commit*) #0 | |
declare cc 64 %libgit2_types-55.Git_Signature* @git_commit_author(%libgit2_types-55.Commit*) #0 | |
declare cc 64 i8* @git_commit_summary(%libgit2_types-55.Commit*) #0 | |
declare cc 64 i32 @git_signature_now(%libgit2_types-55.Git_Signature**, i8*, i8*) #0 | |
declare cc 64 i32 @git_oid_equal(%libgit2_types-55.Oid*, %libgit2_types-55.Oid*) #0 | |
declare cc 64 i32 @git_remote_lookup(%libgit2_types-55.Remote**, %libgit2_types-55.Repository*, i8*) #0 | |
declare cc 64 i32 @git_remote_connect(%libgit2_types-55.Remote*, i32, %libgit2_types-55.Remote_Callbacks*, %libgit2_types-55.Proxy_Options*, %libgit2_types-55.Str_Array*) #0 | |
declare cc 64 i32 @git_remote_init_callbacks(%libgit2_types-55.Remote_Callbacks*, i32) #0 | |
declare cc 64 i32 @git_remote_fetch(%libgit2_types-55.Remote*, %libgit2_types-55.Str_Array*, %libgit2_types-55.Fetch_Options*, i8*) #0 | |
declare cc 64 void @git_remote_free(%libgit2_types-55.Remote*) #0 | |
declare cc 64 i32 @git_remote_push(%libgit2_types-55.Remote*, %libgit2_types-55.Str_Array*, %libgit2_types-55.Push_Options*) #0 | |
declare cc 64 i8* @git_remote_name(%libgit2_types-55.Remote*) #0 | |
declare cc 64 i32 @git_index_add_bypath(%libgit2_types-55.Index*, i8*) #0 | |
declare cc 64 i32 @git_index_write(%libgit2_types-55.Index*) #0 | |
declare cc 64 i32 @git_index_write_tree(%libgit2_types-55.Oid*, %libgit2_types-55.Index*) #0 | |
declare cc 64 i32 @git_cred_userpass_plaintext_new(%libgit2_types-55.Cred**, i8*, i8*) #0 | |
declare cc 64 i32 @git_cred_ssh_key_from_agent(%libgit2_types-55.Cred**, i8*) #0 | |
declare cc 64 i32 @git_reset_default(%libgit2_types-55.Repository*, %libgit2_types-55.Object*, %libgit2_types-55.Str_Array*) #0 | |
declare cc 64 i32 @git_reference_name_to_id(%libgit2_types-55.Oid*, %libgit2_types-55.Repository*, i8*) #0 | |
declare cc 64 i8* @git_reference_name(%libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_reference_peel(%libgit2_types-55.Object**, %libgit2_types-55.Reference*, i32) #0 | |
declare cc 64 void @git_reference_free(%libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_reference_is_branch(%libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_object_lookup(%libgit2_types-55.Object**, %libgit2_types-55.Repository*, %libgit2_types-55.Oid*, i32) #0 | |
declare cc 64 void @git_object_free(%libgit2_types-55.Object*) #0 | |
declare cc 64 void @git_diff_free(%libgit2_types-55.Diff*) #0 | |
declare cc 64 %libgit2_types-55.Diff_Delta* @git_diff_get_delta(%libgit2_types-55.Diff*, i64) #0 | |
declare cc 64 i32 @git_diff_index_to_workdir(%libgit2_types-55.Diff**, %libgit2_types-55.Repository*, %libgit2_types-55.Index*, %libgit2_types-55.Diff_Options*) #0 | |
declare cc 64 i64 @git_diff_num_deltas(%libgit2_types-55.Diff*) #0 | |
declare cc 64 void @git_patch_free(%libgit2_types-55.Patch*) #0 | |
declare cc 64 i32 @git_patch_from_diff(%libgit2_types-55.Patch**, %libgit2_types-55.Diff*, i64) #0 | |
declare cc 64 i64 @git_patch_num_hunks(%libgit2_types-55.Patch*) #0 | |
declare cc 64 i32 @git_patch_get_hunk(%libgit2_types-55.Diff_Hunk**, i64*, %libgit2_types-55.Patch*, i64) #0 | |
declare cc 64 i32 @git_patch_get_line_in_hunk(%libgit2_types-55.Diff_Line**, %libgit2_types-55.Patch*, i64, i64) #0 | |
declare cc 64 i32 @git_branch_create(%libgit2_types-55.Reference**, %libgit2_types-55.Repository*, i8*, %libgit2_types-55.Commit*, i32) #0 | |
declare cc 64 i32 @git_branch_name(i8**, %libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_branch_iterator_new(%libgit2_types-55.Branch_Iterator**, %libgit2_types-55.Repository*, i32) #0 | |
declare cc 64 void @git_branch_iterator_free(%libgit2_types-55.Branch_Iterator*) #0 | |
declare cc 64 i32 @git_branch_next(%libgit2_types-55.Reference**, i32*, %libgit2_types-55.Branch_Iterator*) #0 | |
declare cc 64 i32 @git_branch_delete(%libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_branch_is_checked_out(%libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_branch_upstream(%libgit2_types-55.Reference**, %libgit2_types-55.Reference*) #0 | |
declare cc 64 i32 @git_branch_set_upstream(%libgit2_types-55.Reference*, i8*) #0 | |
declare cc 64 i32 @git_revparse_single(%libgit2_types-55.Object**, %libgit2_types-55.Repository*, i8*) #0 | |
declare cc 64 i32 @git_checkout_tree(%libgit2_types-55.Repository*, %libgit2_types-55.Object*, %libgit2_types-55.Checkout_Options*) #0 | |
declare cc 64 i32 @git_stash_save(%libgit2_types-55.Oid*, %libgit2_types-55.Repository*, %libgit2_types-55.Git_Signature*, i8*, i32) #0 | |
declare cc 64 i32 @git_stash_pop(%libgit2_types-55.Repository*, i64, %libgit2_types-55.Stash_Apply_Options*) #0 | |
declare cc 64 i32 @git_revwalk_new(%libgit2_types-55.Revwalk**, %libgit2_types-55.Repository*) #0 | |
declare cc 64 i32 @git_revwalk_next(%libgit2_types-55.Oid*, %libgit2_types-55.Revwalk*) #0 | |
declare cc 64 i32 @git_revwalk_push_ref(%libgit2_types-55.Revwalk*, i8*) #0 | |
declare cc 64 void @git_revwalk_free(%libgit2_types-55.Revwalk*) #0 | |
declare cc 64 i32 @git_fetch_init_options(%libgit2_types-55.Fetch_Options*, i32) #0 | |
declare cc 64 i32 @git_stash_apply_init_options(%libgit2_types-55.Stash_Apply_Options*, i32) #0 | |
declare cc 64 i32 @git_status_init_options(%libgit2_types-55.Status_Options*, i32) #0 | |
declare cc 64 i32 @git_checkout_init_options(%libgit2_types-55.Checkout_Options*, i32) #0 | |
declare cc 64 i32 @git_push_init_options(%libgit2_types-55.Push_Options*, i32) #0 | |
declare cc 64 i32 @git_diff_init_options(%libgit2_types-55.Diff_Options*, i32) #0 | |
declare cc 64 i32 @git_graph_ahead_behind(i64*, i64*, %libgit2_types-55.Repository*, %libgit2_types-55.Oid*, %libgit2_types-55.Oid*) #0 | |
declare ccc %..rawptr @wglCreateContext(%..rawptr) #0 | |
declare ccc i32 @wglMakeCurrent(%..rawptr, %..rawptr) #0 | |
declare ccc %..rawptr @wglGetProcAddress(i8*) #0 | |
declare ccc i32 @wglDeleteContext(%..rawptr) #0 | |
declare ccc void @llvm.memset.p0i8.i64(%..rawptr, i8, i64, i32, i1) #0 | |
declare ccc void @llvm.memmove.p0i8.p0i8.i64(%..rawptr, %..rawptr, i64, i32, i1) #0 | |
declare ccc void @llvm.memcpy.p0i8.p0i8.i64(%..rawptr, %..rawptr, i64, i32, i1) #0 | |
declare ccc float @llvm.fabs.f32(float) #0 | |
declare ccc double @llvm.fabs.f64(double) #0 | |
declare ccc float @llvm.minnum.f32(float, float) #0 | |
declare ccc double @llvm.minnum.f64(double, double) #0 | |
declare ccc float @llvm.maxnum.f32(float, float) #0 | |
declare ccc double @llvm.maxnum.f64(double, double) #0 | |
declare cc 64 i32 @GetFullPathNameA(i8*, i32, i8*, i8**) #0 | |
define %Type_Info* @type_info_base(%Type_Info* %info, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Type_Info*, align 16 | |
%1 = alloca %Type_Info*, align 16 | |
%2 = alloca %Type_Info_Named, align 16 | |
%3 = alloca {[0 x <8 x i8>], [72 x i8], i8}, align 16 | |
store %Type_Info* %info, %Type_Info** %0 | |
; IfStmt | |
%4 = load %Type_Info*, %Type_Info** %0, align 8 | |
%5 = icmp eq %Type_Info* %4, zeroinitializer | |
%6 = zext i1 %5 to i8 | |
%7 = trunc i8 %6 to i1 | |
br i1 %7, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret %Type_Info* zeroinitializer | |
if.done-2: | |
; base | |
%8 = load %Type_Info*, %Type_Info** %0, align 8 | |
store %Type_Info* %8, %Type_Info** %1 | |
; ForStmt | |
br label %for.body-3 | |
for.body-3: | |
; TypeSwitchStmt | |
; SelectorExpr | |
%9 = load %Type_Info*, %Type_Info** %1, align 8 | |
%10 = getelementptr inbounds %Type_Info, %Type_Info* %9, i64 0 | |
%11 = getelementptr inbounds %Type_Info, %Type_Info* %10, i64 0, i32 2 | |
%12 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %11, align 8 | |
; get union's tag | |
%13 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %11, i64 0, i32 2 ; UnionTagPtr | |
%14 = load i8, i8* %13, align 1 | |
%15 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %11 to %..rawptr | |
%16 = icmp eq i8 %14, 1 | |
br i1 %16, label %typeswitch.body-5, label %typeswitch.next-4 | |
typeswitch.next-4: | |
store {[0 x <8 x i8>], [72 x i8], i8} %12, {[0 x <8 x i8>], [72 x i8], i8}* %3 | |
; break | |
; ReturnStmt | |
%17 = load %Type_Info*, %Type_Info** %1, align 8 | |
ret %Type_Info* %17 | |
typeswitch.body-5: | |
%18 = bitcast %..rawptr %15 to %Type_Info_Named* | |
%19 = load %Type_Info_Named, %Type_Info_Named* %18, align 8 | |
store %Type_Info_Named %19, %Type_Info_Named* %2 | |
; AssignStmt | |
; SelectorExpr | |
%20 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 1 | |
%21 = load %Type_Info*, %Type_Info** %20, align 8 | |
store %Type_Info* %21, %Type_Info** %1 | |
br label %for.body-3 | |
} | |
define %Type_Info* @type_info_base_without_enum(%Type_Info* %info, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Type_Info*, align 16 | |
%1 = alloca %Type_Info*, align 16 | |
%2 = alloca %Type_Info_Named, align 16 | |
%3 = alloca %Type_Info_Enum, align 16 | |
%4 = alloca {[0 x <8 x i8>], [72 x i8], i8}, align 16 | |
store %Type_Info* %info, %Type_Info** %0 | |
; IfStmt | |
%5 = load %Type_Info*, %Type_Info** %0, align 8 | |
%6 = icmp eq %Type_Info* %5, zeroinitializer | |
%7 = zext i1 %6 to i8 | |
%8 = trunc i8 %7 to i1 | |
br i1 %8, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret %Type_Info* zeroinitializer | |
if.done-2: | |
; base | |
%9 = load %Type_Info*, %Type_Info** %0, align 8 | |
store %Type_Info* %9, %Type_Info** %1 | |
; ForStmt | |
br label %for.body-3 | |
for.body-3: | |
; TypeSwitchStmt | |
; SelectorExpr | |
%10 = load %Type_Info*, %Type_Info** %1, align 8 | |
%11 = getelementptr inbounds %Type_Info, %Type_Info* %10, i64 0 | |
%12 = getelementptr inbounds %Type_Info, %Type_Info* %11, i64 0, i32 2 | |
%13 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %12, align 8 | |
; get union's tag | |
%14 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %12, i64 0, i32 2 ; UnionTagPtr | |
%15 = load i8, i8* %14, align 1 | |
%16 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %12 to %..rawptr | |
%17 = icmp eq i8 %15, 1 | |
br i1 %17, label %typeswitch.body-5, label %typeswitch.next-4 | |
typeswitch.next-4: | |
%18 = icmp eq i8 %15, 17 | |
br i1 %18, label %typeswitch.body-7, label %typeswitch.next-6 | |
typeswitch.body-5: | |
%19 = bitcast %..rawptr %16 to %Type_Info_Named* | |
%20 = load %Type_Info_Named, %Type_Info_Named* %19, align 8 | |
store %Type_Info_Named %20, %Type_Info_Named* %2 | |
; AssignStmt | |
; SelectorExpr | |
%21 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 1 | |
%22 = load %Type_Info*, %Type_Info** %21, align 8 | |
store %Type_Info* %22, %Type_Info** %1 | |
br label %typeswitch.done-8 | |
typeswitch.next-6: | |
store {[0 x <8 x i8>], [72 x i8], i8} %13, {[0 x <8 x i8>], [72 x i8], i8}* %4 | |
; break | |
; ReturnStmt | |
%23 = load %Type_Info*, %Type_Info** %1, align 8 | |
ret %Type_Info* %23 | |
typeswitch.body-7: | |
%24 = bitcast %..rawptr %16 to %Type_Info_Enum* | |
%25 = load %Type_Info_Enum, %Type_Info_Enum* %24, align 8 | |
store %Type_Info_Enum %25, %Type_Info_Enum* %3 | |
; AssignStmt | |
; SelectorExpr | |
%26 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %3, i64 0, i32 0 | |
%27 = load %Type_Info*, %Type_Info** %26, align 8 | |
store %Type_Info* %27, %Type_Info** %1 | |
br label %typeswitch.done-8 | |
typeswitch.done-8: | |
br label %for.body-3 | |
} | |
define %Source_Code_Location @make_source_code_location(%..string %file, i64 %line, i64 %column, %..string %procedure) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca %..string, align 16 | |
%4 = alloca %Source_Code_Location, align 16 | |
store %..string %file, %..string* %0 | |
store i64 %line, i64* %1 | |
store i64 %column, i64* %2 | |
store %..string %procedure, %..string* %3 | |
; ReturnStmt | |
; CompoundLit | |
%5 = bitcast %Source_Code_Location* %4 to %..rawptr | |
%6 = call %..rawptr @__mem_zero(%..rawptr %5, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %4 | |
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %4 | |
%7 = load %..string, %..string* %0, align 8 | |
%8 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 0 | |
store %..string %7, %..string* %8 | |
%9 = load i64, i64* %1, align 8 | |
%10 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 1 | |
store i64 %9, i64* %10 | |
%11 = load i64, i64* %2, align 8 | |
%12 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 2 | |
store i64 %11, i64* %12 | |
%13 = load %..string, %..string* %3, align 8 | |
%14 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %4, i64 0, i32 3 | |
store %..string %13, %..string* %14 | |
%15 = load %Source_Code_Location, %Source_Code_Location* %4, align 8 | |
ret %Source_Code_Location %15 | |
} | |
define void @__init_context_from_ptr(%Context* %c, %Context* %other) #0 { | |
decls-0: | |
%0 = alloca %Context*, align 16 | |
%1 = alloca %Context*, align 16 | |
store %Context* %c, %Context** %0 | |
store %Context* %other, %Context** %1 | |
; IfStmt | |
%2 = load %Context*, %Context** %0, align 8 | |
%3 = icmp eq %Context* %2, zeroinitializer | |
%4 = zext i1 %3 to i8 | |
%5 = trunc i8 %4 to i1 | |
br i1 %5, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; AssignStmt | |
%6 = load %Context*, %Context** %0, align 8 | |
%7 = getelementptr inbounds %Context, %Context* %6, i64 0 | |
%8 = load %Context*, %Context** %1, align 8 | |
%9 = getelementptr inbounds %Context, %Context* %8, i64 0 | |
%10 = load %Context, %Context* %9, align 8 | |
store %Context %10, %Context* %7 | |
%11 = load %Context*, %Context** %0, align 8 | |
call void @__init_context(%Context* %11) | |
ret void | |
} | |
define void @__init_context(%Context* %c) #0 { | |
decls-0: | |
%0 = alloca %Context*, align 16 | |
%1 = alloca %Context, align 16 | |
%2 = bitcast %Context* %1 to %..rawptr | |
%3 = call %..rawptr @__mem_zero(%..rawptr %2, i64 72) | |
store %Context zeroinitializer, %Context* %1 | |
%4 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %4, %Context* %1 | |
%5 = getelementptr inbounds %Context, %Context* %1, i64 0, i32 0 | |
%6 = call %Allocator @default_allocator(%Context* noalias nonnull %1) | |
store %Allocator %6, %Allocator* %5 | |
store %Context* %c, %Context** %0 | |
; IfStmt | |
%7 = load %Context*, %Context** %0, align 8 | |
%8 = icmp eq %Context* %7, zeroinitializer | |
%9 = zext i1 %8 to i8 | |
%10 = trunc i8 %9 to i1 | |
br i1 %10, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%11 = load %Context*, %Context** %0, align 8 | |
%12 = getelementptr inbounds %Context, %Context* %11, i64 0 | |
%13 = getelementptr inbounds %Context, %Context* %12, i64 0, i32 0 | |
%14 = getelementptr inbounds %Allocator, %Allocator* %13, i64 0, i32 0 | |
%15 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %14, align 8 | |
%16 = icmp eq %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %15, zeroinitializer | |
%17 = zext i1 %16 to i8 | |
%18 = trunc i8 %17 to i1 | |
br i1 %18, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; AssignStmt | |
; SelectorExpr | |
%19 = load %Context*, %Context** %0, align 8 | |
%20 = getelementptr inbounds %Context, %Context* %19, i64 0 | |
%21 = getelementptr inbounds %Context, %Context* %20, i64 0, i32 0 | |
%22 = call %Allocator @default_allocator(%Context* noalias nonnull %1) | |
store %Allocator %22, %Allocator* %21 | |
br label %if.done-4 | |
if.done-4: | |
; IfStmt | |
; SelectorExpr | |
%23 = load %Context*, %Context** %0, align 8 | |
%24 = getelementptr inbounds %Context, %Context* %23, i64 0 | |
%25 = getelementptr inbounds %Context, %Context* %24, i64 0, i32 1 | |
%26 = load i64, i64* %25, align 8 | |
%27 = icmp eq i64 %26, 0 | |
%28 = zext i1 %27 to i8 | |
%29 = trunc i8 %28 to i1 | |
br i1 %29, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; AssignStmt | |
; SelectorExpr | |
%30 = load %Context*, %Context** %0, align 8 | |
%31 = getelementptr inbounds %Context, %Context* %30, i64 0 | |
%32 = getelementptr inbounds %Context, %Context* %31, i64 0, i32 1 | |
; SelectorExpr | |
%33 = call i64 @os_windows-6.current_thread_id(%Context* noalias nonnull %1) | |
store i64 %33, i64* %32 | |
br label %if.done-6 | |
if.done-6: | |
ret void | |
} | |
define %..rawptr @alloc(i64 %size, i64 %alignment, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %Allocator, align 16 | |
%3 = alloca %Source_Code_Location, align 16 | |
store i64 %size, i64* %0 | |
store i64 %alignment, i64* %1 | |
%4 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; a | |
; SelectorExpr | |
%5 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0 | |
%6 = load %Allocator, %Allocator* %5, align 8 | |
store %Allocator %6, %Allocator* %2 | |
; ReturnStmt | |
; SelectorExpr | |
%7 = getelementptr inbounds %Allocator, %Allocator* %2, i64 0, i32 0 | |
%8 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %7, align 8 | |
; SelectorExpr | |
%9 = getelementptr inbounds %Allocator, %Allocator* %2, i64 0, i32 1 | |
%10 = load %..rawptr, %..rawptr* %9, align 8 | |
%11 = load i64, i64* %0, align 8 | |
%12 = load i64, i64* %1, align 8 | |
%13 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%14 = bitcast %Source_Code_Location* %3 to %..rawptr | |
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %3 | |
store %Source_Code_Location %13, %Source_Code_Location* %3 | |
%16 = call %..rawptr %8(%..rawptr %10, i8 0, i64 %11, i64 %12, %..rawptr zeroinitializer, i64 0, i64 0, %Source_Code_Location* %3, %Context* noalias nonnull %__.context_ptr) | |
ret %..rawptr %16 | |
} | |
define void @free_ptr_with_allocator(%Allocator* %a, %..rawptr %ptr, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = load %Allocator, %Allocator* %a, align 8 | |
store %..rawptr %ptr, %..rawptr* %0 | |
%3 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; IfStmt | |
%4 = load %..rawptr, %..rawptr* %0, align 8 | |
%5 = icmp eq %..rawptr %4, zeroinitializer | |
%6 = zext i1 %5 to i8 | |
%7 = trunc i8 %6 to i1 | |
br i1 %7, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; IfStmt | |
; SelectorExpr | |
%8 = getelementptr inbounds %Allocator, %Allocator* %a, i64 0, i32 0 | |
%9 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %8, align 8 | |
%10 = icmp eq %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %9, zeroinitializer | |
%11 = zext i1 %10 to i8 | |
%12 = trunc i8 %11 to i1 | |
br i1 %12, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
ret void | |
if.done-4: | |
; SelectorExpr | |
%13 = getelementptr inbounds %Allocator, %Allocator* %a, i64 0, i32 0 | |
%14 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %13, align 8 | |
; SelectorExpr | |
%15 = getelementptr inbounds %Allocator, %Allocator* %a, i64 0, i32 1 | |
%16 = load %..rawptr, %..rawptr* %15, align 8 | |
%17 = load %..rawptr, %..rawptr* %0, align 8 | |
%18 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%19 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %18, %Source_Code_Location* %1 | |
%21 = call %..rawptr %14(%..rawptr %16, i8 1, i64 0, i64 0, %..rawptr %17, i64 0, i64 0, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @free_ptr(%..rawptr %ptr, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca %Allocator, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %ptr, %..rawptr* %0 | |
%3 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; SelectorExpr | |
%4 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0 | |
%5 = load %Allocator, %Allocator* %4, align 8 | |
%6 = load %..rawptr, %..rawptr* %0, align 8 | |
%7 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$0, i64 0, i32 0), i64 51}, i64 302, i64 66, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$1, i64 0, i32 0), i64 8}) | |
%8 = bitcast %Allocator* %1 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16) | |
store %Allocator zeroinitializer, %Allocator* %1 | |
store %Allocator %5, %Allocator* %1 | |
%10 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %7, %Source_Code_Location* %2 | |
call void @free_ptr_with_allocator(%Allocator* %1, %..rawptr %6, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @free_all(%Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %Allocator, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; a | |
; SelectorExpr | |
%3 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0 | |
%4 = load %Allocator, %Allocator* %3, align 8 | |
store %Allocator %4, %Allocator* %0 | |
; SelectorExpr | |
%5 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 0 | |
%6 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %5, align 8 | |
; SelectorExpr | |
%7 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 1 | |
%8 = load %..rawptr, %..rawptr* %7, align 8 | |
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%10 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %9, %Source_Code_Location* %1 | |
%12 = call %..rawptr %6(%..rawptr %8, i8 2, i64 0, i64 0, %..rawptr zeroinitializer, i64 0, i64 0, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define %..rawptr @resize(%..rawptr %ptr, i64 %old_size, i64 %new_size, i64 %alignment, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %Allocator, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %ptr, %..rawptr* %0 | |
store i64 %old_size, i64* %1 | |
store i64 %new_size, i64* %2 | |
store i64 %alignment, i64* %3 | |
%6 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; a | |
; SelectorExpr | |
%7 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0 | |
%8 = load %Allocator, %Allocator* %7, align 8 | |
store %Allocator %8, %Allocator* %4 | |
; ReturnStmt | |
; SelectorExpr | |
%9 = getelementptr inbounds %Allocator, %Allocator* %4, i64 0, i32 0 | |
%10 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %9, align 8 | |
; SelectorExpr | |
%11 = getelementptr inbounds %Allocator, %Allocator* %4, i64 0, i32 1 | |
%12 = load %..rawptr, %..rawptr* %11, align 8 | |
%13 = load i64, i64* %2, align 8 | |
%14 = load i64, i64* %3, align 8 | |
%15 = load %..rawptr, %..rawptr* %0, align 8 | |
%16 = load i64, i64* %1, align 8 | |
%17 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%18 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %17, %Source_Code_Location* %5 | |
%20 = call %..rawptr %10(%..rawptr %12, i8 3, i64 %13, i64 %14, %..rawptr %15, i64 %16, i64 0, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
ret %..rawptr %20 | |
} | |
define void @free_string(%..string %str, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
store %..string %str, %..string* %0 | |
%2 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; SelectorExpr | |
%3 = load %..string, %..string* %0, align 8 | |
%4 = call i8* @raw-5.string_data-18664(%..string %3, %Context* noalias nonnull %__.context_ptr) | |
%5 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%6 = bitcast i8* %4 to %..rawptr | |
%7 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %5, %Source_Code_Location* %1 | |
call void @free_ptr(%..rawptr %6, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define %..rawptr @default_resize_align(%..rawptr %old_memory, i64 %old_size, i64 %new_size, i64 %alignment, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %Source_Code_Location, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
%6 = alloca %..rawptr, align 16 | |
%7 = alloca %Source_Code_Location, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %old_memory, %..rawptr* %0 | |
store i64 %old_size, i64* %1 | |
store i64 %new_size, i64* %2 | |
store i64 %alignment, i64* %3 | |
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; IfStmt | |
%10 = load %..rawptr, %..rawptr* %0, align 8 | |
%11 = icmp eq %..rawptr %10, zeroinitializer | |
%12 = zext i1 %11 to i8 | |
%13 = trunc i8 %12 to i1 | |
br i1 %13, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%14 = load i64, i64* %2, align 8 | |
%15 = load i64, i64* %3, align 8 | |
%16 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%17 = bitcast %Source_Code_Location* %4 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %4 | |
store %Source_Code_Location %16, %Source_Code_Location* %4 | |
%19 = call %..rawptr @alloc(i64 %14, i64 %15, %Source_Code_Location* %4, %Context* noalias nonnull %__.context_ptr) | |
ret %..rawptr %19 | |
if.done-2: | |
; IfStmt | |
%20 = load i64, i64* %2, align 8 | |
%21 = icmp eq i64 %20, 0 | |
%22 = zext i1 %21 to i8 | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-3, label %if.done-4 | |
if.then-3: | |
%24 = load %..rawptr, %..rawptr* %0, align 8 | |
%25 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%26 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %25, %Source_Code_Location* %5 | |
call void @free_ptr(%..rawptr %24, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
if.done-4: | |
; IfStmt | |
%28 = load i64, i64* %2, align 8 | |
%29 = load i64, i64* %1, align 8 | |
%30 = icmp eq i64 %28, %29 | |
%31 = zext i1 %30 to i8 | |
%32 = trunc i8 %31 to i1 | |
br i1 %32, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; ReturnStmt | |
%33 = load %..rawptr, %..rawptr* %0, align 8 | |
ret %..rawptr %33 | |
if.done-6: | |
; new_memory | |
%34 = load i64, i64* %2, align 8 | |
%35 = load i64, i64* %3, align 8 | |
%36 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%37 = bitcast %Source_Code_Location* %7 to %..rawptr | |
%38 = call %..rawptr @__mem_zero(%..rawptr %37, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7 | |
store %Source_Code_Location %36, %Source_Code_Location* %7 | |
%39 = call %..rawptr @alloc(i64 %34, i64 %35, %Source_Code_Location* %7, %Context* noalias nonnull %__.context_ptr) | |
store %..rawptr %39, %..rawptr* %6 | |
; IfStmt | |
%40 = load %..rawptr, %..rawptr* %6, align 8 | |
%41 = icmp eq %..rawptr %40, zeroinitializer | |
%42 = zext i1 %41 to i8 | |
%43 = trunc i8 %42 to i1 | |
br i1 %43, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
if.done-8: | |
%44 = load %..rawptr, %..rawptr* %6, align 8 | |
%45 = load %..rawptr, %..rawptr* %0, align 8 | |
; min | |
%46 = load i64, i64* %2, align 8 | |
%47 = load i64, i64* %1, align 8 | |
%48 = icmp slt i64 %47, %46 | |
%49 = select i1 %48, i64 %47, i64 %46 | |
%50 = call %..rawptr @__mem_copy(%..rawptr %44, %..rawptr %45, i64 %49) | |
%51 = load %..rawptr, %..rawptr* %0, align 8 | |
%52 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%53 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %52, %Source_Code_Location* %8 | |
call void @free_ptr(%..rawptr %51, %Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%55 = load %..rawptr, %..rawptr* %6, align 8 | |
ret %..rawptr %55 | |
} | |
define %..rawptr @default_allocator_proc(%..rawptr %allocator_data, i8 %mode, i64 %size, i64 %alignment, %..rawptr %old_memory, i64 %old_size, i64 %flags, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %..rawptr, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca %..rawptr, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %allocator_data, %..rawptr* %0 | |
store i8 %mode, i8* %1 | |
store i64 %size, i64* %2 | |
store i64 %alignment, i64* %3 | |
store %..rawptr %old_memory, %..rawptr* %4 | |
store i64 %old_size, i64* %5 | |
store i64 %flags, i64* %6 | |
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; SwitchStmt | |
%10 = load i8, i8* %1, align 1 | |
%11 = icmp eq i8 %10, 0 | |
br i1 %11, label %switch.case.body-2, label %switch.case.next-1 | |
switch.case.next-1: | |
%12 = icmp eq i8 %10, 1 | |
br i1 %12, label %switch.fall.body-4, label %switch.case.next-3 | |
switch.case.body-2: | |
; ReturnStmt | |
; SelectorExpr | |
%13 = load i64, i64* %2, align 8 | |
%14 = call %..rawptr @os_windows-6.heap_alloc(i64 %13, %Context* noalias nonnull %__.context_ptr) | |
ret %..rawptr %14 | |
switch.case.next-3: | |
%15 = icmp eq i8 %10, 2 | |
br i1 %15, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.fall.body-4: | |
; SelectorExpr | |
%16 = load %..rawptr, %..rawptr* %4, align 8 | |
call void @os_windows-6.heap_free(%..rawptr %16, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
switch.case.next-5: | |
%17 = icmp eq i8 %10, 3 | |
br i1 %17, label %switch.fall.body-8, label %switch.case.next-7 | |
switch.fall.body-6: | |
br label %switch.done-9 | |
switch.case.next-7: | |
br label %switch.done-9 | |
switch.fall.body-8: | |
; ptr | |
; SelectorExpr | |
%18 = load %..rawptr, %..rawptr* %4, align 8 | |
%19 = load i64, i64* %2, align 8 | |
%20 = call %..rawptr @os_windows-6.heap_resize(%..rawptr %18, i64 %19, %Context* noalias nonnull %__.context_ptr) | |
store %..rawptr %20, %..rawptr* %7 | |
%21 = load %..rawptr, %..rawptr* %7, align 8 | |
%22 = icmp ne %..rawptr %21, zeroinitializer | |
%23 = zext i1 %22 to i8 | |
%24 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$2, i64 0, i32 0), i64 51}, i64 569, i64 3, %..string {i8* getelementptr inbounds ([23 x i8], [23 x i8]* @__str$3, i64 0, i32 0), i64 22}) | |
%25 = trunc i8 %23 to i1 | |
%26 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %24, %Source_Code_Location* %8 | |
%28 = call i8 @assert(i1 %25, %..string zeroinitializer, %Source_Code_Location* %8) | |
; ReturnStmt | |
%29 = load %..rawptr, %..rawptr* %7, align 8 | |
ret %..rawptr %29 | |
switch.done-9: | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
} | |
define %Allocator @default_allocator(%Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Allocator, align 16 | |
; ReturnStmt | |
; CompoundLit | |
%1 = bitcast %Allocator* %0 to %..rawptr | |
%2 = call %..rawptr @__mem_zero(%..rawptr %1, i64 16) | |
store %Allocator zeroinitializer, %Allocator* %0 | |
store %Allocator {%..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* zeroinitializer, %..rawptr zeroinitializer}, %Allocator* %0 | |
%3 = bitcast %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* @default_allocator_proc to %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* | |
%4 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 0 | |
store %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %3, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %4 | |
%5 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 1 | |
store %..rawptr zeroinitializer, %..rawptr* %5 | |
%6 = load %Allocator, %Allocator* %0, align 8 | |
ret %Allocator %6 | |
} | |
define %..rawptr @nil_allocator_proc(%..rawptr %allocator_data, i8 %mode, i64 %size, i64 %alignment, %..rawptr %old_memory, i64 %old_size, i64 %flags, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %..rawptr, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
store %..rawptr %allocator_data, %..rawptr* %0 | |
store i8 %mode, i8* %1 | |
store i64 %size, i64* %2 | |
store i64 %alignment, i64* %3 | |
store %..rawptr %old_memory, %..rawptr* %4 | |
store i64 %old_size, i64* %5 | |
store i64 %flags, i64* %6 | |
%7 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
} | |
define %Allocator @nil_allocator(%Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Allocator, align 16 | |
; ReturnStmt | |
; CompoundLit | |
%1 = bitcast %Allocator* %0 to %..rawptr | |
%2 = call %..rawptr @__mem_zero(%..rawptr %1, i64 16) | |
store %Allocator zeroinitializer, %Allocator* %0 | |
store %Allocator {%..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* zeroinitializer, %..rawptr zeroinitializer}, %Allocator* %0 | |
%3 = bitcast %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* @nil_allocator_proc to %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* | |
%4 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 0 | |
store %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %3, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %4 | |
%5 = getelementptr inbounds %Allocator, %Allocator* %0, i64 0, i32 1 | |
store %..rawptr zeroinitializer, %..rawptr* %5 | |
%6 = load %Allocator, %Allocator* %0, align 8 | |
ret %Allocator %6 | |
} | |
define void @__print_u64(i64 %fd, i64 %u, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %..string, align 16 | |
%3 = alloca [129 x i8], align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca {i8*, i64}, align 16 | |
%7 = alloca {i8*, i64}, align 16 | |
store i64 %fd, i64* %0 | |
store i64 %u, i64* %1 | |
; digits | |
store %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$4, i64 0, i32 0), i64 10}, %..string* %2 | |
; a | |
%8 = bitcast [129 x i8]* %3 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 129) | |
store [129 x i8] zeroinitializer, [129 x i8]* %3 | |
; i | |
store i64 129, i64* %4 | |
; b | |
store i64 10, i64* %5 | |
; ForStmt | |
br label %for.loop-1 | |
for.loop-1: | |
%10 = load i64, i64* %1, align 8 | |
%11 = load i64, i64* %5, align 8 | |
%12 = icmp uge i64 %10, %11 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %for.body-2, label %for.done-3 | |
for.body-2: | |
; AssignStmt | |
%15 = load i64, i64* %4, align 8 | |
%16 = sub i64 %15, 1 | |
store i64 %16, i64* %4 | |
; AssignStmt | |
; IndexExpr | |
%17 = load i64, i64* %4, align 8 | |
%18 = trunc i64 %17 to i32 | |
%19 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 %18 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5, i64 0, i32 0), i64 51}, i64 604, i64 13, i64 %17, i64 129) | |
; IndexExpr | |
%20 = load %..string, %..string* %2, align 8 | |
%21 = extractvalue %..string %20, 0 | |
%22 = extractvalue %..string %20, 1 | |
%23 = load i64, i64* %1, align 8 | |
%24 = load i64, i64* %5, align 8 | |
%25 = urem i64 %23, %24 | |
%26 = bitcast i64 %25 to i64 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$6, i64 0, i32 0), i64 51}, i64 604, i64 25, i64 %26, i64 %22) | |
%27 = getelementptr inbounds i8, i8* %21, i64 %26 | |
%28 = load i8, i8* %27, align 1 | |
store i8 %28, i8* %19 | |
; AssignStmt | |
%29 = load i64, i64* %5, align 8 | |
%30 = load i64, i64* %1, align 8 | |
%31 = udiv i64 %30, %29 | |
store i64 %31, i64* %1 | |
br label %for.loop-1 | |
for.done-3: | |
; AssignStmt | |
%32 = load i64, i64* %4, align 8 | |
%33 = sub i64 %32, 1 | |
store i64 %33, i64* %4 | |
; AssignStmt | |
; IndexExpr | |
%34 = load i64, i64* %4, align 8 | |
%35 = trunc i64 %34 to i32 | |
%36 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 %35 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$7, i64 0, i32 0), i64 51}, i64 607, i64 12, i64 %34, i64 129) | |
; IndexExpr | |
%37 = load %..string, %..string* %2, align 8 | |
%38 = extractvalue %..string %37, 0 | |
%39 = extractvalue %..string %37, 1 | |
%40 = load i64, i64* %1, align 8 | |
%41 = load i64, i64* %5, align 8 | |
%42 = urem i64 %40, %41 | |
%43 = bitcast i64 %42 to i64 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$8, i64 0, i32 0), i64 51}, i64 607, i64 24, i64 %43, i64 %39) | |
%44 = getelementptr inbounds i8, i8* %38, i64 %43 | |
%45 = load i8, i8* %44, align 1 | |
store i8 %45, i8* %36 | |
; SelectorExpr | |
%46 = load i64, i64* %0, align 8 | |
; SliceExpr | |
%47 = load i64, i64* %4, align 8 | |
%48 = load [129 x i8], [129 x i8]* %3, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$9, i64 0, i32 0), i64 51}, i64 609, i64 16, i64 %47, i64 129, i64 129) | |
%49 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 0 | |
%50 = getelementptr inbounds i8, i8* %49, i64 %47 | |
%51 = sub i64 129, %47 | |
%52 = bitcast {i8*, i64}* %6 to %..rawptr | |
%53 = call %..rawptr @__mem_zero(%..rawptr %52, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %6 | |
%54 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 0 | |
store i8* %50, i8** %54 | |
%55 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 1 | |
store i64 %51, i64* %55 | |
%56 = load {i8*, i64}, {i8*, i64}* %6, align 8 | |
%57 = bitcast {i8*, i64}* %7 to %..rawptr | |
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %7 | |
store {i8*, i64} %56, {i8*, i64}* %7 | |
%59 = call {i64, i64} @os_windows-6.write(i64 %46, {i8*, i64}* %7, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @__print_i64(i64 %fd, i64 %u, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %..string, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca [129 x i8], align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca {i8*, i64}, align 16 | |
%8 = alloca {i8*, i64}, align 16 | |
store i64 %fd, i64* %0 | |
store i64 %u, i64* %1 | |
; digits | |
store %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$a, i64 0, i32 0), i64 10}, %..string* %2 | |
; neg | |
%9 = load i64, i64* %1, align 8 | |
%10 = icmp slt i64 %9, 0 | |
%11 = zext i1 %10 to i8 | |
store i8 %11, i8* %3 | |
; AssignStmt | |
; abs | |
%12 = load i64, i64* %1, align 8 | |
%13 = icmp slt i64 %12, 0 | |
%14 = sub i64 0, %12 | |
%15 = select i1 %13, i64 %14, i64 %12 | |
store i64 %15, i64* %1 | |
; a | |
%16 = bitcast [129 x i8]* %4 to %..rawptr | |
%17 = call %..rawptr @__mem_zero(%..rawptr %16, i64 129) | |
store [129 x i8] zeroinitializer, [129 x i8]* %4 | |
; i | |
store i64 129, i64* %5 | |
; b | |
store i64 10, i64* %6 | |
; ForStmt | |
br label %for.loop-1 | |
for.loop-1: | |
%18 = load i64, i64* %1, align 8 | |
%19 = load i64, i64* %6, align 8 | |
%20 = icmp sge i64 %18, %19 | |
%21 = zext i1 %20 to i8 | |
%22 = trunc i8 %21 to i1 | |
br i1 %22, label %for.body-2, label %for.done-3 | |
for.body-2: | |
; AssignStmt | |
%23 = load i64, i64* %5, align 8 | |
%24 = sub i64 %23, 1 | |
store i64 %24, i64* %5 | |
; AssignStmt | |
; IndexExpr | |
%25 = load i64, i64* %5, align 8 | |
%26 = trunc i64 %25 to i32 | |
%27 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 %26 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$b, i64 0, i32 0), i64 51}, i64 622, i64 13, i64 %25, i64 129) | |
; IndexExpr | |
%28 = load %..string, %..string* %2, align 8 | |
%29 = extractvalue %..string %28, 0 | |
%30 = extractvalue %..string %28, 1 | |
%31 = load i64, i64* %1, align 8 | |
%32 = load i64, i64* %6, align 8 | |
%33 = srem i64 %31, %32 | |
%34 = bitcast i64 %33 to i64 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$c, i64 0, i32 0), i64 51}, i64 622, i64 25, i64 %34, i64 %30) | |
%35 = getelementptr inbounds i8, i8* %29, i64 %34 | |
%36 = load i8, i8* %35, align 1 | |
store i8 %36, i8* %27 | |
; AssignStmt | |
%37 = load i64, i64* %6, align 8 | |
%38 = load i64, i64* %1, align 8 | |
%39 = sdiv i64 %38, %37 | |
store i64 %39, i64* %1 | |
br label %for.loop-1 | |
for.done-3: | |
; AssignStmt | |
%40 = load i64, i64* %5, align 8 | |
%41 = sub i64 %40, 1 | |
store i64 %41, i64* %5 | |
; AssignStmt | |
; IndexExpr | |
%42 = load i64, i64* %5, align 8 | |
%43 = trunc i64 %42 to i32 | |
%44 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 %43 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$d, i64 0, i32 0), i64 51}, i64 625, i64 12, i64 %42, i64 129) | |
; IndexExpr | |
%45 = load %..string, %..string* %2, align 8 | |
%46 = extractvalue %..string %45, 0 | |
%47 = extractvalue %..string %45, 1 | |
%48 = load i64, i64* %1, align 8 | |
%49 = load i64, i64* %6, align 8 | |
%50 = srem i64 %48, %49 | |
%51 = bitcast i64 %50 to i64 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$e, i64 0, i32 0), i64 51}, i64 625, i64 24, i64 %51, i64 %47) | |
%52 = getelementptr inbounds i8, i8* %46, i64 %51 | |
%53 = load i8, i8* %52, align 1 | |
store i8 %53, i8* %44 | |
; IfStmt | |
%54 = load i8, i8* %3, align 1 | |
%55 = trunc i8 %54 to i1 | |
br i1 %55, label %if.then-4, label %if.done-5 | |
if.then-4: | |
; AssignStmt | |
%56 = load i64, i64* %5, align 8 | |
%57 = sub i64 %56, 1 | |
store i64 %57, i64* %5 | |
; AssignStmt | |
; IndexExpr | |
%58 = load i64, i64* %5, align 8 | |
%59 = trunc i64 %58 to i32 | |
%60 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 %59 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$f, i64 0, i32 0), i64 51}, i64 627, i64 13, i64 %58, i64 129) | |
store i8 45, i8* %60 | |
br label %if.done-5 | |
if.done-5: | |
; SelectorExpr | |
%61 = load i64, i64* %0, align 8 | |
; SliceExpr | |
%62 = load i64, i64* %5, align 8 | |
%63 = load [129 x i8], [129 x i8]* %4, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$10, i64 0, i32 0), i64 51}, i64 630, i64 16, i64 %62, i64 129, i64 129) | |
%64 = getelementptr inbounds [129 x i8], [129 x i8]* %4, i64 0, i32 0 | |
%65 = getelementptr inbounds i8, i8* %64, i64 %62 | |
%66 = sub i64 129, %62 | |
%67 = bitcast {i8*, i64}* %7 to %..rawptr | |
%68 = call %..rawptr @__mem_zero(%..rawptr %67, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %7 | |
%69 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 0 | |
store i8* %65, i8** %69 | |
%70 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 1 | |
store i64 %66, i64* %70 | |
%71 = load {i8*, i64}, {i8*, i64}* %7, align 8 | |
%72 = bitcast {i8*, i64}* %8 to %..rawptr | |
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %8 | |
store {i8*, i64} %71, {i8*, i64}* %8 | |
%74 = call {i64, i64} @os_windows-6.write(i64 %61, {i8*, i64}* %8, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @__print_caller_location(i64 %fd, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
store i64 %fd, i64* %0 | |
%1 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; SelectorExpr | |
%2 = load i64, i64* %0, align 8 | |
%3 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 0 | |
%4 = load %..string, %..string* %3, align 8 | |
%5 = call {i64, i64} @os-3.write_string(i64 %2, %..string %4, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%6 = load i64, i64* %0, align 8 | |
%7 = call {i64, i64} @os-3.write_byte(i64 %6, i8 40, %Context* noalias nonnull %__.context_ptr) | |
%8 = load i64, i64* %0, align 8 | |
%9 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 1 | |
%10 = load i64, i64* %9, align 8 | |
%11 = bitcast i64 %10 to i64 | |
call void @__print_u64(i64 %8, i64 %11, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%12 = load i64, i64* %0, align 8 | |
%13 = call {i64, i64} @os-3.write_byte(i64 %12, i8 58, %Context* noalias nonnull %__.context_ptr) | |
%14 = load i64, i64* %0, align 8 | |
%15 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 2 | |
%16 = load i64, i64* %15, align 8 | |
%17 = bitcast i64 %16 to i64 | |
call void @__print_u64(i64 %14, i64 %17, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%18 = load i64, i64* %0, align 8 | |
%19 = call {i64, i64} @os-3.write_byte(i64 %18, i8 41, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @__print_type(i64 %fd, %Type_Info* %ti, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %Type_Info*, align 16 | |
%2 = alloca %Type_Info_Named, align 16 | |
%3 = alloca %Type_Info_Integer, align 16 | |
%4 = alloca %..any, align 16 | |
%5 = alloca %..any, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca i64, align 16 | |
%8 = alloca i64, align 16 | |
%9 = alloca %..any, align 16 | |
%10 = alloca %Type_Info_Rune, align 16 | |
%11 = alloca %Type_Info_Float, align 16 | |
%12 = alloca %Type_Info_Complex, align 16 | |
%13 = alloca %Type_Info_String, align 16 | |
%14 = alloca %Type_Info_Boolean, align 16 | |
%15 = alloca %..any, align 16 | |
%16 = alloca %..any, align 16 | |
%17 = alloca i8, align 16 | |
%18 = alloca %..any, align 16 | |
%19 = alloca %Type_Info_Any, align 16 | |
%20 = alloca %Type_Info_Pointer, align 16 | |
%21 = alloca %Type_Info_Procedure, align 16 | |
%22 = alloca %Type_Info_Tuple, align 16 | |
%23 = alloca {%Type_Info_Tuple, i8}, align 16 | |
%24 = alloca %Type_Info*, align 16 | |
%25 = alloca i64, align 16 | |
%26 = alloca i64, align 16 | |
%27 = alloca i64, align 16 | |
%28 = alloca %Type_Info_Tuple, align 16 | |
%29 = alloca i64, align 16 | |
%30 = alloca %..string, align 16 | |
%31 = alloca i64, align 16 | |
%32 = alloca i64, align 16 | |
%33 = alloca i64, align 16 | |
%34 = alloca %Type_Info*, align 16 | |
%35 = alloca %Type_Info_Array, align 16 | |
%36 = alloca %Type_Info_Dynamic_Array, align 16 | |
%37 = alloca %Type_Info_Slice, align 16 | |
%38 = alloca %Type_Info_Map, align 16 | |
%39 = alloca %Type_Info_Struct, align 16 | |
%40 = alloca %..string, align 16 | |
%41 = alloca i64, align 16 | |
%42 = alloca i64, align 16 | |
%43 = alloca i64, align 16 | |
%44 = alloca %Type_Info_Union, align 16 | |
%45 = alloca %Type_Info*, align 16 | |
%46 = alloca i64, align 16 | |
%47 = alloca i64, align 16 | |
%48 = alloca i64, align 16 | |
%49 = alloca %Type_Info_Enum, align 16 | |
%50 = alloca %..string, align 16 | |
%51 = alloca i64, align 16 | |
%52 = alloca i64, align 16 | |
%53 = alloca i64, align 16 | |
%54 = alloca %Type_Info_Bit_Field, align 16 | |
%55 = alloca %..string, align 16 | |
%56 = alloca i64, align 16 | |
%57 = alloca i64, align 16 | |
%58 = alloca i64, align 16 | |
store i64 %fd, i64* %0 | |
store %Type_Info* %ti, %Type_Info** %1 | |
; IfStmt | |
%59 = load %Type_Info*, %Type_Info** %1, align 8 | |
%60 = icmp eq %Type_Info* %59, zeroinitializer | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; SelectorExpr | |
%63 = load i64, i64* %0, align 8 | |
%64 = call {i64, i64} @os-3.write_string(i64 %63, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$11, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; TypeSwitchStmt | |
; SelectorExpr | |
%65 = load %Type_Info*, %Type_Info** %1, align 8 | |
%66 = getelementptr inbounds %Type_Info, %Type_Info* %65, i64 0 | |
%67 = getelementptr inbounds %Type_Info, %Type_Info* %66, i64 0, i32 2 | |
%68 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %67, align 8 | |
; get union's tag | |
%69 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %67, i64 0, i32 2 ; UnionTagPtr | |
%70 = load i8, i8* %69, align 1 | |
%71 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %67 to %..rawptr | |
%72 = icmp eq i8 %70, 1 | |
br i1 %72, label %typeswitch.body-4, label %typeswitch.next-3 | |
typeswitch.next-3: | |
%73 = icmp eq i8 %70, 2 | |
br i1 %73, label %typeswitch.body-6, label %typeswitch.next-5 | |
typeswitch.body-4: | |
%74 = bitcast %..rawptr %71 to %Type_Info_Named* | |
%75 = load %Type_Info_Named, %Type_Info_Named* %74, align 8 | |
store %Type_Info_Named %75, %Type_Info_Named* %2 | |
; SelectorExpr | |
%76 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%77 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 0 | |
%78 = load %..string, %..string* %77, align 8 | |
%79 = call {i64, i64} @os-3.write_string(i64 %76, %..string %78, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-5: | |
%80 = icmp eq i8 %70, 3 | |
br i1 %80, label %typeswitch.body-18, label %typeswitch.next-17 | |
typeswitch.body-6: | |
%81 = bitcast %..rawptr %71 to %Type_Info_Integer* | |
%82 = load %Type_Info_Integer, %Type_Info_Integer* %81, align 1 | |
store %Type_Info_Integer %82, %Type_Info_Integer* %3 | |
; a | |
; CompoundLit | |
%83 = bitcast %..any* %5 to %..rawptr | |
%84 = call %..rawptr @__mem_zero(%..rawptr %83, i64 16) | |
store %..any zeroinitializer, %..any* %5 | |
store %..any zeroinitializer, %..any* %5 | |
%85 = load %Type_Info*, %Type_Info** %1, align 8 | |
%86 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1 | |
store %Type_Info* %85, %Type_Info** %86 | |
%87 = load %..any, %..any* %5, align 8 | |
store %..any %87, %..any* %4 | |
; TypeSwitchStmt | |
%88 = load %..any, %..any* %4, align 8 | |
%89 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%90 = load %Type_Info*, %Type_Info** %89, align 8 | |
%91 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6 | |
%92 = icmp eq %Type_Info* %90, %91 | |
br i1 %92, label %typeswitch.body-8, label %typeswitch.next-7 | |
typeswitch.next-7: | |
%93 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%94 = load %Type_Info*, %Type_Info** %93, align 8 | |
%95 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%96 = icmp eq %Type_Info* %94, %95 | |
br i1 %96, label %typeswitch.body-10, label %typeswitch.next-9 | |
typeswitch.body-8: | |
%97 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%98 = load %..rawptr, %..rawptr* %97, align 8 | |
%99 = bitcast %..rawptr %98 to i64* | |
%100 = load i64, i64* %99, align 8 | |
store i64 %100, i64* %6 | |
; SelectorExpr | |
%101 = load i64, i64* %0, align 8 | |
%102 = call {i64, i64} @os-3.write_string(i64 %101, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$12, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
typeswitch.next-9: | |
%103 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%104 = load %Type_Info*, %Type_Info** %103, align 8 | |
%105 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 55 | |
%106 = icmp eq %Type_Info* %104, %105 | |
br i1 %106, label %typeswitch.body-12, label %typeswitch.next-11 | |
typeswitch.body-10: | |
%107 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%108 = load %..rawptr, %..rawptr* %107, align 8 | |
%109 = bitcast %..rawptr %108 to i64* | |
%110 = load i64, i64* %109, align 8 | |
store i64 %110, i64* %7 | |
; SelectorExpr | |
%111 = load i64, i64* %0, align 8 | |
%112 = call {i64, i64} @os-3.write_string(i64 %111, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$13, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
typeswitch.next-11: | |
store %..any %88, %..any* %9 | |
; SelectorExpr | |
%113 = load i64, i64* %0, align 8 | |
; TernaryExpr | |
; SelectorExpr | |
%114 = getelementptr inbounds %Type_Info_Integer, %Type_Info_Integer* %3, i64 0, i32 0 | |
%115 = load i8, i8* %114, align 1 | |
%116 = trunc i8 %115 to i1 | |
br i1 %116, label %if.then-13, label %if.else-14 | |
typeswitch.body-12: | |
%117 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%118 = load %..rawptr, %..rawptr* %117, align 8 | |
%119 = bitcast %..rawptr %118 to i64* | |
%120 = load i64, i64* %119, align 8 | |
store i64 %120, i64* %8 | |
; SelectorExpr | |
%121 = load i64, i64* %0, align 8 | |
%122 = call {i64, i64} @os-3.write_string(i64 %121, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$14, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
if.then-13: | |
br label %if.done-15 | |
if.else-14: | |
br label %if.done-15 | |
if.done-15: | |
%123 = phi i32 [ 105, %if.then-13 ], [ 117, %if.else-14 ] | |
%124 = trunc i32 %123 to i8 | |
%125 = call {i64, i64} @os-3.write_byte(i64 %113, i8 %124, %Context* noalias nonnull %__.context_ptr) | |
%126 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%127 = load %Type_Info*, %Type_Info** %1, align 8 | |
%128 = getelementptr inbounds %Type_Info, %Type_Info* %127, i64 0 | |
%129 = getelementptr inbounds %Type_Info, %Type_Info* %128, i64 0, i32 0 | |
%130 = load i64, i64* %129, align 8 | |
%131 = mul i64 8, %130 | |
%132 = bitcast i64 %131 to i64 | |
call void @__print_u64(i64 %126, i64 %132, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
typeswitch.done-16: | |
br label %typeswitch.done-108 | |
typeswitch.next-17: | |
%133 = icmp eq i8 %70, 4 | |
br i1 %133, label %typeswitch.body-20, label %typeswitch.next-19 | |
typeswitch.body-18: | |
%134 = bitcast %..rawptr %71 to %Type_Info_Rune* | |
%135 = load %Type_Info_Rune, %Type_Info_Rune* %134, align 1 | |
store %Type_Info_Rune %135, %Type_Info_Rune* %10 | |
; SelectorExpr | |
%136 = load i64, i64* %0, align 8 | |
%137 = call {i64, i64} @os-3.write_string(i64 %136, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$15, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-19: | |
%138 = icmp eq i8 %70, 5 | |
br i1 %138, label %typeswitch.body-22, label %typeswitch.next-21 | |
typeswitch.body-20: | |
%139 = bitcast %..rawptr %71 to %Type_Info_Float* | |
%140 = load %Type_Info_Float, %Type_Info_Float* %139, align 1 | |
store %Type_Info_Float %140, %Type_Info_Float* %11 | |
; SelectorExpr | |
%141 = load i64, i64* %0, align 8 | |
%142 = call {i64, i64} @os-3.write_byte(i64 %141, i8 102, %Context* noalias nonnull %__.context_ptr) | |
%143 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%144 = load %Type_Info*, %Type_Info** %1, align 8 | |
%145 = getelementptr inbounds %Type_Info, %Type_Info* %144, i64 0 | |
%146 = getelementptr inbounds %Type_Info, %Type_Info* %145, i64 0, i32 0 | |
%147 = load i64, i64* %146, align 8 | |
%148 = mul i64 8, %147 | |
%149 = bitcast i64 %148 to i64 | |
call void @__print_u64(i64 %143, i64 %149, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-21: | |
%150 = icmp eq i8 %70, 6 | |
br i1 %150, label %typeswitch.body-24, label %typeswitch.next-23 | |
typeswitch.body-22: | |
%151 = bitcast %..rawptr %71 to %Type_Info_Complex* | |
%152 = load %Type_Info_Complex, %Type_Info_Complex* %151, align 1 | |
store %Type_Info_Complex %152, %Type_Info_Complex* %12 | |
; SelectorExpr | |
%153 = load i64, i64* %0, align 8 | |
%154 = call {i64, i64} @os-3.write_string(i64 %153, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$16, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
%155 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%156 = load %Type_Info*, %Type_Info** %1, align 8 | |
%157 = getelementptr inbounds %Type_Info, %Type_Info* %156, i64 0 | |
%158 = getelementptr inbounds %Type_Info, %Type_Info* %157, i64 0, i32 0 | |
%159 = load i64, i64* %158, align 8 | |
%160 = mul i64 8, %159 | |
%161 = bitcast i64 %160 to i64 | |
call void @__print_u64(i64 %155, i64 %161, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-23: | |
%162 = icmp eq i8 %70, 7 | |
br i1 %162, label %typeswitch.body-26, label %typeswitch.next-25 | |
typeswitch.body-24: | |
%163 = bitcast %..rawptr %71 to %Type_Info_String* | |
%164 = load %Type_Info_String, %Type_Info_String* %163, align 1 | |
store %Type_Info_String %164, %Type_Info_String* %13 | |
; SelectorExpr | |
%165 = load i64, i64* %0, align 8 | |
%166 = call {i64, i64} @os-3.write_string(i64 %165, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$17, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-25: | |
%167 = icmp eq i8 %70, 8 | |
br i1 %167, label %typeswitch.body-31, label %typeswitch.next-30 | |
typeswitch.body-26: | |
%168 = bitcast %..rawptr %71 to %Type_Info_Boolean* | |
%169 = load %Type_Info_Boolean, %Type_Info_Boolean* %168, align 1 | |
store %Type_Info_Boolean %169, %Type_Info_Boolean* %14 | |
; a | |
; CompoundLit | |
%170 = bitcast %..any* %16 to %..rawptr | |
%171 = call %..rawptr @__mem_zero(%..rawptr %170, i64 16) | |
store %..any zeroinitializer, %..any* %16 | |
store %..any zeroinitializer, %..any* %16 | |
%172 = load %Type_Info*, %Type_Info** %1, align 8 | |
%173 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 1 | |
store %Type_Info* %172, %Type_Info** %173 | |
%174 = load %..any, %..any* %16, align 8 | |
store %..any %174, %..any* %15 | |
; TypeSwitchStmt | |
%175 = load %..any, %..any* %15, align 8 | |
%176 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 1 | |
%177 = load %Type_Info*, %Type_Info** %176, align 8 | |
%178 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 27 | |
%179 = icmp eq %Type_Info* %177, %178 | |
br i1 %179, label %typeswitch.body-28, label %typeswitch.next-27 | |
typeswitch.next-27: | |
store %..any %175, %..any* %18 | |
; SelectorExpr | |
%180 = load i64, i64* %0, align 8 | |
%181 = call {i64, i64} @os-3.write_byte(i64 %180, i8 98, %Context* noalias nonnull %__.context_ptr) | |
%182 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%183 = load %Type_Info*, %Type_Info** %1, align 8 | |
%184 = getelementptr inbounds %Type_Info, %Type_Info* %183, i64 0 | |
%185 = getelementptr inbounds %Type_Info, %Type_Info* %184, i64 0, i32 0 | |
%186 = load i64, i64* %185, align 8 | |
%187 = mul i64 8, %186 | |
%188 = bitcast i64 %187 to i64 | |
call void @__print_u64(i64 %182, i64 %188, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-29 | |
typeswitch.body-28: | |
%189 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 0 | |
%190 = load %..rawptr, %..rawptr* %189, align 8 | |
%191 = bitcast %..rawptr %190 to i8* | |
%192 = load i8, i8* %191, align 1 | |
store i8 %192, i8* %17 | |
; SelectorExpr | |
%193 = load i64, i64* %0, align 8 | |
%194 = call {i64, i64} @os-3.write_string(i64 %193, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$18, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-29 | |
typeswitch.done-29: | |
br label %typeswitch.done-108 | |
typeswitch.next-30: | |
%195 = icmp eq i8 %70, 9 | |
br i1 %195, label %typeswitch.body-33, label %typeswitch.next-32 | |
typeswitch.body-31: | |
%196 = bitcast %..rawptr %71 to %Type_Info_Any* | |
%197 = load %Type_Info_Any, %Type_Info_Any* %196, align 1 | |
store %Type_Info_Any %197, %Type_Info_Any* %19 | |
; SelectorExpr | |
%198 = load i64, i64* %0, align 8 | |
%199 = call {i64, i64} @os-3.write_string(i64 %198, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$19, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-32: | |
%200 = icmp eq i8 %70, 10 | |
br i1 %200, label %typeswitch.body-38, label %typeswitch.next-37 | |
typeswitch.body-33: | |
%201 = bitcast %..rawptr %71 to %Type_Info_Pointer* | |
%202 = load %Type_Info_Pointer, %Type_Info_Pointer* %201, align 8 | |
store %Type_Info_Pointer %202, %Type_Info_Pointer* %20 | |
; IfStmt | |
; SelectorExpr | |
%203 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0 | |
%204 = load %Type_Info*, %Type_Info** %203, align 8 | |
%205 = icmp eq %Type_Info* %204, zeroinitializer | |
%206 = zext i1 %205 to i8 | |
%207 = trunc i8 %206 to i1 | |
br i1 %207, label %if.then-34, label %if.else-35 | |
if.then-34: | |
; SelectorExpr | |
%208 = load i64, i64* %0, align 8 | |
%209 = call {i64, i64} @os-3.write_string(i64 %208, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$1a, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-36 | |
if.else-35: | |
; SelectorExpr | |
%210 = load i64, i64* %0, align 8 | |
%211 = call {i64, i64} @os-3.write_string(i64 %210, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$1b, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
%212 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%213 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0 | |
%214 = load %Type_Info*, %Type_Info** %213, align 8 | |
call void @__print_type(i64 %212, %Type_Info* %214, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-36 | |
if.done-36: | |
br label %typeswitch.done-108 | |
typeswitch.next-37: | |
%215 = icmp eq i8 %70, 14 | |
br i1 %215, label %typeswitch.body-52, label %typeswitch.next-51 | |
typeswitch.body-38: | |
%216 = bitcast %..rawptr %71 to %Type_Info_Procedure* | |
%217 = load %Type_Info_Procedure, %Type_Info_Procedure* %216, align 8 | |
store %Type_Info_Procedure %217, %Type_Info_Procedure* %21 | |
; SelectorExpr | |
%218 = load i64, i64* %0, align 8 | |
%219 = call {i64, i64} @os-3.write_string(i64 %218, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$1c, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%220 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0 | |
%221 = load %Type_Info*, %Type_Info** %220, align 8 | |
%222 = icmp eq %Type_Info* %221, zeroinitializer | |
%223 = zext i1 %222 to i8 | |
%224 = trunc i8 %223 to i1 | |
br i1 %224, label %if.then-39, label %if.else-40 | |
if.then-39: | |
; SelectorExpr | |
%225 = load i64, i64* %0, align 8 | |
%226 = call {i64, i64} @os-3.write_string(i64 %225, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-48 | |
if.else-40: | |
; t | |
; SelectorExpr | |
; SelectorExpr | |
%227 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0 | |
%228 = load %Type_Info*, %Type_Info** %227, align 8 | |
%229 = getelementptr inbounds %Type_Info, %Type_Info* %228, i64 0 | |
%230 = getelementptr inbounds %Type_Info, %Type_Info* %229, i64 0, i32 2 | |
%231 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %230, align 8 | |
; cast - union_cast | |
%232 = bitcast {%Type_Info_Tuple, i8}* %23 to %..rawptr | |
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 40) | |
store {%Type_Info_Tuple, i8} zeroinitializer, {%Type_Info_Tuple, i8}* %23 | |
%234 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %230, i64 0, i32 2 ; UnionTagPtr | |
%235 = load i8, i8* %234, align 1 | |
%236 = icmp eq i8 %235, 14 | |
br i1 %236, label %union_cast.ok-41, label %union_cast.end-42 | |
union_cast.ok-41: | |
%237 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0 | |
%238 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1 | |
%239 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %230 to %Type_Info_Tuple* | |
%240 = load %Type_Info_Tuple, %Type_Info_Tuple* %239, align 8 | |
store %Type_Info_Tuple %240, %Type_Info_Tuple* %237 | |
store i8 1, i8* %238 | |
br label %union_cast.end-42 | |
union_cast.end-42: | |
%241 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1 | |
%242 = load i8, i8* %241, align 1 | |
%243 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 24 | |
%244 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 46 | |
%245 = trunc i8 %242 to i1 | |
call void @__type_assertion_check(i1 %245, %..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$1e, i64 0, i32 0), i64 51}, i64 694, i64 21, %Type_Info* %243, %Type_Info* %244) | |
%246 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0 | |
%247 = load %Type_Info_Tuple, %Type_Info_Tuple* %246, align 8 | |
store %Type_Info_Tuple %247, %Type_Info_Tuple* %22 | |
; SelectorExpr | |
%248 = load i64, i64* %0, align 8 | |
%249 = call {i64, i64} @os-3.write_string(i64 %248, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$1f, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; t | |
%250 = bitcast %Type_Info** %24 to %..rawptr | |
%251 = call %..rawptr @__mem_zero(%..rawptr %250, i64 8) | |
store %Type_Info* zeroinitializer, %Type_Info** %24 | |
; i | |
%252 = bitcast i64* %25 to %..rawptr | |
%253 = call %..rawptr @__mem_zero(%..rawptr %252, i64 8) | |
store i64 zeroinitializer, i64* %25 | |
; SelectorExpr | |
%254 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %22, i64 0, i32 0 | |
%255 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %254, align 8 | |
%256 = bitcast i64* %26 to %..rawptr | |
%257 = call %..rawptr @__mem_zero(%..rawptr %256, i64 8) | |
store i64 zeroinitializer, i64* %26 | |
%258 = extractvalue {%Type_Info**, i64} %255, 1 | |
store i64 %258, i64* %26 | |
%259 = bitcast i64* %27 to %..rawptr | |
%260 = call %..rawptr @__mem_zero(%..rawptr %259, i64 8) | |
store i64 zeroinitializer, i64* %27 | |
store i64 -1, i64* %27 | |
br label %for.index.loop-43 | |
for.index.loop-43: | |
%261 = load i64, i64* %27, align 8 | |
%262 = add i64 %261, 1 | |
store i64 %262, i64* %27 | |
%263 = load i64, i64* %26, align 8 | |
%264 = icmp slt i64 %262, %263 | |
br i1 %264, label %for.index.body-44, label %for.index.done-47 | |
for.index.body-44: | |
%265 = load i64, i64* %27, align 8 | |
%266 = extractvalue {%Type_Info**, i64} %255, 0 | |
%267 = getelementptr inbounds %Type_Info*, %Type_Info** %266, i64 %265 | |
%268 = load %Type_Info*, %Type_Info** %267, align 8 | |
store %Type_Info* %268, %Type_Info** %24 | |
store i64 %265, i64* %25 | |
; IfStmt | |
%269 = load i64, i64* %25, align 8 | |
%270 = icmp sgt i64 %269, 0 | |
%271 = zext i1 %270 to i8 | |
%272 = trunc i8 %271 to i1 | |
br i1 %272, label %if.then-45, label %if.done-46 | |
if.then-45: | |
; SelectorExpr | |
%273 = load i64, i64* %0, align 8 | |
%274 = call {i64, i64} @os-3.write_string(i64 %273, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$20, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-46 | |
if.done-46: | |
%275 = load i64, i64* %0, align 8 | |
%276 = load %Type_Info*, %Type_Info** %24, align 8 | |
call void @__print_type(i64 %275, %Type_Info* %276, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-43 | |
for.index.done-47: | |
; SelectorExpr | |
%277 = load i64, i64* %0, align 8 | |
%278 = call {i64, i64} @os-3.write_string(i64 %277, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$21, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-48 | |
if.done-48: | |
; IfStmt | |
; SelectorExpr | |
%279 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1 | |
%280 = load %Type_Info*, %Type_Info** %279, align 8 | |
%281 = icmp ne %Type_Info* %280, zeroinitializer | |
%282 = zext i1 %281 to i8 | |
%283 = trunc i8 %282 to i1 | |
br i1 %283, label %if.then-49, label %if.done-50 | |
if.then-49: | |
; SelectorExpr | |
%284 = load i64, i64* %0, align 8 | |
%285 = call {i64, i64} @os-3.write_string(i64 %284, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$22, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
%286 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%287 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1 | |
%288 = load %Type_Info*, %Type_Info** %287, align 8 | |
call void @__print_type(i64 %286, %Type_Info* %288, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-50 | |
if.done-50: | |
br label %typeswitch.done-108 | |
typeswitch.next-51: | |
%289 = icmp eq i8 %70, 11 | |
br i1 %289, label %typeswitch.body-65, label %typeswitch.next-64 | |
typeswitch.body-52: | |
%290 = bitcast %..rawptr %71 to %Type_Info_Tuple* | |
%291 = load %Type_Info_Tuple, %Type_Info_Tuple* %290, align 8 | |
store %Type_Info_Tuple %291, %Type_Info_Tuple* %28 | |
; count | |
; SelectorExpr | |
%292 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1 | |
%293 = load {%..string*, i64}, {%..string*, i64}* %292, align 8 | |
%294 = extractvalue {%..string*, i64} %293, 1 | |
store i64 %294, i64* %29 | |
; IfStmt | |
%295 = load i64, i64* %29, align 8 | |
%296 = icmp ne i64 %295, 1 | |
%297 = zext i1 %296 to i8 | |
%298 = trunc i8 %297 to i1 | |
br i1 %298, label %if.then-53, label %if.done-54 | |
if.then-53: | |
; SelectorExpr | |
%299 = load i64, i64* %0, align 8 | |
%300 = call {i64, i64} @os-3.write_string(i64 %299, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$23, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-54 | |
if.done-54: | |
; RangeStmt | |
; name | |
%301 = bitcast %..string* %30 to %..rawptr | |
%302 = call %..rawptr @__mem_zero(%..rawptr %301, i64 16) | |
store %..string zeroinitializer, %..string* %30 | |
; i | |
%303 = bitcast i64* %31 to %..rawptr | |
%304 = call %..rawptr @__mem_zero(%..rawptr %303, i64 8) | |
store i64 zeroinitializer, i64* %31 | |
; SelectorExpr | |
%305 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1 | |
%306 = load {%..string*, i64}, {%..string*, i64}* %305, align 8 | |
%307 = bitcast i64* %32 to %..rawptr | |
%308 = call %..rawptr @__mem_zero(%..rawptr %307, i64 8) | |
store i64 zeroinitializer, i64* %32 | |
%309 = extractvalue {%..string*, i64} %306, 1 | |
store i64 %309, i64* %32 | |
%310 = bitcast i64* %33 to %..rawptr | |
%311 = call %..rawptr @__mem_zero(%..rawptr %310, i64 8) | |
store i64 zeroinitializer, i64* %33 | |
store i64 -1, i64* %33 | |
br label %for.index.loop-55 | |
for.index.loop-55: | |
%312 = load i64, i64* %33, align 8 | |
%313 = add i64 %312, 1 | |
store i64 %313, i64* %33 | |
%314 = load i64, i64* %32, align 8 | |
%315 = icmp slt i64 %313, %314 | |
br i1 %315, label %for.index.body-56, label %for.index.done-61 | |
for.index.body-56: | |
%316 = load i64, i64* %33, align 8 | |
%317 = extractvalue {%..string*, i64} %306, 0 | |
%318 = getelementptr inbounds %..string, %..string* %317, i64 %316 | |
%319 = load %..string, %..string* %318, align 8 | |
store %..string %319, %..string* %30 | |
store i64 %316, i64* %31 | |
; IfStmt | |
%320 = load i64, i64* %31, align 8 | |
%321 = icmp sgt i64 %320, 0 | |
%322 = zext i1 %321 to i8 | |
%323 = trunc i8 %322 to i1 | |
br i1 %323, label %if.then-57, label %if.done-58 | |
if.then-57: | |
; SelectorExpr | |
%324 = load i64, i64* %0, align 8 | |
%325 = call {i64, i64} @os-3.write_string(i64 %324, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$24, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-58 | |
if.done-58: | |
; t | |
; IndexExpr | |
; SelectorExpr | |
%326 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 0 | |
%327 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %326, align 8 | |
%328 = extractvalue {%Type_Info**, i64} %327, 0 | |
%329 = load i64, i64* %31, align 8 | |
%330 = extractvalue {%Type_Info**, i64} %327, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$25, i64 0, i32 0), i64 51}, i64 712, i64 20, i64 %329, i64 %330) | |
%331 = getelementptr inbounds %Type_Info*, %Type_Info** %328, i64 %329 | |
%332 = load %Type_Info*, %Type_Info** %331, align 8 | |
store %Type_Info* %332, %Type_Info** %34 | |
; IfStmt | |
%333 = load %..string, %..string* %30, align 8 | |
%334 = extractvalue %..string %333, 1 | |
%335 = icmp sgt i64 %334, 0 | |
%336 = zext i1 %335 to i8 | |
%337 = trunc i8 %336 to i1 | |
br i1 %337, label %if.then-59, label %if.done-60 | |
if.then-59: | |
; SelectorExpr | |
%338 = load i64, i64* %0, align 8 | |
%339 = load %..string, %..string* %30, align 8 | |
%340 = call {i64, i64} @os-3.write_string(i64 %338, %..string %339, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%341 = load i64, i64* %0, align 8 | |
%342 = call {i64, i64} @os-3.write_string(i64 %341, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$26, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-60 | |
if.done-60: | |
%343 = load i64, i64* %0, align 8 | |
%344 = load %Type_Info*, %Type_Info** %34, align 8 | |
call void @__print_type(i64 %343, %Type_Info* %344, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-55 | |
for.index.done-61: | |
; IfStmt | |
%345 = load i64, i64* %29, align 8 | |
%346 = icmp ne i64 %345, 1 | |
%347 = zext i1 %346 to i8 | |
%348 = trunc i8 %347 to i1 | |
br i1 %348, label %if.then-62, label %if.done-63 | |
if.then-62: | |
; SelectorExpr | |
%349 = load i64, i64* %0, align 8 | |
%350 = call {i64, i64} @os-3.write_string(i64 %349, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$27, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-63 | |
if.done-63: | |
br label %typeswitch.done-108 | |
typeswitch.next-64: | |
%351 = icmp eq i8 %70, 12 | |
br i1 %351, label %typeswitch.body-67, label %typeswitch.next-66 | |
typeswitch.body-65: | |
%352 = bitcast %..rawptr %71 to %Type_Info_Array* | |
%353 = load %Type_Info_Array, %Type_Info_Array* %352, align 8 | |
store %Type_Info_Array %353, %Type_Info_Array* %35 | |
; SelectorExpr | |
%354 = load i64, i64* %0, align 8 | |
%355 = call {i64, i64} @os-3.write_string(i64 %354, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$28, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
%356 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%357 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 2 | |
%358 = load i64, i64* %357, align 8 | |
%359 = bitcast i64 %358 to i64 | |
call void @__print_u64(i64 %356, i64 %359, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%360 = load i64, i64* %0, align 8 | |
%361 = call {i64, i64} @os-3.write_string(i64 %360, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$29, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
%362 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%363 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 0 | |
%364 = load %Type_Info*, %Type_Info** %363, align 8 | |
call void @__print_type(i64 %362, %Type_Info* %364, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-66: | |
%365 = icmp eq i8 %70, 13 | |
br i1 %365, label %typeswitch.body-69, label %typeswitch.next-68 | |
typeswitch.body-67: | |
%366 = bitcast %..rawptr %71 to %Type_Info_Dynamic_Array* | |
%367 = load %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %366, align 8 | |
store %Type_Info_Dynamic_Array %367, %Type_Info_Dynamic_Array* %36 | |
; SelectorExpr | |
%368 = load i64, i64* %0, align 8 | |
%369 = call {i64, i64} @os-3.write_string(i64 %368, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$2a, i64 0, i32 0), i64 9}, %Context* noalias nonnull %__.context_ptr) | |
%370 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%371 = getelementptr inbounds %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %36, i64 0, i32 0 | |
%372 = load %Type_Info*, %Type_Info** %371, align 8 | |
call void @__print_type(i64 %370, %Type_Info* %372, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-68: | |
%373 = icmp eq i8 %70, 18 | |
br i1 %373, label %typeswitch.body-71, label %typeswitch.next-70 | |
typeswitch.body-69: | |
%374 = bitcast %..rawptr %71 to %Type_Info_Slice* | |
%375 = load %Type_Info_Slice, %Type_Info_Slice* %374, align 8 | |
store %Type_Info_Slice %375, %Type_Info_Slice* %37 | |
; SelectorExpr | |
%376 = load i64, i64* %0, align 8 | |
%377 = call {i64, i64} @os-3.write_string(i64 %376, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$2b, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%378 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%379 = getelementptr inbounds %Type_Info_Slice, %Type_Info_Slice* %37, i64 0, i32 0 | |
%380 = load %Type_Info*, %Type_Info** %379, align 8 | |
call void @__print_type(i64 %378, %Type_Info* %380, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-70: | |
%381 = icmp eq i8 %70, 15 | |
br i1 %381, label %typeswitch.body-73, label %typeswitch.next-72 | |
typeswitch.body-71: | |
%382 = bitcast %..rawptr %71 to %Type_Info_Map* | |
%383 = load %Type_Info_Map, %Type_Info_Map* %382, align 8 | |
store %Type_Info_Map %383, %Type_Info_Map* %38 | |
; SelectorExpr | |
%384 = load i64, i64* %0, align 8 | |
%385 = call {i64, i64} @os-3.write_string(i64 %384, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$2c, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
%386 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%387 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 0 | |
%388 = load %Type_Info*, %Type_Info** %387, align 8 | |
call void @__print_type(i64 %386, %Type_Info* %388, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%389 = load i64, i64* %0, align 8 | |
%390 = call {i64, i64} @os-3.write_byte(i64 %389, i8 93, %Context* noalias nonnull %__.context_ptr) | |
%391 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%392 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 1 | |
%393 = load %Type_Info*, %Type_Info** %392, align 8 | |
call void @__print_type(i64 %391, %Type_Info* %393, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-72: | |
%394 = icmp eq i8 %70, 16 | |
br i1 %394, label %typeswitch.body-86, label %typeswitch.next-85 | |
typeswitch.body-73: | |
%395 = bitcast %..rawptr %71 to %Type_Info_Struct* | |
%396 = load %Type_Info_Struct, %Type_Info_Struct* %395, align 8 | |
store %Type_Info_Struct %396, %Type_Info_Struct* %39 | |
; SelectorExpr | |
%397 = load i64, i64* %0, align 8 | |
%398 = call {i64, i64} @os-3.write_string(i64 %397, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$2d, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%399 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 4 | |
%400 = load i8, i8* %399, align 1 | |
%401 = trunc i8 %400 to i1 | |
br i1 %401, label %if.then-74, label %if.done-75 | |
if.then-74: | |
; SelectorExpr | |
%402 = load i64, i64* %0, align 8 | |
%403 = call {i64, i64} @os-3.write_string(i64 %402, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$2e, i64 0, i32 0), i64 8}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-75 | |
if.done-75: | |
; IfStmt | |
; SelectorExpr | |
%404 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 5 | |
%405 = load i8, i8* %404, align 1 | |
%406 = trunc i8 %405 to i1 | |
br i1 %406, label %if.then-76, label %if.done-77 | |
if.then-76: | |
; SelectorExpr | |
%407 = load i64, i64* %0, align 8 | |
%408 = call {i64, i64} @os-3.write_string(i64 %407, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$2f, i64 0, i32 0), i64 11}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-77 | |
if.done-77: | |
; IfStmt | |
; SelectorExpr | |
%409 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 6 | |
%410 = load i8, i8* %409, align 1 | |
%411 = trunc i8 %410 to i1 | |
br i1 %411, label %if.then-78, label %if.done-79 | |
if.then-78: | |
; SelectorExpr | |
%412 = load i64, i64* %0, align 8 | |
%413 = call {i64, i64} @os-3.write_string(i64 %412, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$30, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
%414 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%415 = load %Type_Info*, %Type_Info** %1, align 8 | |
%416 = getelementptr inbounds %Type_Info, %Type_Info* %415, i64 0 | |
%417 = getelementptr inbounds %Type_Info, %Type_Info* %416, i64 0, i32 1 | |
%418 = load i64, i64* %417, align 8 | |
%419 = bitcast i64 %418 to i64 | |
call void @__print_u64(i64 %414, i64 %419, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%420 = load i64, i64* %0, align 8 | |
%421 = call {i64, i64} @os-3.write_byte(i64 %420, i8 32, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-79 | |
if.done-79: | |
; SelectorExpr | |
%422 = load i64, i64* %0, align 8 | |
%423 = call {i64, i64} @os-3.write_byte(i64 %422, i8 123, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; name | |
%424 = bitcast %..string* %40 to %..rawptr | |
%425 = call %..rawptr @__mem_zero(%..rawptr %424, i64 16) | |
store %..string zeroinitializer, %..string* %40 | |
; i | |
%426 = bitcast i64* %41 to %..rawptr | |
%427 = call %..rawptr @__mem_zero(%..rawptr %426, i64 8) | |
store i64 zeroinitializer, i64* %41 | |
; SelectorExpr | |
%428 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 1 | |
%429 = load {%..string*, i64}, {%..string*, i64}* %428, align 8 | |
%430 = bitcast i64* %42 to %..rawptr | |
%431 = call %..rawptr @__mem_zero(%..rawptr %430, i64 8) | |
store i64 zeroinitializer, i64* %42 | |
%432 = extractvalue {%..string*, i64} %429, 1 | |
store i64 %432, i64* %42 | |
%433 = bitcast i64* %43 to %..rawptr | |
%434 = call %..rawptr @__mem_zero(%..rawptr %433, i64 8) | |
store i64 zeroinitializer, i64* %43 | |
store i64 -1, i64* %43 | |
br label %for.index.loop-80 | |
for.index.loop-80: | |
%435 = load i64, i64* %43, align 8 | |
%436 = add i64 %435, 1 | |
store i64 %436, i64* %43 | |
%437 = load i64, i64* %42, align 8 | |
%438 = icmp slt i64 %436, %437 | |
br i1 %438, label %for.index.body-81, label %for.index.done-84 | |
for.index.body-81: | |
%439 = load i64, i64* %43, align 8 | |
%440 = extractvalue {%..string*, i64} %429, 0 | |
%441 = getelementptr inbounds %..string, %..string* %440, i64 %439 | |
%442 = load %..string, %..string* %441, align 8 | |
store %..string %442, %..string* %40 | |
store i64 %439, i64* %41 | |
; IfStmt | |
%443 = load i64, i64* %41, align 8 | |
%444 = icmp sgt i64 %443, 0 | |
%445 = zext i1 %444 to i8 | |
%446 = trunc i8 %445 to i1 | |
br i1 %446, label %if.then-82, label %if.done-83 | |
if.then-82: | |
; SelectorExpr | |
%447 = load i64, i64* %0, align 8 | |
%448 = call {i64, i64} @os-3.write_string(i64 %447, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$31, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-83 | |
if.done-83: | |
; SelectorExpr | |
%449 = load i64, i64* %0, align 8 | |
%450 = load %..string, %..string* %40, align 8 | |
%451 = call {i64, i64} @os-3.write_string(i64 %449, %..string %450, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%452 = load i64, i64* %0, align 8 | |
%453 = call {i64, i64} @os-3.write_string(i64 %452, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$32, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%454 = load i64, i64* %0, align 8 | |
; IndexExpr | |
; SelectorExpr | |
%455 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 0 | |
%456 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %455, align 8 | |
%457 = extractvalue {%Type_Info**, i64} %456, 0 | |
%458 = load i64, i64* %41, align 8 | |
%459 = extractvalue {%Type_Info**, i64} %456, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$33, i64 0, i32 0), i64 51}, i64 754, i64 32, i64 %458, i64 %459) | |
%460 = getelementptr inbounds %Type_Info*, %Type_Info** %457, i64 %458 | |
%461 = load %Type_Info*, %Type_Info** %460, align 8 | |
call void @__print_type(i64 %454, %Type_Info* %461, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-80 | |
for.index.done-84: | |
; SelectorExpr | |
%462 = load i64, i64* %0, align 8 | |
%463 = call {i64, i64} @os-3.write_byte(i64 %462, i8 125, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-85: | |
%464 = icmp eq i8 %70, 17 | |
br i1 %464, label %typeswitch.body-93, label %typeswitch.next-92 | |
typeswitch.body-86: | |
%465 = bitcast %..rawptr %71 to %Type_Info_Union* | |
%466 = load %Type_Info_Union, %Type_Info_Union* %465, align 8 | |
store %Type_Info_Union %466, %Type_Info_Union* %44 | |
; SelectorExpr | |
%467 = load i64, i64* %0, align 8 | |
%468 = call {i64, i64} @os-3.write_string(i64 %467, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$34, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; variant | |
%469 = bitcast %Type_Info** %45 to %..rawptr | |
%470 = call %..rawptr @__mem_zero(%..rawptr %469, i64 8) | |
store %Type_Info* zeroinitializer, %Type_Info** %45 | |
; i | |
%471 = bitcast i64* %46 to %..rawptr | |
%472 = call %..rawptr @__mem_zero(%..rawptr %471, i64 8) | |
store i64 zeroinitializer, i64* %46 | |
; SelectorExpr | |
%473 = getelementptr inbounds %Type_Info_Union, %Type_Info_Union* %44, i64 0, i32 0 | |
%474 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %473, align 8 | |
%475 = bitcast i64* %47 to %..rawptr | |
%476 = call %..rawptr @__mem_zero(%..rawptr %475, i64 8) | |
store i64 zeroinitializer, i64* %47 | |
%477 = extractvalue {%Type_Info**, i64} %474, 1 | |
store i64 %477, i64* %47 | |
%478 = bitcast i64* %48 to %..rawptr | |
%479 = call %..rawptr @__mem_zero(%..rawptr %478, i64 8) | |
store i64 zeroinitializer, i64* %48 | |
store i64 -1, i64* %48 | |
br label %for.index.loop-87 | |
for.index.loop-87: | |
%480 = load i64, i64* %48, align 8 | |
%481 = add i64 %480, 1 | |
store i64 %481, i64* %48 | |
%482 = load i64, i64* %47, align 8 | |
%483 = icmp slt i64 %481, %482 | |
br i1 %483, label %for.index.body-88, label %for.index.done-91 | |
for.index.body-88: | |
%484 = load i64, i64* %48, align 8 | |
%485 = extractvalue {%Type_Info**, i64} %474, 0 | |
%486 = getelementptr inbounds %Type_Info*, %Type_Info** %485, i64 %484 | |
%487 = load %Type_Info*, %Type_Info** %486, align 8 | |
store %Type_Info* %487, %Type_Info** %45 | |
store i64 %484, i64* %46 | |
; IfStmt | |
%488 = load i64, i64* %46, align 8 | |
%489 = icmp sgt i64 %488, 0 | |
%490 = zext i1 %489 to i8 | |
%491 = trunc i8 %490 to i1 | |
br i1 %491, label %if.then-89, label %if.done-90 | |
if.then-89: | |
; SelectorExpr | |
%492 = load i64, i64* %0, align 8 | |
%493 = call {i64, i64} @os-3.write_string(i64 %492, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$35, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-90 | |
if.done-90: | |
%494 = load i64, i64* %0, align 8 | |
%495 = load %Type_Info*, %Type_Info** %45, align 8 | |
call void @__print_type(i64 %494, %Type_Info* %495, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-87 | |
for.index.done-91: | |
; SelectorExpr | |
%496 = load i64, i64* %0, align 8 | |
%497 = call {i64, i64} @os-3.write_string(i64 %496, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$36, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-92: | |
%498 = icmp eq i8 %70, 19 | |
br i1 %498, label %typeswitch.body-100, label %typeswitch.next-99 | |
typeswitch.body-93: | |
%499 = bitcast %..rawptr %71 to %Type_Info_Enum* | |
%500 = load %Type_Info_Enum, %Type_Info_Enum* %499, align 8 | |
store %Type_Info_Enum %500, %Type_Info_Enum* %49 | |
; SelectorExpr | |
%501 = load i64, i64* %0, align 8 | |
%502 = call {i64, i64} @os-3.write_string(i64 %501, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$37, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr) | |
%503 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%504 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 0 | |
%505 = load %Type_Info*, %Type_Info** %504, align 8 | |
call void @__print_type(i64 %503, %Type_Info* %505, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%506 = load i64, i64* %0, align 8 | |
%507 = call {i64, i64} @os-3.write_string(i64 %506, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$38, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; name | |
%508 = bitcast %..string* %50 to %..rawptr | |
%509 = call %..rawptr @__mem_zero(%..rawptr %508, i64 16) | |
store %..string zeroinitializer, %..string* %50 | |
; i | |
%510 = bitcast i64* %51 to %..rawptr | |
%511 = call %..rawptr @__mem_zero(%..rawptr %510, i64 8) | |
store i64 zeroinitializer, i64* %51 | |
; SelectorExpr | |
%512 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 1 | |
%513 = load {%..string*, i64}, {%..string*, i64}* %512, align 8 | |
%514 = bitcast i64* %52 to %..rawptr | |
%515 = call %..rawptr @__mem_zero(%..rawptr %514, i64 8) | |
store i64 zeroinitializer, i64* %52 | |
%516 = extractvalue {%..string*, i64} %513, 1 | |
store i64 %516, i64* %52 | |
%517 = bitcast i64* %53 to %..rawptr | |
%518 = call %..rawptr @__mem_zero(%..rawptr %517, i64 8) | |
store i64 zeroinitializer, i64* %53 | |
store i64 -1, i64* %53 | |
br label %for.index.loop-94 | |
for.index.loop-94: | |
%519 = load i64, i64* %53, align 8 | |
%520 = add i64 %519, 1 | |
store i64 %520, i64* %53 | |
%521 = load i64, i64* %52, align 8 | |
%522 = icmp slt i64 %520, %521 | |
br i1 %522, label %for.index.body-95, label %for.index.done-98 | |
for.index.body-95: | |
%523 = load i64, i64* %53, align 8 | |
%524 = extractvalue {%..string*, i64} %513, 0 | |
%525 = getelementptr inbounds %..string, %..string* %524, i64 %523 | |
%526 = load %..string, %..string* %525, align 8 | |
store %..string %526, %..string* %50 | |
store i64 %523, i64* %51 | |
; IfStmt | |
%527 = load i64, i64* %51, align 8 | |
%528 = icmp sgt i64 %527, 0 | |
%529 = zext i1 %528 to i8 | |
%530 = trunc i8 %529 to i1 | |
br i1 %530, label %if.then-96, label %if.done-97 | |
if.then-96: | |
; SelectorExpr | |
%531 = load i64, i64* %0, align 8 | |
%532 = call {i64, i64} @os-3.write_string(i64 %531, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$39, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-97 | |
if.done-97: | |
; SelectorExpr | |
%533 = load i64, i64* %0, align 8 | |
%534 = load %..string, %..string* %50, align 8 | |
%535 = call {i64, i64} @os-3.write_string(i64 %533, %..string %534, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-94 | |
for.index.done-98: | |
; SelectorExpr | |
%536 = load i64, i64* %0, align 8 | |
%537 = call {i64, i64} @os-3.write_string(i64 %536, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$3a, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.next-99: | |
br label %typeswitch.done-108 | |
typeswitch.body-100: | |
%538 = bitcast %..rawptr %71 to %Type_Info_Bit_Field* | |
%539 = load %Type_Info_Bit_Field, %Type_Info_Bit_Field* %538, align 8 | |
store %Type_Info_Bit_Field %539, %Type_Info_Bit_Field* %54 | |
; SelectorExpr | |
%540 = load i64, i64* %0, align 8 | |
%541 = call {i64, i64} @os-3.write_string(i64 %540, %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$3b, i64 0, i32 0), i64 10}, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%542 = load %Type_Info*, %Type_Info** %1, align 8 | |
%543 = getelementptr inbounds %Type_Info, %Type_Info* %542, i64 0 | |
%544 = getelementptr inbounds %Type_Info, %Type_Info* %543, i64 0, i32 1 | |
%545 = load i64, i64* %544, align 8 | |
%546 = icmp ne i64 %545, 1 | |
%547 = zext i1 %546 to i8 | |
%548 = trunc i8 %547 to i1 | |
br i1 %548, label %if.then-101, label %if.done-102 | |
if.then-101: | |
; SelectorExpr | |
%549 = load i64, i64* %0, align 8 | |
%550 = call {i64, i64} @os-3.write_string(i64 %549, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$3c, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
%551 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
%552 = load %Type_Info*, %Type_Info** %1, align 8 | |
%553 = getelementptr inbounds %Type_Info, %Type_Info* %552, i64 0 | |
%554 = getelementptr inbounds %Type_Info, %Type_Info* %553, i64 0, i32 1 | |
%555 = load i64, i64* %554, align 8 | |
%556 = bitcast i64 %555 to i64 | |
call void @__print_u64(i64 %551, i64 %556, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%557 = load i64, i64* %0, align 8 | |
%558 = call {i64, i64} @os-3.write_byte(i64 %557, i8 32, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-102 | |
if.done-102: | |
; SelectorExpr | |
%559 = load i64, i64* %0, align 8 | |
%560 = call {i64, i64} @os-3.write_string(i64 %559, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$3d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; name | |
%561 = bitcast %..string* %55 to %..rawptr | |
%562 = call %..rawptr @__mem_zero(%..rawptr %561, i64 16) | |
store %..string zeroinitializer, %..string* %55 | |
; i | |
%563 = bitcast i64* %56 to %..rawptr | |
%564 = call %..rawptr @__mem_zero(%..rawptr %563, i64 8) | |
store i64 zeroinitializer, i64* %56 | |
; SelectorExpr | |
%565 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 0 | |
%566 = load {%..string*, i64}, {%..string*, i64}* %565, align 8 | |
%567 = bitcast i64* %57 to %..rawptr | |
%568 = call %..rawptr @__mem_zero(%..rawptr %567, i64 8) | |
store i64 zeroinitializer, i64* %57 | |
%569 = extractvalue {%..string*, i64} %566, 1 | |
store i64 %569, i64* %57 | |
%570 = bitcast i64* %58 to %..rawptr | |
%571 = call %..rawptr @__mem_zero(%..rawptr %570, i64 8) | |
store i64 zeroinitializer, i64* %58 | |
store i64 -1, i64* %58 | |
br label %for.index.loop-103 | |
for.index.loop-103: | |
%572 = load i64, i64* %58, align 8 | |
%573 = add i64 %572, 1 | |
store i64 %573, i64* %58 | |
%574 = load i64, i64* %57, align 8 | |
%575 = icmp slt i64 %573, %574 | |
br i1 %575, label %for.index.body-104, label %for.index.done-107 | |
for.index.body-104: | |
%576 = load i64, i64* %58, align 8 | |
%577 = extractvalue {%..string*, i64} %566, 0 | |
%578 = getelementptr inbounds %..string, %..string* %577, i64 %576 | |
%579 = load %..string, %..string* %578, align 8 | |
store %..string %579, %..string* %55 | |
store i64 %576, i64* %56 | |
; IfStmt | |
%580 = load i64, i64* %56, align 8 | |
%581 = icmp sgt i64 %580, 0 | |
%582 = zext i1 %581 to i8 | |
%583 = trunc i8 %582 to i1 | |
br i1 %583, label %if.then-105, label %if.done-106 | |
if.then-105: | |
; SelectorExpr | |
%584 = load i64, i64* %0, align 8 | |
%585 = call {i64, i64} @os-3.write_string(i64 %584, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$3e, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-106 | |
if.done-106: | |
; SelectorExpr | |
%586 = load i64, i64* %0, align 8 | |
%587 = load %..string, %..string* %55, align 8 | |
%588 = call {i64, i64} @os-3.write_string(i64 %586, %..string %587, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%589 = load i64, i64* %0, align 8 | |
%590 = call {i64, i64} @os-3.write_string(i64 %589, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$3f, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%591 = load i64, i64* %0, align 8 | |
; IndexExpr | |
; SelectorExpr | |
%592 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 1 | |
%593 = load {i32*, i64}, {i32*, i64}* %592, align 8 | |
%594 = extractvalue {i32*, i64} %593, 0 | |
%595 = load i64, i64* %56, align 8 | |
%596 = extractvalue {i32*, i64} %593, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$40, i64 0, i32 0), i64 51}, i64 788, i64 34, i64 %595, i64 %596) | |
%597 = getelementptr inbounds i32, i32* %594, i64 %595 | |
%598 = load i32, i32* %597, align 4 | |
%599 = sext i32 %598 to i64 | |
call void @__print_u64(i64 %591, i64 %599, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-103 | |
for.index.done-107: | |
; SelectorExpr | |
%600 = load i64, i64* %0, align 8 | |
%601 = call {i64, i64} @os-3.write_string(i64 %600, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$41, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-108 | |
typeswitch.done-108: | |
ret void | |
} | |
define i8 @assert(i1 %condition, %..string %message, %Source_Code_Location* %loc) #0 { | |
decls-0: | |
%0 = alloca i8, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca %Context, align 16 | |
%4 = bitcast %Context* %3 to %..rawptr | |
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 72) | |
store %Context zeroinitializer, %Context* %3 | |
%6 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %6, %Context* %3 | |
%7 = getelementptr inbounds %Context, %Context* %3, i64 0, i32 0 | |
%8 = call %Allocator @default_allocator(%Context* noalias nonnull %3) | |
store %Allocator %8, %Allocator* %7 | |
%9 = alloca %Source_Code_Location, align 16 | |
%10 = zext i1 %condition to i8 | |
store i8 %10, i8* %0 | |
store %..string %message, %..string* %1 | |
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; IfStmt | |
%12 = load i8, i8* %0, align 1 | |
%13 = trunc i8 %12 to i1 | |
br i1 %13, label %if.done-4, label %if.then-1 | |
if.then-1: | |
; fd | |
; SelectorExpr | |
%14 = load i64, i64* @os_windows-6.stderr, align 8 | |
store i64 %14, i64* %2 | |
%15 = load i64, i64* %2, align 8 | |
%16 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%17 = bitcast %Source_Code_Location* %9 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %9 | |
store %Source_Code_Location %16, %Source_Code_Location* %9 | |
call void @__print_caller_location(i64 %15, %Source_Code_Location* %9, %Context* noalias nonnull %3) | |
; SelectorExpr | |
%19 = load i64, i64* %2, align 8 | |
%20 = call {i64, i64} @os-3.write_string(i64 %19, %..string {i8* getelementptr inbounds ([19 x i8], [19 x i8]* @__str$42, i64 0, i32 0), i64 18}, %Context* noalias nonnull %3) | |
; IfStmt | |
%21 = load %..string, %..string* %1, align 8 | |
%22 = extractvalue %..string %21, 1 | |
%23 = icmp sgt i64 %22, 0 | |
%24 = zext i1 %23 to i8 | |
%25 = trunc i8 %24 to i1 | |
br i1 %25, label %if.then-2, label %if.done-3 | |
if.then-2: | |
; SelectorExpr | |
%26 = load i64, i64* %2, align 8 | |
%27 = call {i64, i64} @os-3.write_string(i64 %26, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$43, i64 0, i32 0), i64 2}, %Context* noalias nonnull %3) | |
; SelectorExpr | |
%28 = load i64, i64* %2, align 8 | |
%29 = load %..string, %..string* %1, align 8 | |
%30 = call {i64, i64} @os-3.write_string(i64 %28, %..string %29, %Context* noalias nonnull %3) | |
br label %if.done-3 | |
if.done-3: | |
; SelectorExpr | |
%31 = load i64, i64* %2, align 8 | |
%32 = call {i64, i64} @os-3.write_byte(i64 %31, i8 10, %Context* noalias nonnull %3) | |
call ccc void @llvm.debugtrap() | |
br label %if.done-4 | |
if.done-4: | |
; ReturnStmt | |
%33 = load i8, i8* %0, align 1 | |
ret i8 %33 | |
} | |
define void @panic(%..string %message, %Source_Code_Location* %loc) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %Context, align 16 | |
%3 = bitcast %Context* %2 to %..rawptr | |
%4 = call %..rawptr @__mem_zero(%..rawptr %3, i64 72) | |
store %Context zeroinitializer, %Context* %2 | |
%5 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %5, %Context* %2 | |
%6 = getelementptr inbounds %Context, %Context* %2, i64 0, i32 0 | |
%7 = call %Allocator @default_allocator(%Context* noalias nonnull %2) | |
store %Allocator %7, %Allocator* %6 | |
%8 = alloca %Source_Code_Location, align 16 | |
store %..string %message, %..string* %0 | |
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; fd | |
; SelectorExpr | |
%10 = load i64, i64* @os_windows-6.stderr, align 8 | |
store i64 %10, i64* %1 | |
%11 = load i64, i64* %1, align 8 | |
%12 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%13 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %12, %Source_Code_Location* %8 | |
call void @__print_caller_location(i64 %11, %Source_Code_Location* %8, %Context* noalias nonnull %2) | |
; SelectorExpr | |
%15 = load i64, i64* %1, align 8 | |
%16 = call {i64, i64} @os-3.write_string(i64 %15, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$44, i64 0, i32 0), i64 6}, %Context* noalias nonnull %2) | |
; IfStmt | |
%17 = load %..string, %..string* %0, align 8 | |
%18 = extractvalue %..string %17, 1 | |
%19 = icmp sgt i64 %18, 0 | |
%20 = zext i1 %19 to i8 | |
%21 = trunc i8 %20 to i1 | |
br i1 %21, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; SelectorExpr | |
%22 = load i64, i64* %1, align 8 | |
%23 = call {i64, i64} @os-3.write_string(i64 %22, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$45, i64 0, i32 0), i64 2}, %Context* noalias nonnull %2) | |
; SelectorExpr | |
%24 = load i64, i64* %1, align 8 | |
%25 = load %..string, %..string* %0, align 8 | |
%26 = call {i64, i64} @os-3.write_string(i64 %24, %..string %25, %Context* noalias nonnull %2) | |
br label %if.done-2 | |
if.done-2: | |
; SelectorExpr | |
%27 = load i64, i64* %1, align 8 | |
%28 = call {i64, i64} @os-3.write_byte(i64 %27, i8 10, %Context* noalias nonnull %2) | |
call ccc void @llvm.debugtrap() | |
ret void | |
} | |
define i8 @__string_eq(%..string %a, %..string %b) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; SwitchStmt | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = extractvalue %..string %2, 1 | |
%4 = load %..string, %..string* %1, align 8 | |
%5 = extractvalue %..string %4, 1 | |
%6 = icmp ne i64 %3, %5 | |
%7 = zext i1 %6 to i8 | |
%8 = icmp eq i8 1, %7 | |
br i1 %8, label %switch.case.body-2, label %switch.case.next-1 | |
switch.case.next-1: | |
%9 = load %..string, %..string* %0, align 8 | |
%10 = extractvalue %..string %9, 1 | |
%11 = icmp eq i64 %10, 0 | |
%12 = zext i1 %11 to i8 | |
%13 = icmp eq i8 1, %12 | |
br i1 %13, label %switch.fall.body-4, label %switch.case.next-3 | |
switch.case.body-2: | |
; ReturnStmt | |
ret i8 0 | |
switch.case.next-3: | |
; IndexExpr | |
%14 = load %..string, %..string* %0, align 8 | |
%15 = extractvalue %..string %14, 0 | |
%16 = extractvalue %..string %14, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$46, i64 0, i32 0), i64 51}, i64 851, i64 10, i64 0, i64 %16) | |
%17 = getelementptr inbounds i8, i8* %15, i64 0 | |
%18 = getelementptr inbounds i8, i8* %17, i64 0 | |
; IndexExpr | |
%19 = load %..string, %..string* %1, align 8 | |
%20 = extractvalue %..string %19, 0 | |
%21 = extractvalue %..string %19, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$47, i64 0, i32 0), i64 51}, i64 851, i64 19, i64 0, i64 %21) | |
%22 = getelementptr inbounds i8, i8* %20, i64 0 | |
%23 = getelementptr inbounds i8, i8* %22, i64 0 | |
%24 = icmp eq i8* %18, %23 | |
%25 = zext i1 %24 to i8 | |
%26 = icmp eq i8 1, %25 | |
br i1 %26, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.fall.body-4: | |
; ReturnStmt | |
ret i8 1 | |
switch.case.next-5: | |
; ReturnStmt | |
%27 = load %..string, %..string* %0, align 8 | |
%28 = load %..string, %..string* %1, align 8 | |
%29 = call i64 @__string_cmp(%..string %27, %..string %28) | |
%30 = icmp eq i64 %29, 0 | |
%31 = zext i1 %30 to i8 | |
ret i8 %31 | |
switch.fall.body-6: | |
; ReturnStmt | |
ret i8 1 | |
} | |
define i64 @__string_cmp(%..string %a, %..string %b) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; ReturnStmt | |
; IndexExpr | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = extractvalue %..string %2, 0 | |
%4 = extractvalue %..string %2, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$48, i64 0, i32 0), i64 51}, i64 857, i64 26, i64 0, i64 %4) | |
%5 = getelementptr inbounds i8, i8* %3, i64 0 | |
%6 = getelementptr inbounds i8, i8* %5, i64 0 | |
; IndexExpr | |
%7 = load %..string, %..string* %1, align 8 | |
%8 = extractvalue %..string %7, 0 | |
%9 = extractvalue %..string %7, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$49, i64 0, i32 0), i64 51}, i64 857, i64 33, i64 0, i64 %9) | |
%10 = getelementptr inbounds i8, i8* %8, i64 0 | |
%11 = getelementptr inbounds i8, i8* %10, i64 0 | |
; min | |
%12 = load %..string, %..string* %1, align 8 | |
%13 = extractvalue %..string %12, 1 | |
%14 = load %..string, %..string* %0, align 8 | |
%15 = extractvalue %..string %14, 1 | |
%16 = icmp slt i64 %15, %13 | |
%17 = select i1 %16, i64 %15, i64 %13 | |
%18 = call i64 @__mem_compare(i8* %6, i8* %11, i64 %17) | |
ret i64 %18 | |
} | |
define i8 @__string_ne(%..string %a, %..string %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; ReturnStmt | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = load %..string, %..string* %1, align 8 | |
%4 = call i8 @__string_eq(%..string %2, %..string %3) | |
%5 = xor i8 -1, %4 | |
ret i8 %5 | |
} | |
define i8 @__string_lt(%..string %a, %..string %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; ReturnStmt | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = load %..string, %..string* %1, align 8 | |
%4 = call i64 @__string_cmp(%..string %2, %..string %3) | |
%5 = icmp slt i64 %4, 0 | |
%6 = zext i1 %5 to i8 | |
ret i8 %6 | |
} | |
define i8 @__string_gt(%..string %a, %..string %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; ReturnStmt | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = load %..string, %..string* %1, align 8 | |
%4 = call i64 @__string_cmp(%..string %2, %..string %3) | |
%5 = icmp sgt i64 %4, 0 | |
%6 = zext i1 %5 to i8 | |
ret i8 %6 | |
} | |
define i8 @__string_le(%..string %a, %..string %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; ReturnStmt | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = load %..string, %..string* %1, align 8 | |
%4 = call i64 @__string_cmp(%..string %2, %..string %3) | |
%5 = icmp sle i64 %4, 0 | |
%6 = zext i1 %5 to i8 | |
ret i8 %6 | |
} | |
define i8 @__string_ge(%..string %a, %..string %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %..string, align 16 | |
store %..string %a, %..string* %0 | |
store %..string %b, %..string* %1 | |
; ReturnStmt | |
%2 = load %..string, %..string* %0, align 8 | |
%3 = load %..string, %..string* %1, align 8 | |
%4 = call i64 @__string_cmp(%..string %2, %..string %3) | |
%5 = icmp sge i64 %4, 0 | |
%6 = zext i1 %5 to i8 | |
ret i8 %6 | |
} | |
define i8 @__complex64_eq(%..complex64 %a, %..complex64 %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..complex64, align 16 | |
%1 = alloca %..complex64, align 16 | |
store %..complex64 %a, %..complex64* %0 | |
store %..complex64 %b, %..complex64* %1 | |
; ReturnStmt | |
; real | |
%2 = load %..complex64, %..complex64* %0, align 4 | |
%3 = extractvalue %..complex64 %2, 0 | |
; real | |
%4 = load %..complex64, %..complex64* %1, align 4 | |
%5 = extractvalue %..complex64 %4, 0 | |
%6 = fcmp oeq float %3, %5 | |
%7 = zext i1 %6 to i8 | |
; real | |
%8 = load %..complex64, %..complex64* %0, align 4 | |
%9 = extractvalue %..complex64 %8, 0 | |
; real | |
%10 = load %..complex64, %..complex64* %1, align 4 | |
%11 = extractvalue %..complex64 %10, 0 | |
%12 = fcmp oeq float %9, %11 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %logical.cmp.rhs-1, label %logical.cmp.done-2 | |
logical.cmp.rhs-1: | |
; imag | |
%15 = load %..complex64, %..complex64* %0, align 4 | |
%16 = extractvalue %..complex64 %15, 1 | |
; imag | |
%17 = load %..complex64, %..complex64* %1, align 4 | |
%18 = extractvalue %..complex64 %17, 1 | |
%19 = fcmp oeq float %16, %18 | |
%20 = zext i1 %19 to i8 | |
br label %logical.cmp.done-2 | |
logical.cmp.done-2: | |
%21 = phi i8 [ 0, %decls-0 ], [ %20, %logical.cmp.rhs-1 ] | |
ret i8 %21 | |
} | |
define i8 @__complex64_ne(%..complex64 %a, %..complex64 %b) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..complex64, align 16 | |
%1 = alloca %..complex64, align 16 | |
store %..complex64 %a, %..complex64* %0 | |
store %..complex64 %b, %..complex64* %1 | |
; ReturnStmt | |
; real | |
%2 = load %..complex64, %..complex64* %0, align 4 | |
%3 = extractvalue %..complex64 %2, 0 | |
; real | |
%4 = load %..complex64, %..complex64* %1, align 4 | |
%5 = extractvalue %..complex64 %4, 0 | |
%6 = fcmp one float %3, %5 | |
%7 = zext i1 %6 to i8 | |
; real | |
%8 = load %..complex64, %..complex64* %0, align 4 | |
%9 = extractvalue %..complex64 %8, 0 | |
; real | |
%10 = load %..complex64, %..complex64* %1, align 4 | |
%11 = extractvalue %..complex64 %10, 0 | |
%12 = fcmp one float %9, %11 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %logical.cmp.done-2, label %logical.cmp.rhs-1 | |
logical.cmp.rhs-1: | |
; imag | |
%15 = load %..complex64, %..complex64* %0, align 4 | |
%16 = extractvalue %..complex64 %15, 1 | |
; imag | |
%17 = load %..complex64, %..complex64* %1, align 4 | |
%18 = extractvalue %..complex64 %17, 1 | |
%19 = fcmp one float %16, %18 | |
%20 = zext i1 %19 to i8 | |
br label %logical.cmp.done-2 | |
logical.cmp.done-2: | |
%21 = phi i8 [ 1, %decls-0 ], [ %20, %logical.cmp.rhs-1 ] | |
ret i8 %21 | |
} | |
define i8 @__complex128_eq(%..complex128* %a, %..complex128* %b) alwaysinline #1 { | |
decls-0: | |
%0 = load %..complex128, %..complex128* %a, align 8 | |
%1 = load %..complex128, %..complex128* %b, align 8 | |
; ReturnStmt | |
; real | |
%2 = load %..complex128, %..complex128* %a, align 8 | |
%3 = extractvalue %..complex128 %2, 0 | |
; real | |
%4 = load %..complex128, %..complex128* %b, align 8 | |
%5 = extractvalue %..complex128 %4, 0 | |
%6 = fcmp oeq double %3, %5 | |
%7 = zext i1 %6 to i8 | |
; real | |
%8 = load %..complex128, %..complex128* %a, align 8 | |
%9 = extractvalue %..complex128 %8, 0 | |
; real | |
%10 = load %..complex128, %..complex128* %b, align 8 | |
%11 = extractvalue %..complex128 %10, 0 | |
%12 = fcmp oeq double %9, %11 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %logical.cmp.rhs-1, label %logical.cmp.done-2 | |
logical.cmp.rhs-1: | |
; imag | |
%15 = load %..complex128, %..complex128* %a, align 8 | |
%16 = extractvalue %..complex128 %15, 1 | |
; imag | |
%17 = load %..complex128, %..complex128* %b, align 8 | |
%18 = extractvalue %..complex128 %17, 1 | |
%19 = fcmp oeq double %16, %18 | |
%20 = zext i1 %19 to i8 | |
br label %logical.cmp.done-2 | |
logical.cmp.done-2: | |
%21 = phi i8 [ 0, %decls-0 ], [ %20, %logical.cmp.rhs-1 ] | |
ret i8 %21 | |
} | |
define i8 @__complex128_ne(%..complex128* %a, %..complex128* %b) alwaysinline #1 { | |
decls-0: | |
%0 = load %..complex128, %..complex128* %a, align 8 | |
%1 = load %..complex128, %..complex128* %b, align 8 | |
; ReturnStmt | |
; real | |
%2 = load %..complex128, %..complex128* %a, align 8 | |
%3 = extractvalue %..complex128 %2, 0 | |
; real | |
%4 = load %..complex128, %..complex128* %b, align 8 | |
%5 = extractvalue %..complex128 %4, 0 | |
%6 = fcmp one double %3, %5 | |
%7 = zext i1 %6 to i8 | |
; real | |
%8 = load %..complex128, %..complex128* %a, align 8 | |
%9 = extractvalue %..complex128 %8, 0 | |
; real | |
%10 = load %..complex128, %..complex128* %b, align 8 | |
%11 = extractvalue %..complex128 %10, 0 | |
%12 = fcmp one double %9, %11 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %logical.cmp.done-2, label %logical.cmp.rhs-1 | |
logical.cmp.rhs-1: | |
; imag | |
%15 = load %..complex128, %..complex128* %a, align 8 | |
%16 = extractvalue %..complex128 %15, 1 | |
; imag | |
%17 = load %..complex128, %..complex128* %b, align 8 | |
%18 = extractvalue %..complex128 %17, 1 | |
%19 = fcmp one double %16, %18 | |
%20 = zext i1 %19 to i8 | |
br label %logical.cmp.done-2 | |
logical.cmp.done-2: | |
%21 = phi i8 [ 1, %decls-0 ], [ %20, %logical.cmp.rhs-1 ] | |
ret i8 %21 | |
} | |
define void @__bounds_check_error(%..string %file, i64 %line, i64 %column, i64 %index, i64 %count) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca %Context, align 16 | |
%8 = bitcast %Context* %7 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 72) | |
store %Context zeroinitializer, %Context* %7 | |
%10 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %10, %Context* %7 | |
%11 = getelementptr inbounds %Context, %Context* %7, i64 0, i32 0 | |
%12 = call %Allocator @default_allocator(%Context* noalias nonnull %7) | |
store %Allocator %12, %Allocator* %11 | |
%13 = alloca %Source_Code_Location, align 16 | |
store %..string %file, %..string* %0 | |
store i64 %line, i64* %1 | |
store i64 %column, i64* %2 | |
store i64 %index, i64* %3 | |
store i64 %count, i64* %4 | |
; IfStmt | |
%14 = load i64, i64* %3, align 8 | |
%15 = icmp sle i64 0, %14 | |
%16 = zext i1 %15 to i8 | |
%17 = trunc i8 %16 to i1 | |
br i1 %17, label %cmp.and-1, label %if.done-3 | |
cmp.and-1: | |
%18 = load i64, i64* %3, align 8 | |
%19 = load i64, i64* %4, align 8 | |
%20 = icmp slt i64 %18, %19 | |
%21 = zext i1 %20 to i8 | |
%22 = trunc i8 %21 to i1 | |
br i1 %22, label %if.then-2, label %if.done-3 | |
if.then-2: | |
; ReturnStmt | |
ret void | |
if.done-3: | |
; fd | |
; SelectorExpr | |
%23 = load i64, i64* @os_windows-6.stderr, align 8 | |
store i64 %23, i64* %5 | |
%24 = load i64, i64* %5, align 8 | |
; CompoundLit | |
%25 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %6 | |
%27 = load %..string, %..string* %0, align 8 | |
%28 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %6, i64 0, i32 0 | |
store %..string %27, %..string* %28 | |
%29 = load i64, i64* %1, align 8 | |
%30 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %6, i64 0, i32 1 | |
store i64 %29, i64* %30 | |
%31 = load i64, i64* %2, align 8 | |
%32 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %6, i64 0, i32 2 | |
store i64 %31, i64* %32 | |
%33 = load %Source_Code_Location, %Source_Code_Location* %6, align 8 | |
%34 = bitcast %Source_Code_Location* %13 to %..rawptr | |
%35 = call %..rawptr @__mem_zero(%..rawptr %34, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %13 | |
store %Source_Code_Location %33, %Source_Code_Location* %13 | |
call void @__print_caller_location(i64 %24, %Source_Code_Location* %13, %Context* noalias nonnull %7) | |
; SelectorExpr | |
%36 = load i64, i64* %5, align 8 | |
%37 = call {i64, i64} @os-3.write_string(i64 %36, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$4a, i64 0, i32 0), i64 7}, %Context* noalias nonnull %7) | |
%38 = load i64, i64* %5, align 8 | |
%39 = load i64, i64* %3, align 8 | |
%40 = bitcast i64 %39 to i64 | |
call void @__print_i64(i64 %38, i64 %40, %Context* noalias nonnull %7) | |
; SelectorExpr | |
%41 = load i64, i64* %5, align 8 | |
%42 = call {i64, i64} @os-3.write_string(i64 %41, %..string {i8* getelementptr inbounds ([28 x i8], [28 x i8]* @__str$4b, i64 0, i32 0), i64 27}, %Context* noalias nonnull %7) | |
%43 = load i64, i64* %5, align 8 | |
%44 = load i64, i64* %4, align 8 | |
%45 = bitcast i64 %44 to i64 | |
call void @__print_i64(i64 %43, i64 %45, %Context* noalias nonnull %7) | |
; SelectorExpr | |
%46 = load i64, i64* %5, align 8 | |
%47 = call {i64, i64} @os-3.write_byte(i64 %46, i8 10, %Context* noalias nonnull %7) | |
call ccc void @llvm.debugtrap() | |
ret void | |
} | |
define void @__slice_expr_error(%..string %file, i64 %line, i64 %column, i64 %lo, i64 %hi, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca %Source_Code_Location, align 16 | |
%8 = alloca %Context, align 16 | |
%9 = bitcast %Context* %8 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 72) | |
store %Context zeroinitializer, %Context* %8 | |
%11 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %11, %Context* %8 | |
%12 = getelementptr inbounds %Context, %Context* %8, i64 0, i32 0 | |
%13 = call %Allocator @default_allocator(%Context* noalias nonnull %8) | |
store %Allocator %13, %Allocator* %12 | |
%14 = alloca %Source_Code_Location, align 16 | |
store %..string %file, %..string* %0 | |
store i64 %line, i64* %1 | |
store i64 %column, i64* %2 | |
store i64 %lo, i64* %3 | |
store i64 %hi, i64* %4 | |
store i64 %len, i64* %5 | |
; IfStmt | |
%15 = load i64, i64* %3, align 8 | |
%16 = icmp sle i64 0, %15 | |
%17 = zext i1 %16 to i8 | |
%18 = trunc i8 %17 to i1 | |
br i1 %18, label %cmp.and-1, label %if.done-4 | |
cmp.and-1: | |
%19 = load i64, i64* %3, align 8 | |
%20 = load i64, i64* %4, align 8 | |
%21 = icmp sle i64 %19, %20 | |
%22 = zext i1 %21 to i8 | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %cmp.and-2, label %if.done-4 | |
cmp.and-2: | |
%24 = load i64, i64* %4, align 8 | |
%25 = load i64, i64* %5, align 8 | |
%26 = icmp sle i64 %24, %25 | |
%27 = zext i1 %26 to i8 | |
%28 = trunc i8 %27 to i1 | |
br i1 %28, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
ret void | |
if.done-4: | |
; fd | |
; SelectorExpr | |
%29 = load i64, i64* @os_windows-6.stderr, align 8 | |
store i64 %29, i64* %6 | |
%30 = load i64, i64* %6, align 8 | |
; CompoundLit | |
%31 = bitcast %Source_Code_Location* %7 to %..rawptr | |
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7 | |
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %7 | |
%33 = load %..string, %..string* %0, align 8 | |
%34 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 0 | |
store %..string %33, %..string* %34 | |
%35 = load i64, i64* %1, align 8 | |
%36 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 1 | |
store i64 %35, i64* %36 | |
%37 = load i64, i64* %2, align 8 | |
%38 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 2 | |
store i64 %37, i64* %38 | |
%39 = load %Source_Code_Location, %Source_Code_Location* %7, align 8 | |
%40 = bitcast %Source_Code_Location* %14 to %..rawptr | |
%41 = call %..rawptr @__mem_zero(%..rawptr %40, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14 | |
store %Source_Code_Location %39, %Source_Code_Location* %14 | |
call void @__print_caller_location(i64 %30, %Source_Code_Location* %14, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%42 = load i64, i64* %6, align 8 | |
%43 = call {i64, i64} @os-3.write_string(i64 %42, %..string {i8* getelementptr inbounds ([25 x i8], [25 x i8]* @__str$4c, i64 0, i32 0), i64 24}, %Context* noalias nonnull %8) | |
%44 = load i64, i64* %6, align 8 | |
%45 = load i64, i64* %3, align 8 | |
%46 = bitcast i64 %45 to i64 | |
call void @__print_i64(i64 %44, i64 %46, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%47 = load i64, i64* %6, align 8 | |
%48 = call {i64, i64} @os-3.write_string(i64 %47, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$4d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8) | |
%49 = load i64, i64* %6, align 8 | |
%50 = load i64, i64* %4, align 8 | |
%51 = bitcast i64 %50 to i64 | |
call void @__print_i64(i64 %49, i64 %51, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%52 = load i64, i64* %6, align 8 | |
%53 = call {i64, i64} @os-3.write_string(i64 %52, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$4e, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8) | |
%54 = load i64, i64* %6, align 8 | |
%55 = load i64, i64* %5, align 8 | |
%56 = bitcast i64 %55 to i64 | |
call void @__print_i64(i64 %54, i64 %56, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%57 = load i64, i64* %6, align 8 | |
%58 = call {i64, i64} @os-3.write_byte(i64 %57, i8 10, %Context* noalias nonnull %8) | |
call ccc void @llvm.debugtrap() | |
ret void | |
} | |
define void @__dynamic_array_expr_error(%..string %file, i64 %line, i64 %column, i64 %low, i64 %high, i64 %max) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca %Source_Code_Location, align 16 | |
%8 = alloca %Context, align 16 | |
%9 = bitcast %Context* %8 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 72) | |
store %Context zeroinitializer, %Context* %8 | |
%11 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %11, %Context* %8 | |
%12 = getelementptr inbounds %Context, %Context* %8, i64 0, i32 0 | |
%13 = call %Allocator @default_allocator(%Context* noalias nonnull %8) | |
store %Allocator %13, %Allocator* %12 | |
%14 = alloca %Source_Code_Location, align 16 | |
store %..string %file, %..string* %0 | |
store i64 %line, i64* %1 | |
store i64 %column, i64* %2 | |
store i64 %low, i64* %3 | |
store i64 %high, i64* %4 | |
store i64 %max, i64* %5 | |
; IfStmt | |
%15 = load i64, i64* %3, align 8 | |
%16 = icmp sle i64 0, %15 | |
%17 = zext i1 %16 to i8 | |
%18 = trunc i8 %17 to i1 | |
br i1 %18, label %cmp.and-1, label %if.done-4 | |
cmp.and-1: | |
%19 = load i64, i64* %3, align 8 | |
%20 = load i64, i64* %4, align 8 | |
%21 = icmp sle i64 %19, %20 | |
%22 = zext i1 %21 to i8 | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %cmp.and-2, label %if.done-4 | |
cmp.and-2: | |
%24 = load i64, i64* %4, align 8 | |
%25 = load i64, i64* %5, align 8 | |
%26 = icmp sle i64 %24, %25 | |
%27 = zext i1 %26 to i8 | |
%28 = trunc i8 %27 to i1 | |
br i1 %28, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
ret void | |
if.done-4: | |
; fd | |
; SelectorExpr | |
%29 = load i64, i64* @os_windows-6.stderr, align 8 | |
store i64 %29, i64* %6 | |
%30 = load i64, i64* %6, align 8 | |
; CompoundLit | |
%31 = bitcast %Source_Code_Location* %7 to %..rawptr | |
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7 | |
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %7 | |
%33 = load %..string, %..string* %0, align 8 | |
%34 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 0 | |
store %..string %33, %..string* %34 | |
%35 = load i64, i64* %1, align 8 | |
%36 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 1 | |
store i64 %35, i64* %36 | |
%37 = load i64, i64* %2, align 8 | |
%38 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 2 | |
store i64 %37, i64* %38 | |
%39 = load %Source_Code_Location, %Source_Code_Location* %7, align 8 | |
%40 = bitcast %Source_Code_Location* %14 to %..rawptr | |
%41 = call %..rawptr @__mem_zero(%..rawptr %40, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14 | |
store %Source_Code_Location %39, %Source_Code_Location* %14 | |
call void @__print_caller_location(i64 %30, %Source_Code_Location* %14, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%42 = load i64, i64* %6, align 8 | |
%43 = call {i64, i64} @os-3.write_string(i64 %42, %..string {i8* getelementptr inbounds ([32 x i8], [32 x i8]* @__str$4f, i64 0, i32 0), i64 31}, %Context* noalias nonnull %8) | |
%44 = load i64, i64* %6, align 8 | |
%45 = load i64, i64* %3, align 8 | |
%46 = bitcast i64 %45 to i64 | |
call void @__print_i64(i64 %44, i64 %46, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%47 = load i64, i64* %6, align 8 | |
%48 = call {i64, i64} @os-3.write_string(i64 %47, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$50, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8) | |
%49 = load i64, i64* %6, align 8 | |
%50 = load i64, i64* %4, align 8 | |
%51 = bitcast i64 %50 to i64 | |
call void @__print_i64(i64 %49, i64 %51, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%52 = load i64, i64* %6, align 8 | |
%53 = call {i64, i64} @os-3.write_string(i64 %52, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$51, i64 0, i32 0), i64 2}, %Context* noalias nonnull %8) | |
%54 = load i64, i64* %6, align 8 | |
%55 = load i64, i64* %5, align 8 | |
%56 = bitcast i64 %55 to i64 | |
call void @__print_i64(i64 %54, i64 %56, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%57 = load i64, i64* %6, align 8 | |
%58 = call {i64, i64} @os-3.write_byte(i64 %57, i8 10, %Context* noalias nonnull %8) | |
call ccc void @llvm.debugtrap() | |
ret void | |
} | |
define void @__type_assertion_check(i1 %ok, %..string %file, i64 %line, i64 %column, %Type_Info* %from, %Type_Info* %to) #0 { | |
decls-0: | |
%0 = alloca i8, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %Type_Info*, align 16 | |
%5 = alloca %Type_Info*, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca %Source_Code_Location, align 16 | |
%8 = alloca %Context, align 16 | |
%9 = bitcast %Context* %8 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 72) | |
store %Context zeroinitializer, %Context* %8 | |
%11 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %11, %Context* %8 | |
%12 = getelementptr inbounds %Context, %Context* %8, i64 0, i32 0 | |
%13 = call %Allocator @default_allocator(%Context* noalias nonnull %8) | |
store %Allocator %13, %Allocator* %12 | |
%14 = alloca %Source_Code_Location, align 16 | |
%15 = zext i1 %ok to i8 | |
store i8 %15, i8* %0 | |
store %..string %file, %..string* %1 | |
store i64 %line, i64* %2 | |
store i64 %column, i64* %3 | |
store %Type_Info* %from, %Type_Info** %4 | |
store %Type_Info* %to, %Type_Info** %5 | |
; IfStmt | |
%16 = load i8, i8* %0, align 1 | |
%17 = trunc i8 %16 to i1 | |
br i1 %17, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; fd | |
; SelectorExpr | |
%18 = load i64, i64* @os_windows-6.stderr, align 8 | |
store i64 %18, i64* %6 | |
%19 = load i64, i64* %6, align 8 | |
; CompoundLit | |
%20 = bitcast %Source_Code_Location* %7 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7 | |
store %Source_Code_Location {%..string zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, %..string zeroinitializer}, %Source_Code_Location* %7 | |
%22 = load %..string, %..string* %1, align 8 | |
%23 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 0 | |
store %..string %22, %..string* %23 | |
%24 = load i64, i64* %2, align 8 | |
%25 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 1 | |
store i64 %24, i64* %25 | |
%26 = load i64, i64* %3, align 8 | |
%27 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %7, i64 0, i32 2 | |
store i64 %26, i64* %27 | |
%28 = load %Source_Code_Location, %Source_Code_Location* %7, align 8 | |
%29 = bitcast %Source_Code_Location* %14 to %..rawptr | |
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14 | |
store %Source_Code_Location %28, %Source_Code_Location* %14 | |
call void @__print_caller_location(i64 %19, %Source_Code_Location* %14, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%31 = load i64, i64* %6, align 8 | |
%32 = call {i64, i64} @os-3.write_string(i64 %31, %..string {i8* getelementptr inbounds ([29 x i8], [29 x i8]* @__str$52, i64 0, i32 0), i64 28}, %Context* noalias nonnull %8) | |
%33 = load i64, i64* %6, align 8 | |
%34 = load %Type_Info*, %Type_Info** %4, align 8 | |
call void @__print_type(i64 %33, %Type_Info* %34, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%35 = load i64, i64* %6, align 8 | |
%36 = call {i64, i64} @os-3.write_string(i64 %35, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$53, i64 0, i32 0), i64 4}, %Context* noalias nonnull %8) | |
%37 = load i64, i64* %6, align 8 | |
%38 = load %Type_Info*, %Type_Info** %5, align 8 | |
call void @__print_type(i64 %37, %Type_Info* %38, %Context* noalias nonnull %8) | |
; SelectorExpr | |
%39 = load i64, i64* %6, align 8 | |
%40 = call {i64, i64} @os-3.write_byte(i64 %39, i8 10, %Context* noalias nonnull %8) | |
call ccc void @llvm.debugtrap() | |
ret void | |
} | |
define {i32, i64} @__string_decode_rune(%..string %s) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca %Context, align 16 | |
%2 = bitcast %Context* %1 to %..rawptr | |
%3 = call %..rawptr @__mem_zero(%..rawptr %2, i64 72) | |
store %Context zeroinitializer, %Context* %1 | |
%4 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %4, %Context* %1 | |
%5 = getelementptr inbounds %Context, %Context* %1, i64 0, i32 0 | |
%6 = call %Allocator @default_allocator(%Context* noalias nonnull %1) | |
store %Allocator %6, %Allocator* %5 | |
%7 = alloca {i32, i64}, align 16 | |
store %..string %s, %..string* %0 | |
; ReturnStmt | |
; SelectorExpr | |
%8 = load %..string, %..string* %0, align 8 | |
%9 = call {i32, i64} @utf8-4.decode_rune_from_string(%..string %8, %Context* noalias nonnull %1) | |
%10 = extractvalue {i32, i64} %9, 0 | |
%11 = extractvalue {i32, i64} %9, 1 | |
%12 = bitcast {i32, i64}* %7 to %..rawptr | |
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %7 | |
%14 = getelementptr inbounds {i32, i64}, {i32, i64}* %7, i64 0, i32 0 | |
store i32 %10, i32* %14 | |
%15 = getelementptr inbounds {i32, i64}, {i32, i64}* %7, i64 0, i32 1 | |
store i64 %11, i64* %15 | |
%16 = load {i32, i64}, {i32, i64}* %7, align 8 | |
ret {i32, i64} %16 | |
} | |
define void @__bounds_check_error_loc(%Source_Code_Location* %loc, i64 %index, i64 %count) alwaysinline #1 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
store i64 %index, i64* %0 | |
store i64 %count, i64* %1 | |
%3 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 0 | |
%4 = load %..string, %..string* %3, align 8 | |
%5 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 1 | |
%6 = load i64, i64* %5, align 8 | |
%7 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 2 | |
%8 = load i64, i64* %7, align 8 | |
%9 = load i64, i64* %0, align 8 | |
%10 = load i64, i64* %1, align 8 | |
call void @__bounds_check_error(%..string %4, i64 %6, i64 %8, i64 %9, i64 %10) | |
ret void | |
} | |
define void @__slice_expr_error_loc(%Source_Code_Location* %loc, i64 %lo, i64 %hi, i64 %len) alwaysinline #1 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
store i64 %lo, i64* %0 | |
store i64 %hi, i64* %1 | |
store i64 %len, i64* %2 | |
%4 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 0 | |
%5 = load %..string, %..string* %4, align 8 | |
%6 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 1 | |
%7 = load i64, i64* %6, align 8 | |
%8 = getelementptr inbounds %Source_Code_Location, %Source_Code_Location* %loc, i64 0, i32 2 | |
%9 = load i64, i64* %8, align 8 | |
%10 = load i64, i64* %0, align 8 | |
%11 = load i64, i64* %1, align 8 | |
%12 = load i64, i64* %2, align 8 | |
call void @__slice_expr_error(%..string %5, i64 %7, i64 %9, i64 %10, i64 %11, i64 %12) | |
ret void | |
} | |
define %..rawptr @__mem_set(%..rawptr %data, i32 %value, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i32, align 16 | |
%2 = alloca i64, align 16 | |
store %..rawptr %data, %..rawptr* %0 | |
store i32 %value, i32* %1 | |
store i64 %len, i64* %2 | |
; IfStmt | |
%3 = load %..rawptr, %..rawptr* %0, align 8 | |
%4 = icmp eq %..rawptr %3, zeroinitializer | |
%5 = zext i1 %4 to i8 | |
%6 = trunc i8 %5 to i1 | |
br i1 %6, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
if.done-2: | |
%7 = load %..rawptr, %..rawptr* %0, align 8 | |
%8 = load i32, i32* %1, align 4 | |
%9 = trunc i32 %8 to i8 | |
%10 = load i64, i64* %2, align 8 | |
call ccc void @llvm.memset.p0i8.i64(%..rawptr %7, i8 %9, i64 %10, i32 1, i1 false) | |
; ReturnStmt | |
%11 = load %..rawptr, %..rawptr* %0, align 8 | |
ret %..rawptr %11 | |
} | |
define %..rawptr @__mem_zero(%..rawptr %data, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
store %..rawptr %data, %..rawptr* %0 | |
store i64 %len, i64* %1 | |
; ReturnStmt | |
%2 = load %..rawptr, %..rawptr* %0, align 8 | |
%3 = load i64, i64* %1, align 8 | |
%4 = call %..rawptr @__mem_set(%..rawptr %2, i32 0, i64 %3) | |
ret %..rawptr %4 | |
} | |
define %..rawptr @__mem_copy(%..rawptr %dst, %..rawptr %src, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca %..rawptr, align 16 | |
%2 = alloca i64, align 16 | |
store %..rawptr %dst, %..rawptr* %0 | |
store %..rawptr %src, %..rawptr* %1 | |
store i64 %len, i64* %2 | |
; IfStmt | |
%3 = load %..rawptr, %..rawptr* %1, align 8 | |
%4 = icmp eq %..rawptr %3, zeroinitializer | |
%5 = zext i1 %4 to i8 | |
%6 = trunc i8 %5 to i1 | |
br i1 %6, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%7 = load %..rawptr, %..rawptr* %0, align 8 | |
ret %..rawptr %7 | |
if.done-2: | |
%8 = load %..rawptr, %..rawptr* %0, align 8 | |
%9 = load %..rawptr, %..rawptr* %1, align 8 | |
%10 = load i64, i64* %2, align 8 | |
call ccc void @llvm.memmove.p0i8.p0i8.i64(%..rawptr %8, %..rawptr %9, i64 %10, i32 1, i1 false) | |
; ReturnStmt | |
%11 = load %..rawptr, %..rawptr* %0, align 8 | |
ret %..rawptr %11 | |
} | |
define %..rawptr @__mem_copy_non_overlapping(%..rawptr %dst, %..rawptr %src, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca %..rawptr, align 16 | |
%2 = alloca i64, align 16 | |
store %..rawptr %dst, %..rawptr* %0 | |
store %..rawptr %src, %..rawptr* %1 | |
store i64 %len, i64* %2 | |
; IfStmt | |
%3 = load %..rawptr, %..rawptr* %1, align 8 | |
%4 = icmp eq %..rawptr %3, zeroinitializer | |
%5 = zext i1 %4 to i8 | |
%6 = trunc i8 %5 to i1 | |
br i1 %6, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%7 = load %..rawptr, %..rawptr* %0, align 8 | |
ret %..rawptr %7 | |
if.done-2: | |
%8 = load %..rawptr, %..rawptr* %0, align 8 | |
%9 = load %..rawptr, %..rawptr* %1, align 8 | |
%10 = load i64, i64* %2, align 8 | |
call ccc void @llvm.memcpy.p0i8.p0i8.i64(%..rawptr %8, %..rawptr %9, i64 %10, i32 1, i1 false) | |
; ReturnStmt | |
%11 = load %..rawptr, %..rawptr* %0, align 8 | |
ret %..rawptr %11 | |
} | |
define i64 @__mem_compare(i8* %a, i8* %b, i64 %n) #0 { | |
decls-0: | |
%0 = alloca i8*, align 16 | |
%1 = alloca i8*, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
store i8* %a, i8** %0 | |
store i8* %b, i8** %1 | |
store i64 %n, i64* %2 | |
; RangeStmt | |
; i | |
%6 = bitcast i64* %3 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%8 = bitcast i64* %4 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 0, i64* %4 | |
%10 = bitcast i64* %5 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 8) | |
store i64 zeroinitializer, i64* %5 | |
store i64 0, i64* %5 | |
br label %for.interval.loop-1 | |
for.interval.loop-1: | |
%12 = load i64, i64* %2, align 8 | |
%13 = load i64, i64* %4, align 8 | |
%14 = icmp slt i64 %13, %12 | |
br i1 %14, label %for.interval.body-2, label %for.interval.done-7 | |
for.interval.body-2: | |
%15 = load i64, i64* %4, align 8 | |
%16 = load i64, i64* %5, align 8 | |
%17 = load i64, i64* %4, align 8 | |
%18 = add i64 %17, 1 | |
store i64 %18, i64* %4 | |
%19 = load i64, i64* %5, align 8 | |
%20 = add i64 %19, 1 | |
store i64 %20, i64* %5 | |
store i64 %15, i64* %3 | |
; SwitchStmt | |
%21 = load i8*, i8** %0, align 8 | |
%22 = load i64, i64* %3, align 8 | |
%23 = getelementptr inbounds i8, i8* %21, i64 %22 | |
%24 = getelementptr inbounds i8, i8* %23, i64 0 | |
%25 = load i8, i8* %24, align 1 | |
%26 = load i8*, i8** %1, align 8 | |
%27 = load i64, i64* %3, align 8 | |
%28 = getelementptr inbounds i8, i8* %26, i64 %27 | |
%29 = getelementptr inbounds i8, i8* %28, i64 0 | |
%30 = load i8, i8* %29, align 1 | |
%31 = icmp ult i8 %25, %30 | |
%32 = zext i1 %31 to i8 | |
%33 = icmp eq i8 1, %32 | |
br i1 %33, label %switch.case.body-4, label %switch.case.next-3 | |
switch.case.next-3: | |
%34 = load i8*, i8** %0, align 8 | |
%35 = load i64, i64* %3, align 8 | |
%36 = getelementptr inbounds i8, i8* %34, i64 %35 | |
%37 = getelementptr inbounds i8, i8* %36, i64 0 | |
%38 = load i8, i8* %37, align 1 | |
%39 = load i8*, i8** %1, align 8 | |
%40 = load i64, i64* %3, align 8 | |
%41 = getelementptr inbounds i8, i8* %39, i64 %40 | |
%42 = getelementptr inbounds i8, i8* %41, i64 0 | |
%43 = load i8, i8* %42, align 1 | |
%44 = icmp ugt i8 %38, %43 | |
%45 = zext i1 %44 to i8 | |
%46 = icmp eq i8 1, %45 | |
br i1 %46, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.case.body-4: | |
; ReturnStmt | |
ret i64 -1 | |
switch.case.next-5: | |
br label %for.interval.loop-1 | |
switch.fall.body-6: | |
; ReturnStmt | |
ret i64 1 | |
for.interval.done-7: | |
; ReturnStmt | |
ret i64 0 | |
} | |
define float @__abs_f32(float %x) alwaysinline #1 { | |
decls-0: | |
%0 = alloca float, align 16 | |
store float %x, float* %0 | |
; ReturnStmt | |
%1 = load float, float* %0, align 4 | |
%2 = call ccc float @llvm.fabs.f32(float %1) | |
ret float %2 | |
} | |
define double @__abs_f64(double %x) alwaysinline #1 { | |
decls-0: | |
%0 = alloca double, align 16 | |
store double %x, double* %0 | |
; ReturnStmt | |
%1 = load double, double* %0, align 8 | |
%2 = call ccc double @llvm.fabs.f64(double %1) | |
ret double %2 | |
} | |
define float @__min_f32(float %a, float %b, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca float, align 16 | |
%1 = alloca float, align 16 | |
store float %a, float* %0 | |
store float %b, float* %1 | |
; ReturnStmt | |
%2 = load float, float* %0, align 4 | |
%3 = load float, float* %1, align 4 | |
%4 = call ccc float @llvm.minnum.f32(float %2, float %3) | |
ret float %4 | |
} | |
define double @__min_f64(double %a, double %b, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca double, align 16 | |
%1 = alloca double, align 16 | |
store double %a, double* %0 | |
store double %b, double* %1 | |
; ReturnStmt | |
%2 = load double, double* %0, align 8 | |
%3 = load double, double* %1, align 8 | |
%4 = call ccc double @llvm.minnum.f64(double %2, double %3) | |
ret double %4 | |
} | |
define float @__max_f32(float %a, float %b, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca float, align 16 | |
%1 = alloca float, align 16 | |
store float %a, float* %0 | |
store float %b, float* %1 | |
; ReturnStmt | |
%2 = load float, float* %0, align 4 | |
%3 = load float, float* %1, align 4 | |
%4 = call ccc float @llvm.maxnum.f32(float %2, float %3) | |
ret float %4 | |
} | |
define double @__max_f64(double %a, double %b, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca double, align 16 | |
%1 = alloca double, align 16 | |
store double %a, double* %0 | |
store double %b, double* %1 | |
; ReturnStmt | |
%2 = load double, double* %0, align 8 | |
%3 = load double, double* %1, align 8 | |
%4 = call ccc double @llvm.maxnum.f64(double %2, double %3) | |
ret double %4 | |
} | |
define float @__abs_complex64(%..complex64 %x) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..complex64, align 16 | |
%1 = alloca float, align 16 | |
%2 = alloca float, align 16 | |
store %..complex64 %x, %..complex64* %0 | |
; r | |
; i | |
; real | |
%3 = load %..complex64, %..complex64* %0, align 4 | |
%4 = extractvalue %..complex64 %3, 0 | |
; imag | |
%5 = load %..complex64, %..complex64* %0, align 4 | |
%6 = extractvalue %..complex64 %5, 1 | |
store float %4, float* %1 | |
store float %6, float* %2 | |
; ReturnStmt | |
%7 = load float, float* %1, align 4 | |
%8 = load float, float* %1, align 4 | |
%9 = fmul float %7, %8 | |
%10 = load float, float* %2, align 4 | |
%11 = load float, float* %2, align 4 | |
%12 = fmul float %10, %11 | |
%13 = fadd float %9, %12 | |
%14 = call ccc float @llvm.sqrt.f32(float %13) | |
ret float %14 | |
} | |
define double @__abs_complex128(%..complex128* %x) alwaysinline #1 { | |
decls-0: | |
%0 = alloca double, align 16 | |
%1 = alloca double, align 16 | |
%2 = load %..complex128, %..complex128* %x, align 8 | |
; r | |
; i | |
; real | |
%3 = load %..complex128, %..complex128* %x, align 8 | |
%4 = extractvalue %..complex128 %3, 0 | |
; imag | |
%5 = load %..complex128, %..complex128* %x, align 8 | |
%6 = extractvalue %..complex128 %5, 1 | |
store double %4, double* %0 | |
store double %6, double* %1 | |
; ReturnStmt | |
%7 = load double, double* %0, align 8 | |
%8 = load double, double* %0, align 8 | |
%9 = fmul double %7, %8 | |
%10 = load double, double* %1, align 8 | |
%11 = load double, double* %1, align 8 | |
%12 = fmul double %10, %11 | |
%13 = fadd double %9, %12 | |
%14 = call ccc double @llvm.sqrt.f64(double %13) | |
ret double %14 | |
} | |
define void @__dynamic_array_make(%..rawptr %array_, i64 %elem_size, i64 %elem_align, i64 %len, i64 %cap, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca %raw-5.Dynamic_Array*, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %array_, %..rawptr* %0 | |
store i64 %elem_size, i64* %1 | |
store i64 %elem_align, i64* %2 | |
store i64 %len, i64* %3 | |
store i64 %cap, i64* %4 | |
%8 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; array | |
%9 = load %..rawptr, %..rawptr* %0, align 8 | |
%10 = bitcast %..rawptr %9 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %10, %raw-5.Dynamic_Array** %5 | |
; AssignStmt | |
; SelectorExpr | |
%11 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%12 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %11, i64 0 | |
%13 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %12, i64 0, i32 3 | |
; SelectorExpr | |
%14 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0 | |
%15 = load %Allocator, %Allocator* %14, align 8 | |
store %Allocator %15, %Allocator* %13 | |
; SelectorExpr | |
; SelectorExpr | |
%16 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%17 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %16, i64 0 | |
%18 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %17, i64 0, i32 3 | |
%19 = getelementptr inbounds %Allocator, %Allocator* %18, i64 0, i32 0 | |
%20 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %19, align 8 | |
%21 = icmp ne %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %20, zeroinitializer | |
%22 = zext i1 %21 to i8 | |
%23 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$54, i64 0, i32 0), i64 51}, i64 1068, i64 2, %..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$55, i64 0, i32 0), i64 20}) | |
%24 = trunc i8 %22 to i1 | |
%25 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %23, %Source_Code_Location* %6 | |
%27 = call i8 @assert(i1 %24, %..string zeroinitializer, %Source_Code_Location* %6) | |
; IfStmt | |
%28 = load i64, i64* %4, align 8 | |
%29 = icmp sgt i64 %28, 0 | |
%30 = zext i1 %29 to i8 | |
%31 = trunc i8 %30 to i1 | |
br i1 %31, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%32 = load %..rawptr, %..rawptr* %0, align 8 | |
%33 = load i64, i64* %1, align 8 | |
%34 = load i64, i64* %2, align 8 | |
%35 = load i64, i64* %4, align 8 | |
%36 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%37 = bitcast %Source_Code_Location* %7 to %..rawptr | |
%38 = call %..rawptr @__mem_zero(%..rawptr %37, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7 | |
store %Source_Code_Location %36, %Source_Code_Location* %7 | |
%39 = call i8 @__dynamic_array_reserve(%..rawptr %32, i64 %33, i64 %34, i64 %35, %Source_Code_Location* %7, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
%40 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%41 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %40, i64 0 | |
%42 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %41, i64 0, i32 1 | |
%43 = load i64, i64* %3, align 8 | |
store i64 %43, i64* %42 | |
br label %if.done-2 | |
if.done-2: | |
ret void | |
} | |
define i8 @__dynamic_array_reserve(%..rawptr %array_, i64 %elem_size, i64 %elem_align, i64 %cap, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %raw-5.Dynamic_Array*, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca i64, align 16 | |
%8 = alloca %Allocator, align 16 | |
%9 = alloca %..rawptr, align 16 | |
%10 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %array_, %..rawptr* %0 | |
store i64 %elem_size, i64* %1 | |
store i64 %elem_align, i64* %2 | |
store i64 %cap, i64* %3 | |
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; array | |
%12 = load %..rawptr, %..rawptr* %0, align 8 | |
%13 = bitcast %..rawptr %12 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %13, %raw-5.Dynamic_Array** %4 | |
; IfStmt | |
%14 = load i64, i64* %3, align 8 | |
; SelectorExpr | |
%15 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%16 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %15, i64 0 | |
%17 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %16, i64 0, i32 2 | |
%18 = load i64, i64* %17, align 8 | |
%19 = icmp sle i64 %14, %18 | |
%20 = zext i1 %19 to i8 | |
%21 = trunc i8 %20 to i1 | |
br i1 %21, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret i8 1 | |
if.done-2: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%22 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%23 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %22, i64 0 | |
%24 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %23, i64 0, i32 3 | |
%25 = getelementptr inbounds %Allocator, %Allocator* %24, i64 0, i32 0 | |
%26 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %25, align 8 | |
%27 = icmp eq %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %26, zeroinitializer | |
%28 = zext i1 %27 to i8 | |
%29 = trunc i8 %28 to i1 | |
br i1 %29, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; AssignStmt | |
; SelectorExpr | |
%30 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%31 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %30, i64 0 | |
%32 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %31, i64 0, i32 3 | |
; SelectorExpr | |
%33 = getelementptr inbounds %Context, %Context* %__.context_ptr, i64 0, i32 0 | |
%34 = load %Allocator, %Allocator* %33, align 8 | |
store %Allocator %34, %Allocator* %32 | |
br label %if.done-4 | |
if.done-4: | |
; SelectorExpr | |
; SelectorExpr | |
%35 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%36 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %35, i64 0 | |
%37 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %36, i64 0, i32 3 | |
%38 = getelementptr inbounds %Allocator, %Allocator* %37, i64 0, i32 0 | |
%39 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %38, align 8 | |
%40 = icmp ne %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)* %39, zeroinitializer | |
%41 = zext i1 %40 to i8 | |
%42 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$56, i64 0, i32 0), i64 51}, i64 1084, i64 2, %..string {i8* getelementptr inbounds ([24 x i8], [24 x i8]* @__str$57, i64 0, i32 0), i64 23}) | |
%43 = trunc i8 %41 to i1 | |
%44 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %42, %Source_Code_Location* %5 | |
%46 = call i8 @assert(i1 %43, %..string zeroinitializer, %Source_Code_Location* %5) | |
; old_size | |
; SelectorExpr | |
%47 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%48 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %47, i64 0 | |
%49 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %48, i64 0, i32 2 | |
%50 = load i64, i64* %49, align 8 | |
%51 = load i64, i64* %1, align 8 | |
%52 = mul i64 %50, %51 | |
store i64 %52, i64* %6 | |
; new_size | |
%53 = load i64, i64* %3, align 8 | |
%54 = load i64, i64* %1, align 8 | |
%55 = mul i64 %53, %54 | |
store i64 %55, i64* %7 | |
; allocator | |
; SelectorExpr | |
%56 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%57 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %56, i64 0 | |
%58 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %57, i64 0, i32 3 | |
%59 = load %Allocator, %Allocator* %58, align 8 | |
store %Allocator %59, %Allocator* %8 | |
; new_data | |
; SelectorExpr | |
%60 = getelementptr inbounds %Allocator, %Allocator* %8, i64 0, i32 0 | |
%61 = load %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)*, %..rawptr (%..rawptr, i8, i64, i64, %..rawptr, i64, i64, %Source_Code_Location*, %Context*)** %60, align 8 | |
; SelectorExpr | |
%62 = getelementptr inbounds %Allocator, %Allocator* %8, i64 0, i32 1 | |
%63 = load %..rawptr, %..rawptr* %62, align 8 | |
%64 = load i64, i64* %7, align 8 | |
%65 = load i64, i64* %2, align 8 | |
; SelectorExpr | |
%66 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%67 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %66, i64 0 | |
%68 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %67, i64 0, i32 0 | |
%69 = load %..rawptr, %..rawptr* %68, align 8 | |
%70 = load i64, i64* %6, align 8 | |
%71 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%72 = bitcast %Source_Code_Location* %10 to %..rawptr | |
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %10 | |
store %Source_Code_Location %71, %Source_Code_Location* %10 | |
%74 = call %..rawptr %61(%..rawptr %63, i8 3, i64 %64, i64 %65, %..rawptr %69, i64 %70, i64 0, %Source_Code_Location* %10, %Context* noalias nonnull %__.context_ptr) | |
store %..rawptr %74, %..rawptr* %9 | |
; IfStmt | |
%75 = load %..rawptr, %..rawptr* %9, align 8 | |
%76 = icmp eq %..rawptr %75, zeroinitializer | |
%77 = zext i1 %76 to i8 | |
%78 = trunc i8 %77 to i1 | |
br i1 %78, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; ReturnStmt | |
ret i8 0 | |
if.done-6: | |
; AssignStmt | |
; SelectorExpr | |
%79 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%80 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %79, i64 0 | |
%81 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %80, i64 0, i32 0 | |
%82 = load %..rawptr, %..rawptr* %9, align 8 | |
store %..rawptr %82, %..rawptr* %81 | |
; AssignStmt | |
; SelectorExpr | |
%83 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%84 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %83, i64 0 | |
%85 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %84, i64 0, i32 2 | |
%86 = load i64, i64* %3, align 8 | |
store i64 %86, i64* %85 | |
; ReturnStmt | |
ret i8 1 | |
} | |
define i8 @__dynamic_array_resize(%..rawptr %array_, i64 %elem_size, i64 %elem_align, i64 %len, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca %raw-5.Dynamic_Array*, align 16 | |
%5 = alloca i8, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %array_, %..rawptr* %0 | |
store i64 %elem_size, i64* %1 | |
store i64 %elem_align, i64* %2 | |
store i64 %len, i64* %3 | |
%7 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; array | |
%8 = load %..rawptr, %..rawptr* %0, align 8 | |
%9 = bitcast %..rawptr %8 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %9, %raw-5.Dynamic_Array** %4 | |
; ok | |
%10 = load %..rawptr, %..rawptr* %0, align 8 | |
%11 = load i64, i64* %1, align 8 | |
%12 = load i64, i64* %2, align 8 | |
%13 = load i64, i64* %3, align 8 | |
%14 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%15 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %14, %Source_Code_Location* %6 | |
%17 = call i8 @__dynamic_array_reserve(%..rawptr %10, i64 %11, i64 %12, i64 %13, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr) | |
store i8 %17, i8* %5 | |
; IfStmt | |
%18 = load i8, i8* %5, align 1 | |
%19 = trunc i8 %18 to i1 | |
br i1 %19, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; AssignStmt | |
; SelectorExpr | |
%20 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%21 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %20, i64 0 | |
%22 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %21, i64 0, i32 1 | |
%23 = load i64, i64* %3, align 8 | |
store i64 %23, i64* %22 | |
br label %if.done-2 | |
if.done-2: | |
; ReturnStmt | |
%24 = load i8, i8* %5, align 1 | |
ret i8 %24 | |
} | |
define i64 @__dynamic_array_append(%..rawptr %array_, i64 %elem_size, i64 %elem_align, %..rawptr %items, i64 %item_count, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca %..rawptr, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca %raw-5.Dynamic_Array*, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca i64, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
%9 = alloca i8*, align 16 | |
%10 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %array_, %..rawptr* %0 | |
store i64 %elem_size, i64* %1 | |
store i64 %elem_align, i64* %2 | |
store %..rawptr %items, %..rawptr* %3 | |
store i64 %item_count, i64* %4 | |
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; array | |
%12 = load %..rawptr, %..rawptr* %0, align 8 | |
%13 = bitcast %..rawptr %12 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %13, %raw-5.Dynamic_Array** %5 | |
; IfStmt | |
%14 = load %..rawptr, %..rawptr* %3, align 8 | |
%15 = icmp eq %..rawptr %14, zeroinitializer | |
%16 = zext i1 %15 to i8 | |
%17 = trunc i8 %16 to i1 | |
br i1 %17, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret i64 0 | |
if.done-2: | |
; IfStmt | |
%18 = load i64, i64* %4, align 8 | |
%19 = icmp sle i64 %18, 0 | |
%20 = zext i1 %19 to i8 | |
%21 = trunc i8 %20 to i1 | |
br i1 %21, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
ret i64 0 | |
if.done-4: | |
; ok | |
store i8 1, i8* %6 | |
; IfStmt | |
; SelectorExpr | |
%22 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%23 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %22, i64 0 | |
%24 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %23, i64 0, i32 2 | |
%25 = load i64, i64* %24, align 8 | |
; SelectorExpr | |
%26 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%27 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %26, i64 0 | |
%28 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %27, i64 0, i32 1 | |
%29 = load i64, i64* %28, align 8 | |
%30 = load i64, i64* %4, align 8 | |
%31 = add i64 %29, %30 | |
%32 = icmp sle i64 %25, %31 | |
%33 = zext i1 %32 to i8 | |
%34 = trunc i8 %33 to i1 | |
br i1 %34, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; cap | |
; SelectorExpr | |
%35 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%36 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %35, i64 0 | |
%37 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %36, i64 0, i32 2 | |
%38 = load i64, i64* %37, align 8 | |
%39 = mul i64 2, %38 | |
; max | |
%40 = load i64, i64* %4, align 8 | |
%41 = icmp sgt i64 8, %40 | |
%42 = select i1 %41, i64 8, i64 %40 | |
%43 = add i64 %39, %42 | |
store i64 %43, i64* %7 | |
; AssignStmt | |
%44 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%45 = load i64, i64* %1, align 8 | |
%46 = load i64, i64* %2, align 8 | |
%47 = load i64, i64* %7, align 8 | |
%48 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%49 = bitcast %raw-5.Dynamic_Array* %44 to %..rawptr | |
%50 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %48, %Source_Code_Location* %8 | |
%52 = call i8 @__dynamic_array_reserve(%..rawptr %49, i64 %45, i64 %46, i64 %47, %Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr) | |
store i8 %52, i8* %6 | |
br label %if.done-6 | |
if.done-6: | |
; IfStmt | |
%53 = load i8, i8* %6, align 1 | |
%54 = trunc i8 %53 to i1 | |
br i1 %54, label %if.done-8, label %if.then-7 | |
if.then-7: | |
; ReturnStmt | |
; SelectorExpr | |
%55 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%56 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %55, i64 0 | |
%57 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %56, i64 0, i32 1 | |
%58 = load i64, i64* %57, align 8 | |
ret i64 %58 | |
if.done-8: | |
; data | |
; SelectorExpr | |
%59 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%60 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %59, i64 0 | |
%61 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %60, i64 0, i32 0 | |
%62 = load %..rawptr, %..rawptr* %61, align 8 | |
%63 = bitcast %..rawptr %62 to i8* | |
store i8* %63, i8** %9 | |
%64 = load i8*, i8** %9, align 8 | |
%65 = icmp ne i8* %64, zeroinitializer | |
%66 = zext i1 %65 to i8 | |
%67 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$58, i64 0, i32 0), i64 51}, i64 1124, i64 2, %..string {i8* getelementptr inbounds ([23 x i8], [23 x i8]* @__str$59, i64 0, i32 0), i64 22}) | |
%68 = trunc i8 %66 to i1 | |
%69 = bitcast %Source_Code_Location* %10 to %..rawptr | |
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %10 | |
store %Source_Code_Location %67, %Source_Code_Location* %10 | |
%71 = call i8 @assert(i1 %68, %..string zeroinitializer, %Source_Code_Location* %10) | |
%72 = load i8*, i8** %9, align 8 | |
%73 = load i64, i64* %1, align 8 | |
; SelectorExpr | |
%74 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%75 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %74, i64 0 | |
%76 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %75, i64 0, i32 1 | |
%77 = load i64, i64* %76, align 8 | |
%78 = mul i64 %73, %77 | |
%79 = getelementptr inbounds i8, i8* %72, i64 %78 | |
%80 = load %..rawptr, %..rawptr* %3, align 8 | |
%81 = load i64, i64* %1, align 8 | |
%82 = load i64, i64* %4, align 8 | |
%83 = mul i64 %81, %82 | |
%84 = bitcast i8* %79 to %..rawptr | |
%85 = call %..rawptr @__mem_copy(%..rawptr %84, %..rawptr %80, i64 %83) | |
; AssignStmt | |
; SelectorExpr | |
%86 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%87 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %86, i64 0 | |
%88 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %87, i64 0, i32 1 | |
%89 = load i64, i64* %4, align 8 | |
%90 = load i64, i64* %88, align 8 | |
%91 = add i64 %90, %89 | |
store i64 %91, i64* %88 | |
; ReturnStmt | |
; SelectorExpr | |
%92 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %5, align 8 | |
%93 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %92, i64 0 | |
%94 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %93, i64 0, i32 1 | |
%95 = load i64, i64* %94, align 8 | |
ret i64 %95 | |
} | |
define i64 @__dynamic_array_append_nothing(%..rawptr %array_, i64 %elem_size, i64 %elem_align, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca %raw-5.Dynamic_Array*, align 16 | |
%4 = alloca i8, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca i8*, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %array_, %..rawptr* %0 | |
store i64 %elem_size, i64* %1 | |
store i64 %elem_align, i64* %2 | |
%9 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; array | |
%10 = load %..rawptr, %..rawptr* %0, align 8 | |
%11 = bitcast %..rawptr %10 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %11, %raw-5.Dynamic_Array** %3 | |
; ok | |
store i8 1, i8* %4 | |
; IfStmt | |
; SelectorExpr | |
%12 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%13 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %12, i64 0 | |
%14 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %13, i64 0, i32 2 | |
%15 = load i64, i64* %14, align 8 | |
; SelectorExpr | |
%16 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%17 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %16, i64 0 | |
%18 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %17, i64 0, i32 1 | |
%19 = load i64, i64* %18, align 8 | |
%20 = add i64 %19, 1 | |
%21 = icmp sle i64 %15, %20 | |
%22 = zext i1 %21 to i8 | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; cap | |
; SelectorExpr | |
%24 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%25 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %24, i64 0 | |
%26 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %25, i64 0, i32 2 | |
%27 = load i64, i64* %26, align 8 | |
%28 = mul i64 2, %27 | |
%29 = add i64 %28, 8 | |
store i64 %29, i64* %5 | |
; AssignStmt | |
%30 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%31 = load i64, i64* %1, align 8 | |
%32 = load i64, i64* %2, align 8 | |
%33 = load i64, i64* %5, align 8 | |
%34 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%35 = bitcast %raw-5.Dynamic_Array* %30 to %..rawptr | |
%36 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %34, %Source_Code_Location* %6 | |
%38 = call i8 @__dynamic_array_reserve(%..rawptr %35, i64 %31, i64 %32, i64 %33, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr) | |
store i8 %38, i8* %4 | |
br label %if.done-2 | |
if.done-2: | |
; IfStmt | |
%39 = load i8, i8* %4, align 1 | |
%40 = trunc i8 %39 to i1 | |
br i1 %40, label %if.done-4, label %if.then-3 | |
if.then-3: | |
; ReturnStmt | |
; SelectorExpr | |
%41 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%42 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %41, i64 0 | |
%43 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %42, i64 0, i32 1 | |
%44 = load i64, i64* %43, align 8 | |
ret i64 %44 | |
if.done-4: | |
; data | |
; SelectorExpr | |
%45 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%46 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %45, i64 0 | |
%47 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %46, i64 0, i32 0 | |
%48 = load %..rawptr, %..rawptr* %47, align 8 | |
%49 = bitcast %..rawptr %48 to i8* | |
store i8* %49, i8** %7 | |
%50 = load i8*, i8** %7, align 8 | |
%51 = icmp ne i8* %50, zeroinitializer | |
%52 = zext i1 %51 to i8 | |
%53 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5a, i64 0, i32 0), i64 51}, i64 1142, i64 2, %..string {i8* getelementptr inbounds ([31 x i8], [31 x i8]* @__str$5b, i64 0, i32 0), i64 30}) | |
%54 = trunc i8 %52 to i1 | |
%55 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%56 = call %..rawptr @__mem_zero(%..rawptr %55, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %53, %Source_Code_Location* %8 | |
%57 = call i8 @assert(i1 %54, %..string zeroinitializer, %Source_Code_Location* %8) | |
%58 = load i8*, i8** %7, align 8 | |
%59 = load i64, i64* %1, align 8 | |
; SelectorExpr | |
%60 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%61 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %60, i64 0 | |
%62 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %61, i64 0, i32 1 | |
%63 = load i64, i64* %62, align 8 | |
%64 = mul i64 %59, %63 | |
%65 = getelementptr inbounds i8, i8* %58, i64 %64 | |
%66 = load i64, i64* %1, align 8 | |
%67 = bitcast i8* %65 to %..rawptr | |
%68 = call %..rawptr @__mem_zero(%..rawptr %67, i64 %66) | |
; AssignStmt | |
; SelectorExpr | |
%69 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%70 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %69, i64 0 | |
%71 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %70, i64 0, i32 1 | |
%72 = load i64, i64* %71, align 8 | |
%73 = add i64 %72, 1 | |
store i64 %73, i64* %71 | |
; ReturnStmt | |
; SelectorExpr | |
%74 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%75 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %74, i64 0 | |
%76 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %75, i64 0, i32 1 | |
%77 = load i64, i64* %76, align 8 | |
ret i64 %77 | |
} | |
define i64 @__default_hash({i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64}, align 16 | |
%1 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
; ReturnStmt | |
%2 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%3 = bitcast {i8*, i64}* %0 to %..rawptr | |
%4 = call %..rawptr @__mem_zero(%..rawptr %3, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %0 | |
store {i8*, i64} %2, {i8*, i64}* %0 | |
%5 = call i64 @__default_hash.fnv64a-0({i8*, i64}* %0, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %5 | |
} | |
define i64 @__default_hash.fnv64a-0({i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
; h | |
store i64 -3750763034362895579, i64* %0 | |
; RangeStmt | |
; b | |
%5 = bitcast i8* %1 to %..rawptr | |
%6 = call %..rawptr @__mem_zero(%..rawptr %5, i64 1) | |
store i8 zeroinitializer, i8* %1 | |
%7 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%8 = bitcast i64* %2 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
%10 = extractvalue {i8*, i64} %7, 1 | |
store i64 %10, i64* %2 | |
%11 = bitcast i64* %3 to %..rawptr | |
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
store i64 -1, i64* %3 | |
br label %for.index.loop-1 | |
for.index.loop-1: | |
%13 = load i64, i64* %3, align 8 | |
%14 = add i64 %13, 1 | |
store i64 %14, i64* %3 | |
%15 = load i64, i64* %2, align 8 | |
%16 = icmp slt i64 %14, %15 | |
br i1 %16, label %for.index.body-2, label %for.index.done-3 | |
for.index.body-2: | |
%17 = load i64, i64* %3, align 8 | |
%18 = extractvalue {i8*, i64} %7, 0 | |
%19 = getelementptr inbounds i8, i8* %18, i64 %17 | |
%20 = load i8, i8* %19, align 1 | |
store i8 %20, i8* %1 | |
; AssignStmt | |
%21 = load i64, i64* %0, align 8 | |
%22 = load i8, i8* %1, align 1 | |
%23 = zext i8 %22 to i64 | |
%24 = xor i64 %21, %23 | |
%25 = mul i64 %24, 1099511628211 | |
store i64 %25, i64* %0 | |
br label %for.index.loop-1 | |
for.index.done-3: | |
; ReturnStmt | |
%26 = load i64, i64* %0, align 8 | |
ret i64 %26 | |
} | |
define i64 @__default_hash_string(%..string %s, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i8*, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
store %..string %s, %..string* %0 | |
; ReturnStmt | |
%4 = load %..string, %..string* %0, align 8 | |
%5 = extractvalue %..string %4, 0 | |
%6 = bitcast i8** %1 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8) | |
store i8* zeroinitializer, i8** %1 | |
store i8* %5, i8** %1 | |
%8 = extractvalue %..string %4, 1 | |
%9 = sub i64 %8, 0 | |
%10 = load i8*, i8** %1, align 8 | |
%11 = getelementptr inbounds i8, i8* %10, i64 0 | |
%12 = bitcast {i8*, i64}* %2 to %..rawptr | |
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
%14 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0 | |
store i8* %11, i8** %14 | |
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1 | |
store i64 %9, i64* %15 | |
%16 = load {i8*, i64}, {i8*, i64}* %2, align 8 | |
%17 = bitcast {i8*, i64}* %3 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
store {i8*, i64} %16, {i8*, i64}* %3 | |
%19 = call i64 @__default_hash({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %19 | |
} | |
define void @__dynamic_map_reserve(%__Map_Header* %header, i64 %cap, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
%3 = load %__Map_Header, %__Map_Header* %header, align 8 | |
store i64 %cap, i64* %0 | |
%4 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; SelectorExpr | |
%5 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%6 = load %raw-5.Map*, %raw-5.Map** %5, align 8 | |
%7 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %6, i64 0 | |
%8 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %7, i64 0, i32 0 | |
%9 = getelementptr inbounds {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %8, i64 0 | |
%10 = load i64, i64* %0, align 8 | |
%11 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%12 = bitcast {i64*, i64, i64, %Allocator}* %9 to %..rawptr | |
%13 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %11, %Source_Code_Location* %1 | |
%15 = call i8 @__dynamic_array_reserve(%..rawptr %12, i64 8, i64 8, i64 %10, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%16 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%17 = load %raw-5.Map*, %raw-5.Map** %16, align 8 | |
%18 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %17, i64 0 | |
%19 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %18, i64 0, i32 1 | |
%20 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %19, i64 0 | |
%21 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 2 | |
%22 = load i64, i64* %21, align 8 | |
%23 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 3 | |
%24 = load i64, i64* %23, align 8 | |
%25 = load i64, i64* %0, align 8 | |
%26 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%27 = bitcast %raw-5.Dynamic_Array* %20 to %..rawptr | |
%28 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%29 = call %..rawptr @__mem_zero(%..rawptr %28, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %26, %Source_Code_Location* %2 | |
%30 = call i8 @__dynamic_array_reserve(%..rawptr %27, i64 %22, i64 %24, i64 %25, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @__dynamic_map_rehash(%__Map_Header* %header, i64 %new_count, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %__Map_Header, align 16 | |
%2 = alloca %raw-5.Map, align 16 | |
%3 = alloca %raw-5.Dynamic_Array*, align 16 | |
%4 = alloca %raw-5.Dynamic_Array*, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca i64, align 16 | |
%8 = alloca i64, align 16 | |
%9 = alloca i64, align 16 | |
%10 = alloca i64, align 16 | |
%11 = alloca i64, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca %__Map_Header, align 16 | |
%14 = alloca %Source_Code_Location, align 16 | |
%15 = alloca %__Map_Entry_Header*, align 16 | |
%16 = alloca %__Map_Header, align 16 | |
%17 = alloca i8*, align 16 | |
%18 = alloca %__Map_Find_Result, align 16 | |
%19 = alloca %__Map_Header, align 16 | |
%20 = alloca %__Map_Key, align 16 | |
%21 = alloca i64, align 16 | |
%22 = alloca %__Map_Header, align 16 | |
%23 = alloca %__Map_Key, align 16 | |
%24 = alloca %Source_Code_Location, align 16 | |
%25 = alloca %__Map_Entry_Header*, align 16 | |
%26 = alloca %__Map_Header, align 16 | |
%27 = alloca %__Map_Entry_Header*, align 16 | |
%28 = alloca %__Map_Header, align 16 | |
%29 = alloca i8*, align 16 | |
%30 = alloca %__Map_Header, align 16 | |
%31 = alloca %__Map_Header, align 16 | |
%32 = alloca %Source_Code_Location, align 16 | |
%33 = alloca %Allocator, align 16 | |
%34 = alloca %Source_Code_Location, align 16 | |
%35 = alloca %Allocator, align 16 | |
%36 = alloca %Source_Code_Location, align 16 | |
%37 = load %__Map_Header, %__Map_Header* %header, align 8 | |
store i64 %new_count, i64* %0 | |
%38 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; new_header | |
%39 = load %__Map_Header, %__Map_Header* %header, align 8 | |
store %__Map_Header %39, %__Map_Header* %1 | |
; nm | |
%40 = bitcast %raw-5.Map* %2 to %..rawptr | |
%41 = call %..rawptr @__mem_zero(%..rawptr %40, i64 80) | |
store %raw-5.Map zeroinitializer, %raw-5.Map* %2 | |
; AssignStmt | |
; SelectorExpr | |
%42 = getelementptr inbounds %__Map_Header, %__Map_Header* %1, i64 0, i32 0 | |
%43 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0 | |
store %raw-5.Map* %43, %raw-5.Map** %42 | |
; header_hashes | |
; SelectorExpr | |
; SelectorExpr | |
%44 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%45 = load %raw-5.Map*, %raw-5.Map** %44, align 8 | |
%46 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %45, i64 0 | |
%47 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %46, i64 0, i32 0 | |
%48 = getelementptr inbounds {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %47, i64 0 | |
%49 = bitcast {i64*, i64, i64, %Allocator}* %48 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %49, %raw-5.Dynamic_Array** %3 | |
; nm_hashes | |
; SelectorExpr | |
%50 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0 | |
%51 = getelementptr inbounds {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %50, i64 0 | |
%52 = bitcast {i64*, i64, i64, %Allocator}* %51 to %raw-5.Dynamic_Array* | |
store %raw-5.Dynamic_Array* %52, %raw-5.Dynamic_Array** %4 | |
%53 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %4, align 8 | |
%54 = load i64, i64* %0, align 8 | |
%55 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%56 = bitcast %raw-5.Dynamic_Array* %53 to %..rawptr | |
%57 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %55, %Source_Code_Location* %5 | |
%59 = call i8 @__dynamic_array_resize(%..rawptr %56, i64 8, i64 8, i64 %54, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%60 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 1 | |
%61 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %60, i64 0 | |
%62 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 2 | |
%63 = load i64, i64* %62, align 8 | |
%64 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 3 | |
%65 = load i64, i64* %64, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%66 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%67 = load %raw-5.Map*, %raw-5.Map** %66, align 8 | |
%68 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %67, i64 0 | |
%69 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %68, i64 0, i32 1 | |
%70 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %69, i64 0, i32 1 | |
%71 = load i64, i64* %70, align 8 | |
%72 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%73 = bitcast %raw-5.Dynamic_Array* %61 to %..rawptr | |
%74 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%75 = call %..rawptr @__mem_zero(%..rawptr %74, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %72, %Source_Code_Location* %6 | |
%76 = call i8 @__dynamic_array_reserve(%..rawptr %73, i64 %63, i64 %65, i64 %71, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; i | |
%77 = bitcast i64* %7 to %..rawptr | |
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 8) | |
store i64 zeroinitializer, i64* %7 | |
%79 = bitcast i64* %8 to %..rawptr | |
%80 = call %..rawptr @__mem_zero(%..rawptr %79, i64 8) | |
store i64 zeroinitializer, i64* %8 | |
store i64 0, i64* %8 | |
%81 = bitcast i64* %9 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 8) | |
store i64 zeroinitializer, i64* %9 | |
store i64 0, i64* %9 | |
br label %for.interval.loop-1 | |
for.interval.loop-1: | |
%83 = load i64, i64* %0, align 8 | |
%84 = load i64, i64* %8, align 8 | |
%85 = icmp slt i64 %84, %83 | |
br i1 %85, label %for.interval.body-2, label %for.interval.done-3 | |
for.interval.body-2: | |
%86 = load i64, i64* %8, align 8 | |
%87 = load i64, i64* %9, align 8 | |
%88 = load i64, i64* %8, align 8 | |
%89 = add i64 %88, 1 | |
store i64 %89, i64* %8 | |
%90 = load i64, i64* %9, align 8 | |
%91 = add i64 %90, 1 | |
store i64 %91, i64* %9 | |
store i64 %86, i64* %7 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%92 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0 | |
%93 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %92, align 8 | |
%94 = extractvalue {i64*, i64, i64, %Allocator} %93, 0 | |
%95 = extractvalue {i64*, i64, i64, %Allocator} %93, 1 | |
%96 = load i64, i64* %7, align 8 | |
%97 = getelementptr inbounds i64, i64* %94, i64 %96 | |
store i64 -1, i64* %97 | |
br label %for.interval.loop-1 | |
for.interval.done-3: | |
; RangeStmt | |
; i | |
%98 = bitcast i64* %10 to %..rawptr | |
%99 = call %..rawptr @__mem_zero(%..rawptr %98, i64 8) | |
store i64 zeroinitializer, i64* %10 | |
%100 = bitcast i64* %11 to %..rawptr | |
%101 = call %..rawptr @__mem_zero(%..rawptr %100, i64 8) | |
store i64 zeroinitializer, i64* %11 | |
store i64 0, i64* %11 | |
%102 = bitcast i64* %12 to %..rawptr | |
%103 = call %..rawptr @__mem_zero(%..rawptr %102, i64 8) | |
store i64 zeroinitializer, i64* %12 | |
store i64 0, i64* %12 | |
br label %for.interval.loop-4 | |
for.interval.loop-4: | |
; SelectorExpr | |
; SelectorExpr | |
%104 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%105 = load %raw-5.Map*, %raw-5.Map** %104, align 8 | |
%106 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %105, i64 0 | |
%107 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %106, i64 0, i32 1 | |
%108 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %107, i64 0, i32 1 | |
%109 = load i64, i64* %108, align 8 | |
%110 = load i64, i64* %11, align 8 | |
%111 = icmp slt i64 %110, %109 | |
br i1 %111, label %for.interval.body-5, label %for.interval.done-13 | |
for.interval.body-5: | |
%112 = load i64, i64* %11, align 8 | |
%113 = load i64, i64* %12, align 8 | |
%114 = load i64, i64* %11, align 8 | |
%115 = add i64 %114, 1 | |
store i64 %115, i64* %11 | |
%116 = load i64, i64* %12, align 8 | |
%117 = add i64 %116, 1 | |
store i64 %117, i64* %12 | |
store i64 %112, i64* %10 | |
; IfStmt | |
; SelectorExpr | |
%118 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0 | |
%119 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %118, align 8 | |
%120 = extractvalue {i64*, i64, i64, %Allocator} %119, 1 | |
%121 = icmp eq i64 %120, 0 | |
%122 = zext i1 %121 to i8 | |
%123 = trunc i8 %122 to i1 | |
br i1 %123, label %if.then-6, label %if.done-7 | |
if.then-6: | |
%124 = load %__Map_Header, %__Map_Header* %1, align 8 | |
%125 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%126 = bitcast %__Map_Header* %13 to %..rawptr | |
%127 = call %..rawptr @__mem_zero(%..rawptr %126, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %13 | |
store %__Map_Header %124, %__Map_Header* %13 | |
%128 = bitcast %Source_Code_Location* %14 to %..rawptr | |
%129 = call %..rawptr @__mem_zero(%..rawptr %128, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14 | |
store %Source_Code_Location %125, %Source_Code_Location* %14 | |
call void @__dynamic_map_grow(%__Map_Header* %13, %Source_Code_Location* %14, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-7 | |
if.done-7: | |
; entry_header | |
%130 = load %__Map_Header, %__Map_Header* %header, align 8 | |
%131 = load i64, i64* %10, align 8 | |
%132 = bitcast %__Map_Header* %16 to %..rawptr | |
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %16 | |
store %__Map_Header %130, %__Map_Header* %16 | |
%134 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %16, i64 %131, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %134, %__Map_Entry_Header** %15 | |
; data | |
%135 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8 | |
%136 = bitcast %__Map_Entry_Header* %135 to i8* | |
store i8* %136, i8** %17 | |
; fr | |
%137 = load %__Map_Header, %__Map_Header* %1, align 8 | |
; SelectorExpr | |
%138 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8 | |
%139 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %138, i64 0 | |
%140 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %139, i64 0, i32 0 | |
%141 = load %__Map_Key, %__Map_Key* %140, align 8 | |
%142 = bitcast %__Map_Header* %19 to %..rawptr | |
%143 = call %..rawptr @__mem_zero(%..rawptr %142, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %19 | |
store %__Map_Header %137, %__Map_Header* %19 | |
%144 = bitcast %__Map_Key* %20 to %..rawptr | |
%145 = call %..rawptr @__mem_zero(%..rawptr %144, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %20 | |
store %__Map_Key %141, %__Map_Key* %20 | |
%146 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %19, %__Map_Key* %20, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Find_Result %146, %__Map_Find_Result* %18 | |
; j | |
%147 = load %__Map_Header, %__Map_Header* %1, align 8 | |
; SelectorExpr | |
%148 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8 | |
%149 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %148, i64 0 | |
%150 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %149, i64 0, i32 0 | |
%151 = load %__Map_Key, %__Map_Key* %150, align 8 | |
%152 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%153 = bitcast %__Map_Header* %22 to %..rawptr | |
%154 = call %..rawptr @__mem_zero(%..rawptr %153, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %22 | |
store %__Map_Header %147, %__Map_Header* %22 | |
%155 = bitcast %__Map_Key* %23 to %..rawptr | |
%156 = call %..rawptr @__mem_zero(%..rawptr %155, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %23 | |
store %__Map_Key %151, %__Map_Key* %23 | |
%157 = bitcast %Source_Code_Location* %24 to %..rawptr | |
%158 = call %..rawptr @__mem_zero(%..rawptr %157, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %24 | |
store %Source_Code_Location %152, %Source_Code_Location* %24 | |
%159 = call i64 @__dynamic_map_add_entry(%__Map_Header* %22, %__Map_Key* %23, %Source_Code_Location* %24, %Context* noalias nonnull %__.context_ptr) | |
store i64 %159, i64* %21 | |
; IfStmt | |
; SelectorExpr | |
%160 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 1 | |
%161 = load i64, i64* %160, align 8 | |
%162 = icmp slt i64 %161, 0 | |
%163 = zext i1 %162 to i8 | |
%164 = trunc i8 %163 to i1 | |
br i1 %164, label %if.then-8, label %if.else-9 | |
if.then-8: | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%165 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0, i32 0 | |
%166 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %165, align 8 | |
%167 = extractvalue {i64*, i64, i64, %Allocator} %166, 0 | |
%168 = extractvalue {i64*, i64, i64, %Allocator} %166, 1 | |
; SelectorExpr | |
%169 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 0 | |
%170 = load i64, i64* %169, align 8 | |
%171 = getelementptr inbounds i64, i64* %167, i64 %170 | |
%172 = load i64, i64* %21, align 8 | |
store i64 %172, i64* %171 | |
br label %if.done-10 | |
if.else-9: | |
; e | |
%173 = load %__Map_Header, %__Map_Header* %1, align 8 | |
; SelectorExpr | |
%174 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 1 | |
%175 = load i64, i64* %174, align 8 | |
%176 = bitcast %__Map_Header* %26 to %..rawptr | |
%177 = call %..rawptr @__mem_zero(%..rawptr %176, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %26 | |
store %__Map_Header %173, %__Map_Header* %26 | |
%178 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %26, i64 %175, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %178, %__Map_Entry_Header** %25 | |
; AssignStmt | |
; SelectorExpr | |
%179 = load %__Map_Entry_Header*, %__Map_Entry_Header** %25, align 8 | |
%180 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %179, i64 0 | |
%181 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %180, i64 0, i32 1 | |
%182 = load i64, i64* %21, align 8 | |
store i64 %182, i64* %181 | |
br label %if.done-10 | |
if.done-10: | |
; e | |
%183 = load %__Map_Header, %__Map_Header* %1, align 8 | |
%184 = load i64, i64* %21, align 8 | |
%185 = bitcast %__Map_Header* %28 to %..rawptr | |
%186 = call %..rawptr @__mem_zero(%..rawptr %185, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %28 | |
store %__Map_Header %183, %__Map_Header* %28 | |
%187 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %28, i64 %184, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %187, %__Map_Entry_Header** %27 | |
; AssignStmt | |
; SelectorExpr | |
%188 = load %__Map_Entry_Header*, %__Map_Entry_Header** %27, align 8 | |
%189 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %188, i64 0 | |
%190 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %189, i64 0, i32 1 | |
; SelectorExpr | |
%191 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %18, i64 0, i32 2 | |
%192 = load i64, i64* %191, align 8 | |
store i64 %192, i64* %190 | |
; ndata | |
%193 = load %__Map_Entry_Header*, %__Map_Entry_Header** %27, align 8 | |
%194 = bitcast %__Map_Entry_Header* %193 to i8* | |
store i8* %194, i8** %29 | |
%195 = load i8*, i8** %29, align 8 | |
%196 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 4 | |
%197 = load i64, i64* %196, align 8 | |
%198 = bitcast i64 %197 to i64 | |
%199 = getelementptr inbounds i8, i8* %195, i64 %198 | |
%200 = load i8*, i8** %17, align 8 | |
%201 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 4 | |
%202 = load i64, i64* %201, align 8 | |
%203 = bitcast i64 %202 to i64 | |
%204 = getelementptr inbounds i8, i8* %200, i64 %203 | |
%205 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 5 | |
%206 = load i64, i64* %205, align 8 | |
%207 = bitcast i8* %199 to %..rawptr | |
%208 = bitcast i8* %204 to %..rawptr | |
%209 = call %..rawptr @__mem_copy(%..rawptr %207, %..rawptr %208, i64 %206) | |
; IfStmt | |
%210 = load %__Map_Header, %__Map_Header* %1, align 8 | |
%211 = bitcast %__Map_Header* %30 to %..rawptr | |
%212 = call %..rawptr @__mem_zero(%..rawptr %211, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %30 | |
store %__Map_Header %210, %__Map_Header* %30 | |
%213 = call i8 @__dynamic_map_full(%__Map_Header* %30, %Context* noalias nonnull %__.context_ptr) | |
%214 = trunc i8 %213 to i1 | |
br i1 %214, label %if.then-11, label %if.done-12 | |
if.then-11: | |
%215 = load %__Map_Header, %__Map_Header* %1, align 8 | |
%216 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%217 = bitcast %__Map_Header* %31 to %..rawptr | |
%218 = call %..rawptr @__mem_zero(%..rawptr %217, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %31 | |
store %__Map_Header %215, %__Map_Header* %31 | |
%219 = bitcast %Source_Code_Location* %32 to %..rawptr | |
%220 = call %..rawptr @__mem_zero(%..rawptr %219, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %32 | |
store %Source_Code_Location %216, %Source_Code_Location* %32 | |
call void @__dynamic_map_grow(%__Map_Header* %31, %Source_Code_Location* %32, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-12 | |
if.done-12: | |
br label %for.interval.loop-4 | |
for.interval.done-13: | |
; SelectorExpr | |
%221 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%222 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %221, i64 0 | |
%223 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %222, i64 0, i32 3 | |
%224 = load %Allocator, %Allocator* %223, align 8 | |
; SelectorExpr | |
%225 = load %raw-5.Dynamic_Array*, %raw-5.Dynamic_Array** %3, align 8 | |
%226 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %225, i64 0 | |
%227 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %226, i64 0, i32 0 | |
%228 = load %..rawptr, %..rawptr* %227, align 8 | |
%229 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%230 = bitcast %Allocator* %33 to %..rawptr | |
%231 = call %..rawptr @__mem_zero(%..rawptr %230, i64 16) | |
store %Allocator zeroinitializer, %Allocator* %33 | |
store %Allocator %224, %Allocator* %33 | |
%232 = bitcast %Source_Code_Location* %34 to %..rawptr | |
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %34 | |
store %Source_Code_Location %229, %Source_Code_Location* %34 | |
call void @free_ptr_with_allocator(%Allocator* %33, %..rawptr %228, %Source_Code_Location* %34, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%234 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%235 = load %raw-5.Map*, %raw-5.Map** %234, align 8 | |
%236 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %235, i64 0 | |
%237 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %236, i64 0, i32 1 | |
%238 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %237, i64 0, i32 3 | |
%239 = load %Allocator, %Allocator* %238, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%240 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%241 = load %raw-5.Map*, %raw-5.Map** %240, align 8 | |
%242 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %241, i64 0 | |
%243 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %242, i64 0, i32 1 | |
%244 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %243, i64 0, i32 0 | |
%245 = load %..rawptr, %..rawptr* %244, align 8 | |
%246 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%247 = bitcast %Allocator* %35 to %..rawptr | |
%248 = call %..rawptr @__mem_zero(%..rawptr %247, i64 16) | |
store %Allocator zeroinitializer, %Allocator* %35 | |
store %Allocator %239, %Allocator* %35 | |
%249 = bitcast %Source_Code_Location* %36 to %..rawptr | |
%250 = call %..rawptr @__mem_zero(%..rawptr %249, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %36 | |
store %Source_Code_Location %246, %Source_Code_Location* %36 | |
call void @free_ptr_with_allocator(%Allocator* %35, %..rawptr %245, %Source_Code_Location* %36, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
%251 = getelementptr inbounds %__Map_Header, %__Map_Header* %header, i64 0, i32 0 | |
%252 = load %raw-5.Map*, %raw-5.Map** %251, align 8 | |
%253 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %252, i64 0 | |
%254 = load %raw-5.Map, %raw-5.Map* %2, align 8 | |
store %raw-5.Map %254, %raw-5.Map* %253 | |
ret void | |
} | |
define %..rawptr @__dynamic_map_get(%__Map_Header* %h, %__Map_Key* %key, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %__Map_Header, align 16 | |
%2 = alloca %__Map_Key, align 16 | |
%3 = alloca %__Map_Find_Result, align 16 | |
%4 = alloca i8*, align 16 | |
%5 = alloca %__Map_Header, align 16 | |
%6 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%7 = load %__Map_Key, %__Map_Key* %key, align 8 | |
; index | |
; SelectorExpr | |
%8 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%9 = load %__Map_Key, %__Map_Key* %key, align 8 | |
%10 = bitcast %__Map_Header* %1 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %1 | |
store %__Map_Header %8, %__Map_Header* %1 | |
%12 = bitcast %__Map_Key* %2 to %..rawptr | |
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %2 | |
store %__Map_Key %9, %__Map_Key* %2 | |
%14 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %1, %__Map_Key* %2, %Context* noalias nonnull %__.context_ptr) | |
%15 = bitcast %__Map_Find_Result* %3 to %..rawptr | |
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 24) | |
store %__Map_Find_Result zeroinitializer, %__Map_Find_Result* %3 | |
store %__Map_Find_Result %14, %__Map_Find_Result* %3 | |
%17 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %3, i64 0, i32 2 | |
%18 = load i64, i64* %17, align 8 | |
store i64 %18, i64* %0 | |
; IfStmt | |
%19 = load i64, i64* %0, align 8 | |
%20 = icmp sge i64 %19, 0 | |
%21 = zext i1 %20 to i8 | |
%22 = trunc i8 %21 to i1 | |
br i1 %22, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; data | |
%23 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%24 = load i64, i64* %0, align 8 | |
%25 = bitcast %__Map_Header* %5 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %5 | |
store %__Map_Header %23, %__Map_Header* %5 | |
%27 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %5, i64 %24, %Context* noalias nonnull %__.context_ptr) | |
%28 = bitcast %__Map_Entry_Header* %27 to i8* | |
store i8* %28, i8** %4 | |
; ReturnStmt | |
%29 = load i8*, i8** %4, align 8 | |
; SelectorExpr | |
%30 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 4 | |
%31 = load i64, i64* %30, align 8 | |
%32 = bitcast i64 %31 to i64 | |
%33 = getelementptr inbounds i8, i8* %29, i64 %32 | |
%34 = bitcast i8* %33 to %..rawptr | |
ret %..rawptr %34 | |
if.done-2: | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
} | |
define void @__dynamic_map_set(%__Map_Header* %h, %__Map_Key* %key, %..rawptr %value, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
%3 = alloca %__Map_Header, align 16 | |
%4 = alloca %Source_Code_Location, align 16 | |
%5 = alloca %__Map_Header, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca %__Map_Find_Result, align 16 | |
%8 = alloca %__Map_Header, align 16 | |
%9 = alloca %__Map_Key, align 16 | |
%10 = alloca %__Map_Header, align 16 | |
%11 = alloca %__Map_Key, align 16 | |
%12 = alloca %Source_Code_Location, align 16 | |
%13 = alloca %__Map_Entry_Header*, align 16 | |
%14 = alloca %__Map_Header, align 16 | |
%15 = alloca %__Map_Entry_Header*, align 16 | |
%16 = alloca %__Map_Header, align 16 | |
%17 = alloca i8*, align 16 | |
%18 = alloca %__Map_Header, align 16 | |
%19 = alloca %__Map_Header, align 16 | |
%20 = alloca %Source_Code_Location, align 16 | |
%21 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%22 = load %__Map_Key, %__Map_Key* %key, align 8 | |
store %..rawptr %value, %..rawptr* %0 | |
%23 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; index | |
%24 = bitcast i64* %1 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8) | |
store i64 zeroinitializer, i64* %1 | |
%26 = load %..rawptr, %..rawptr* %0, align 8 | |
%27 = icmp ne %..rawptr %26, zeroinitializer | |
%28 = zext i1 %27 to i8 | |
%29 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5c, i64 0, i32 0), i64 51}, i64 1217, i64 2, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$5d, i64 0, i32 0), i64 17}) | |
%30 = trunc i8 %28 to i1 | |
%31 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %29, %Source_Code_Location* %2 | |
%33 = call i8 @assert(i1 %30, %..string zeroinitializer, %Source_Code_Location* %2) | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%34 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%35 = load %raw-5.Map*, %raw-5.Map** %34, align 8 | |
%36 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %35, i64 0 | |
%37 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %36, i64 0, i32 0 | |
%38 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %37, align 8 | |
%39 = extractvalue {i64*, i64, i64, %Allocator} %38, 1 | |
%40 = icmp eq i64 %39, 0 | |
%41 = zext i1 %40 to i8 | |
%42 = trunc i8 %41 to i1 | |
br i1 %42, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%43 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%44 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%45 = bitcast %__Map_Header* %3 to %..rawptr | |
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %3 | |
store %__Map_Header %43, %__Map_Header* %3 | |
%47 = bitcast %Source_Code_Location* %4 to %..rawptr | |
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %4 | |
store %Source_Code_Location %44, %Source_Code_Location* %4 | |
call void @__dynamic_map_reserve(%__Map_Header* %3, i64 16, %Source_Code_Location* %4, %Context* noalias nonnull %__.context_ptr) | |
%49 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%50 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%51 = bitcast %__Map_Header* %5 to %..rawptr | |
%52 = call %..rawptr @__mem_zero(%..rawptr %51, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %5 | |
store %__Map_Header %49, %__Map_Header* %5 | |
%53 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %50, %Source_Code_Location* %6 | |
call void @__dynamic_map_grow(%__Map_Header* %5, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-2 | |
if.done-2: | |
; fr | |
%55 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%56 = load %__Map_Key, %__Map_Key* %key, align 8 | |
%57 = bitcast %__Map_Header* %8 to %..rawptr | |
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %8 | |
store %__Map_Header %55, %__Map_Header* %8 | |
%59 = bitcast %__Map_Key* %9 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %9 | |
store %__Map_Key %56, %__Map_Key* %9 | |
%61 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %8, %__Map_Key* %9, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Find_Result %61, %__Map_Find_Result* %7 | |
; IfStmt | |
; SelectorExpr | |
%62 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 2 | |
%63 = load i64, i64* %62, align 8 | |
%64 = icmp sge i64 %63, 0 | |
%65 = zext i1 %64 to i8 | |
%66 = trunc i8 %65 to i1 | |
br i1 %66, label %if.then-3, label %if.else-4 | |
if.then-3: | |
; AssignStmt | |
; SelectorExpr | |
%67 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 2 | |
%68 = load i64, i64* %67, align 8 | |
store i64 %68, i64* %1 | |
br label %if.done-8 | |
if.else-4: | |
; AssignStmt | |
%69 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%70 = load %__Map_Key, %__Map_Key* %key, align 8 | |
%71 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%72 = bitcast %__Map_Header* %10 to %..rawptr | |
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %10 | |
store %__Map_Header %69, %__Map_Header* %10 | |
%74 = bitcast %__Map_Key* %11 to %..rawptr | |
%75 = call %..rawptr @__mem_zero(%..rawptr %74, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %11 | |
store %__Map_Key %70, %__Map_Key* %11 | |
%76 = bitcast %Source_Code_Location* %12 to %..rawptr | |
%77 = call %..rawptr @__mem_zero(%..rawptr %76, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %12 | |
store %Source_Code_Location %71, %Source_Code_Location* %12 | |
%78 = call i64 @__dynamic_map_add_entry(%__Map_Header* %10, %__Map_Key* %11, %Source_Code_Location* %12, %Context* noalias nonnull %__.context_ptr) | |
store i64 %78, i64* %1 | |
; IfStmt | |
; SelectorExpr | |
%79 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 1 | |
%80 = load i64, i64* %79, align 8 | |
%81 = icmp sge i64 %80, 0 | |
%82 = zext i1 %81 to i8 | |
%83 = trunc i8 %82 to i1 | |
br i1 %83, label %if.then-5, label %if.else-6 | |
if.then-5: | |
; entry | |
%84 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%85 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 1 | |
%86 = load i64, i64* %85, align 8 | |
%87 = bitcast %__Map_Header* %14 to %..rawptr | |
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %14 | |
store %__Map_Header %84, %__Map_Header* %14 | |
%89 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %14, i64 %86, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %89, %__Map_Entry_Header** %13 | |
; AssignStmt | |
; SelectorExpr | |
%90 = load %__Map_Entry_Header*, %__Map_Entry_Header** %13, align 8 | |
%91 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %90, i64 0 | |
%92 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %91, i64 0, i32 1 | |
%93 = load i64, i64* %1, align 8 | |
store i64 %93, i64* %92 | |
br label %if.done-7 | |
if.else-6: | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
; SelectorExpr | |
%94 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%95 = load %raw-5.Map*, %raw-5.Map** %94, align 8 | |
%96 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %95, i64 0 | |
%97 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %96, i64 0, i32 0 | |
%98 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %97, align 8 | |
%99 = extractvalue {i64*, i64, i64, %Allocator} %98, 0 | |
%100 = extractvalue {i64*, i64, i64, %Allocator} %98, 1 | |
; SelectorExpr | |
%101 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %7, i64 0, i32 0 | |
%102 = load i64, i64* %101, align 8 | |
%103 = getelementptr inbounds i64, i64* %99, i64 %102 | |
%104 = load i64, i64* %1, align 8 | |
store i64 %104, i64* %103 | |
br label %if.done-7 | |
if.done-7: | |
br label %if.done-8 | |
if.done-8: | |
; e | |
%105 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%106 = load i64, i64* %1, align 8 | |
%107 = bitcast %__Map_Header* %16 to %..rawptr | |
%108 = call %..rawptr @__mem_zero(%..rawptr %107, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %16 | |
store %__Map_Header %105, %__Map_Header* %16 | |
%109 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %16, i64 %106, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %109, %__Map_Entry_Header** %15 | |
; AssignStmt | |
; SelectorExpr | |
%110 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8 | |
%111 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %110, i64 0 | |
%112 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %111, i64 0, i32 0 | |
%113 = load %__Map_Key, %__Map_Key* %key, align 8 | |
store %__Map_Key %113, %__Map_Key* %112 | |
; val | |
%114 = load %__Map_Entry_Header*, %__Map_Entry_Header** %15, align 8 | |
%115 = ptrtoint %__Map_Entry_Header* %114 to i64 | |
; SelectorExpr | |
%116 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 4 | |
%117 = load i64, i64* %116, align 8 | |
%118 = add i64 %115, %117 | |
%119 = inttoptr i64 %118 to i8* | |
store i8* %119, i8** %17 | |
%120 = load i8*, i8** %17, align 8 | |
%121 = load %..rawptr, %..rawptr* %0, align 8 | |
; SelectorExpr | |
%122 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 5 | |
%123 = load i64, i64* %122, align 8 | |
%124 = bitcast i8* %120 to %..rawptr | |
%125 = call %..rawptr @__mem_copy(%..rawptr %124, %..rawptr %121, i64 %123) | |
; IfStmt | |
%126 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%127 = bitcast %__Map_Header* %18 to %..rawptr | |
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %18 | |
store %__Map_Header %126, %__Map_Header* %18 | |
%129 = call i8 @__dynamic_map_full(%__Map_Header* %18, %Context* noalias nonnull %__.context_ptr) | |
%130 = trunc i8 %129 to i1 | |
br i1 %130, label %if.then-9, label %if.done-10 | |
if.then-9: | |
%131 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%132 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%133 = bitcast %__Map_Header* %19 to %..rawptr | |
%134 = call %..rawptr @__mem_zero(%..rawptr %133, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %19 | |
store %__Map_Header %131, %__Map_Header* %19 | |
%135 = bitcast %Source_Code_Location* %20 to %..rawptr | |
%136 = call %..rawptr @__mem_zero(%..rawptr %135, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %20 | |
store %Source_Code_Location %132, %Source_Code_Location* %20 | |
call void @__dynamic_map_grow(%__Map_Header* %19, %Source_Code_Location* %20, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-10 | |
if.done-10: | |
ret void | |
} | |
define void @__dynamic_map_grow(%__Map_Header* %h, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %__Map_Header, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
%3 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%4 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; new_count | |
; max | |
; SelectorExpr | |
; SelectorExpr | |
%5 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%6 = load %raw-5.Map*, %raw-5.Map** %5, align 8 | |
%7 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %6, i64 0 | |
%8 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %7, i64 0, i32 1 | |
%9 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %8, i64 0, i32 2 | |
%10 = load i64, i64* %9, align 8 | |
%11 = mul i64 4, %10 | |
%12 = add i64 %11, 7 | |
%13 = icmp sgt i64 %12, 16 | |
%14 = select i1 %13, i64 %12, i64 16 | |
store i64 %14, i64* %0 | |
%15 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%16 = load i64, i64* %0, align 8 | |
%17 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%18 = bitcast %__Map_Header* %1 to %..rawptr | |
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %1 | |
store %__Map_Header %15, %__Map_Header* %1 | |
%20 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %17, %Source_Code_Location* %2 | |
call void @__dynamic_map_rehash(%__Map_Header* %1, i64 %16, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define i8 @__dynamic_map_full(%__Map_Header* %h, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; ReturnStmt | |
; SelectorExpr | |
%1 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%2 = load %raw-5.Map*, %raw-5.Map** %1, align 8 | |
%3 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %2, i64 0 | |
%4 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %3, i64 0, i32 0 | |
%5 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %4, align 8 | |
%6 = extractvalue {i64*, i64, i64, %Allocator} %5, 1 | |
%7 = sitofp i64 %6 to double | |
%8 = fmul double 0x3fe8000000000000, %7 | |
%9 = fptosi double %8 to i64 | |
; SelectorExpr | |
; SelectorExpr | |
%10 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%11 = load %raw-5.Map*, %raw-5.Map** %10, align 8 | |
%12 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %11, i64 0 | |
%13 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %12, i64 0, i32 1 | |
%14 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %13, i64 0, i32 2 | |
%15 = load i64, i64* %14, align 8 | |
%16 = icmp sle i64 %9, %15 | |
%17 = zext i1 %16 to i8 | |
ret i8 %17 | |
} | |
define i8 @__dynamic_map_hash_equal(%__Map_Header* %h, %__Map_Key* %a, %__Map_Key* %b, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%1 = load %__Map_Key, %__Map_Key* %a, align 8 | |
%2 = load %__Map_Key, %__Map_Key* %b, align 8 | |
; IfStmt | |
; SelectorExpr | |
%3 = getelementptr inbounds %__Map_Key, %__Map_Key* %a, i64 0, i32 0 | |
%4 = load i64, i64* %3, align 8 | |
; SelectorExpr | |
%5 = getelementptr inbounds %__Map_Key, %__Map_Key* %b, i64 0, i32 0 | |
%6 = load i64, i64* %5, align 8 | |
%7 = icmp eq i64 %4, %6 | |
%8 = zext i1 %7 to i8 | |
%9 = trunc i8 %8 to i1 | |
br i1 %9, label %if.then-1, label %if.done-4 | |
if.then-1: | |
; IfStmt | |
; SelectorExpr | |
%10 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 1 | |
%11 = load i8, i8* %10, align 1 | |
%12 = trunc i8 %11 to i1 | |
br i1 %12, label %if.then-2, label %if.done-3 | |
if.then-2: | |
; ReturnStmt | |
; SelectorExpr | |
%13 = getelementptr inbounds %__Map_Key, %__Map_Key* %a, i64 0, i32 1 | |
%14 = load %..string, %..string* %13, align 8 | |
; SelectorExpr | |
%15 = getelementptr inbounds %__Map_Key, %__Map_Key* %b, i64 0, i32 1 | |
%16 = load %..string, %..string* %15, align 8 | |
%17 = call i8 @__string_eq(%..string %14, %..string %16) | |
ret i8 %17 | |
if.done-3: | |
; ReturnStmt | |
ret i8 1 | |
if.done-4: | |
; ReturnStmt | |
ret i8 0 | |
} | |
define %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %h, %__Map_Key* %key, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %__Map_Find_Result, align 16 | |
%1 = alloca %__Map_Entry_Header*, align 16 | |
%2 = alloca %__Map_Header, align 16 | |
%3 = alloca %__Map_Header, align 16 | |
%4 = alloca %__Map_Key, align 16 | |
%5 = alloca %__Map_Key, align 16 | |
%6 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%7 = load %__Map_Key, %__Map_Key* %key, align 8 | |
; fr | |
store %__Map_Find_Result {i64 -1, i64 -1, i64 -1}, %__Map_Find_Result* %0 | |
; IfStmt | |
; SelectorExpr | |
%8 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%9 = load %raw-5.Map*, %raw-5.Map** %8, align 8 | |
%10 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %9, i64 0 | |
%11 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %10, i64 0, i32 0 | |
%12 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %11, align 8 | |
%13 = extractvalue {i64*, i64, i64, %Allocator} %12, 1 | |
%14 = icmp sgt i64 %13, 0 | |
%15 = zext i1 %14 to i8 | |
%16 = trunc i8 %15 to i1 | |
br i1 %16, label %if.then-1, label %if.done-7 | |
if.then-1: | |
; AssignStmt | |
; SelectorExpr | |
%17 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 0 | |
; SelectorExpr | |
%18 = getelementptr inbounds %__Map_Key, %__Map_Key* %key, i64 0, i32 0 | |
%19 = load i64, i64* %18, align 8 | |
; SelectorExpr | |
%20 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%21 = load %raw-5.Map*, %raw-5.Map** %20, align 8 | |
%22 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %21, i64 0 | |
%23 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %22, i64 0, i32 0 | |
%24 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %23, align 8 | |
%25 = extractvalue {i64*, i64, i64, %Allocator} %24, 1 | |
%26 = bitcast i64 %25 to i64 | |
%27 = urem i64 %19, %26 | |
%28 = bitcast i64 %27 to i64 | |
store i64 %28, i64* %17 | |
; AssignStmt | |
; SelectorExpr | |
%29 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2 | |
; IndexExpr | |
; SelectorExpr | |
%30 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%31 = load %raw-5.Map*, %raw-5.Map** %30, align 8 | |
%32 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %31, i64 0 | |
%33 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %32, i64 0, i32 0 | |
%34 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %33, align 8 | |
%35 = extractvalue {i64*, i64, i64, %Allocator} %34, 0 | |
%36 = extractvalue {i64*, i64, i64, %Allocator} %34, 1 | |
; SelectorExpr | |
%37 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 0 | |
%38 = load i64, i64* %37, align 8 | |
%39 = getelementptr inbounds i64, i64* %35, i64 %38 | |
%40 = load i64, i64* %39, align 8 | |
store i64 %40, i64* %29 | |
; ForStmt | |
br label %for.loop-2 | |
for.loop-2: | |
; SelectorExpr | |
%41 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2 | |
%42 = load i64, i64* %41, align 8 | |
%43 = icmp sge i64 %42, 0 | |
%44 = zext i1 %43 to i8 | |
%45 = trunc i8 %44 to i1 | |
br i1 %45, label %for.body-3, label %for.done-6 | |
for.body-3: | |
; entry | |
%46 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%47 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2 | |
%48 = load i64, i64* %47, align 8 | |
%49 = bitcast %__Map_Header* %2 to %..rawptr | |
%50 = call %..rawptr @__mem_zero(%..rawptr %49, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %2 | |
store %__Map_Header %46, %__Map_Header* %2 | |
%51 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %2, i64 %48, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %51, %__Map_Entry_Header** %1 | |
; IfStmt | |
%52 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%53 = load %__Map_Entry_Header*, %__Map_Entry_Header** %1, align 8 | |
%54 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %53, i64 0 | |
%55 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %54, i64 0, i32 0 | |
%56 = load %__Map_Key, %__Map_Key* %55, align 8 | |
%57 = load %__Map_Key, %__Map_Key* %key, align 8 | |
%58 = bitcast %__Map_Header* %3 to %..rawptr | |
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %3 | |
store %__Map_Header %52, %__Map_Header* %3 | |
%60 = bitcast %__Map_Key* %4 to %..rawptr | |
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %4 | |
store %__Map_Key %56, %__Map_Key* %4 | |
%62 = bitcast %__Map_Key* %5 to %..rawptr | |
%63 = call %..rawptr @__mem_zero(%..rawptr %62, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %5 | |
store %__Map_Key %57, %__Map_Key* %5 | |
%64 = call i8 @__dynamic_map_hash_equal(%__Map_Header* %3, %__Map_Key* %4, %__Map_Key* %5, %Context* noalias nonnull %__.context_ptr) | |
%65 = trunc i8 %64 to i1 | |
br i1 %65, label %if.then-4, label %if.done-5 | |
if.then-4: | |
; ReturnStmt | |
%66 = load %__Map_Find_Result, %__Map_Find_Result* %0, align 8 | |
ret %__Map_Find_Result %66 | |
if.done-5: | |
; AssignStmt | |
; SelectorExpr | |
%67 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 1 | |
; SelectorExpr | |
%68 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2 | |
%69 = load i64, i64* %68, align 8 | |
store i64 %69, i64* %67 | |
; AssignStmt | |
; SelectorExpr | |
%70 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2 | |
; SelectorExpr | |
%71 = load %__Map_Entry_Header*, %__Map_Entry_Header** %1, align 8 | |
%72 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %71, i64 0 | |
%73 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %72, i64 0, i32 1 | |
%74 = load i64, i64* %73, align 8 | |
store i64 %74, i64* %70 | |
br label %for.loop-2 | |
for.done-6: | |
br label %if.done-7 | |
if.done-7: | |
; ReturnStmt | |
%75 = load %__Map_Find_Result, %__Map_Find_Result* %0, align 8 | |
ret %__Map_Find_Result %75 | |
} | |
define i64 @__dynamic_map_add_entry(%__Map_Header* %h, %__Map_Key* %key, %Source_Code_Location* %loc, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
%3 = alloca %__Map_Entry_Header*, align 16 | |
%4 = alloca %__Map_Header, align 16 | |
%5 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%6 = load %__Map_Key, %__Map_Key* %key, align 8 | |
%7 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
; prev | |
; SelectorExpr | |
; SelectorExpr | |
%8 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%9 = load %raw-5.Map*, %raw-5.Map** %8, align 8 | |
%10 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %9, i64 0 | |
%11 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %10, i64 0, i32 1 | |
%12 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %11, i64 0, i32 1 | |
%13 = load i64, i64* %12, align 8 | |
store i64 %13, i64* %0 | |
; c | |
; SelectorExpr | |
%14 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%15 = load %raw-5.Map*, %raw-5.Map** %14, align 8 | |
%16 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %15, i64 0 | |
%17 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %16, i64 0, i32 1 | |
%18 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %17, i64 0 | |
%19 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 2 | |
%20 = load i64, i64* %19, align 8 | |
%21 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 3 | |
%22 = load i64, i64* %21, align 8 | |
%23 = load %Source_Code_Location, %Source_Code_Location* %loc, align 8 | |
%24 = bitcast %raw-5.Dynamic_Array* %18 to %..rawptr | |
%25 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %23, %Source_Code_Location* %2 | |
%27 = call i64 @__dynamic_array_append_nothing(%..rawptr %24, i64 %20, i64 %22, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr) | |
store i64 %27, i64* %1 | |
; IfStmt | |
%28 = load i64, i64* %1, align 8 | |
%29 = load i64, i64* %0, align 8 | |
%30 = icmp ne i64 %28, %29 | |
%31 = zext i1 %30 to i8 | |
%32 = trunc i8 %31 to i1 | |
br i1 %32, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; end | |
%33 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%34 = load i64, i64* %1, align 8 | |
%35 = sub i64 %34, 1 | |
%36 = bitcast %__Map_Header* %4 to %..rawptr | |
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %4 | |
store %__Map_Header %33, %__Map_Header* %4 | |
%38 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %4, i64 %35, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Entry_Header* %38, %__Map_Entry_Header** %3 | |
; AssignStmt | |
; SelectorExpr | |
%39 = load %__Map_Entry_Header*, %__Map_Entry_Header** %3, align 8 | |
%40 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %39, i64 0 | |
%41 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %40, i64 0, i32 0 | |
%42 = load %__Map_Key, %__Map_Key* %key, align 8 | |
store %__Map_Key %42, %__Map_Key* %41 | |
; AssignStmt | |
; SelectorExpr | |
%43 = load %__Map_Entry_Header*, %__Map_Entry_Header** %3, align 8 | |
%44 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %43, i64 0 | |
%45 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %44, i64 0, i32 1 | |
store i64 -1, i64* %45 | |
br label %if.done-2 | |
if.done-2: | |
; ReturnStmt | |
%46 = load i64, i64* %0, align 8 | |
ret i64 %46 | |
} | |
define void @__dynamic_map_delete(%__Map_Header* %h, %__Map_Key* %key, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %__Map_Find_Result, align 16 | |
%1 = alloca %__Map_Header, align 16 | |
%2 = alloca %__Map_Key, align 16 | |
%3 = alloca %__Map_Header, align 16 | |
%4 = alloca %__Map_Find_Result, align 16 | |
%5 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%6 = load %__Map_Key, %__Map_Key* %key, align 8 | |
; fr | |
%7 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%8 = load %__Map_Key, %__Map_Key* %key, align 8 | |
%9 = bitcast %__Map_Header* %1 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %1 | |
store %__Map_Header %7, %__Map_Header* %1 | |
%11 = bitcast %__Map_Key* %2 to %..rawptr | |
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %2 | |
store %__Map_Key %8, %__Map_Key* %2 | |
%13 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %1, %__Map_Key* %2, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Find_Result %13, %__Map_Find_Result* %0 | |
; IfStmt | |
; SelectorExpr | |
%14 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %0, i64 0, i32 2 | |
%15 = load i64, i64* %14, align 8 | |
%16 = icmp sge i64 %15, 0 | |
%17 = zext i1 %16 to i8 | |
%18 = trunc i8 %17 to i1 | |
br i1 %18, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%19 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%20 = load %__Map_Find_Result, %__Map_Find_Result* %0, align 8 | |
%21 = bitcast %__Map_Header* %3 to %..rawptr | |
%22 = call %..rawptr @__mem_zero(%..rawptr %21, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %3 | |
store %__Map_Header %19, %__Map_Header* %3 | |
%23 = bitcast %__Map_Find_Result* %4 to %..rawptr | |
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 24) | |
store %__Map_Find_Result zeroinitializer, %__Map_Find_Result* %4 | |
store %__Map_Find_Result %20, %__Map_Find_Result* %4 | |
call void @__dynamic_map_erase(%__Map_Header* %3, %__Map_Find_Result* %4, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-2 | |
if.done-2: | |
ret void | |
} | |
define %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %h, i64 %index, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = load %__Map_Header, %__Map_Header* %h, align 8 | |
store i64 %index, i64* %0 | |
%3 = load i64, i64* %0, align 8 | |
%4 = icmp sle i64 0, %3 | |
%5 = zext i1 %4 to i8 | |
%6 = load i64, i64* %0, align 8 | |
%7 = icmp sle i64 0, %6 | |
%8 = zext i1 %7 to i8 | |
%9 = trunc i8 %8 to i1 | |
br i1 %9, label %logical.cmp.rhs-1, label %logical.cmp.done-2 | |
logical.cmp.rhs-1: | |
%10 = load i64, i64* %0, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%11 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%12 = load %raw-5.Map*, %raw-5.Map** %11, align 8 | |
%13 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %12, i64 0 | |
%14 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %13, i64 0, i32 1 | |
%15 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %14, i64 0, i32 1 | |
%16 = load i64, i64* %15, align 8 | |
%17 = icmp slt i64 %10, %16 | |
%18 = zext i1 %17 to i8 | |
br label %logical.cmp.done-2 | |
logical.cmp.done-2: | |
%19 = phi i8 [ 0, %decls-0 ], [ %18, %logical.cmp.rhs-1 ] | |
%20 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([52 x i8], [52 x i8]* @__str$5e, i64 0, i32 0), i64 51}, i64 1302, i64 2, %..string {i8* getelementptr inbounds ([24 x i8], [24 x i8]* @__str$5f, i64 0, i32 0), i64 23}) | |
%21 = trunc i8 %19 to i1 | |
%22 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %20, %Source_Code_Location* %1 | |
%24 = call i8 @assert(i1 %21, %..string zeroinitializer, %Source_Code_Location* %1) | |
; ReturnStmt | |
; SelectorExpr | |
; SelectorExpr | |
%25 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%26 = load %raw-5.Map*, %raw-5.Map** %25, align 8 | |
%27 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %26, i64 0 | |
%28 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %27, i64 0, i32 1 | |
%29 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %28, i64 0, i32 0 | |
%30 = load %..rawptr, %..rawptr* %29, align 8 | |
%31 = ptrtoint %..rawptr %30 to i64 | |
%32 = load i64, i64* %0, align 8 | |
%33 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 2 | |
%34 = load i64, i64* %33, align 8 | |
%35 = mul i64 %32, %34 | |
%36 = bitcast i64 %35 to i64 | |
%37 = add i64 %31, %36 | |
%38 = inttoptr i64 %37 to %__Map_Entry_Header* | |
ret %__Map_Entry_Header* %38 | |
} | |
define void @__dynamic_map_erase(%__Map_Header* %h, %__Map_Find_Result* %fr, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %__Map_Header, align 16 | |
%1 = alloca %__Map_Entry_Header*, align 16 | |
%2 = alloca %__Map_Header, align 16 | |
%3 = alloca %__Map_Entry_Header*, align 16 | |
%4 = alloca %__Map_Header, align 16 | |
%5 = alloca %__Map_Entry_Header*, align 16 | |
%6 = alloca %__Map_Header, align 16 | |
%7 = alloca %__Map_Header, align 16 | |
%8 = alloca %__Map_Find_Result, align 16 | |
%9 = alloca %__Map_Header, align 16 | |
%10 = alloca %__Map_Entry_Header*, align 16 | |
%11 = alloca %__Map_Header, align 16 | |
%12 = alloca %__Map_Key, align 16 | |
%13 = alloca %__Map_Header, align 16 | |
%14 = alloca %__Map_Entry_Header*, align 16 | |
%15 = load %__Map_Header, %__Map_Header* %h, align 8 | |
%16 = load %__Map_Find_Result, %__Map_Find_Result* %fr, align 8 | |
; IfStmt | |
; SelectorExpr | |
%17 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 1 | |
%18 = load i64, i64* %17, align 8 | |
%19 = icmp slt i64 %18, 0 | |
%20 = zext i1 %19 to i8 | |
%21 = trunc i8 %20 to i1 | |
br i1 %21, label %if.then-1, label %if.else-2 | |
if.then-1: | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%22 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%23 = load %raw-5.Map*, %raw-5.Map** %22, align 8 | |
%24 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %23, i64 0 | |
%25 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %24, i64 0, i32 0 | |
%26 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %25, align 8 | |
%27 = extractvalue {i64*, i64, i64, %Allocator} %26, 0 | |
%28 = extractvalue {i64*, i64, i64, %Allocator} %26, 1 | |
; SelectorExpr | |
%29 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 0 | |
%30 = load i64, i64* %29, align 8 | |
%31 = getelementptr inbounds i64, i64* %27, i64 %30 | |
; SelectorExpr | |
%32 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%33 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%34 = load i64, i64* %33, align 8 | |
%35 = bitcast %__Map_Header* %0 to %..rawptr | |
%36 = call %..rawptr @__mem_zero(%..rawptr %35, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %0 | |
store %__Map_Header %32, %__Map_Header* %0 | |
%37 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %0, i64 %34, %Context* noalias nonnull %__.context_ptr) | |
%38 = bitcast %__Map_Entry_Header** %1 to %..rawptr | |
%39 = call %..rawptr @__mem_zero(%..rawptr %38, i64 8) | |
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %1 | |
store %__Map_Entry_Header* %37, %__Map_Entry_Header** %1 | |
%40 = load %__Map_Entry_Header*, %__Map_Entry_Header** %1, align 8 | |
%41 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %40, i64 0 | |
%42 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %41, i64 0, i32 1 | |
%43 = load i64, i64* %42, align 8 | |
store i64 %43, i64* %31 | |
br label %if.done-3 | |
if.else-2: | |
; AssignStmt | |
; SelectorExpr | |
%44 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%45 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 1 | |
%46 = load i64, i64* %45, align 8 | |
%47 = bitcast %__Map_Header* %2 to %..rawptr | |
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %2 | |
store %__Map_Header %44, %__Map_Header* %2 | |
%49 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %2, i64 %46, %Context* noalias nonnull %__.context_ptr) | |
%50 = bitcast %__Map_Entry_Header** %3 to %..rawptr | |
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 8) | |
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %3 | |
store %__Map_Entry_Header* %49, %__Map_Entry_Header** %3 | |
%52 = load %__Map_Entry_Header*, %__Map_Entry_Header** %3, align 8 | |
%53 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %52, i64 0 | |
%54 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %53, i64 0, i32 1 | |
; SelectorExpr | |
%55 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%56 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%57 = load i64, i64* %56, align 8 | |
%58 = bitcast %__Map_Header* %4 to %..rawptr | |
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %4 | |
store %__Map_Header %55, %__Map_Header* %4 | |
%60 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %4, i64 %57, %Context* noalias nonnull %__.context_ptr) | |
%61 = bitcast %__Map_Entry_Header** %5 to %..rawptr | |
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 8) | |
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %5 | |
store %__Map_Entry_Header* %60, %__Map_Entry_Header** %5 | |
%63 = load %__Map_Entry_Header*, %__Map_Entry_Header** %5, align 8 | |
%64 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %63, i64 0 | |
%65 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %64, i64 0, i32 1 | |
%66 = load i64, i64* %65, align 8 | |
store i64 %66, i64* %54 | |
br label %if.done-3 | |
if.done-3: | |
%67 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%68 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%69 = load i64, i64* %68, align 8 | |
%70 = bitcast %__Map_Header* %6 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %6 | |
store %__Map_Header %67, %__Map_Header* %6 | |
%72 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %6, i64 %69, %Context* noalias nonnull %__.context_ptr) | |
%73 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%74 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%75 = load %raw-5.Map*, %raw-5.Map** %74, align 8 | |
%76 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %75, i64 0 | |
%77 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %76, i64 0, i32 1 | |
%78 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %77, i64 0, i32 1 | |
%79 = load i64, i64* %78, align 8 | |
%80 = sub i64 %79, 1 | |
%81 = bitcast %__Map_Header* %7 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %7 | |
store %__Map_Header %73, %__Map_Header* %7 | |
%83 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %7, i64 %80, %Context* noalias nonnull %__.context_ptr) | |
%84 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 2 | |
%85 = load i64, i64* %84, align 8 | |
%86 = bitcast %__Map_Entry_Header* %72 to %..rawptr | |
%87 = bitcast %__Map_Entry_Header* %83 to %..rawptr | |
%88 = call %..rawptr @__mem_copy(%..rawptr %86, %..rawptr %87, i64 %85) | |
; last | |
%89 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%90 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%91 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%92 = load i64, i64* %91, align 8 | |
%93 = bitcast %__Map_Header* %9 to %..rawptr | |
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %9 | |
store %__Map_Header %90, %__Map_Header* %9 | |
%95 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %9, i64 %92, %Context* noalias nonnull %__.context_ptr) | |
%96 = bitcast %__Map_Entry_Header** %10 to %..rawptr | |
%97 = call %..rawptr @__mem_zero(%..rawptr %96, i64 8) | |
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %10 | |
store %__Map_Entry_Header* %95, %__Map_Entry_Header** %10 | |
%98 = load %__Map_Entry_Header*, %__Map_Entry_Header** %10, align 8 | |
%99 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %98, i64 0 | |
%100 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %99, i64 0, i32 0 | |
%101 = load %__Map_Key, %__Map_Key* %100, align 8 | |
%102 = bitcast %__Map_Header* %11 to %..rawptr | |
%103 = call %..rawptr @__mem_zero(%..rawptr %102, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %11 | |
store %__Map_Header %89, %__Map_Header* %11 | |
%104 = bitcast %__Map_Key* %12 to %..rawptr | |
%105 = call %..rawptr @__mem_zero(%..rawptr %104, i64 24) | |
store %__Map_Key zeroinitializer, %__Map_Key* %12 | |
store %__Map_Key %101, %__Map_Key* %12 | |
%106 = call %__Map_Find_Result @__dynamic_map_find(%__Map_Header* %11, %__Map_Key* %12, %Context* noalias nonnull %__.context_ptr) | |
store %__Map_Find_Result %106, %__Map_Find_Result* %8 | |
; IfStmt | |
; SelectorExpr | |
%107 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %8, i64 0, i32 1 | |
%108 = load i64, i64* %107, align 8 | |
%109 = icmp sge i64 %108, 0 | |
%110 = zext i1 %109 to i8 | |
%111 = trunc i8 %110 to i1 | |
br i1 %111, label %if.then-4, label %if.else-5 | |
if.then-4: | |
; AssignStmt | |
; SelectorExpr | |
%112 = load %__Map_Header, %__Map_Header* %h, align 8 | |
; SelectorExpr | |
%113 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %8, i64 0, i32 1 | |
%114 = load i64, i64* %113, align 8 | |
%115 = bitcast %__Map_Header* %13 to %..rawptr | |
%116 = call %..rawptr @__mem_zero(%..rawptr %115, i64 48) | |
store %__Map_Header zeroinitializer, %__Map_Header* %13 | |
store %__Map_Header %112, %__Map_Header* %13 | |
%117 = call %__Map_Entry_Header* @__dynamic_map_get_entry(%__Map_Header* %13, i64 %114, %Context* noalias nonnull %__.context_ptr) | |
%118 = bitcast %__Map_Entry_Header** %14 to %..rawptr | |
%119 = call %..rawptr @__mem_zero(%..rawptr %118, i64 8) | |
store %__Map_Entry_Header* zeroinitializer, %__Map_Entry_Header** %14 | |
store %__Map_Entry_Header* %117, %__Map_Entry_Header** %14 | |
%120 = load %__Map_Entry_Header*, %__Map_Entry_Header** %14, align 8 | |
%121 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %120, i64 0 | |
%122 = getelementptr inbounds %__Map_Entry_Header, %__Map_Entry_Header* %121, i64 0, i32 1 | |
; SelectorExpr | |
%123 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%124 = load i64, i64* %123, align 8 | |
store i64 %124, i64* %122 | |
br label %if.done-6 | |
if.else-5: | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%125 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%126 = load %raw-5.Map*, %raw-5.Map** %125, align 8 | |
%127 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %126, i64 0 | |
%128 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %127, i64 0, i32 0 | |
%129 = load {i64*, i64, i64, %Allocator}, {i64*, i64, i64, %Allocator}* %128, align 8 | |
%130 = extractvalue {i64*, i64, i64, %Allocator} %129, 0 | |
%131 = extractvalue {i64*, i64, i64, %Allocator} %129, 1 | |
; SelectorExpr | |
%132 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %8, i64 0, i32 0 | |
%133 = load i64, i64* %132, align 8 | |
%134 = getelementptr inbounds i64, i64* %130, i64 %133 | |
; SelectorExpr | |
%135 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%136 = load i64, i64* %135, align 8 | |
store i64 %136, i64* %134 | |
br label %if.done-6 | |
if.done-6: | |
; IfStmt | |
; SelectorExpr | |
%137 = getelementptr inbounds %__Map_Find_Result, %__Map_Find_Result* %fr, i64 0, i32 2 | |
%138 = load i64, i64* %137, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%139 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%140 = load %raw-5.Map*, %raw-5.Map** %139, align 8 | |
%141 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %140, i64 0 | |
%142 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %141, i64 0, i32 1 | |
%143 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %142, i64 0, i32 1 | |
%144 = load i64, i64* %143, align 8 | |
%145 = sub i64 %144, 1 | |
%146 = icmp eq i64 %138, %145 | |
%147 = zext i1 %146 to i8 | |
%148 = trunc i8 %147 to i1 | |
br i1 %148, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%149 = getelementptr inbounds %__Map_Header, %__Map_Header* %h, i64 0, i32 0 | |
%150 = load %raw-5.Map*, %raw-5.Map** %149, align 8 | |
%151 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %150, i64 0 | |
%152 = getelementptr inbounds %raw-5.Map, %raw-5.Map* %151, i64 0, i32 1 | |
%153 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %152, i64 0, i32 1 | |
%154 = load i64, i64* %153, align 8 | |
%155 = sub i64 %154, 1 | |
store i64 %155, i64* %153 | |
br label %if.done-8 | |
if.done-8: | |
ret void | |
} | |
define {[4 x i8], i64} @utf8-4.encode_rune(i32 %r, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
%1 = alloca [4 x i8], align 16 | |
%2 = alloca i32, align 16 | |
%3 = alloca {[4 x i8], i64}, align 16 | |
%4 = alloca {[4 x i8], i64}, align 16 | |
%5 = alloca {[4 x i8], i64}, align 16 | |
%6 = alloca {[4 x i8], i64}, align 16 | |
store i32 %r, i32* %0 | |
; buf | |
%7 = bitcast [4 x i8]* %1 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 4) | |
store [4 x i8] zeroinitializer, [4 x i8]* %1 | |
; i | |
%9 = load i32, i32* %0, align 4 | |
%10 = bitcast i32 %9 to i32 | |
store i32 %10, i32* %2 | |
; IfStmt | |
%11 = load i32, i32* %2, align 4 | |
%12 = icmp ule i32 %11, 127 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; AssignStmt | |
; IndexExpr | |
%15 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0 | |
%16 = load i32, i32* %0, align 4 | |
%17 = trunc i32 %16 to i8 | |
store i8 %17, i8* %15 | |
; ReturnStmt | |
%18 = load [4 x i8], [4 x i8]* %1, align 1 | |
%19 = bitcast {[4 x i8], i64}* %3 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16) | |
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %3 | |
%21 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %3, i64 0, i32 0 | |
store [4 x i8] %18, [4 x i8]* %21 | |
%22 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %3, i64 0, i32 1 | |
store i64 1, i64* %22 | |
%23 = load {[4 x i8], i64}, {[4 x i8], i64}* %3, align 8 | |
ret {[4 x i8], i64} %23 | |
if.done-2: | |
; IfStmt | |
%24 = load i32, i32* %2, align 4 | |
%25 = icmp ule i32 %24, 2047 | |
%26 = zext i1 %25 to i8 | |
%27 = trunc i8 %26 to i1 | |
br i1 %27, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; AssignStmt | |
; IndexExpr | |
%28 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0 | |
%29 = load i32, i32* %0, align 4 | |
%30 = lshr i32 %29, 6 | |
%31 = trunc i32 %30 to i8 | |
%32 = or i8 192, %31 | |
store i8 %32, i8* %28 | |
; AssignStmt | |
; IndexExpr | |
%33 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 1 | |
%34 = load i32, i32* %0, align 4 | |
%35 = trunc i32 %34 to i8 | |
%36 = and i8 %35, 63 | |
%37 = or i8 128, %36 | |
store i8 %37, i8* %33 | |
; ReturnStmt | |
%38 = load [4 x i8], [4 x i8]* %1, align 1 | |
%39 = bitcast {[4 x i8], i64}* %4 to %..rawptr | |
%40 = call %..rawptr @__mem_zero(%..rawptr %39, i64 16) | |
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %4 | |
%41 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %4, i64 0, i32 0 | |
store [4 x i8] %38, [4 x i8]* %41 | |
%42 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %4, i64 0, i32 1 | |
store i64 2, i64* %42 | |
%43 = load {[4 x i8], i64}, {[4 x i8], i64}* %4, align 8 | |
ret {[4 x i8], i64} %43 | |
if.done-4: | |
; IfStmt | |
%44 = load i32, i32* %2, align 4 | |
%45 = icmp ugt i32 %44, 1114111 | |
%46 = zext i1 %45 to i8 | |
%47 = trunc i8 %46 to i1 | |
br i1 %47, label %if.then-7, label %cmp.or-5 | |
cmp.or-5: | |
%48 = load i32, i32* %2, align 4 | |
%49 = icmp ule i32 55296, %48 | |
%50 = zext i1 %49 to i8 | |
%51 = trunc i8 %50 to i1 | |
br i1 %51, label %cmp.and-6, label %if.done-8 | |
cmp.and-6: | |
%52 = load i32, i32* %2, align 4 | |
%53 = icmp ule i32 %52, 57343 | |
%54 = zext i1 %53 to i8 | |
%55 = trunc i8 %54 to i1 | |
br i1 %55, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; AssignStmt | |
store i32 65533, i32* %0 | |
br label %if.done-8 | |
if.done-8: | |
; IfStmt | |
%56 = load i32, i32* %2, align 4 | |
%57 = icmp ule i32 %56, 65535 | |
%58 = zext i1 %57 to i8 | |
%59 = trunc i8 %58 to i1 | |
br i1 %59, label %if.then-9, label %if.done-10 | |
if.then-9: | |
; AssignStmt | |
; IndexExpr | |
%60 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0 | |
%61 = load i32, i32* %0, align 4 | |
%62 = lshr i32 %61, 12 | |
%63 = trunc i32 %62 to i8 | |
%64 = or i8 224, %63 | |
store i8 %64, i8* %60 | |
; AssignStmt | |
; IndexExpr | |
%65 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 1 | |
%66 = load i32, i32* %0, align 4 | |
%67 = lshr i32 %66, 6 | |
%68 = trunc i32 %67 to i8 | |
%69 = and i8 %68, 63 | |
%70 = or i8 128, %69 | |
store i8 %70, i8* %65 | |
; AssignStmt | |
; IndexExpr | |
%71 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 2 | |
%72 = load i32, i32* %0, align 4 | |
%73 = trunc i32 %72 to i8 | |
%74 = and i8 %73, 63 | |
%75 = or i8 128, %74 | |
store i8 %75, i8* %71 | |
; ReturnStmt | |
%76 = load [4 x i8], [4 x i8]* %1, align 1 | |
%77 = bitcast {[4 x i8], i64}* %5 to %..rawptr | |
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 16) | |
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %5 | |
%79 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %5, i64 0, i32 0 | |
store [4 x i8] %76, [4 x i8]* %79 | |
%80 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %5, i64 0, i32 1 | |
store i64 3, i64* %80 | |
%81 = load {[4 x i8], i64}, {[4 x i8], i64}* %5, align 8 | |
ret {[4 x i8], i64} %81 | |
if.done-10: | |
; AssignStmt | |
; IndexExpr | |
%82 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 0 | |
%83 = load i32, i32* %0, align 4 | |
%84 = lshr i32 %83, 18 | |
%85 = trunc i32 %84 to i8 | |
%86 = or i8 240, %85 | |
store i8 %86, i8* %82 | |
; AssignStmt | |
; IndexExpr | |
%87 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 1 | |
%88 = load i32, i32* %0, align 4 | |
%89 = lshr i32 %88, 12 | |
%90 = trunc i32 %89 to i8 | |
%91 = and i8 %90, 63 | |
%92 = or i8 128, %91 | |
store i8 %92, i8* %87 | |
; AssignStmt | |
; IndexExpr | |
%93 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 2 | |
%94 = load i32, i32* %0, align 4 | |
%95 = lshr i32 %94, 6 | |
%96 = trunc i32 %95 to i8 | |
%97 = and i8 %96, 63 | |
%98 = or i8 128, %97 | |
store i8 %98, i8* %93 | |
; AssignStmt | |
; IndexExpr | |
%99 = getelementptr inbounds [4 x i8], [4 x i8]* %1, i64 0, i32 3 | |
%100 = load i32, i32* %0, align 4 | |
%101 = trunc i32 %100 to i8 | |
%102 = and i8 %101, 63 | |
%103 = or i8 128, %102 | |
store i8 %103, i8* %99 | |
; ReturnStmt | |
%104 = load [4 x i8], [4 x i8]* %1, align 1 | |
%105 = bitcast {[4 x i8], i64}* %6 to %..rawptr | |
%106 = call %..rawptr @__mem_zero(%..rawptr %105, i64 16) | |
store {[4 x i8], i64} zeroinitializer, {[4 x i8], i64}* %6 | |
%107 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %6, i64 0, i32 0 | |
store [4 x i8] %104, [4 x i8]* %107 | |
%108 = getelementptr inbounds {[4 x i8], i64}, {[4 x i8], i64}* %6, i64 0, i32 1 | |
store i64 4, i64* %108 | |
%109 = load {[4 x i8], i64}, {[4 x i8], i64}* %6, align 8 | |
ret {[4 x i8], i64} %109 | |
} | |
define {i32, i64} @utf8-4.decode_rune_from_string(%..string %s, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i8*, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
%4 = alloca {i32, i64}, align 16 | |
store %..string %s, %..string* %0 | |
; ReturnStmt | |
%5 = load %..string, %..string* %0, align 8 | |
%6 = extractvalue %..string %5, 0 | |
%7 = bitcast i8** %1 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 8) | |
store i8* zeroinitializer, i8** %1 | |
store i8* %6, i8** %1 | |
%9 = extractvalue %..string %5, 1 | |
%10 = sub i64 %9, 0 | |
%11 = load i8*, i8** %1, align 8 | |
%12 = getelementptr inbounds i8, i8* %11, i64 0 | |
%13 = bitcast {i8*, i64}* %2 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0 | |
store i8* %12, i8** %15 | |
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1 | |
store i64 %10, i64* %16 | |
%17 = load {i8*, i64}, {i8*, i64}* %2, align 8 | |
%18 = bitcast {i8*, i64}* %3 to %..rawptr | |
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
store {i8*, i64} %17, {i8*, i64}* %3 | |
%20 = call {i32, i64} @utf8-4.decode_rune({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr) | |
%21 = extractvalue {i32, i64} %20, 0 | |
%22 = extractvalue {i32, i64} %20, 1 | |
%23 = bitcast {i32, i64}* %4 to %..rawptr | |
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %4 | |
%25 = getelementptr inbounds {i32, i64}, {i32, i64}* %4, i64 0, i32 0 | |
store i32 %21, i32* %25 | |
%26 = getelementptr inbounds {i32, i64}, {i32, i64}* %4, i64 0, i32 1 | |
store i64 %22, i64* %26 | |
%27 = load {i32, i64}, {i32, i64}* %4, align 8 | |
ret {i32, i64} %27 | |
} | |
define {i32, i64} @utf8-4.decode_rune({i8*, i64}* %s, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca {i32, i64}, align 16 | |
%2 = alloca i8, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca i32, align 16 | |
%5 = alloca {i32, i64}, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca %utf8-4.Accept_Range, align 16 | |
%8 = alloca {i32, i64}, align 16 | |
%9 = alloca i8, align 16 | |
%10 = alloca {i32, i64}, align 16 | |
%11 = alloca {i32, i64}, align 16 | |
%12 = alloca i8, align 16 | |
%13 = alloca {i32, i64}, align 16 | |
%14 = alloca {i32, i64}, align 16 | |
%15 = alloca i8, align 16 | |
%16 = alloca {i32, i64}, align 16 | |
%17 = alloca {i32, i64}, align 16 | |
%18 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
; n | |
%19 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%20 = extractvalue {i8*, i64} %19, 1 | |
store i64 %20, i64* %0 | |
; IfStmt | |
%21 = load i64, i64* %0, align 8 | |
%22 = icmp slt i64 %21, 1 | |
%23 = zext i1 %22 to i8 | |
%24 = trunc i8 %23 to i1 | |
br i1 %24, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%25 = bitcast {i32, i64}* %1 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %1 | |
%27 = getelementptr inbounds {i32, i64}, {i32, i64}* %1, i64 0, i32 0 | |
store i32 65533, i32* %27 | |
%28 = getelementptr inbounds {i32, i64}, {i32, i64}* %1, i64 0, i32 1 | |
store i64 0, i64* %28 | |
%29 = load {i32, i64}, {i32, i64}* %1, align 8 | |
ret {i32, i64} %29 | |
if.done-2: | |
; s0 | |
; IndexExpr | |
%30 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%31 = extractvalue {i8*, i64} %30, 0 | |
%32 = extractvalue {i8*, i64} %30, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$60, i64 0, i32 0), i64 47}, i64 101, i64 10, i64 0, i64 %32) | |
%33 = getelementptr inbounds i8, i8* %31, i64 0 | |
%34 = load i8, i8* %33, align 1 | |
store i8 %34, i8* %2 | |
; x | |
; IndexExpr | |
%35 = load i8, i8* %2, align 1 | |
%36 = zext i8 %35 to i64 | |
%37 = trunc i64 %36 to i32 | |
%38 = getelementptr inbounds [256 x i8], [256 x i8]* @utf8-4.accept_sizes, i64 0, i32 %37 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$61, i64 0, i32 0), i64 47}, i64 102, i64 20, i64 %36, i64 256) | |
%39 = load i8, i8* %38, align 1 | |
store i8 %39, i8* %3 | |
; IfStmt | |
%40 = load i8, i8* %3, align 1 | |
%41 = icmp uge i8 %40, 240 | |
%42 = zext i1 %41 to i8 | |
%43 = trunc i8 %42 to i1 | |
br i1 %43, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; mask | |
%44 = load i8, i8* %3, align 1 | |
%45 = zext i8 %44 to i32 | |
%46 = shl i32 %45, 31 | |
%47 = lshr i32 %46, 31 | |
store i32 %47, i32* %4 | |
; ReturnStmt | |
; IndexExpr | |
%48 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%49 = extractvalue {i8*, i64} %48, 0 | |
%50 = extractvalue {i8*, i64} %48, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$62, i64 0, i32 0), i64 47}, i64 105, i64 17, i64 0, i64 %50) | |
%51 = getelementptr inbounds i8, i8* %49, i64 0 | |
%52 = load i8, i8* %51, align 1 | |
%53 = zext i8 %52 to i32 | |
%54 = load i32, i32* %4, align 4 | |
%55 = xor i32 %54, -1 | |
%56 = and i32 %53, %55 | |
%57 = load i32, i32* %4, align 4 | |
%58 = and i32 65533, %57 | |
%59 = or i32 %56, %58 | |
%60 = bitcast {i32, i64}* %5 to %..rawptr | |
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %5 | |
%62 = getelementptr inbounds {i32, i64}, {i32, i64}* %5, i64 0, i32 0 | |
store i32 %59, i32* %62 | |
%63 = getelementptr inbounds {i32, i64}, {i32, i64}* %5, i64 0, i32 1 | |
store i64 1, i64* %63 | |
%64 = load {i32, i64}, {i32, i64}* %5, align 8 | |
ret {i32, i64} %64 | |
if.done-4: | |
; sz | |
%65 = load i8, i8* %3, align 1 | |
%66 = and i8 %65, 7 | |
store i8 %66, i8* %6 | |
; accept | |
; IndexExpr | |
%67 = load i8, i8* %3, align 1 | |
%68 = lshr i8 %67, 4 | |
%69 = zext i8 %68 to i64 | |
%70 = trunc i64 %69 to i32 | |
%71 = getelementptr inbounds [5 x %utf8-4.Accept_Range], [5 x %utf8-4.Accept_Range]* @utf8-4.accept_ranges, i64 0, i32 %70 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$63, i64 0, i32 0), i64 47}, i64 108, i64 26, i64 %69, i64 5) | |
%72 = load %utf8-4.Accept_Range, %utf8-4.Accept_Range* %71, align 1 | |
store %utf8-4.Accept_Range %72, %utf8-4.Accept_Range* %7 | |
; IfStmt | |
%73 = load i64, i64* %0, align 8 | |
%74 = load i8, i8* %6, align 1 | |
%75 = zext i8 %74 to i64 | |
%76 = icmp slt i64 %73, %75 | |
%77 = zext i1 %76 to i8 | |
%78 = trunc i8 %77 to i1 | |
br i1 %78, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; ReturnStmt | |
%79 = bitcast {i32, i64}* %8 to %..rawptr | |
%80 = call %..rawptr @__mem_zero(%..rawptr %79, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %8 | |
%81 = getelementptr inbounds {i32, i64}, {i32, i64}* %8, i64 0, i32 0 | |
store i32 65533, i32* %81 | |
%82 = getelementptr inbounds {i32, i64}, {i32, i64}* %8, i64 0, i32 1 | |
store i64 1, i64* %82 | |
%83 = load {i32, i64}, {i32, i64}* %8, align 8 | |
ret {i32, i64} %83 | |
if.done-6: | |
; b1 | |
; IndexExpr | |
%84 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%85 = extractvalue {i8*, i64} %84, 0 | |
%86 = extractvalue {i8*, i64} %84, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$64, i64 0, i32 0), i64 47}, i64 112, i64 10, i64 1, i64 %86) | |
%87 = getelementptr inbounds i8, i8* %85, i64 1 | |
%88 = load i8, i8* %87, align 1 | |
store i8 %88, i8* %9 | |
; IfStmt | |
%89 = load i8, i8* %9, align 1 | |
; SelectorExpr | |
%90 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %7, i64 0, i32 0 | |
%91 = load i8, i8* %90, align 1 | |
%92 = icmp ult i8 %89, %91 | |
%93 = zext i1 %92 to i8 | |
%94 = trunc i8 %93 to i1 | |
br i1 %94, label %if.then-8, label %cmp.or-7 | |
cmp.or-7: | |
; SelectorExpr | |
%95 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %7, i64 0, i32 1 | |
%96 = load i8, i8* %95, align 1 | |
%97 = load i8, i8* %9, align 1 | |
%98 = icmp ult i8 %96, %97 | |
%99 = zext i1 %98 to i8 | |
%100 = trunc i8 %99 to i1 | |
br i1 %100, label %if.then-8, label %if.done-9 | |
if.then-8: | |
; ReturnStmt | |
%101 = bitcast {i32, i64}* %10 to %..rawptr | |
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %10 | |
%103 = getelementptr inbounds {i32, i64}, {i32, i64}* %10, i64 0, i32 0 | |
store i32 65533, i32* %103 | |
%104 = getelementptr inbounds {i32, i64}, {i32, i64}* %10, i64 0, i32 1 | |
store i64 1, i64* %104 | |
%105 = load {i32, i64}, {i32, i64}* %10, align 8 | |
ret {i32, i64} %105 | |
if.done-9: | |
; IfStmt | |
%106 = load i8, i8* %6, align 1 | |
%107 = icmp eq i8 %106, 2 | |
%108 = zext i1 %107 to i8 | |
%109 = trunc i8 %108 to i1 | |
br i1 %109, label %if.then-10, label %if.done-11 | |
if.then-10: | |
; ReturnStmt | |
%110 = load i8, i8* %2, align 1 | |
%111 = and i8 %110, 31 | |
%112 = zext i8 %111 to i32 | |
%113 = shl i32 %112, 6 | |
%114 = load i8, i8* %9, align 1 | |
%115 = and i8 %114, 63 | |
%116 = zext i8 %115 to i32 | |
%117 = or i32 %113, %116 | |
%118 = bitcast {i32, i64}* %11 to %..rawptr | |
%119 = call %..rawptr @__mem_zero(%..rawptr %118, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %11 | |
%120 = getelementptr inbounds {i32, i64}, {i32, i64}* %11, i64 0, i32 0 | |
store i32 %117, i32* %120 | |
%121 = getelementptr inbounds {i32, i64}, {i32, i64}* %11, i64 0, i32 1 | |
store i64 2, i64* %121 | |
%122 = load {i32, i64}, {i32, i64}* %11, align 8 | |
ret {i32, i64} %122 | |
if.done-11: | |
; b2 | |
; IndexExpr | |
%123 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%124 = extractvalue {i8*, i64} %123, 0 | |
%125 = extractvalue {i8*, i64} %123, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$65, i64 0, i32 0), i64 47}, i64 119, i64 10, i64 2, i64 %125) | |
%126 = getelementptr inbounds i8, i8* %124, i64 2 | |
%127 = load i8, i8* %126, align 1 | |
store i8 %127, i8* %12 | |
; IfStmt | |
%128 = load i8, i8* %12, align 1 | |
%129 = icmp ult i8 %128, 128 | |
%130 = zext i1 %129 to i8 | |
%131 = trunc i8 %130 to i1 | |
br i1 %131, label %if.then-13, label %cmp.or-12 | |
cmp.or-12: | |
%132 = load i8, i8* %12, align 1 | |
%133 = icmp ult i8 191, %132 | |
%134 = zext i1 %133 to i8 | |
%135 = trunc i8 %134 to i1 | |
br i1 %135, label %if.then-13, label %if.done-14 | |
if.then-13: | |
; ReturnStmt | |
%136 = bitcast {i32, i64}* %13 to %..rawptr | |
%137 = call %..rawptr @__mem_zero(%..rawptr %136, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %13 | |
%138 = getelementptr inbounds {i32, i64}, {i32, i64}* %13, i64 0, i32 0 | |
store i32 65533, i32* %138 | |
%139 = getelementptr inbounds {i32, i64}, {i32, i64}* %13, i64 0, i32 1 | |
store i64 1, i64* %139 | |
%140 = load {i32, i64}, {i32, i64}* %13, align 8 | |
ret {i32, i64} %140 | |
if.done-14: | |
; IfStmt | |
%141 = load i8, i8* %6, align 1 | |
%142 = icmp eq i8 %141, 3 | |
%143 = zext i1 %142 to i8 | |
%144 = trunc i8 %143 to i1 | |
br i1 %144, label %if.then-15, label %if.done-16 | |
if.then-15: | |
; ReturnStmt | |
%145 = load i8, i8* %2, align 1 | |
%146 = and i8 %145, 15 | |
%147 = zext i8 %146 to i32 | |
%148 = shl i32 %147, 12 | |
%149 = load i8, i8* %9, align 1 | |
%150 = and i8 %149, 63 | |
%151 = zext i8 %150 to i32 | |
%152 = shl i32 %151, 6 | |
%153 = or i32 %148, %152 | |
%154 = load i8, i8* %12, align 1 | |
%155 = and i8 %154, 63 | |
%156 = zext i8 %155 to i32 | |
%157 = or i32 %153, %156 | |
%158 = bitcast {i32, i64}* %14 to %..rawptr | |
%159 = call %..rawptr @__mem_zero(%..rawptr %158, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %14 | |
%160 = getelementptr inbounds {i32, i64}, {i32, i64}* %14, i64 0, i32 0 | |
store i32 %157, i32* %160 | |
%161 = getelementptr inbounds {i32, i64}, {i32, i64}* %14, i64 0, i32 1 | |
store i64 3, i64* %161 | |
%162 = load {i32, i64}, {i32, i64}* %14, align 8 | |
ret {i32, i64} %162 | |
if.done-16: | |
; b3 | |
; IndexExpr | |
%163 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%164 = extractvalue {i8*, i64} %163, 0 | |
%165 = extractvalue {i8*, i64} %163, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$66, i64 0, i32 0), i64 47}, i64 126, i64 10, i64 3, i64 %165) | |
%166 = getelementptr inbounds i8, i8* %164, i64 3 | |
%167 = load i8, i8* %166, align 1 | |
store i8 %167, i8* %15 | |
; IfStmt | |
%168 = load i8, i8* %15, align 1 | |
%169 = icmp ult i8 %168, 128 | |
%170 = zext i1 %169 to i8 | |
%171 = trunc i8 %170 to i1 | |
br i1 %171, label %if.then-18, label %cmp.or-17 | |
cmp.or-17: | |
%172 = load i8, i8* %15, align 1 | |
%173 = icmp ult i8 191, %172 | |
%174 = zext i1 %173 to i8 | |
%175 = trunc i8 %174 to i1 | |
br i1 %175, label %if.then-18, label %if.done-19 | |
if.then-18: | |
; ReturnStmt | |
%176 = bitcast {i32, i64}* %16 to %..rawptr | |
%177 = call %..rawptr @__mem_zero(%..rawptr %176, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %16 | |
%178 = getelementptr inbounds {i32, i64}, {i32, i64}* %16, i64 0, i32 0 | |
store i32 65533, i32* %178 | |
%179 = getelementptr inbounds {i32, i64}, {i32, i64}* %16, i64 0, i32 1 | |
store i64 1, i64* %179 | |
%180 = load {i32, i64}, {i32, i64}* %16, align 8 | |
ret {i32, i64} %180 | |
if.done-19: | |
; ReturnStmt | |
%181 = load i8, i8* %2, align 1 | |
%182 = and i8 %181, 7 | |
%183 = zext i8 %182 to i32 | |
%184 = shl i32 %183, 18 | |
%185 = load i8, i8* %9, align 1 | |
%186 = and i8 %185, 63 | |
%187 = zext i8 %186 to i32 | |
%188 = shl i32 %187, 12 | |
%189 = or i32 %184, %188 | |
%190 = load i8, i8* %12, align 1 | |
%191 = and i8 %190, 63 | |
%192 = zext i8 %191 to i32 | |
%193 = shl i32 %192, 6 | |
%194 = or i32 %189, %193 | |
%195 = load i8, i8* %15, align 1 | |
%196 = and i8 %195, 63 | |
%197 = zext i8 %196 to i32 | |
%198 = or i32 %194, %197 | |
%199 = bitcast {i32, i64}* %17 to %..rawptr | |
%200 = call %..rawptr @__mem_zero(%..rawptr %199, i64 16) | |
store {i32, i64} zeroinitializer, {i32, i64}* %17 | |
%201 = getelementptr inbounds {i32, i64}, {i32, i64}* %17, i64 0, i32 0 | |
store i32 %198, i32* %201 | |
%202 = getelementptr inbounds {i32, i64}, {i32, i64}* %17, i64 0, i32 1 | |
store i64 4, i64* %202 | |
%203 = load {i32, i64}, {i32, i64}* %17, align 8 | |
ret {i32, i64} %203 | |
} | |
define i8 @utf8-4.valid_rune(i32 %r, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
store i32 %r, i32* %0 | |
; IfStmt | |
%1 = load i32, i32* %0, align 4 | |
%2 = icmp slt i32 %1, 0 | |
%3 = zext i1 %2 to i8 | |
%4 = trunc i8 %3 to i1 | |
br i1 %4, label %if.then-1, label %if.else-2 | |
if.then-1: | |
; ReturnStmt | |
ret i8 0 | |
if.else-2: | |
; IfStmt | |
%5 = load i32, i32* %0, align 4 | |
%6 = icmp sle i32 55296, %5 | |
%7 = zext i1 %6 to i8 | |
%8 = trunc i8 %7 to i1 | |
br i1 %8, label %cmp.and-3, label %if.else-5 | |
cmp.and-3: | |
%9 = load i32, i32* %0, align 4 | |
%10 = icmp sle i32 %9, 57343 | |
%11 = zext i1 %10 to i8 | |
%12 = trunc i8 %11 to i1 | |
br i1 %12, label %if.then-4, label %if.else-5 | |
if.then-4: | |
; ReturnStmt | |
ret i8 0 | |
if.else-5: | |
; IfStmt | |
%13 = load i32, i32* %0, align 4 | |
%14 = icmp sgt i32 %13, 1114111 | |
%15 = zext i1 %14 to i8 | |
%16 = trunc i8 %15 to i1 | |
br i1 %16, label %if.then-6, label %if.done-7 | |
if.then-6: | |
; ReturnStmt | |
ret i8 0 | |
if.done-7: | |
; ReturnStmt | |
ret i8 1 | |
} | |
define i64 @utf8-4.rune_count_from_string(%..string %s, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i8*, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
store %..string %s, %..string* %0 | |
; ReturnStmt | |
%4 = load %..string, %..string* %0, align 8 | |
%5 = extractvalue %..string %4, 0 | |
%6 = bitcast i8** %1 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8) | |
store i8* zeroinitializer, i8** %1 | |
store i8* %5, i8** %1 | |
%8 = extractvalue %..string %4, 1 | |
%9 = sub i64 %8, 0 | |
%10 = load i8*, i8** %1, align 8 | |
%11 = getelementptr inbounds i8, i8* %10, i64 0 | |
%12 = bitcast {i8*, i64}* %2 to %..rawptr | |
%13 = call %..rawptr @__mem_zero(%..rawptr %12, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
%14 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0 | |
store i8* %11, i8** %14 | |
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1 | |
store i64 %9, i64* %15 | |
%16 = load {i8*, i64}, {i8*, i64}* %2, align 8 | |
%17 = bitcast {i8*, i64}* %3 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
store {i8*, i64} %16, {i8*, i64}* %3 | |
%19 = call i64 @utf8-4.rune_count({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %19 | |
} | |
define i64 @utf8-4.rune_count({i8*, i64}* %s, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca i8, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca %utf8-4.Accept_Range, align 16 | |
%7 = alloca i8, align 16 | |
%8 = alloca i8, align 16 | |
%9 = alloca i8, align 16 | |
%10 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
; count | |
store i64 0, i64* %0 | |
; n | |
%11 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%12 = extractvalue {i8*, i64} %11, 1 | |
store i64 %12, i64* %1 | |
; ForStmt | |
; i | |
store i64 0, i64* %2 | |
br label %for.loop-1 | |
for.loop-1: | |
%13 = load i64, i64* %2, align 8 | |
%14 = load i64, i64* %1, align 8 | |
%15 = icmp slt i64 %13, %14 | |
%16 = zext i1 %15 to i8 | |
%17 = trunc i8 %16 to i1 | |
br i1 %17, label %for.body-2, label %for.done-26 | |
for.body-2: | |
; DeferStmt | |
; si | |
; IndexExpr | |
%18 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%19 = extractvalue {i8*, i64} %18, 0 | |
%20 = load i64, i64* %2, align 8 | |
%21 = extractvalue {i8*, i64} %18, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$67, i64 0, i32 0), i64 47}, i64 223, i64 11, i64 %20, i64 %21) | |
%22 = getelementptr inbounds i8, i8* %19, i64 %20 | |
%23 = load i8, i8* %22, align 1 | |
store i8 %23, i8* %3 | |
; IfStmt | |
%24 = load i8, i8* %3, align 1 | |
%25 = icmp ult i8 %24, 128 | |
%26 = zext i1 %25 to i8 | |
%27 = trunc i8 %26 to i1 | |
br i1 %27, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; AssignStmt | |
%28 = load i64, i64* %2, align 8 | |
%29 = add i64 %28, 1 | |
store i64 %29, i64* %2 | |
; defer | |
; AssignStmt | |
%30 = load i64, i64* %0, align 8 | |
%31 = add i64 %30, 1 | |
store i64 %31, i64* %0 | |
; continue | |
br label %for.loop-1 | |
if.done-4: | |
; x | |
; IndexExpr | |
%32 = load i8, i8* %3, align 1 | |
%33 = zext i8 %32 to i64 | |
%34 = trunc i64 %33 to i32 | |
%35 = getelementptr inbounds [256 x i8], [256 x i8]* @utf8-4.accept_sizes, i64 0, i32 %34 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$68, i64 0, i32 0), i64 47}, i64 228, i64 21, i64 %33, i64 256) | |
%36 = load i8, i8* %35, align 1 | |
store i8 %36, i8* %4 | |
; IfStmt | |
%37 = load i8, i8* %4, align 1 | |
%38 = icmp eq i8 %37, 241 | |
%39 = zext i1 %38 to i8 | |
%40 = trunc i8 %39 to i1 | |
br i1 %40, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; AssignStmt | |
%41 = load i64, i64* %2, align 8 | |
%42 = add i64 %41, 1 | |
store i64 %42, i64* %2 | |
; defer | |
; AssignStmt | |
%43 = load i64, i64* %0, align 8 | |
%44 = add i64 %43, 1 | |
store i64 %44, i64* %0 | |
; continue | |
br label %for.loop-1 | |
if.done-6: | |
; size | |
%45 = load i8, i8* %4, align 1 | |
%46 = and i8 %45, 7 | |
%47 = zext i8 %46 to i64 | |
store i64 %47, i64* %5 | |
; IfStmt | |
%48 = load i64, i64* %2, align 8 | |
%49 = load i64, i64* %5, align 8 | |
%50 = add i64 %48, %49 | |
%51 = load i64, i64* %1, align 8 | |
%52 = icmp sgt i64 %50, %51 | |
%53 = zext i1 %52 to i8 | |
%54 = trunc i8 %53 to i1 | |
br i1 %54, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; AssignStmt | |
%55 = load i64, i64* %2, align 8 | |
%56 = add i64 %55, 1 | |
store i64 %56, i64* %2 | |
; defer | |
; AssignStmt | |
%57 = load i64, i64* %0, align 8 | |
%58 = add i64 %57, 1 | |
store i64 %58, i64* %0 | |
; continue | |
br label %for.loop-1 | |
if.done-8: | |
; ar | |
; IndexExpr | |
%59 = load i8, i8* %4, align 1 | |
%60 = lshr i8 %59, 4 | |
%61 = zext i8 %60 to i64 | |
%62 = trunc i64 %61 to i32 | |
%63 = getelementptr inbounds [5 x %utf8-4.Accept_Range], [5 x %utf8-4.Accept_Range]* @utf8-4.accept_ranges, i64 0, i32 %62 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$69, i64 0, i32 0), i64 47}, i64 238, i64 23, i64 %61, i64 5) | |
%64 = load %utf8-4.Accept_Range, %utf8-4.Accept_Range* %63, align 1 | |
store %utf8-4.Accept_Range %64, %utf8-4.Accept_Range* %6 | |
; IfStmt | |
; b | |
; IndexExpr | |
%65 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%66 = extractvalue {i8*, i64} %65, 0 | |
%67 = load i64, i64* %2, align 8 | |
%68 = add i64 %67, 1 | |
%69 = extractvalue {i8*, i64} %65, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$6a, i64 0, i32 0), i64 47}, i64 239, i64 13, i64 %68, i64 %69) | |
%70 = getelementptr inbounds i8, i8* %66, i64 %68 | |
%71 = load i8, i8* %70, align 1 | |
store i8 %71, i8* %7 | |
%72 = load i8, i8* %7, align 1 | |
; SelectorExpr | |
%73 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %6, i64 0, i32 0 | |
%74 = load i8, i8* %73, align 1 | |
%75 = icmp ult i8 %72, %74 | |
%76 = zext i1 %75 to i8 | |
%77 = trunc i8 %76 to i1 | |
br i1 %77, label %if.then-10, label %cmp.or-9 | |
cmp.or-9: | |
; SelectorExpr | |
%78 = getelementptr inbounds %utf8-4.Accept_Range, %utf8-4.Accept_Range* %6, i64 0, i32 1 | |
%79 = load i8, i8* %78, align 1 | |
%80 = load i8, i8* %7, align 1 | |
%81 = icmp ult i8 %79, %80 | |
%82 = zext i1 %81 to i8 | |
%83 = trunc i8 %82 to i1 | |
br i1 %83, label %if.then-10, label %if.else-11 | |
if.then-10: | |
; AssignStmt | |
store i64 1, i64* %5 | |
br label %if.done-25 | |
if.else-11: | |
; IfStmt | |
%84 = load i64, i64* %5, align 8 | |
%85 = icmp eq i64 %84, 2 | |
%86 = zext i1 %85 to i8 | |
%87 = trunc i8 %86 to i1 | |
br i1 %87, label %if.then-12, label %if.else-13 | |
if.then-12: | |
br label %if.done-24 | |
if.else-13: | |
; IfStmt | |
; b | |
; IndexExpr | |
%88 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%89 = extractvalue {i8*, i64} %88, 0 | |
%90 = load i64, i64* %2, align 8 | |
%91 = add i64 %90, 2 | |
%92 = extractvalue {i8*, i64} %88, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$6b, i64 0, i32 0), i64 47}, i64 243, i64 20, i64 %91, i64 %92) | |
%93 = getelementptr inbounds i8, i8* %89, i64 %91 | |
%94 = load i8, i8* %93, align 1 | |
store i8 %94, i8* %8 | |
%95 = load i8, i8* %8, align 1 | |
%96 = icmp ult i8 %95, 128 | |
%97 = zext i1 %96 to i8 | |
%98 = trunc i8 %97 to i1 | |
br i1 %98, label %if.then-15, label %cmp.or-14 | |
cmp.or-14: | |
%99 = load i8, i8* %8, align 1 | |
%100 = icmp ult i8 191, %99 | |
%101 = zext i1 %100 to i8 | |
%102 = trunc i8 %101 to i1 | |
br i1 %102, label %if.then-15, label %if.else-16 | |
if.then-15: | |
; AssignStmt | |
store i64 1, i64* %5 | |
br label %if.done-23 | |
if.else-16: | |
; IfStmt | |
%103 = load i64, i64* %5, align 8 | |
%104 = icmp eq i64 %103, 3 | |
%105 = zext i1 %104 to i8 | |
%106 = trunc i8 %105 to i1 | |
br i1 %106, label %if.then-17, label %if.else-18 | |
if.then-17: | |
br label %if.done-22 | |
if.else-18: | |
; IfStmt | |
; b | |
; IndexExpr | |
%107 = load {i8*, i64}, {i8*, i64}* %s, align 8 | |
%108 = extractvalue {i8*, i64} %107, 0 | |
%109 = load i64, i64* %2, align 8 | |
%110 = add i64 %109, 3 | |
%111 = extractvalue {i8*, i64} %107, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([48 x i8], [48 x i8]* @__str$6c, i64 0, i32 0), i64 47}, i64 247, i64 20, i64 %110, i64 %111) | |
%112 = getelementptr inbounds i8, i8* %108, i64 %110 | |
%113 = load i8, i8* %112, align 1 | |
store i8 %113, i8* %9 | |
%114 = load i8, i8* %9, align 1 | |
%115 = icmp ult i8 %114, 128 | |
%116 = zext i1 %115 to i8 | |
%117 = trunc i8 %116 to i1 | |
br i1 %117, label %if.then-20, label %cmp.or-19 | |
cmp.or-19: | |
%118 = load i8, i8* %9, align 1 | |
%119 = icmp ult i8 191, %118 | |
%120 = zext i1 %119 to i8 | |
%121 = trunc i8 %120 to i1 | |
br i1 %121, label %if.then-20, label %if.done-21 | |
if.then-20: | |
; AssignStmt | |
store i64 1, i64* %5 | |
br label %if.done-21 | |
if.done-21: | |
br label %if.done-22 | |
if.done-22: | |
br label %if.done-23 | |
if.done-23: | |
br label %if.done-24 | |
if.done-24: | |
br label %if.done-25 | |
if.done-25: | |
; AssignStmt | |
%122 = load i64, i64* %5, align 8 | |
%123 = load i64, i64* %2, align 8 | |
%124 = add i64 %123, %122 | |
store i64 %124, i64* %2 | |
; defer | |
; AssignStmt | |
%125 = load i64, i64* %0, align 8 | |
%126 = add i64 %125, 1 | |
store i64 %126, i64* %0 | |
br label %for.loop-1 | |
for.done-26: | |
; ReturnStmt | |
%127 = load i64, i64* %0, align 8 | |
ret i64 %127 | |
} | |
define {i64, i64} @os-3.write_string(i64 %fd, %..string %str, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca i8*, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
%4 = alloca {i8*, i64}, align 16 | |
%5 = alloca {i64, i64}, align 16 | |
store i64 %fd, i64* %0 | |
store %..string %str, %..string* %1 | |
; ReturnStmt | |
%6 = load i64, i64* %0, align 8 | |
%7 = load %..string, %..string* %1, align 8 | |
%8 = extractvalue %..string %7, 0 | |
%9 = bitcast i8** %2 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 8) | |
store i8* zeroinitializer, i8** %2 | |
store i8* %8, i8** %2 | |
%11 = extractvalue %..string %7, 1 | |
%12 = sub i64 %11, 0 | |
%13 = load i8*, i8** %2, align 8 | |
%14 = getelementptr inbounds i8, i8* %13, i64 0 | |
%15 = bitcast {i8*, i64}* %3 to %..rawptr | |
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 0 | |
store i8* %14, i8** %17 | |
%18 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 1 | |
store i64 %12, i64* %18 | |
%19 = load {i8*, i64}, {i8*, i64}* %3, align 8 | |
%20 = bitcast {i8*, i64}* %4 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %4 | |
store {i8*, i64} %19, {i8*, i64}* %4 | |
%22 = call {i64, i64} @os_windows-6.write(i64 %6, {i8*, i64}* %4, %Context* noalias nonnull %__.context_ptr) | |
%23 = extractvalue {i64, i64} %22, 0 | |
%24 = extractvalue {i64, i64} %22, 1 | |
%25 = bitcast {i64, i64}* %5 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %5 | |
%27 = getelementptr inbounds {i64, i64}, {i64, i64}* %5, i64 0, i32 0 | |
store i64 %23, i64* %27 | |
%28 = getelementptr inbounds {i64, i64}, {i64, i64}* %5, i64 0, i32 1 | |
store i64 %24, i64* %28 | |
%29 = load {i64, i64}, {i64, i64}* %5, align 8 | |
ret {i64, i64} %29 | |
} | |
define {i64, i64} @os-3.write_byte(i64 %fd, i8 %b, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
%4 = alloca {i64, i64}, align 16 | |
store i64 %fd, i64* %0 | |
store i8 %b, i8* %1 | |
; ReturnStmt | |
%5 = load i64, i64* %0, align 8 | |
; CompoundLit | |
%6 = bitcast {i8*, i64}* %2 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
%8 = getelementptr inbounds [1 x i8], [1 x i8]* @__csba$1, i64 0, i32 0 | |
%9 = load i8, i8* %1, align 1 | |
%10 = getelementptr inbounds i8, i8* %8, i64 0 | |
store i8 %9, i8* %10 | |
%11 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0 | |
store i8* %8, i8** %11 | |
%12 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1 | |
store i64 1, i64* %12 | |
%13 = load {i8*, i64}, {i8*, i64}* %2, align 8 | |
%14 = bitcast {i8*, i64}* %3 to %..rawptr | |
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
store {i8*, i64} %13, {i8*, i64}* %3 | |
%16 = call {i64, i64} @os_windows-6.write(i64 %5, {i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr) | |
%17 = extractvalue {i64, i64} %16, 0 | |
%18 = extractvalue {i64, i64} %16, 1 | |
%19 = bitcast {i64, i64}* %4 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %4 | |
%21 = getelementptr inbounds {i64, i64}, {i64, i64}* %4, i64 0, i32 0 | |
store i64 %17, i64* %21 | |
%22 = getelementptr inbounds {i64, i64}, {i64, i64}* %4, i64 0, i32 1 | |
store i64 %18, i64* %22 | |
%23 = load {i64, i64}, {i64, i64}* %4, align 8 | |
ret {i64, i64} %23 | |
} | |
define {{i8*, i64}, i8} @os-3.read_entire_file(%..string %name, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca {i8*, i64}, align 16 | |
%2 = alloca i8, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca {{i8*, i64}, i8}, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca {{i8*, i64}, i8}, align 16 | |
%8 = alloca {{i8*, i64}, i8}, align 16 | |
%9 = alloca %Source_Code_Location, align 16 | |
%10 = alloca {i8*, i64}, align 16 | |
%11 = alloca {{i8*, i64}, i8}, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca {i8*, i64}, align 16 | |
%15 = alloca {i8*, i64}, align 16 | |
%16 = alloca %Source_Code_Location, align 16 | |
%17 = alloca {{i8*, i64}, i8}, align 16 | |
%18 = alloca {i8*, i64}, align 16 | |
%19 = alloca {{i8*, i64}, i8}, align 16 | |
store %..string %name, %..string* %0 | |
%20 = bitcast {i8*, i64}* %1 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %1 | |
%22 = bitcast i8* %2 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 1) | |
store i8 zeroinitializer, i8* %2 | |
; fd | |
; err | |
%24 = load %..string, %..string* %0, align 8 | |
%25 = call {i64, i64} @os_windows-6.open(%..string %24, i64 0, i32 0, %Context* noalias nonnull %__.context_ptr) | |
%26 = extractvalue {i64, i64} %25, 0 | |
%27 = extractvalue {i64, i64} %25, 1 | |
store i64 %26, i64* %3 | |
store i64 %27, i64* %4 | |
; IfStmt | |
%28 = load i64, i64* %4, align 8 | |
%29 = icmp ne i64 %28, 0 | |
%30 = zext i1 %29 to i8 | |
%31 = trunc i8 %30 to i1 | |
br i1 %31, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%32 = bitcast {{i8*, i64}, i8}* %5 to %..rawptr | |
%33 = call %..rawptr @__mem_zero(%..rawptr %32, i64 24) | |
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %5 | |
%34 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %5, i64 0, i32 0 | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %34 | |
%35 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %5, i64 0, i32 1 | |
store i8 0, i8* %35 | |
%36 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %5, align 8 | |
ret {{i8*, i64}, i8} %36 | |
if.done-2: | |
; DeferStmt | |
; length | |
%37 = bitcast i64* %6 to %..rawptr | |
%38 = call %..rawptr @__mem_zero(%..rawptr %37, i64 8) | |
store i64 zeroinitializer, i64* %6 | |
; IfStmt | |
; AssignStmt | |
%39 = load i64, i64* %3, align 8 | |
%40 = call {i64, i64} @os_windows-6.file_size(i64 %39, %Context* noalias nonnull %__.context_ptr) | |
%41 = extractvalue {i64, i64} %40, 0 | |
%42 = extractvalue {i64, i64} %40, 1 | |
store i64 %41, i64* %6 | |
store i64 %42, i64* %4 | |
%43 = load i64, i64* %4, align 8 | |
%44 = icmp ne i64 %43, 0 | |
%45 = zext i1 %44 to i8 | |
%46 = trunc i8 %45 to i1 | |
br i1 %46, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
%47 = bitcast {{i8*, i64}, i8}* %7 to %..rawptr | |
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 24) | |
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %7 | |
%49 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %7, i64 0, i32 0 | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %49 | |
%50 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %7, i64 0, i32 1 | |
store i8 0, i8* %50 | |
%51 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %7, align 8 | |
; defer | |
%52 = load i64, i64* %3, align 8 | |
call void @os_windows-6.close(i64 %52, %Context* noalias nonnull %__.context_ptr) | |
ret {{i8*, i64}, i8} %51 | |
if.done-4: | |
; IfStmt | |
%53 = load i64, i64* %6, align 8 | |
%54 = icmp sle i64 %53, 0 | |
%55 = zext i1 %54 to i8 | |
%56 = trunc i8 %55 to i1 | |
br i1 %56, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; ReturnStmt | |
%57 = bitcast {{i8*, i64}, i8}* %8 to %..rawptr | |
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 24) | |
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %8 | |
%59 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %8, i64 0, i32 0 | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %59 | |
%60 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %8, i64 0, i32 1 | |
store i8 1, i8* %60 | |
%61 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %8, align 8 | |
; defer | |
%62 = load i64, i64* %3, align 8 | |
call void @os_windows-6.close(i64 %62, %Context* noalias nonnull %__.context_ptr) | |
ret {{i8*, i64}, i8} %61 | |
if.done-6: | |
; AssignStmt | |
; make | |
%63 = load i64, i64* %6, align 8 | |
%64 = bitcast i64 %63 to i64 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$6d, i64 0, i32 0), i64 45}, i64 33, i64 22, i64 0, i64 %64, i64 %64) | |
%65 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$6e, i64 0, i32 0), i64 45}, i64 33, i64 14, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$6f, i64 0, i32 0), i64 16}) | |
%66 = bitcast %Source_Code_Location* %9 to %..rawptr | |
%67 = call %..rawptr @__mem_zero(%..rawptr %66, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %9 | |
store %Source_Code_Location %65, %Source_Code_Location* %9 | |
%68 = call %..rawptr @alloc(i64 %64, i64 1, %Source_Code_Location* %9, %Context* noalias nonnull %__.context_ptr) | |
%69 = bitcast %..rawptr %68 to i8* | |
%70 = bitcast {i8*, i64}* %10 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %10 | |
%72 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 0 | |
store i8* %69, i8** %72 | |
%73 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 1 | |
store i64 %64, i64* %73 | |
%74 = load {i8*, i64}, {i8*, i64}* %10, align 8 | |
store {i8*, i64} %74, {i8*, i64}* %1 | |
; IfStmt | |
%75 = load {i8*, i64}, {i8*, i64}* %1, align 8 | |
%76 = extractvalue {i8*, i64} %75, 0 | |
%77 = extractvalue {i8*, i64} %75, 1 | |
%78 = bitcast %..rawptr null to i8* | |
%79 = icmp eq i8* %76, %78 | |
%80 = icmp eq i64 %77, 0 | |
%81 = zext i1 %79 to i8 | |
%82 = zext i1 %80 to i8 | |
%83 = or i8 %81, %82 | |
%84 = trunc i8 %83 to i1 | |
br i1 %84, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
%85 = bitcast {{i8*, i64}, i8}* %11 to %..rawptr | |
%86 = call %..rawptr @__mem_zero(%..rawptr %85, i64 24) | |
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %11 | |
%87 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %11, i64 0, i32 0 | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %87 | |
%88 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %11, i64 0, i32 1 | |
store i8 0, i8* %88 | |
%89 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %11, align 8 | |
; defer | |
%90 = load i64, i64* %3, align 8 | |
call void @os_windows-6.close(i64 %90, %Context* noalias nonnull %__.context_ptr) | |
ret {{i8*, i64}, i8} %89 | |
if.done-8: | |
; bytes_read | |
; read_err | |
%91 = load i64, i64* %3, align 8 | |
%92 = load {i8*, i64}, {i8*, i64}* %1, align 8 | |
%93 = bitcast {i8*, i64}* %14 to %..rawptr | |
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %14 | |
store {i8*, i64} %92, {i8*, i64}* %14 | |
%95 = call {i64, i64} @os_windows-6.read(i64 %91, {i8*, i64}* %14, %Context* noalias nonnull %__.context_ptr) | |
%96 = extractvalue {i64, i64} %95, 0 | |
%97 = extractvalue {i64, i64} %95, 1 | |
store i64 %96, i64* %12 | |
store i64 %97, i64* %13 | |
; IfStmt | |
%98 = load i64, i64* %13, align 8 | |
%99 = icmp ne i64 %98, 0 | |
%100 = zext i1 %99 to i8 | |
%101 = trunc i8 %100 to i1 | |
br i1 %101, label %if.then-9, label %if.done-10 | |
if.then-9: | |
%102 = load {i8*, i64}, {i8*, i64}* %1, align 8 | |
%103 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$70, i64 0, i32 0), i64 45}, i64 40, i64 3, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$71, i64 0, i32 0), i64 16}) | |
%104 = bitcast {i8*, i64}* %15 to %..rawptr | |
%105 = call %..rawptr @__mem_zero(%..rawptr %104, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %15 | |
store {i8*, i64} %102, {i8*, i64}* %15 | |
%106 = bitcast %Source_Code_Location* %16 to %..rawptr | |
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %16 | |
store %Source_Code_Location %103, %Source_Code_Location* %16 | |
call void @_preload-0.free_slice-19009({i8*, i64}* %15, %Source_Code_Location* %16, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%108 = bitcast {{i8*, i64}, i8}* %17 to %..rawptr | |
%109 = call %..rawptr @__mem_zero(%..rawptr %108, i64 24) | |
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %17 | |
%110 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %17, i64 0, i32 0 | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %110 | |
%111 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %17, i64 0, i32 1 | |
store i8 0, i8* %111 | |
%112 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %17, align 8 | |
; defer | |
%113 = load i64, i64* %3, align 8 | |
call void @os_windows-6.close(i64 %113, %Context* noalias nonnull %__.context_ptr) | |
ret {{i8*, i64}, i8} %112 | |
if.done-10: | |
; ReturnStmt | |
; SliceExpr | |
%114 = load i64, i64* %12, align 8 | |
%115 = load {i8*, i64}, {i8*, i64}* %1, align 8 | |
%116 = extractvalue {i8*, i64} %115, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([46 x i8], [46 x i8]* @__str$72, i64 0, i32 0), i64 45}, i64 43, i64 13, i64 0, i64 %114, i64 %116) | |
%117 = extractvalue {i8*, i64} %115, 0 | |
%118 = getelementptr inbounds i8, i8* %117, i64 0 | |
%119 = sub i64 %114, 0 | |
%120 = bitcast {i8*, i64}* %18 to %..rawptr | |
%121 = call %..rawptr @__mem_zero(%..rawptr %120, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %18 | |
%122 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 0 | |
store i8* %118, i8** %122 | |
%123 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 1 | |
store i64 %119, i64* %123 | |
%124 = load {i8*, i64}, {i8*, i64}* %18, align 8 | |
%125 = bitcast {{i8*, i64}, i8}* %19 to %..rawptr | |
%126 = call %..rawptr @__mem_zero(%..rawptr %125, i64 24) | |
store {{i8*, i64}, i8} zeroinitializer, {{i8*, i64}, i8}* %19 | |
%127 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %19, i64 0, i32 0 | |
store {i8*, i64} %124, {i8*, i64}* %127 | |
%128 = getelementptr inbounds {{i8*, i64}, i8}, {{i8*, i64}, i8}* %19, i64 0, i32 1 | |
store i8 1, i8* %128 | |
%129 = load {{i8*, i64}, i8}, {{i8*, i64}, i8}* %19, align 8 | |
; defer | |
%130 = load i64, i64* %3, align 8 | |
call void @os_windows-6.close(i64 %130, %Context* noalias nonnull %__.context_ptr) | |
ret {{i8*, i64}, i8} %129 | |
} | |
define i8 @os-3.write_entire_file(%..string %name, {i8*, i64}* %data, i1 %truncate, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca i8, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca {i8*, i64}, align 16 | |
store %..string %name, %..string* %0 | |
%8 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%9 = zext i1 %truncate to i8 | |
store i8 %9, i8* %1 | |
%10 = bitcast i8* %2 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 1) | |
store i8 zeroinitializer, i8* %2 | |
; flags | |
store i64 65, i64* %3 | |
; IfStmt | |
%12 = load i8, i8* %1, align 1 | |
%13 = trunc i8 %12 to i1 | |
br i1 %13, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; AssignStmt | |
%14 = load i64, i64* %3, align 8 | |
%15 = or i64 %14, 512 | |
store i64 %15, i64* %3 | |
br label %if.done-2 | |
if.done-2: | |
; fd | |
; err | |
%16 = load %..string, %..string* %0, align 8 | |
%17 = load i64, i64* %3, align 8 | |
%18 = call {i64, i64} @os_windows-6.open(%..string %16, i64 %17, i32 0, %Context* noalias nonnull %__.context_ptr) | |
%19 = extractvalue {i64, i64} %18, 0 | |
%20 = extractvalue {i64, i64} %18, 1 | |
store i64 %19, i64* %4 | |
store i64 %20, i64* %5 | |
; IfStmt | |
%21 = load i64, i64* %5, align 8 | |
%22 = icmp ne i64 %21, 0 | |
%23 = zext i1 %22 to i8 | |
%24 = trunc i8 %23 to i1 | |
br i1 %24, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
ret i8 0 | |
if.done-4: | |
; DeferStmt | |
; write_err | |
%25 = load i64, i64* %4, align 8 | |
%26 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%27 = bitcast {i8*, i64}* %7 to %..rawptr | |
%28 = call %..rawptr @__mem_zero(%..rawptr %27, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %7 | |
store {i8*, i64} %26, {i8*, i64}* %7 | |
%29 = call {i64, i64} @os_windows-6.write(i64 %25, {i8*, i64}* %7, %Context* noalias nonnull %__.context_ptr) | |
%30 = extractvalue {i64, i64} %29, 0 | |
%31 = extractvalue {i64, i64} %29, 1 | |
store i64 %31, i64* %6 | |
; ReturnStmt | |
%32 = load i64, i64* %6, align 8 | |
%33 = icmp eq i64 %32, 0 | |
%34 = zext i1 %33 to i8 | |
; defer | |
%35 = load i64, i64* %4, align 8 | |
call void @os_windows-6.close(i64 %35, %Context* noalias nonnull %__.context_ptr) | |
ret i8 %34 | |
} | |
define void @main-0.set_proc(%..rawptr %lib_, %..rawptr %p, %..string %name, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca %..rawptr, align 16 | |
%2 = alloca %..string, align 16 | |
%3 = alloca %..rawptr, align 16 | |
%4 = alloca void ()*, align 16 | |
%5 = alloca %..string, align 16 | |
%6 = alloca %..any, align 16 | |
%7 = alloca %..any, align 16 | |
%8 = alloca {%..any*, i64}, align 16 | |
%9 = alloca [2 x %..any], align 16 | |
%10 = alloca {%..any*, i64}, align 16 | |
%11 = alloca %Source_Code_Location, align 16 | |
store %..rawptr %lib_, %..rawptr* %0 | |
store %..rawptr %p, %..rawptr* %1 | |
store %..string %name, %..string* %2 | |
; lib | |
%12 = load %..rawptr, %..rawptr* %0, align 8 | |
%13 = bitcast %..rawptr %12 to %..rawptr | |
%14 = bitcast %..rawptr %13 to %..rawptr | |
store %..rawptr %14, %..rawptr* %3 | |
; res | |
; SelectorExpr | |
%15 = load %..string, %..string* %2, align 8 | |
%16 = call ccc void ()* @opengl-48.get_proc_address(%..string %15) | |
store void ()* %16, void ()** %4 | |
; IfStmt | |
%17 = load void ()*, void ()** %4, align 8 | |
%18 = icmp eq void ()* %17, zeroinitializer | |
%19 = zext i1 %18 to i8 | |
%20 = trunc i8 %19 to i1 | |
br i1 %20, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; AssignStmt | |
; SelectorExpr | |
%21 = load %..rawptr, %..rawptr* %3, align 8 | |
%22 = load %..string, %..string* %2, align 8 | |
%23 = call ccc void ()* @misc-49.get_proc_address(%..rawptr %21, %..string %22) | |
store void ()* %23, void ()** %4 | |
br label %if.done-2 | |
if.done-2: | |
; IfStmt | |
%24 = load void ()*, void ()** %4, align 8 | |
%25 = icmp eq void ()* %24, zeroinitializer | |
%26 = zext i1 %25 to i8 | |
%27 = trunc i8 %26 to i1 | |
br i1 %27, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; SelectorExpr | |
%28 = load %..string, %..string* %2, align 8 | |
%29 = bitcast %..string* %5 to %..rawptr | |
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 16) | |
store %..string zeroinitializer, %..string* %5 | |
store %..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$73, i64 0, i32 0), i64 14}, %..string* %5 | |
%31 = load %..string, %..string* %5, align 8 | |
%32 = bitcast %..any* %6 to %..rawptr | |
%33 = call %..rawptr @__mem_zero(%..rawptr %32, i64 16) | |
store %..any zeroinitializer, %..any* %6 | |
%34 = bitcast %..string* %5 to %..rawptr | |
%35 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%36 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 0 | |
store %..rawptr %34, %..rawptr* %36 | |
%37 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 1 | |
store %Type_Info* %35, %Type_Info** %37 | |
%38 = load %..any, %..any* %6, align 8 | |
%39 = bitcast %..any* %7 to %..rawptr | |
%40 = call %..rawptr @__mem_zero(%..rawptr %39, i64 16) | |
store %..any zeroinitializer, %..any* %7 | |
%41 = bitcast %..string* %2 to %..rawptr | |
%42 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%43 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 0 | |
store %..rawptr %41, %..rawptr* %43 | |
%44 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 1 | |
store %Type_Info* %42, %Type_Info** %44 | |
%45 = load %..any, %..any* %7, align 8 | |
; variadic call argument generation | |
%46 = bitcast {%..any*, i64}* %8 to %..rawptr | |
%47 = call %..rawptr @__mem_zero(%..rawptr %46, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8 | |
%48 = bitcast [2 x %..any]* %9 to %..rawptr | |
%49 = call %..rawptr @__mem_zero(%..rawptr %48, i64 32) | |
store [2 x %..any] zeroinitializer, [2 x %..any]* %9 | |
%50 = getelementptr inbounds [2 x %..any], [2 x %..any]* %9, i64 0, i32 0 | |
store %..any %38, %..any* %50 | |
%51 = getelementptr inbounds [2 x %..any], [2 x %..any]* %9, i64 0, i32 1 | |
store %..any %45, %..any* %51 | |
%52 = getelementptr inbounds [2 x %..any], [2 x %..any]* %9, i64 0, i32 0 | |
%53 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0 | |
store %..any* %52, %..any** %53 | |
%54 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1 | |
store i64 2, i64* %54 | |
%55 = load {%..any*, i64}, {%..any*, i64}* %8, align 8 | |
%56 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$74, i64 0, i32 0), i64 50}, i64 58, i64 17, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$75, i64 0, i32 0), i64 8}) | |
%57 = bitcast {%..any*, i64}* %10 to %..rawptr | |
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10 | |
store {%..any*, i64} %55, {%..any*, i64}* %10 | |
%59 = bitcast %Source_Code_Location* %11 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11 | |
store %Source_Code_Location %56, %Source_Code_Location* %11 | |
call void @imgui_console-28.log({%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-4 | |
if.done-4: | |
; AssignStmt | |
%61 = load %..rawptr, %..rawptr* %1, align 8 | |
%62 = bitcast %..rawptr %61 to %..rawptr* | |
%63 = getelementptr inbounds %..rawptr, %..rawptr* %62, i64 0 | |
%64 = load void ()*, void ()** %4, align 8 | |
%65 = bitcast void ()* %64 to %..rawptr | |
store %..rawptr %65, %..rawptr* %63 | |
ret void | |
} | |
define %..rawptr @main-0.load_lib(%..string %str, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
store %..string %str, %..string* %0 | |
; ReturnStmt | |
; SelectorExpr | |
%1 = load %..string, %..string* %0, align 8 | |
%2 = call %..rawptr @misc-49.load_library(%..string %1, %Context* noalias nonnull %__.context_ptr) | |
%3 = bitcast %..rawptr %2 to %..rawptr | |
ret %..rawptr %3 | |
} | |
define void @main-0.free_lib(%..rawptr %lib, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
store %..rawptr %lib, %..rawptr* %0 | |
; SelectorExpr | |
%1 = load %..rawptr, %..rawptr* %0, align 8 | |
%2 = bitcast %..rawptr %1 to %..rawptr | |
%3 = bitcast %..rawptr %2 to %..rawptr | |
call void @misc-49.free_library(%..rawptr %3, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @main-0.set_user({%..string*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Source_Code_Location, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = alloca %..string, align 16 | |
%3 = alloca %..any, align 16 | |
%4 = alloca {%..any*, i64}, align 16 | |
%5 = alloca [1 x %..any], align 16 | |
%6 = alloca {%..any*, i64}, align 16 | |
%7 = alloca %Source_Code_Location, align 16 | |
%8 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
; IfStmt | |
%9 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%10 = extractvalue {%..string*, i64} %9, 1 | |
%11 = icmp eq i64 %10, 2 | |
%12 = zext i1 %11 to i8 | |
%13 = trunc i8 %12 to i1 | |
br i1 %13, label %if.then-1, label %if.else-2 | |
if.then-1: | |
; SelectorExpr | |
; SelectorExpr | |
%14 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
%15 = load %..string, %..string* %14, align 8 | |
%16 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$76, i64 0, i32 0), i64 50}, i64 74, i64 9, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$77, i64 0, i32 0), i64 8}) | |
%17 = bitcast %Source_Code_Location* %0 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %0 | |
store %Source_Code_Location %16, %Source_Code_Location* %0 | |
call void @free_string(%..string %15, %Source_Code_Location* %0, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SelectorExpr | |
%19 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
%20 = load %..string, %..string* %19, align 8 | |
%21 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$78, i64 0, i32 0), i64 50}, i64 75, i64 9, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$79, i64 0, i32 0), i64 8}) | |
%22 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %21, %Source_Code_Location* %1 | |
call void @free_string(%..string %20, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%24 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
; SelectorExpr | |
; IndexExpr | |
%25 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%26 = extractvalue {%..string*, i64} %25, 0 | |
%27 = extractvalue {%..string*, i64} %25, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7a, i64 0, i32 0), i64 50}, i64 77, i64 62, i64 0, i64 %27) | |
%28 = getelementptr inbounds %..string, %..string* %26, i64 0 | |
%29 = load %..string, %..string* %28, align 8 | |
%30 = call %..string @strings-12.new_string(%..string %29, %Context* noalias nonnull %__.context_ptr) | |
store %..string %30, %..string* %24 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%31 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
; SelectorExpr | |
; IndexExpr | |
%32 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%33 = extractvalue {%..string*, i64} %32, 0 | |
%34 = extractvalue {%..string*, i64} %32, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7b, i64 0, i32 0), i64 50}, i64 78, i64 62, i64 1, i64 %34) | |
%35 = getelementptr inbounds %..string, %..string* %33, i64 1 | |
%36 = load %..string, %..string* %35, align 8 | |
%37 = call %..string @strings-12.new_string(%..string %36, %Context* noalias nonnull %__.context_ptr) | |
store %..string %37, %..string* %31 | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr) | |
br label %if.done-3 | |
if.else-2: | |
; SelectorExpr | |
%38 = bitcast %..string* %2 to %..rawptr | |
%39 = call %..rawptr @__mem_zero(%..rawptr %38, i64 16) | |
store %..string zeroinitializer, %..string* %2 | |
store %..string {i8* getelementptr inbounds ([43 x i8], [43 x i8]* @__str$7c, i64 0, i32 0), i64 42}, %..string* %2 | |
%40 = load %..string, %..string* %2, align 8 | |
%41 = bitcast %..any* %3 to %..rawptr | |
%42 = call %..rawptr @__mem_zero(%..rawptr %41, i64 16) | |
store %..any zeroinitializer, %..any* %3 | |
%43 = bitcast %..string* %2 to %..rawptr | |
%44 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%45 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 0 | |
store %..rawptr %43, %..rawptr* %45 | |
%46 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 1 | |
store %Type_Info* %44, %Type_Info** %46 | |
%47 = load %..any, %..any* %3, align 8 | |
; variadic call argument generation | |
%48 = bitcast {%..any*, i64}* %4 to %..rawptr | |
%49 = call %..rawptr @__mem_zero(%..rawptr %48, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %4 | |
%50 = bitcast [1 x %..any]* %5 to %..rawptr | |
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %5 | |
%52 = getelementptr inbounds [1 x %..any], [1 x %..any]* %5, i64 0, i32 0 | |
store %..any %47, %..any* %52 | |
%53 = getelementptr inbounds [1 x %..any], [1 x %..any]* %5, i64 0, i32 0 | |
%54 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %4, i64 0, i32 0 | |
store %..any* %53, %..any** %54 | |
%55 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %4, i64 0, i32 1 | |
store i64 1, i64* %55 | |
%56 = load {%..any*, i64}, {%..any*, i64}* %4, align 8 | |
%57 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7d, i64 0, i32 0), i64 50}, i64 82, i64 17, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$7e, i64 0, i32 0), i64 8}) | |
%58 = bitcast {%..any*, i64}* %6 to %..rawptr | |
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6 | |
store {%..any*, i64} %56, {%..any*, i64}* %6 | |
%60 = bitcast %Source_Code_Location* %7 to %..rawptr | |
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %7 | |
store %Source_Code_Location %57, %Source_Code_Location* %7 | |
call void @imgui_console-28.log_error({%..any*, i64}* %6, %Source_Code_Location* %7, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-3 | |
if.done-3: | |
ret void | |
} | |
define void @main-0.set_signature({%..string*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Source_Code_Location, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
%3 = alloca %Source_Code_Location, align 16 | |
%4 = alloca %..any, align 16 | |
%5 = alloca %..any, align 16 | |
%6 = alloca {%..any*, i64}, align 16 | |
%7 = alloca [2 x %..any], align 16 | |
%8 = alloca {%..any*, i64}, align 16 | |
%9 = alloca %..string, align 16 | |
%10 = alloca %..any, align 16 | |
%11 = alloca {%..any*, i64}, align 16 | |
%12 = alloca [1 x %..any], align 16 | |
%13 = alloca {%..any*, i64}, align 16 | |
%14 = alloca %Source_Code_Location, align 16 | |
%15 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
; IfStmt | |
%16 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%17 = extractvalue {%..string*, i64} %16, 1 | |
%18 = icmp eq i64 %17, 2 | |
%19 = zext i1 %18 to i8 | |
%20 = trunc i8 %19 to i1 | |
br i1 %20, label %if.then-1, label %if.else-2 | |
if.then-1: | |
; SelectorExpr | |
; SelectorExpr | |
%21 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
%22 = load %..string, %..string* %21, align 8 | |
%23 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$7f, i64 0, i32 0), i64 50}, i64 88, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$80, i64 0, i32 0), i64 13}) | |
%24 = bitcast %Source_Code_Location* %0 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %0 | |
store %Source_Code_Location %23, %Source_Code_Location* %0 | |
call void @free_string(%..string %22, %Source_Code_Location* %0, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SelectorExpr | |
%26 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
%27 = load %..string, %..string* %26, align 8 | |
%28 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$81, i64 0, i32 0), i64 50}, i64 89, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$82, i64 0, i32 0), i64 13}) | |
%29 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %28, %Source_Code_Location* %1 | |
call void @free_string(%..string %27, %Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%31 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
; SelectorExpr | |
; IndexExpr | |
%32 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%33 = extractvalue {%..string*, i64} %32, 0 | |
%34 = extractvalue {%..string*, i64} %32, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$83, i64 0, i32 0), i64 50}, i64 91, i64 59, i64 0, i64 %34) | |
%35 = getelementptr inbounds %..string, %..string* %33, i64 0 | |
%36 = load %..string, %..string* %35, align 8 | |
%37 = call %..string @strings-12.new_string(%..string %36, %Context* noalias nonnull %__.context_ptr) | |
store %..string %37, %..string* %31 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%38 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
; SelectorExpr | |
; IndexExpr | |
%39 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%40 = extractvalue {%..string*, i64} %39, 0 | |
%41 = extractvalue {%..string*, i64} %39, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$84, i64 0, i32 0), i64 50}, i64 92, i64 59, i64 1, i64 %41) | |
%42 = getelementptr inbounds %..string, %..string* %40, i64 1 | |
%43 = load %..string, %..string* %42, align 8 | |
%44 = call %..string @strings-12.new_string(%..string %43, %Context* noalias nonnull %__.context_ptr) | |
store %..string %44, %..string* %38 | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr) | |
br label %if.done-6 | |
if.else-2: | |
; IfStmt | |
%45 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%46 = extractvalue {%..string*, i64} %45, 1 | |
%47 = icmp eq i64 %46, 3 | |
%48 = zext i1 %47 to i8 | |
%49 = trunc i8 %48 to i1 | |
br i1 %49, label %if.then-3, label %if.else-4 | |
if.then-3: | |
; SelectorExpr | |
; SelectorExpr | |
%50 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
%51 = load %..string, %..string* %50, align 8 | |
%52 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$85, i64 0, i32 0), i64 50}, i64 96, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$86, i64 0, i32 0), i64 13}) | |
%53 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %52, %Source_Code_Location* %2 | |
call void @free_string(%..string %51, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SelectorExpr | |
%55 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
%56 = load %..string, %..string* %55, align 8 | |
%57 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$87, i64 0, i32 0), i64 50}, i64 97, i64 9, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$88, i64 0, i32 0), i64 13}) | |
%58 = bitcast %Source_Code_Location* %3 to %..rawptr | |
%59 = call %..rawptr @__mem_zero(%..rawptr %58, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %3 | |
store %Source_Code_Location %57, %Source_Code_Location* %3 | |
call void @free_string(%..string %56, %Source_Code_Location* %3, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%60 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
; SelectorExpr | |
; IndexExpr | |
%61 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%62 = extractvalue {%..string*, i64} %61, 0 | |
%63 = extractvalue {%..string*, i64} %61, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$89, i64 0, i32 0), i64 50}, i64 99, i64 61, i64 0, i64 %63) | |
%64 = getelementptr inbounds %..string, %..string* %62, i64 0 | |
%65 = load %..string, %..string* %64, align 8 | |
; IndexExpr | |
%66 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%67 = extractvalue {%..string*, i64} %66, 0 | |
%68 = extractvalue {%..string*, i64} %66, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$8a, i64 0, i32 0), i64 50}, i64 99, i64 70, i64 1, i64 %68) | |
%69 = getelementptr inbounds %..string, %..string* %67, i64 1 | |
%70 = load %..string, %..string* %69, align 8 | |
%71 = bitcast %..any* %4 to %..rawptr | |
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 16) | |
store %..any zeroinitializer, %..any* %4 | |
%73 = bitcast %..string* %64 to %..rawptr | |
%74 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%75 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
store %..rawptr %73, %..rawptr* %75 | |
%76 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
store %Type_Info* %74, %Type_Info** %76 | |
%77 = load %..any, %..any* %4, align 8 | |
%78 = bitcast %..any* %5 to %..rawptr | |
%79 = call %..rawptr @__mem_zero(%..rawptr %78, i64 16) | |
store %..any zeroinitializer, %..any* %5 | |
%80 = bitcast %..string* %69 to %..rawptr | |
%81 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%82 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 0 | |
store %..rawptr %80, %..rawptr* %82 | |
%83 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1 | |
store %Type_Info* %81, %Type_Info** %83 | |
%84 = load %..any, %..any* %5, align 8 | |
; variadic call argument generation | |
%85 = bitcast {%..any*, i64}* %6 to %..rawptr | |
%86 = call %..rawptr @__mem_zero(%..rawptr %85, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6 | |
%87 = bitcast [2 x %..any]* %7 to %..rawptr | |
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 32) | |
store [2 x %..any] zeroinitializer, [2 x %..any]* %7 | |
%89 = getelementptr inbounds [2 x %..any], [2 x %..any]* %7, i64 0, i32 0 | |
store %..any %77, %..any* %89 | |
%90 = getelementptr inbounds [2 x %..any], [2 x %..any]* %7, i64 0, i32 1 | |
store %..any %84, %..any* %90 | |
%91 = getelementptr inbounds [2 x %..any], [2 x %..any]* %7, i64 0, i32 0 | |
%92 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 0 | |
store %..any* %91, %..any** %92 | |
%93 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 1 | |
store i64 2, i64* %93 | |
%94 = load {%..any*, i64}, {%..any*, i64}* %6, align 8 | |
%95 = bitcast {%..any*, i64}* %8 to %..rawptr | |
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8 | |
store {%..any*, i64} %94, {%..any*, i64}* %8 | |
%97 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$8b, i64 0, i32 0), i64 5}, {%..any*, i64}* %8, %Context* noalias nonnull %__.context_ptr) | |
store %..string %97, %..string* %60 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%98 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
; SelectorExpr | |
; IndexExpr | |
%99 = load {%..string*, i64}, {%..string*, i64}* %args, align 8 | |
%100 = extractvalue {%..string*, i64} %99, 0 | |
%101 = extractvalue {%..string*, i64} %99, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$8c, i64 0, i32 0), i64 50}, i64 100, i64 59, i64 2, i64 %101) | |
%102 = getelementptr inbounds %..string, %..string* %100, i64 2 | |
%103 = load %..string, %..string* %102, align 8 | |
%104 = call %..string @strings-12.new_string(%..string %103, %Context* noalias nonnull %__.context_ptr) | |
store %..string %104, %..string* %98 | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr) | |
br label %if.done-5 | |
if.else-4: | |
; SelectorExpr | |
%105 = bitcast %..string* %9 to %..rawptr | |
%106 = call %..rawptr @__mem_zero(%..rawptr %105, i64 16) | |
store %..string zeroinitializer, %..string* %9 | |
store %..string {i8* getelementptr inbounds ([76 x i8], [76 x i8]* @__str$8d, i64 0, i32 0), i64 75}, %..string* %9 | |
%107 = load %..string, %..string* %9, align 8 | |
%108 = bitcast %..any* %10 to %..rawptr | |
%109 = call %..rawptr @__mem_zero(%..rawptr %108, i64 16) | |
store %..any zeroinitializer, %..any* %10 | |
%110 = bitcast %..string* %9 to %..rawptr | |
%111 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%112 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 0 | |
store %..rawptr %110, %..rawptr* %112 | |
%113 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 1 | |
store %Type_Info* %111, %Type_Info** %113 | |
%114 = load %..any, %..any* %10, align 8 | |
; variadic call argument generation | |
%115 = bitcast {%..any*, i64}* %11 to %..rawptr | |
%116 = call %..rawptr @__mem_zero(%..rawptr %115, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %11 | |
%117 = bitcast [1 x %..any]* %12 to %..rawptr | |
%118 = call %..rawptr @__mem_zero(%..rawptr %117, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %12 | |
%119 = getelementptr inbounds [1 x %..any], [1 x %..any]* %12, i64 0, i32 0 | |
store %..any %114, %..any* %119 | |
%120 = getelementptr inbounds [1 x %..any], [1 x %..any]* %12, i64 0, i32 0 | |
%121 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %11, i64 0, i32 0 | |
store %..any* %120, %..any** %121 | |
%122 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %11, i64 0, i32 1 | |
store i64 1, i64* %122 | |
%123 = load {%..any*, i64}, {%..any*, i64}* %11, align 8 | |
%124 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$8e, i64 0, i32 0), i64 50}, i64 104, i64 17, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$8f, i64 0, i32 0), i64 13}) | |
%125 = bitcast {%..any*, i64}* %13 to %..rawptr | |
%126 = call %..rawptr @__mem_zero(%..rawptr %125, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %13 | |
store {%..any*, i64} %123, {%..any*, i64}* %13 | |
%127 = bitcast %Source_Code_Location* %14 to %..rawptr | |
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14 | |
store %Source_Code_Location %124, %Source_Code_Location* %14 | |
call void @imgui_console-28.log_error({%..any*, i64}* %13, %Source_Code_Location* %14, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-5 | |
if.done-5: | |
br label %if.done-6 | |
if.done-6: | |
ret void | |
} | |
define cc 64 i32 @main-0.credentials_callback(%libgit2_types-55.Cred** %cred, i8* %url, i8* %username_from_url, i32 %allowed_types, %..rawptr %payload) #0 { | |
decls-0: | |
%0 = alloca %libgit2_types-55.Cred**, align 16 | |
%1 = alloca i8*, align 16 | |
%2 = alloca i8*, align 16 | |
%3 = alloca i32, align 16 | |
%4 = alloca %..rawptr, align 16 | |
%5 = alloca %Context, align 16 | |
%6 = bitcast %Context* %5 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 72) | |
store %Context zeroinitializer, %Context* %5 | |
%8 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %8, %Context* %5 | |
%9 = getelementptr inbounds %Context, %Context* %5, i64 0, i32 0 | |
%10 = call %Allocator @default_allocator(%Context* noalias nonnull %5) | |
store %Allocator %10, %Allocator* %9 | |
%11 = alloca %libgit2_types-55.Cred*, align 16 | |
%12 = alloca i32, align 16 | |
%13 = alloca %libgit2_types-55.Cred*, align 16 | |
%14 = alloca i32, align 16 | |
store %libgit2_types-55.Cred** %cred, %libgit2_types-55.Cred*** %0 | |
store i8* %url, i8** %1 | |
store i8* %username_from_url, i8** %2 | |
store i32 %allowed_types, i32* %3 | |
store %..rawptr %payload, %..rawptr* %4 | |
; IfStmt | |
%15 = load i32, i32* %3, align 4 | |
%16 = call i8 @main-0.credentials_callback.test_val-0(i32 1, i32 %15, %Context* noalias nonnull %5) | |
%17 = trunc i8 %16 to i1 | |
br i1 %17, label %if.then-1, label %if.else-4 | |
if.then-1: | |
; new_cred | |
; err | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%18 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
%19 = load %..string, %..string* %18, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%20 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
%21 = load %..string, %..string* %20, align 8 | |
%22 = call {%libgit2_types-55.Cred*, i32} @libgit2-29.cred_userpass_plaintext_new(%..string %19, %..string %21, %Context* noalias nonnull %5) | |
%23 = extractvalue {%libgit2_types-55.Cred*, i32} %22, 0 | |
%24 = extractvalue {%libgit2_types-55.Cred*, i32} %22, 1 | |
store %libgit2_types-55.Cred* %23, %libgit2_types-55.Cred** %11 | |
store i32 %24, i32* %12 | |
; IfStmt | |
%25 = load i32, i32* %12, align 4 | |
%26 = icmp ne i32 %25, 0 | |
%27 = zext i1 %26 to i8 | |
%28 = trunc i8 %27 to i1 | |
br i1 %28, label %if.then-2, label %if.done-3 | |
if.then-2: | |
; ReturnStmt | |
ret i32 1 | |
if.done-3: | |
; AssignStmt | |
%29 = load %libgit2_types-55.Cred**, %libgit2_types-55.Cred*** %0, align 8 | |
%30 = getelementptr inbounds %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %29, i64 0 | |
%31 = load %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %11, align 8 | |
store %libgit2_types-55.Cred* %31, %libgit2_types-55.Cred** %30 | |
br label %if.done-11 | |
if.else-4: | |
; IfStmt | |
%32 = load i32, i32* %3, align 4 | |
%33 = call i8 @main-0.credentials_callback.test_val-0(i32 2, i32 %32, %Context* noalias nonnull %5) | |
%34 = trunc i8 %33 to i1 | |
br i1 %34, label %if.then-5, label %if.else-10 | |
if.then-5: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%35 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 4 | |
%36 = load i8, i8* %35, align 1 | |
%37 = trunc i8 %36 to i1 | |
br i1 %37, label %if.then-6, label %if.else-9 | |
if.then-6: | |
; new_cred | |
; err | |
; SelectorExpr | |
; SelectorExpr | |
%38 = load i8*, i8** %2, align 8 | |
%39 = call %..string @strings-12.to_odin_string(i8* %38, %Context* noalias nonnull %5) | |
%40 = call {%libgit2_types-55.Cred*, i32} @libgit2-29.cred_ssh_key_from_agent(%..string %39, %Context* noalias nonnull %5) | |
%41 = extractvalue {%libgit2_types-55.Cred*, i32} %40, 0 | |
%42 = extractvalue {%libgit2_types-55.Cred*, i32} %40, 1 | |
store %libgit2_types-55.Cred* %41, %libgit2_types-55.Cred** %13 | |
store i32 %42, i32* %14 | |
; IfStmt | |
%43 = load i32, i32* %14, align 4 | |
%44 = icmp ne i32 %43, 0 | |
%45 = zext i1 %44 to i8 | |
%46 = trunc i8 %45 to i1 | |
br i1 %46, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
ret i32 1 | |
if.done-8: | |
; AssignStmt | |
%47 = load %libgit2_types-55.Cred**, %libgit2_types-55.Cred*** %0, align 8 | |
%48 = getelementptr inbounds %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %47, i64 0 | |
%49 = load %libgit2_types-55.Cred*, %libgit2_types-55.Cred** %13, align 8 | |
store %libgit2_types-55.Cred* %49, %libgit2_types-55.Cred** %48 | |
br label %if.done-11 | |
if.else-9: | |
; ReturnStmt | |
ret i32 1 | |
if.else-10: | |
; ReturnStmt | |
ret i32 -1 | |
if.done-11: | |
; ReturnStmt | |
ret i32 0 | |
} | |
define i8 @main-0.credentials_callback.test_val-0(i32 %test, i32 %value, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
%1 = alloca i32, align 16 | |
store i32 %test, i32* %0 | |
store i32 %value, i32* %1 | |
; ReturnStmt | |
%2 = load i32, i32* %0, align 4 | |
%3 = load i32, i32* %1, align 4 | |
%4 = and i32 %2, %3 | |
%5 = load i32, i32* %0, align 4 | |
%6 = icmp eq i32 %4, %5 | |
%7 = zext i1 %6 to i8 | |
ret i8 %7 | |
} | |
define void @main-0.agc_style(%Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %dear_imgui-50.Style*, align 16 | |
; style | |
; SelectorExpr | |
%1 = call ccc %dear_imgui-50.Style* @igGetStyle() | |
store %dear_imgui-50.Style* %1, %dear_imgui-50.Style** %0 | |
; AssignStmt | |
; SelectorExpr | |
%2 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%3 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %2, i64 0 | |
%4 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %3, i64 0, i32 1 | |
store %dear_imgui-50.Vec2 {float 0x4018000000000000, float 0x4018000000000000}, %dear_imgui-50.Vec2* %4 | |
; AssignStmt | |
; SelectorExpr | |
%5 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%6 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %5, i64 0 | |
%7 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %6, i64 0, i32 2 | |
store float 0x0000000000000000, float* %7 | |
; AssignStmt | |
; SelectorExpr | |
%8 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%9 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %8, i64 0 | |
%10 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %9, i64 0, i32 6 | |
store float 0x4000000000000000, float* %10 | |
; AssignStmt | |
; SelectorExpr | |
%11 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%12 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %11, i64 0 | |
%13 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %12, i64 0, i32 10 | |
store %dear_imgui-50.Vec2 {float 0x4010000000000000, float 0x4000000000000000}, %dear_imgui-50.Vec2* %13 | |
; AssignStmt | |
; SelectorExpr | |
%14 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%15 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %14, i64 0 | |
%16 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %15, i64 0, i32 11 | |
store float 0x4000000000000000, float* %16 | |
; AssignStmt | |
; SelectorExpr | |
%17 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%18 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %17, i64 0 | |
%19 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %18, i64 0, i32 12 | |
store float 0x3ff0000000000000, float* %19 | |
; AssignStmt | |
; SelectorExpr | |
%20 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%21 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %20, i64 0 | |
%22 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %21, i64 0, i32 13 | |
store %dear_imgui-50.Vec2 {float 0x4020000000000000, float 0x4010000000000000}, %dear_imgui-50.Vec2* %22 | |
; AssignStmt | |
; SelectorExpr | |
%23 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%24 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %23, i64 0 | |
%25 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %24, i64 0, i32 14 | |
store %dear_imgui-50.Vec2 {float 0x4010000000000000, float 0x4010000000000000}, %dear_imgui-50.Vec2* %25 | |
; AssignStmt | |
; SelectorExpr | |
%26 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%27 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %26, i64 0 | |
%28 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %27, i64 0, i32 15 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %28 | |
; AssignStmt | |
; SelectorExpr | |
%29 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%30 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %29, i64 0 | |
%31 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %30, i64 0, i32 16 | |
store float 0x4034000000000000, float* %31 | |
; AssignStmt | |
; SelectorExpr | |
%32 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%33 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %32, i64 0 | |
%34 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %33, i64 0, i32 18 | |
store float 0x4028000000000000, float* %34 | |
; AssignStmt | |
; SelectorExpr | |
%35 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%36 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %35, i64 0 | |
%37 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %36, i64 0, i32 19 | |
store float 0x4022000000000000, float* %37 | |
; AssignStmt | |
; SelectorExpr | |
%38 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%39 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %38, i64 0 | |
%40 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %39, i64 0, i32 20 | |
store float 0x4022000000000000, float* %40 | |
; AssignStmt | |
; SelectorExpr | |
%41 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%42 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %41, i64 0 | |
%43 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %42, i64 0, i32 21 | |
store float 0x3ff0000000000000, float* %43 | |
; AssignStmt | |
; SelectorExpr | |
%44 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%45 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %44, i64 0 | |
%46 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %45, i64 0, i32 5 | |
store %dear_imgui-50.Vec2 {float 0x3fdeb851e0000000, float 0x3fe0000000000000}, %dear_imgui-50.Vec2* %46 | |
; AssignStmt | |
; SelectorExpr | |
%47 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%48 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %47, i64 0 | |
%49 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %48, i64 0, i32 22 | |
store %dear_imgui-50.Vec2 {float 0x3fe0000000000000, float 0x3fe0000000000000}, %dear_imgui-50.Vec2* %49 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%50 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%51 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %50, i64 0 | |
%52 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %51, i64 0, i32 28 | |
%53 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %52, i64 0, i32 0 | |
store %dear_imgui-50.Vec4 {float 0x3ff0000000000000, float 0x3ff0000000000000, float 0x3ff0000000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %53 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%54 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%55 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %54, i64 0 | |
%56 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %55, i64 0, i32 28 | |
%57 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %56, i64 0, i32 1 | |
store %dear_imgui-50.Vec4 {float 0x3fe428f5c0000000, float 0x3fe428f5c0000000, float 0x3fe428f5c0000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %57 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%58 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%59 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %58, i64 0 | |
%60 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %59, i64 0, i32 28 | |
%61 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %60, i64 0, i32 2 | |
store %dear_imgui-50.Vec4 {float 0x3fcd70a3c0000000, float 0x3fcd70a3c0000000, float 0x3fcd70a3c0000000, float 0x3fef5c28e0000000}, %dear_imgui-50.Vec4* %61 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%62 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%63 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %62, i64 0 | |
%64 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %63, i64 0, i32 28 | |
%65 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %64, i64 0, i32 3 | |
store %dear_imgui-50.Vec4 {float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %65 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%66 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%67 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %66, i64 0 | |
%68 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %67, i64 0, i32 28 | |
%69 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %68, i64 0, i32 4 | |
store %dear_imgui-50.Vec4 {float 0x3fd0000000000000, float 0x3fd0000000000000, float 0x3fd0000000000000, float 0x3feeb851e0000000}, %dear_imgui-50.Vec4* %69 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%70 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%71 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %70, i64 0 | |
%72 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %71, i64 0, i32 28 | |
%73 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %72, i64 0, i32 5 | |
store %dear_imgui-50.Vec4 {float 0x3fc70a3d60000000, float 0x3fc70a3d60000000, float 0x3fc70a3d60000000, float 0x3fef5c28e0000000}, %dear_imgui-50.Vec4* %73 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%74 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%75 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %74, i64 0 | |
%76 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %75, i64 0, i32 28 | |
%77 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %76, i64 0, i32 6 | |
store %dear_imgui-50.Vec4 {float 0x0000000000000000, float 0x0000000000000000, float 0x0000000000000000, float 0x3fa47ae140000000}, %dear_imgui-50.Vec4* %77 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%78 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%79 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %78, i64 0 | |
%80 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %79, i64 0, i32 28 | |
%81 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %80, i64 0, i32 7 | |
store %dear_imgui-50.Vec4 {float 0x0000000000000000, float 0x0000000000000000, float 0x0000000000000000, float 0x3fd28f5c20000000}, %dear_imgui-50.Vec4* %81 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%82 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%83 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %82, i64 0 | |
%84 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %83, i64 0, i32 28 | |
%85 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %84, i64 0, i32 10 | |
store %dear_imgui-50.Vec4 {float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %85 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%86 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%87 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %86, i64 0 | |
%88 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %87, i64 0, i32 28 | |
%89 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %88, i64 0, i32 12 | |
store %dear_imgui-50.Vec4 {float 0x3fbeb851e0000000, float 0x3fbeb851e0000000, float 0x3fbeb851e0000000, float 0x3fdf5c28e0000000}, %dear_imgui-50.Vec4* %89 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%90 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%91 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %90, i64 0 | |
%92 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %91, i64 0, i32 28 | |
%93 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %92, i64 0, i32 11 | |
store %dear_imgui-50.Vec4 {float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3fc0101000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %93 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%94 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%95 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %94, i64 0 | |
%96 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %95, i64 0, i32 28 | |
%97 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %96, i64 0, i32 13 | |
store %dear_imgui-50.Vec4 {float 0x3fbc28f5c0000000, float 0x3fbc28f5c0000000, float 0x3fbc28f5c0000000, float 0x3fdae147a0000000}, %dear_imgui-50.Vec4* %97 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%98 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%99 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %98, i64 0 | |
%100 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %99, i64 0, i32 28 | |
%101 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %100, i64 0, i32 14 | |
store %dear_imgui-50.Vec4 {float 0x0000000000000000, float 0x0000000000000000, float 0x0000000000000000, float 0x3fb47ae140000000}, %dear_imgui-50.Vec4* %101 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%102 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%103 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %102, i64 0 | |
%104 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %103, i64 0, i32 28 | |
%105 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %104, i64 0, i32 15 | |
store %dear_imgui-50.Vec4 {float 0x3fd147ae00000000, float 0x3fd147ae00000000, float 0x3fd147ae00000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %105 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%106 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%107 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %106, i64 0 | |
%108 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %107, i64 0, i32 28 | |
%109 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %108, i64 0, i32 16 | |
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fd9999980000000}, %dear_imgui-50.Vec4* %109 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%110 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%111 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %110, i64 0 | |
%112 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %111, i64 0, i32 28 | |
%113 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %112, i64 0, i32 18 | |
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fee147ae0000000}, %dear_imgui-50.Vec4* %113 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%114 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%115 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %114, i64 0 | |
%116 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %115, i64 0, i32 28 | |
%117 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %116, i64 0, i32 19 | |
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fee147ae0000000}, %dear_imgui-50.Vec4* %117 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%118 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%119 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %118, i64 0 | |
%120 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %119, i64 0, i32 28 | |
%121 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %120, i64 0, i32 21 | |
store %dear_imgui-50.Vec4 {float 0x3fdae147a0000000, float 0x3fdae147a0000000, float 0x3fdae147a0000000, float 0x3fe3333320000000}, %dear_imgui-50.Vec4* %121 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%122 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%123 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %122, i64 0 | |
%124 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %123, i64 0, i32 28 | |
%125 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %124, i64 0, i32 22 | |
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fd9999980000000}, %dear_imgui-50.Vec4* %125 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%126 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%127 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %126, i64 0 | |
%128 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %127, i64 0, i32 28 | |
%129 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %128, i64 0, i32 24 | |
store %dear_imgui-50.Vec4 {float 0x3fd3d70a20000000, float 0x3fd3d70a20000000, float 0x3fd3d70a20000000, float 0x3fef5c28e0000000}, %dear_imgui-50.Vec4* %129 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%130 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%131 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %130, i64 0 | |
%132 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %131, i64 0, i32 28 | |
%133 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %132, i64 0, i32 25 | |
store %dear_imgui-50.Vec4 {float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fe8f5c280000000, float 0x3fd9999980000000}, %dear_imgui-50.Vec4* %133 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%134 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%135 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %134, i64 0 | |
%136 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %135, i64 0, i32 28 | |
%137 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %136, i64 0, i32 26 | |
store %dear_imgui-50.Vec4 {float 0x3fe9999980000000, float 0x3fe0000000000000, float 0x3fe0000000000000, float 0x3ff0000000000000}, %dear_imgui-50.Vec4* %137 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%138 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%139 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %138, i64 0 | |
%140 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %139, i64 0, i32 28 | |
%141 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %140, i64 0, i32 40 | |
store %dear_imgui-50.Vec4 {float 0x3fe4ccccc0000000, float 0x3fd6666660000000, float 0x3fd6666660000000, float 0x3fd0a3d700000000}, %dear_imgui-50.Vec4* %141 | |
; AssignStmt | |
; IndexExpr | |
; SelectorExpr | |
%142 = load %dear_imgui-50.Style*, %dear_imgui-50.Style** %0, align 8 | |
%143 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %142, i64 0 | |
%144 = getelementptr inbounds %dear_imgui-50.Style, %dear_imgui-50.Style* %143, i64 0, i32 28 | |
%145 = getelementptr inbounds [43 x %dear_imgui-50.Vec4], [43 x %dear_imgui-50.Vec4]* %144, i64 0, i32 41 | |
store %dear_imgui-50.Vec4 {float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3fc9999980000000, float 0x3fd6666660000000}, %dear_imgui-50.Vec4* %145 | |
ret void | |
} | |
define void @main-0.open_repo(%libgit2_types-55.Repository* %new_repo, %state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %libgit2_types-55.Repository*, align 16 | |
%1 = alloca %state-38.State*, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
%3 = alloca %..string, align 16 | |
%4 = alloca %..string, align 16 | |
%5 = alloca %..any, align 16 | |
%6 = alloca {%..any*, i64}, align 16 | |
%7 = alloca [1 x %..any], align 16 | |
%8 = alloca {%..any*, i64}, align 16 | |
%9 = alloca %..string, align 16 | |
%10 = alloca i8, align 16 | |
%11 = alloca %..string, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca {i64*, i64}, align 16 | |
%15 = alloca [1 x i64], align 16 | |
%16 = alloca {i64*, i64}, align 16 | |
%17 = alloca %libgit2_types-55.Oid, align 16 | |
%18 = alloca i32, align 16 | |
%19 = alloca %Source_Code_Location, align 16 | |
%20 = alloca %libgit2_types-55.Oid, align 16 | |
%21 = alloca %libgit2_types-55.Reference*, align 16 | |
%22 = alloca i32, align 16 | |
%23 = alloca %Source_Code_Location, align 16 | |
%24 = alloca %..string, align 16 | |
%25 = alloca i32, align 16 | |
%26 = alloca %..string, align 16 | |
%27 = alloca %libgit2_types-55.Oid, align 16 | |
%28 = alloca i32, align 16 | |
%29 = alloca %commit-34.Commit, align 16 | |
%30 = alloca %libgit2_types-55.Oid, align 16 | |
%31 = alloca %libgit2_types-55.Reference*, align 16 | |
%32 = alloca i64, align 16 | |
%33 = alloca i64, align 16 | |
%34 = alloca %libgit2_types-55.Oid, align 16 | |
%35 = alloca %libgit2_types-55.Oid, align 16 | |
%36 = alloca %libgit2_types-55.Oid, align 16 | |
%37 = alloca %branch-35.Branch, align 16 | |
%38 = alloca %libgit2_types-55.Status_Options, align 16 | |
%39 = alloca %Source_Code_Location, align 16 | |
%40 = alloca %Source_Code_Location, align 16 | |
%41 = alloca %Source_Code_Location, align 16 | |
store %libgit2_types-55.Repository* %new_repo, %libgit2_types-55.Repository** %0 | |
store %state-38.State* %state, %state-38.State** %1 | |
; IfStmt | |
%42 = load %state-38.State*, %state-38.State** %1, align 8 | |
%43 = getelementptr inbounds %state-38.State, %state-38.State* %42, i64 0 | |
%44 = getelementptr inbounds %state-38.State, %state-38.State* %43, i64 0, i32 40 | |
%45 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %44, align 8 | |
%46 = icmp ne %libgit2_types-55.Repository* %45, zeroinitializer | |
%47 = zext i1 %46 to i8 | |
%48 = trunc i8 %47 to i1 | |
br i1 %48, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%49 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$90, i64 0, i32 0), i64 50}, i64 186, i64 9, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$91, i64 0, i32 0), i64 9}) | |
%50 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %49, %Source_Code_Location* %2 | |
call void @panic(%..string {i8* getelementptr inbounds ([36 x i8], [36 x i8]* @__str$92, i64 0, i32 0), i64 35}, %Source_Code_Location* %2) | |
br label %if.done-2 | |
if.done-2: | |
; repo_path | |
; SelectorExpr | |
%52 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8 | |
%53 = call %..string @libgit2-29.repository_path(%libgit2_types-55.Repository* %52, %Context* noalias nonnull %__.context_ptr) | |
store %..string %53, %..string* %3 | |
; path | |
; SelectorExpr | |
%54 = load %..string, %..string* %3, align 8 | |
%55 = bitcast %..any* %5 to %..rawptr | |
%56 = call %..rawptr @__mem_zero(%..rawptr %55, i64 16) | |
store %..any zeroinitializer, %..any* %5 | |
%57 = bitcast %..string* %3 to %..rawptr | |
%58 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%59 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 0 | |
store %..rawptr %57, %..rawptr* %59 | |
%60 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1 | |
store %Type_Info* %58, %Type_Info** %60 | |
%61 = load %..any, %..any* %5, align 8 | |
; variadic call argument generation | |
%62 = bitcast {%..any*, i64}* %6 to %..rawptr | |
%63 = call %..rawptr @__mem_zero(%..rawptr %62, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6 | |
%64 = bitcast [1 x %..any]* %7 to %..rawptr | |
%65 = call %..rawptr @__mem_zero(%..rawptr %64, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %7 | |
%66 = getelementptr inbounds [1 x %..any], [1 x %..any]* %7, i64 0, i32 0 | |
store %..any %61, %..any* %66 | |
%67 = getelementptr inbounds [1 x %..any], [1 x %..any]* %7, i64 0, i32 0 | |
%68 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 0 | |
store %..any* %67, %..any** %68 | |
%69 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %6, i64 0, i32 1 | |
store i64 1, i64* %69 | |
%70 = load {%..any*, i64}, {%..any*, i64}* %6, align 8 | |
%71 = bitcast {%..any*, i64}* %8 to %..rawptr | |
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8 | |
store {%..any*, i64} %70, {%..any*, i64}* %8 | |
%73 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$93, i64 0, i32 0), i64 5}, {%..any*, i64}* %8, %Context* noalias nonnull %__.context_ptr) | |
store %..string %73, %..string* %4 | |
; DeferStmt | |
; full_path | |
; SelectorExpr | |
%74 = load %..string, %..string* %4, align 8 | |
%75 = call %..string @path-31.full(%..string %74, %Context* noalias nonnull %__.context_ptr) | |
store %..string %75, %..string* %9 | |
; DeferStmt | |
; found | |
store i8 0, i8* %10 | |
; RangeStmt | |
; s | |
%76 = bitcast %..string* %11 to %..rawptr | |
%77 = call %..rawptr @__mem_zero(%..rawptr %76, i64 16) | |
store %..string zeroinitializer, %..string* %11 | |
; i | |
%78 = bitcast i64* %12 to %..rawptr | |
%79 = call %..rawptr @__mem_zero(%..rawptr %78, i64 8) | |
store i64 zeroinitializer, i64* %12 | |
; SelectorExpr | |
; SelectorExpr | |
%80 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5 | |
%81 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %80, i64 0, i32 1 | |
%82 = bitcast i64* %13 to %..rawptr | |
%83 = call %..rawptr @__mem_zero(%..rawptr %82, i64 8) | |
store i64 zeroinitializer, i64* %13 | |
store i64 -1, i64* %13 | |
br label %for.index.loop-3 | |
for.index.loop-3: | |
%84 = load i64, i64* %13, align 8 | |
%85 = add i64 %84, 1 | |
store i64 %85, i64* %13 | |
%86 = load i64, i64* %81, align 8 | |
%87 = icmp slt i64 %85, %86 | |
br i1 %87, label %for.index.body-4, label %for.index.done-7 | |
for.index.body-4: | |
%88 = load i64, i64* %13, align 8 | |
%89 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %80, i64 0, i32 0 | |
%90 = load %..string*, %..string** %89, align 8 | |
%91 = getelementptr inbounds %..string, %..string* %90, i64 %88 | |
%92 = load %..string, %..string* %91, align 8 | |
store %..string %92, %..string* %11 | |
store i64 %88, i64* %12 | |
; IfStmt | |
%93 = load %..string, %..string* %11, align 8 | |
%94 = load %..string, %..string* %9, align 8 | |
%95 = call i8 @__string_eq(%..string %93, %..string %94) | |
%96 = trunc i8 %95 to i1 | |
br i1 %96, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; AssignStmt | |
store i8 1, i8* %10 | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%97 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5 | |
%98 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %97, i64 0 | |
%99 = load i64, i64* %12, align 8 | |
; variadic call argument generation | |
%100 = bitcast {i64*, i64}* %14 to %..rawptr | |
%101 = call %..rawptr @__mem_zero(%..rawptr %100, i64 16) | |
store {i64*, i64} zeroinitializer, {i64*, i64}* %14 | |
%102 = bitcast [1 x i64]* %15 to %..rawptr | |
%103 = call %..rawptr @__mem_zero(%..rawptr %102, i64 8) | |
store [1 x i64] zeroinitializer, [1 x i64]* %15 | |
%104 = getelementptr inbounds [1 x i64], [1 x i64]* %15, i64 0, i32 0 | |
store i64 %99, i64* %104 | |
%105 = getelementptr inbounds [1 x i64], [1 x i64]* %15, i64 0, i32 0 | |
%106 = getelementptr inbounds {i64*, i64}, {i64*, i64}* %14, i64 0, i32 0 | |
store i64* %105, i64** %106 | |
%107 = getelementptr inbounds {i64*, i64}, {i64*, i64}* %14, i64 0, i32 1 | |
store i64 1, i64* %107 | |
%108 = load {i64*, i64}, {i64*, i64}* %14, align 8 | |
%109 = bitcast {i64*, i64}* %16 to %..rawptr | |
%110 = call %..rawptr @__mem_zero(%..rawptr %109, i64 16) | |
store {i64*, i64} zeroinitializer, {i64*, i64}* %16 | |
store {i64*, i64} %108, {i64*, i64}* %16 | |
call void @dyna_util-27.remove_ordered-19307({%..string*, i64, i64, %Allocator}* %98, {i64*, i64}* %16, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%111 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5 | |
%112 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %111, i64 0 | |
; SelectorExpr | |
%113 = load %..string, %..string* %9, align 8 | |
%114 = call %..string @strings-12.new_string(%..string %113, %Context* noalias nonnull %__.context_ptr) | |
%115 = call i64 @dyna_util-27.append_front-19312({%..string*, i64, i64, %Allocator}* %112, %..string %114, %Context* noalias nonnull %__.context_ptr) | |
; break | |
br label %for.index.done-7 | |
if.done-6: | |
br label %for.index.loop-3 | |
for.index.done-7: | |
; IfStmt | |
%116 = load i8, i8* %10, align 1 | |
%117 = trunc i8 %116 to i1 | |
br i1 %117, label %if.done-9, label %if.then-8 | |
if.then-8: | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%118 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5 | |
%119 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %118, i64 0 | |
; SelectorExpr | |
%120 = load %..string, %..string* %9, align 8 | |
%121 = call %..string @strings-12.new_string(%..string %120, %Context* noalias nonnull %__.context_ptr) | |
%122 = call i64 @dyna_util-27.append_front-19312({%..string*, i64, i64, %Allocator}* %119, %..string %121, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-9 | |
if.done-9: | |
; AssignStmt | |
%123 = load %state-38.State*, %state-38.State** %1, align 8 | |
%124 = getelementptr inbounds %state-38.State, %state-38.State* %123, i64 0 | |
%125 = getelementptr inbounds %state-38.State, %state-38.State* %124, i64 0, i32 40 | |
%126 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8 | |
store %libgit2_types-55.Repository* %126, %libgit2_types-55.Repository** %125 | |
; AssignStmt | |
%127 = load %state-38.State*, %state-38.State** %1, align 8 | |
%128 = getelementptr inbounds %state-38.State, %state-38.State* %127, i64 0 | |
%129 = getelementptr inbounds %state-38.State, %state-38.State* %128, i64 0, i32 41 | |
; SelectorExpr | |
%130 = load %..string, %..string* %9, align 8 | |
%131 = call %..string @strings-12.new_string(%..string %130, %Context* noalias nonnull %__.context_ptr) | |
store %..string %131, %..string* %129 | |
; oid | |
; ok | |
; SelectorExpr | |
%132 = load %state-38.State*, %state-38.State** %1, align 8 | |
%133 = getelementptr inbounds %state-38.State, %state-38.State* %132, i64 0 | |
%134 = getelementptr inbounds %state-38.State, %state-38.State* %133, i64 0, i32 40 | |
%135 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %134, align 8 | |
%136 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %135, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$94, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
%137 = extractvalue {%libgit2_types-55.Oid, i32} %136, 0 | |
%138 = extractvalue {%libgit2_types-55.Oid, i32} %136, 1 | |
store %libgit2_types-55.Oid %137, %libgit2_types-55.Oid* %17 | |
store i32 %138, i32* %18 | |
; IfStmt | |
%139 = load i32, i32* %18, align 4 | |
%140 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$95, i64 0, i32 0), i64 50}, i64 217, i64 9, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$96, i64 0, i32 0), i64 9}) | |
%141 = bitcast %Source_Code_Location* %19 to %..rawptr | |
%142 = call %..rawptr @__mem_zero(%..rawptr %141, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %19 | |
store %Source_Code_Location %140, %Source_Code_Location* %19 | |
%143 = call i8 @debug-30.log_if_err(i32 %139, %Source_Code_Location* %19, %Context* noalias nonnull %__.context_ptr) | |
%144 = trunc i8 %143 to i1 | |
br i1 %144, label %if.done-11, label %if.then-10 | |
if.then-10: | |
; SelectorExpr | |
; SelectorExpr | |
%145 = load %state-38.State*, %state-38.State** %1, align 8 | |
%146 = getelementptr inbounds %state-38.State, %state-38.State* %145, i64 0 | |
%147 = getelementptr inbounds %state-38.State, %state-38.State* %146, i64 0, i32 43 | |
%148 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %147, i64 0, i32 4 | |
%149 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %148, i64 0 | |
call void @commit-34.free(%commit-34.Commit* %149, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
%150 = load %state-38.State*, %state-38.State** %1, align 8 | |
%151 = getelementptr inbounds %state-38.State, %state-38.State* %150, i64 0 | |
%152 = getelementptr inbounds %state-38.State, %state-38.State* %151, i64 0, i32 43 | |
%153 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %152, i64 0, i32 4 | |
; SelectorExpr | |
%154 = load %state-38.State*, %state-38.State** %1, align 8 | |
%155 = getelementptr inbounds %state-38.State, %state-38.State* %154, i64 0 | |
%156 = getelementptr inbounds %state-38.State, %state-38.State* %155, i64 0, i32 40 | |
%157 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %156, align 8 | |
%158 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %17, align 1 | |
%159 = bitcast %libgit2_types-55.Oid* %20 to %..rawptr | |
%160 = call %..rawptr @__mem_zero(%..rawptr %159, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %20 | |
store %libgit2_types-55.Oid %158, %libgit2_types-55.Oid* %20 | |
%161 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %157, %libgit2_types-55.Oid* %20, %Context* noalias nonnull %__.context_ptr) | |
store %commit-34.Commit %161, %commit-34.Commit* %153 | |
br label %if.done-11 | |
if.done-11: | |
; ref | |
; err | |
; SelectorExpr | |
%162 = load %state-38.State*, %state-38.State** %1, align 8 | |
%163 = getelementptr inbounds %state-38.State, %state-38.State* %162, i64 0 | |
%164 = getelementptr inbounds %state-38.State, %state-38.State* %163, i64 0, i32 40 | |
%165 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %164, align 8 | |
%166 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.repository_head(%libgit2_types-55.Repository* %165, %Context* noalias nonnull %__.context_ptr) | |
%167 = extractvalue {%libgit2_types-55.Reference*, i32} %166, 0 | |
%168 = extractvalue {%libgit2_types-55.Reference*, i32} %166, 1 | |
store %libgit2_types-55.Reference* %167, %libgit2_types-55.Reference** %21 | |
store i32 %168, i32* %22 | |
; IfStmt | |
%169 = load i32, i32* %22, align 4 | |
%170 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$97, i64 0, i32 0), i64 50}, i64 223, i64 9, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$98, i64 0, i32 0), i64 9}) | |
%171 = bitcast %Source_Code_Location* %23 to %..rawptr | |
%172 = call %..rawptr @__mem_zero(%..rawptr %171, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %23 | |
store %Source_Code_Location %170, %Source_Code_Location* %23 | |
%173 = call i8 @debug-30.log_if_err(i32 %169, %Source_Code_Location* %23, %Context* noalias nonnull %__.context_ptr) | |
%174 = trunc i8 %173 to i1 | |
br i1 %174, label %if.done-15, label %if.then-12 | |
if.then-12: | |
; bname | |
; err | |
; SelectorExpr | |
%175 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8 | |
%176 = call {%..string, i32} @libgit2-29.branch_name(%libgit2_types-55.Reference* %175, %Context* noalias nonnull %__.context_ptr) | |
%177 = extractvalue {%..string, i32} %176, 0 | |
%178 = extractvalue {%..string, i32} %176, 1 | |
store %..string %177, %..string* %24 | |
store i32 %178, i32* %25 | |
; refname | |
; SelectorExpr | |
%179 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8 | |
%180 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %179, %Context* noalias nonnull %__.context_ptr) | |
store %..string %180, %..string* %26 | |
; oid | |
; ok | |
; SelectorExpr | |
%181 = load %state-38.State*, %state-38.State** %1, align 8 | |
%182 = getelementptr inbounds %state-38.State, %state-38.State* %181, i64 0 | |
%183 = getelementptr inbounds %state-38.State, %state-38.State* %182, i64 0, i32 40 | |
%184 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %183, align 8 | |
%185 = load %..string, %..string* %26, align 8 | |
%186 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %184, %..string %185, %Context* noalias nonnull %__.context_ptr) | |
%187 = extractvalue {%libgit2_types-55.Oid, i32} %186, 0 | |
%188 = extractvalue {%libgit2_types-55.Oid, i32} %186, 1 | |
store %libgit2_types-55.Oid %187, %libgit2_types-55.Oid* %27 | |
store i32 %188, i32* %28 | |
; commit | |
; SelectorExpr | |
%189 = load %state-38.State*, %state-38.State** %1, align 8 | |
%190 = getelementptr inbounds %state-38.State, %state-38.State* %189, i64 0 | |
%191 = getelementptr inbounds %state-38.State, %state-38.State* %190, i64 0, i32 40 | |
%192 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %191, align 8 | |
%193 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %27, align 1 | |
%194 = bitcast %libgit2_types-55.Oid* %30 to %..rawptr | |
%195 = call %..rawptr @__mem_zero(%..rawptr %194, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %30 | |
store %libgit2_types-55.Oid %193, %libgit2_types-55.Oid* %30 | |
%196 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %192, %libgit2_types-55.Oid* %30, %Context* noalias nonnull %__.context_ptr) | |
store %commit-34.Commit %196, %commit-34.Commit* %29 | |
; upstream | |
; SelectorExpr | |
%197 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8 | |
%198 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.branch_upstream(%libgit2_types-55.Reference* %197, %Context* noalias nonnull %__.context_ptr) | |
%199 = extractvalue {%libgit2_types-55.Reference*, i32} %198, 0 | |
%200 = extractvalue {%libgit2_types-55.Reference*, i32} %198, 1 | |
store %libgit2_types-55.Reference* %199, %libgit2_types-55.Reference** %31 | |
; ahead | |
%201 = bitcast i64* %32 to %..rawptr | |
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 8) | |
store i64 zeroinitializer, i64* %32 | |
; behind | |
%203 = bitcast i64* %33 to %..rawptr | |
%204 = call %..rawptr @__mem_zero(%..rawptr %203, i64 8) | |
store i64 zeroinitializer, i64* %33 | |
; IfStmt | |
%205 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %31, align 8 | |
%206 = icmp ne %libgit2_types-55.Reference* %205, zeroinitializer | |
%207 = zext i1 %206 to i8 | |
%208 = trunc i8 %207 to i1 | |
br i1 %208, label %if.then-13, label %if.done-14 | |
if.then-13: | |
; uid | |
; SelectorExpr | |
%209 = load %state-38.State*, %state-38.State** %1, align 8 | |
%210 = getelementptr inbounds %state-38.State, %state-38.State* %209, i64 0 | |
%211 = getelementptr inbounds %state-38.State, %state-38.State* %210, i64 0, i32 40 | |
%212 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %211, align 8 | |
; SelectorExpr | |
%213 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %31, align 8 | |
%214 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %213, %Context* noalias nonnull %__.context_ptr) | |
%215 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %212, %..string %214, %Context* noalias nonnull %__.context_ptr) | |
%216 = extractvalue {%libgit2_types-55.Oid, i32} %215, 0 | |
%217 = extractvalue {%libgit2_types-55.Oid, i32} %215, 1 | |
store %libgit2_types-55.Oid %216, %libgit2_types-55.Oid* %34 | |
; AssignStmt | |
; SelectorExpr | |
%218 = load %state-38.State*, %state-38.State** %1, align 8 | |
%219 = getelementptr inbounds %state-38.State, %state-38.State* %218, i64 0 | |
%220 = getelementptr inbounds %state-38.State, %state-38.State* %219, i64 0, i32 40 | |
%221 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %220, align 8 | |
%222 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %27, align 1 | |
%223 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %34, align 1 | |
%224 = bitcast %libgit2_types-55.Oid* %35 to %..rawptr | |
%225 = call %..rawptr @__mem_zero(%..rawptr %224, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %35 | |
store %libgit2_types-55.Oid %222, %libgit2_types-55.Oid* %35 | |
%226 = bitcast %libgit2_types-55.Oid* %36 to %..rawptr | |
%227 = call %..rawptr @__mem_zero(%..rawptr %226, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %36 | |
store %libgit2_types-55.Oid %223, %libgit2_types-55.Oid* %36 | |
%228 = call {i64, i64, i32} @libgit2-29.graph_ahead_behind(%libgit2_types-55.Repository* %221, %libgit2_types-55.Oid* %35, %libgit2_types-55.Oid* %36, %Context* noalias nonnull %__.context_ptr) | |
%229 = extractvalue {i64, i64, i32} %228, 0 | |
%230 = extractvalue {i64, i64, i32} %228, 1 | |
%231 = extractvalue {i64, i64, i32} %228, 2 | |
store i64 %229, i64* %32 | |
store i64 %230, i64* %33 | |
br label %if.done-14 | |
if.done-14: | |
; AssignStmt | |
%232 = load %state-38.State*, %state-38.State** %1, align 8 | |
%233 = getelementptr inbounds %state-38.State, %state-38.State* %232, i64 0 | |
%234 = getelementptr inbounds %state-38.State, %state-38.State* %233, i64 0, i32 43 | |
; CompoundLit | |
%235 = bitcast %branch-35.Branch* %37 to %..rawptr | |
%236 = call %..rawptr @__mem_zero(%..rawptr %235, i64 208) | |
store %branch-35.Branch zeroinitializer, %branch-35.Branch* %37 | |
store %branch-35.Branch {%libgit2_types-55.Reference* zeroinitializer, %libgit2_types-55.Reference* zeroinitializer, %..string zeroinitializer, i32 1, %commit-34.Commit zeroinitializer, i64 zeroinitializer, i64 zeroinitializer}, %branch-35.Branch* %37 | |
%237 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %21, align 8 | |
%238 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 0 | |
store %libgit2_types-55.Reference* %237, %libgit2_types-55.Reference** %238 | |
%239 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %31, align 8 | |
%240 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 1 | |
store %libgit2_types-55.Reference* %239, %libgit2_types-55.Reference** %240 | |
%241 = load %..string, %..string* %24, align 8 | |
%242 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 2 | |
store %..string %241, %..string* %242 | |
%243 = load %commit-34.Commit, %commit-34.Commit* %29, align 8 | |
%244 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 4 | |
store %commit-34.Commit %243, %commit-34.Commit* %244 | |
%245 = load i64, i64* %32, align 8 | |
%246 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 5 | |
store i64 %245, i64* %246 | |
%247 = load i64, i64* %33, align 8 | |
%248 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %37, i64 0, i32 6 | |
store i64 %247, i64* %248 | |
%249 = load %branch-35.Branch, %branch-35.Branch* %37, align 8 | |
store %branch-35.Branch %249, %branch-35.Branch* %234 | |
br label %if.done-15 | |
if.done-15: | |
; AssignStmt | |
%250 = load %state-38.State*, %state-38.State** %1, align 8 | |
%251 = getelementptr inbounds %state-38.State, %state-38.State* %250, i64 0 | |
%252 = getelementptr inbounds %state-38.State, %state-38.State* %251, i64 0, i32 44 | |
; SelectorExpr | |
%253 = load %state-38.State*, %state-38.State** %1, align 8 | |
%254 = getelementptr inbounds %state-38.State, %state-38.State* %253, i64 0 | |
%255 = getelementptr inbounds %state-38.State, %state-38.State* %254, i64 0, i32 40 | |
%256 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %255, align 8 | |
%257 = call {%branch-35.Branch_Collection*, i64} @branch-35.all_branches_from_repo(%libgit2_types-55.Repository* %256, i32 1, %Context* noalias nonnull %__.context_ptr) | |
store {%branch-35.Branch_Collection*, i64} %257, {%branch-35.Branch_Collection*, i64}* %252 | |
; AssignStmt | |
%258 = load %state-38.State*, %state-38.State** %1, align 8 | |
%259 = getelementptr inbounds %state-38.State, %state-38.State* %258, i64 0 | |
%260 = getelementptr inbounds %state-38.State, %state-38.State* %259, i64 0, i32 45 | |
; SelectorExpr | |
%261 = load %state-38.State*, %state-38.State** %1, align 8 | |
%262 = getelementptr inbounds %state-38.State, %state-38.State* %261, i64 0 | |
%263 = getelementptr inbounds %state-38.State, %state-38.State* %262, i64 0, i32 40 | |
%264 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %263, align 8 | |
%265 = call {%branch-35.Branch_Collection*, i64} @branch-35.all_branches_from_repo(%libgit2_types-55.Repository* %264, i32 2, %Context* noalias nonnull %__.context_ptr) | |
store {%branch-35.Branch_Collection*, i64} %265, {%branch-35.Branch_Collection*, i64}* %260 | |
; options | |
; SelectorExpr | |
%266 = call {%libgit2_types-55.Status_Options, i32} @libgit2-29.status_init_options(i32 1, %Context* noalias nonnull %__.context_ptr) | |
%267 = extractvalue {%libgit2_types-55.Status_Options, i32} %266, 0 | |
%268 = extractvalue {%libgit2_types-55.Status_Options, i32} %266, 1 | |
store %libgit2_types-55.Status_Options %267, %libgit2_types-55.Status_Options* %38 | |
; AssignStmt | |
; SelectorExpr | |
%269 = getelementptr inbounds %libgit2_types-55.Status_Options, %libgit2_types-55.Status_Options* %38, i64 0, i32 2 | |
store i32 1, i32* %269 | |
; AssignStmt | |
%270 = load %state-38.State*, %state-38.State** %1, align 8 | |
%271 = getelementptr inbounds %state-38.State, %state-38.State* %270, i64 0 | |
%272 = getelementptr inbounds %state-38.State, %state-38.State* %271, i64 0, i32 42 | |
; SelectorExpr | |
%273 = load %state-38.State*, %state-38.State** %1, align 8 | |
%274 = getelementptr inbounds %state-38.State, %state-38.State* %273, i64 0 | |
%275 = getelementptr inbounds %state-38.State, %state-38.State* %274, i64 0, i32 40 | |
%276 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %275, align 8 | |
%277 = getelementptr inbounds %libgit2_types-55.Status_Options, %libgit2_types-55.Status_Options* %38, i64 0 | |
%278 = call {%libgit2_types-55.Status_List*, i32} @libgit2-29.status_list_new(%libgit2_types-55.Repository* %276, %libgit2_types-55.Status_Options* %277, %Context* noalias nonnull %__.context_ptr) | |
%279 = extractvalue {%libgit2_types-55.Status_List*, i32} %278, 0 | |
%280 = extractvalue {%libgit2_types-55.Status_List*, i32} %278, 1 | |
store %libgit2_types-55.Status_List* %279, %libgit2_types-55.Status_List** %272 | |
store i32 %280, i32* %22 | |
%281 = load i32, i32* %22, align 4 | |
%282 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$99, i64 0, i32 0), i64 50}, i64 252, i64 5, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$9a, i64 0, i32 0), i64 9}) | |
%283 = bitcast %Source_Code_Location* %39 to %..rawptr | |
%284 = call %..rawptr @__mem_zero(%..rawptr %283, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %39 | |
store %Source_Code_Location %282, %Source_Code_Location* %39 | |
%285 = call i8 @debug-30.log_if_err(i32 %281, %Source_Code_Location* %39, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%286 = load %state-38.State*, %state-38.State** %1, align 8 | |
%287 = getelementptr inbounds %state-38.State, %state-38.State* %286, i64 0 | |
%288 = getelementptr inbounds %state-38.State, %state-38.State* %287, i64 0, i32 28 | |
%289 = getelementptr inbounds %log-33.Log, %log-33.Log* %288, i64 0 | |
%290 = load %state-38.State*, %state-38.State** %1, align 8 | |
%291 = getelementptr inbounds %state-38.State, %state-38.State* %290, i64 0 | |
%292 = getelementptr inbounds %state-38.State, %state-38.State* %291, i64 0, i32 40 | |
%293 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %292, align 8 | |
; SelectorExpr | |
%294 = load %state-38.State*, %state-38.State** %1, align 8 | |
%295 = getelementptr inbounds %state-38.State, %state-38.State* %294, i64 0 | |
%296 = getelementptr inbounds %state-38.State, %state-38.State* %295, i64 0, i32 43 | |
%297 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %296, i64 0, i32 0 | |
%298 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %297, align 8 | |
call void @log-33.update(%log-33.Log* %289, %libgit2_types-55.Repository* %293, %libgit2_types-55.Reference* %298, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%299 = load %state-38.State*, %state-38.State** %1, align 8 | |
%300 = getelementptr inbounds %state-38.State, %state-38.State* %299, i64 0 | |
%301 = getelementptr inbounds %state-38.State, %state-38.State* %300, i64 0, i32 40 | |
%302 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %301, align 8 | |
%303 = load %state-38.State*, %state-38.State** %1, align 8 | |
%304 = getelementptr inbounds %state-38.State, %state-38.State* %303, i64 0 | |
%305 = getelementptr inbounds %state-38.State, %state-38.State* %304, i64 0, i32 29 | |
%306 = getelementptr inbounds %status-39.Status, %status-39.Status* %305, i64 0 | |
call void @status-39.update(%libgit2_types-55.Repository* %302, %status-39.Status* %306, %Context* noalias nonnull %__.context_ptr) | |
; defer | |
%307 = load %..string, %..string* %9, align 8 | |
%308 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$9b, i64 0, i32 0), i64 50}, i64 197, i64 11, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$9c, i64 0, i32 0), i64 9}) | |
%309 = bitcast %Source_Code_Location* %40 to %..rawptr | |
%310 = call %..rawptr @__mem_zero(%..rawptr %309, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %40 | |
store %Source_Code_Location %308, %Source_Code_Location* %40 | |
call void @free_string(%..string %307, %Source_Code_Location* %40, %Context* noalias nonnull %__.context_ptr) | |
; defer | |
%311 = load %..string, %..string* %4, align 8 | |
%312 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$9d, i64 0, i32 0), i64 50}, i64 194, i64 11, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$9e, i64 0, i32 0), i64 9}) | |
%313 = bitcast %Source_Code_Location* %41 to %..rawptr | |
%314 = call %..rawptr @__mem_zero(%..rawptr %313, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %41 | |
store %Source_Code_Location %312, %Source_Code_Location* %41 | |
call void @free_string(%..string %311, %Source_Code_Location* %41, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @main-0.init(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %state-38.State*, align 16 | |
%1 = alloca %Source_Code_Location, align 16 | |
%2 = alloca %..any, align 16 | |
%3 = alloca %..any, align 16 | |
%4 = alloca %..any, align 16 | |
%5 = alloca {%..any*, i64}, align 16 | |
%6 = alloca [3 x %..any], align 16 | |
%7 = alloca {%..any*, i64}, align 16 | |
store %state-38.State* %state, %state-38.State** %0 | |
; AssignStmt | |
%8 = load %state-38.State*, %state-38.State** %0, align 8 | |
%9 = getelementptr inbounds %state-38.State, %state-38.State* %8, i64 0 | |
%10 = getelementptr inbounds %state-38.State, %state-38.State* %9, i64 0, i32 13 | |
; SelectorExpr | |
%11 = call %misc-49.TimeData @misc-49.create_time_data(%Context* noalias nonnull %__.context_ptr) | |
store %misc-49.TimeData %11, %misc-49.TimeData* %10 | |
; AssignStmt | |
%12 = load %state-38.State*, %state-38.State** %0, align 8 | |
%13 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
%14 = getelementptr inbounds %state-38.State, %state-38.State* %13, i64 0, i32 2 | |
; SelectorExpr | |
%15 = call %..rawptr @misc-49.get_app_handle(%Context* noalias nonnull %__.context_ptr) | |
store %..rawptr %15, %..rawptr* %14 | |
; AssignStmt | |
%16 = load %state-38.State*, %state-38.State** %0, align 8 | |
%17 = getelementptr inbounds %state-38.State, %state-38.State* %16, i64 0 | |
%18 = getelementptr inbounds %state-38.State, %state-38.State* %17, i64 0, i32 3 | |
; SelectorExpr | |
%19 = load %state-38.State*, %state-38.State** %0, align 8 | |
%20 = getelementptr inbounds %state-38.State, %state-38.State* %19, i64 0 | |
%21 = getelementptr inbounds %state-38.State, %state-38.State* %20, i64 0, i32 2 | |
%22 = load %..rawptr, %..rawptr* %21, align 8 | |
%23 = call %..rawptr @window-45.create_window3(%..rawptr %22, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$9f, i64 0, i32 0), i64 12}, i64 1280, i64 720, i32 13565952, %Context* noalias nonnull %__.context_ptr) | |
store %..rawptr %23, %..rawptr* %18 | |
; AssignStmt | |
%24 = load %state-38.State*, %state-38.State** %0, align 8 | |
%25 = getelementptr inbounds %state-38.State, %state-38.State* %24, i64 0 | |
%26 = getelementptr inbounds %state-38.State, %state-38.State* %25, i64 0, i32 4 | |
; SelectorExpr | |
%27 = load %state-38.State*, %state-38.State** %0, align 8 | |
%28 = getelementptr inbounds %state-38.State, %state-38.State* %27, i64 0 | |
%29 = getelementptr inbounds %state-38.State, %state-38.State* %28, i64 0, i32 3 | |
%30 = load %..rawptr, %..rawptr* %29, align 8 | |
%31 = call %..rawptr @opengl-48.create_gl_context_min(%..rawptr %30, i64 3, i64 3, %Context* noalias nonnull %__.context_ptr) | |
store %..rawptr %31, %..rawptr* %26 | |
; SelectorExpr | |
%32 = bitcast void (%..rawptr, %..rawptr, %..string, %Context*)* @main-0.set_proc to void (%..rawptr, %..rawptr, %..string, %Context*)* | |
%33 = bitcast %..rawptr (%..string, %Context*)* @main-0.load_lib to %..rawptr (%..string, %Context*)* | |
%34 = bitcast void (%..rawptr, %Context*)* @main-0.free_lib to void (%..rawptr, %Context*)* | |
call void @gl-24.load_functions(void (%..rawptr, %..rawptr, %..string, %Context*)* %32, %..rawptr (%..string, %Context*)* %33, void (%..rawptr, %Context*)* %34, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
%35 = load %state-38.State*, %state-38.State** %0, align 8 | |
%36 = getelementptr inbounds %state-38.State, %state-38.State* %35, i64 0 | |
%37 = getelementptr inbounds %state-38.State, %state-38.State* %36, i64 0, i32 5 | |
%38 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$a0, i64 0, i32 0), i64 50}, i64 267, i64 18, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$a1, i64 0, i32 0), i64 4}) | |
%39 = bitcast %Source_Code_Location* %1 to %..rawptr | |
%40 = call %..rawptr @__mem_zero(%..rawptr %39, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %1 | |
store %Source_Code_Location %38, %Source_Code_Location* %1 | |
%41 = call %brew_imgui-23.State* @_preload-0.new-19388(%Source_Code_Location* %1, %Context* noalias nonnull %__.context_ptr) | |
store %brew_imgui-23.State* %41, %brew_imgui-23.State** %37 | |
; SelectorExpr | |
%42 = load %state-38.State*, %state-38.State** %0, align 8 | |
%43 = getelementptr inbounds %state-38.State, %state-38.State* %42, i64 0 | |
%44 = getelementptr inbounds %state-38.State, %state-38.State* %43, i64 0, i32 5 | |
%45 = load %brew_imgui-23.State*, %brew_imgui-23.State** %44, align 8 | |
%46 = load %state-38.State*, %state-38.State** %0, align 8 | |
%47 = getelementptr inbounds %state-38.State, %state-38.State* %46, i64 0 | |
%48 = getelementptr inbounds %state-38.State, %state-38.State* %47, i64 0, i32 3 | |
%49 = load %..rawptr, %..rawptr* %48, align 8 | |
call void @brew_imgui-23.init(%brew_imgui-23.State* %45, %..rawptr %49, void (%Context*)* @main-0.agc_style, i1 true, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%50 = load i8 (i32)*, i8 (i32)** @opengl_wgl-62.swap_interval, align 8 | |
%51 = call ccc i8 %50(i32 -1) | |
; SelectorExpr | |
%52 = load void (float, float, float, float)*, void (float, float, float, float)** @gl-24.clear_color, align 8 | |
call ccc void %52(float 0x3fb9999980000000, float 0x3fb9999980000000, float 0x3fb9999980000000, float 0x3ff0000000000000) | |
; SelectorExpr | |
%53 = load %state-38.State*, %state-38.State** %0, align 8 | |
%54 = getelementptr inbounds %state-38.State, %state-38.State* %53, i64 0 | |
%55 = getelementptr inbounds %state-38.State, %state-38.State* %54, i64 0, i32 20 | |
%56 = getelementptr inbounds i32, i32* %55, i64 0 | |
%57 = load %state-38.State*, %state-38.State** %0, align 8 | |
%58 = getelementptr inbounds %state-38.State, %state-38.State* %57, i64 0 | |
%59 = getelementptr inbounds %state-38.State, %state-38.State* %58, i64 0, i32 21 | |
%60 = getelementptr inbounds i32, i32* %59, i64 0 | |
%61 = load %state-38.State*, %state-38.State** %0, align 8 | |
%62 = getelementptr inbounds %state-38.State, %state-38.State* %61, i64 0 | |
%63 = getelementptr inbounds %state-38.State, %state-38.State* %62, i64 0, i32 22 | |
%64 = getelementptr inbounds i32, i32* %63, i64 0 | |
call void @libgit2-29.lib_version(i32* %56, i32* %60, i32* %64, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
%65 = load %state-38.State*, %state-38.State** %0, align 8 | |
%66 = getelementptr inbounds %state-38.State, %state-38.State* %65, i64 0 | |
%67 = getelementptr inbounds %state-38.State, %state-38.State* %66, i64 0, i32 23 | |
; SelectorExpr | |
%68 = load %state-38.State*, %state-38.State** %0, align 8 | |
%69 = getelementptr inbounds %state-38.State, %state-38.State* %68, i64 0 | |
%70 = getelementptr inbounds %state-38.State, %state-38.State* %69, i64 0, i32 20 | |
%71 = load i32, i32* %70, align 4 | |
%72 = load %state-38.State*, %state-38.State** %0, align 8 | |
%73 = getelementptr inbounds %state-38.State, %state-38.State* %72, i64 0 | |
%74 = getelementptr inbounds %state-38.State, %state-38.State* %73, i64 0, i32 21 | |
%75 = load i32, i32* %74, align 4 | |
%76 = load %state-38.State*, %state-38.State** %0, align 8 | |
%77 = getelementptr inbounds %state-38.State, %state-38.State* %76, i64 0 | |
%78 = getelementptr inbounds %state-38.State, %state-38.State* %77, i64 0, i32 22 | |
%79 = load i32, i32* %78, align 4 | |
%80 = bitcast %..any* %2 to %..rawptr | |
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16) | |
store %..any zeroinitializer, %..any* %2 | |
%82 = bitcast i32* %70 to %..rawptr | |
%83 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11 | |
%84 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
store %..rawptr %82, %..rawptr* %84 | |
%85 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
store %Type_Info* %83, %Type_Info** %85 | |
%86 = load %..any, %..any* %2, align 8 | |
%87 = bitcast %..any* %3 to %..rawptr | |
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 16) | |
store %..any zeroinitializer, %..any* %3 | |
%89 = bitcast i32* %74 to %..rawptr | |
%90 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11 | |
%91 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 0 | |
store %..rawptr %89, %..rawptr* %91 | |
%92 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 1 | |
store %Type_Info* %90, %Type_Info** %92 | |
%93 = load %..any, %..any* %3, align 8 | |
%94 = bitcast %..any* %4 to %..rawptr | |
%95 = call %..rawptr @__mem_zero(%..rawptr %94, i64 16) | |
store %..any zeroinitializer, %..any* %4 | |
%96 = bitcast i32* %78 to %..rawptr | |
%97 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11 | |
%98 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
store %..rawptr %96, %..rawptr* %98 | |
%99 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
store %Type_Info* %97, %Type_Info** %99 | |
%100 = load %..any, %..any* %4, align 8 | |
; variadic call argument generation | |
%101 = bitcast {%..any*, i64}* %5 to %..rawptr | |
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %5 | |
%103 = bitcast [3 x %..any]* %6 to %..rawptr | |
%104 = call %..rawptr @__mem_zero(%..rawptr %103, i64 48) | |
store [3 x %..any] zeroinitializer, [3 x %..any]* %6 | |
%105 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 0 | |
store %..any %86, %..any* %105 | |
%106 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 1 | |
store %..any %93, %..any* %106 | |
%107 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 2 | |
store %..any %100, %..any* %107 | |
%108 = getelementptr inbounds [3 x %..any], [3 x %..any]* %6, i64 0, i32 0 | |
%109 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %5, i64 0, i32 0 | |
store %..any* %108, %..any** %109 | |
%110 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %5, i64 0, i32 1 | |
store i64 3, i64* %110 | |
%111 = load {%..any*, i64}, {%..any*, i64}* %5, align 8 | |
%112 = bitcast {%..any*, i64}* %7 to %..rawptr | |
%113 = call %..rawptr @__mem_zero(%..rawptr %112, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %7 | |
store {%..any*, i64} %111, {%..any*, i64}* %7 | |
%114 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$a2, i64 0, i32 0), i64 17}, {%..any*, i64}* %7, %Context* noalias nonnull %__.context_ptr) | |
store %..string %114, %..string* %67 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%115 = call %time_util-22.Timer @time_util-22.create_timer(double 0x4004000000000000, i1 true, %Context* noalias nonnull %__.context_ptr) | |
store %time_util-22.Timer %115, %time_util-22.Timer* @status-39.status_refresh_timer | |
ret void | |
} | |
define void @main-0.begin_frame(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %state-38.State*, align 16 | |
%1 = alloca %msg-46.MsgQuitMessage, align 16 | |
%2 = alloca %msg-46.MsgChar, align 16 | |
%3 = alloca %msg-46.MsgKey, align 16 | |
%4 = alloca %msg-46.MsgMouseButton, align 16 | |
%5 = alloca %msg-46.MsgWindowFocus, align 16 | |
%6 = alloca %msg-46.MsgMouseMove, align 16 | |
%7 = alloca %msg-46.MsgSizeChange, align 16 | |
%8 = alloca %msg-46.MsgMouseWheel, align 16 | |
store %state-38.State* %state, %state-38.State** %0 | |
call void @debug-30.debug_reset(%Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
%9 = load %state-38.State*, %state-38.State** %0, align 8 | |
%10 = getelementptr inbounds %state-38.State, %state-38.State* %9, i64 0 | |
%11 = getelementptr inbounds %state-38.State, %state-38.State* %10, i64 0, i32 10 | |
%12 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %11, i64 0, i32 6 | |
store i64 0, i64* %12 | |
; ForStmt | |
br label %for.loop-1 | |
for.loop-1: | |
; SelectorExpr | |
%13 = load %state-38.State*, %state-38.State** %0, align 8 | |
%14 = getelementptr inbounds %state-38.State, %state-38.State* %13, i64 0 | |
%15 = getelementptr inbounds %state-38.State, %state-38.State* %14, i64 0, i32 6 | |
%16 = getelementptr inbounds %msg-46.Msg, %msg-46.Msg* %15, i64 0 | |
%17 = call i8 @msg-46.poll_message(%msg-46.Msg* %16, %Context* noalias nonnull %__.context_ptr) | |
%18 = trunc i8 %17 to i1 | |
br i1 %18, label %for.body-2, label %for.done-33 | |
for.body-2: | |
; TypeSwitchStmt | |
%19 = load %state-38.State*, %state-38.State** %0, align 8 | |
%20 = getelementptr inbounds %state-38.State, %state-38.State* %19, i64 0 | |
%21 = getelementptr inbounds %state-38.State, %state-38.State* %20, i64 0, i32 6 | |
%22 = load %msg-46.Msg, %msg-46.Msg* %21, align 8 | |
; get union's tag | |
%23 = getelementptr inbounds %msg-46.Msg, %msg-46.Msg* %21, i64 0, i32 2 ; UnionTagPtr | |
%24 = load i8, i8* %23, align 1 | |
%25 = bitcast %msg-46.Msg* %21 to %..rawptr | |
%26 = icmp eq i8 %24, 2 | |
br i1 %26, label %typeswitch.body-4, label %typeswitch.next-3 | |
typeswitch.next-3: | |
%27 = icmp eq i8 %24, 9 | |
br i1 %27, label %typeswitch.body-6, label %typeswitch.next-5 | |
typeswitch.body-4: | |
%28 = bitcast %..rawptr %25 to %msg-46.MsgQuitMessage* | |
%29 = load %msg-46.MsgQuitMessage, %msg-46.MsgQuitMessage* %28, align 8 | |
store %msg-46.MsgQuitMessage %29, %msg-46.MsgQuitMessage* %1 | |
; AssignStmt | |
%30 = load %state-38.State*, %state-38.State** %0, align 8 | |
%31 = getelementptr inbounds %state-38.State, %state-38.State* %30, i64 0 | |
%32 = getelementptr inbounds %state-38.State, %state-38.State* %31, i64 0, i32 0 | |
store i8 0, i8* %32 | |
br label %typeswitch.done-32 | |
typeswitch.next-5: | |
%33 = icmp eq i8 %24, 3 | |
br i1 %33, label %typeswitch.body-8, label %typeswitch.next-7 | |
typeswitch.body-6: | |
%34 = bitcast %..rawptr %25 to %msg-46.MsgChar* | |
%35 = load %msg-46.MsgChar, %msg-46.MsgChar* %34, align 4 | |
store %msg-46.MsgChar %35, %msg-46.MsgChar* %2 | |
; SelectorExpr | |
; SelectorExpr | |
%36 = getelementptr inbounds %msg-46.MsgChar, %msg-46.MsgChar* %2, i64 0, i32 0 | |
%37 = load i32, i32* %36, align 4 | |
%38 = trunc i32 %37 to i16 | |
call ccc void @ImGuiIO_AddInputCharacter(i16 %38) | |
br label %typeswitch.done-32 | |
typeswitch.next-7: | |
%39 = icmp eq i8 %24, 7 | |
br i1 %39, label %typeswitch.body-18, label %typeswitch.next-17 | |
typeswitch.body-8: | |
%40 = bitcast %..rawptr %25 to %msg-46.MsgKey* | |
%41 = load %msg-46.MsgKey, %msg-46.MsgKey* %40, align 8 | |
store %msg-46.MsgKey %41, %msg-46.MsgKey* %3 | |
; SwitchStmt | |
; SelectorExpr | |
%42 = getelementptr inbounds %msg-46.MsgKey, %msg-46.MsgKey* %3, i64 0, i32 0 | |
%43 = load i64, i64* %42, align 8 | |
%44 = icmp eq i64 %43, 27 | |
br i1 %44, label %switch.case.body-10, label %switch.case.next-9 | |
switch.case.next-9: | |
%45 = icmp eq i64 %43, 160 | |
br i1 %45, label %switch.fall.body-15, label %switch.case.next-14 | |
switch.case.body-10: | |
; IfStmt | |
; SelectorExpr | |
%46 = getelementptr inbounds %msg-46.MsgKey, %msg-46.MsgKey* %3, i64 0, i32 1 | |
%47 = load i8, i8* %46, align 1 | |
%48 = trunc i8 %47 to i1 | |
br i1 %48, label %cmp.and-11, label %if.done-13 | |
cmp.and-11: | |
%49 = load %state-38.State*, %state-38.State** %0, align 8 | |
%50 = getelementptr inbounds %state-38.State, %state-38.State* %49, i64 0 | |
%51 = getelementptr inbounds %state-38.State, %state-38.State* %50, i64 0, i32 9 | |
%52 = load i8, i8* %51, align 1 | |
%53 = trunc i8 %52 to i1 | |
br i1 %53, label %if.then-12, label %if.done-13 | |
if.then-12: | |
; AssignStmt | |
%54 = load %state-38.State*, %state-38.State** %0, align 8 | |
%55 = getelementptr inbounds %state-38.State, %state-38.State* %54, i64 0 | |
%56 = getelementptr inbounds %state-38.State, %state-38.State* %55, i64 0, i32 0 | |
store i8 0, i8* %56 | |
br label %if.done-13 | |
if.done-13: | |
br label %switch.done-16 | |
switch.case.next-14: | |
br label %switch.done-16 | |
switch.fall.body-15: | |
; AssignStmt | |
%57 = load %state-38.State*, %state-38.State** %0, align 8 | |
%58 = getelementptr inbounds %state-38.State, %state-38.State* %57, i64 0 | |
%59 = getelementptr inbounds %state-38.State, %state-38.State* %58, i64 0, i32 9 | |
; SelectorExpr | |
%60 = getelementptr inbounds %msg-46.MsgKey, %msg-46.MsgKey* %3, i64 0, i32 1 | |
%61 = load i8, i8* %60, align 1 | |
store i8 %61, i8* %59 | |
br label %switch.done-16 | |
switch.done-16: | |
br label %typeswitch.done-32 | |
typeswitch.next-17: | |
%62 = icmp eq i8 %24, 4 | |
br i1 %62, label %typeswitch.body-25, label %typeswitch.next-24 | |
typeswitch.body-18: | |
%63 = bitcast %..rawptr %25 to %msg-46.MsgMouseButton* | |
%64 = load %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %63, align 8 | |
store %msg-46.MsgMouseButton %64, %msg-46.MsgMouseButton* %4 | |
; SwitchStmt | |
; SelectorExpr | |
%65 = getelementptr inbounds %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %4, i64 0, i32 0 | |
%66 = load i64, i64* %65, align 8 | |
%67 = icmp eq i64 %66, 1 | |
br i1 %67, label %switch.case.body-20, label %switch.case.next-19 | |
switch.case.next-19: | |
%68 = icmp eq i64 %66, 2 | |
br i1 %68, label %switch.fall.body-22, label %switch.case.next-21 | |
switch.case.body-20: | |
; AssignStmt | |
%69 = load %state-38.State*, %state-38.State** %0, align 8 | |
%70 = getelementptr inbounds %state-38.State, %state-38.State* %69, i64 0 | |
%71 = getelementptr inbounds %state-38.State, %state-38.State* %70, i64 0, i32 11 | |
; SelectorExpr | |
%72 = getelementptr inbounds %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %4, i64 0, i32 1 | |
%73 = load i8, i8* %72, align 1 | |
store i8 %73, i8* %71 | |
br label %switch.done-23 | |
switch.case.next-21: | |
br label %switch.done-23 | |
switch.fall.body-22: | |
; AssignStmt | |
%74 = load %state-38.State*, %state-38.State** %0, align 8 | |
%75 = getelementptr inbounds %state-38.State, %state-38.State* %74, i64 0 | |
%76 = getelementptr inbounds %state-38.State, %state-38.State* %75, i64 0, i32 12 | |
; SelectorExpr | |
%77 = getelementptr inbounds %msg-46.MsgMouseButton, %msg-46.MsgMouseButton* %4, i64 0, i32 1 | |
%78 = load i8, i8* %77, align 1 | |
store i8 %78, i8* %76 | |
br label %switch.done-23 | |
switch.done-23: | |
br label %typeswitch.done-32 | |
typeswitch.next-24: | |
%79 = icmp eq i8 %24, 6 | |
br i1 %79, label %typeswitch.body-27, label %typeswitch.next-26 | |
typeswitch.body-25: | |
%80 = bitcast %..rawptr %25 to %msg-46.MsgWindowFocus* | |
%81 = load %msg-46.MsgWindowFocus, %msg-46.MsgWindowFocus* %80, align 1 | |
store %msg-46.MsgWindowFocus %81, %msg-46.MsgWindowFocus* %5 | |
; AssignStmt | |
; SelectorExpr | |
%82 = load %state-38.State*, %state-38.State** %0, align 8 | |
%83 = getelementptr inbounds %state-38.State, %state-38.State* %82, i64 0 | |
%84 = getelementptr inbounds %state-38.State, %state-38.State* %83, i64 0, i32 10 | |
%85 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %84, i64 0, i32 3 | |
; SelectorExpr | |
%86 = getelementptr inbounds %msg-46.MsgWindowFocus, %msg-46.MsgWindowFocus* %5, i64 0, i32 0 | |
%87 = load i8, i8* %86, align 1 | |
store i8 %87, i8* %85 | |
br label %typeswitch.done-32 | |
typeswitch.next-26: | |
%88 = icmp eq i8 %24, 8 | |
br i1 %88, label %typeswitch.body-29, label %typeswitch.next-28 | |
typeswitch.body-27: | |
%89 = bitcast %..rawptr %25 to %msg-46.MsgMouseMove* | |
%90 = load %msg-46.MsgMouseMove, %msg-46.MsgMouseMove* %89, align 8 | |
store %msg-46.MsgMouseMove %90, %msg-46.MsgMouseMove* %6 | |
; AssignStmt | |
%91 = load %state-38.State*, %state-38.State** %0, align 8 | |
%92 = getelementptr inbounds %state-38.State, %state-38.State* %91, i64 0 | |
%93 = getelementptr inbounds %state-38.State, %state-38.State* %92, i64 0, i32 14 | |
; SelectorExpr | |
%94 = getelementptr inbounds %msg-46.MsgMouseMove, %msg-46.MsgMouseMove* %6, i64 0, i32 0 | |
%95 = load i64, i64* %94, align 8 | |
store i64 %95, i64* %93 | |
; AssignStmt | |
%96 = load %state-38.State*, %state-38.State** %0, align 8 | |
%97 = getelementptr inbounds %state-38.State, %state-38.State* %96, i64 0 | |
%98 = getelementptr inbounds %state-38.State, %state-38.State* %97, i64 0, i32 15 | |
; SelectorExpr | |
%99 = getelementptr inbounds %msg-46.MsgMouseMove, %msg-46.MsgMouseMove* %6, i64 0, i32 1 | |
%100 = load i64, i64* %99, align 8 | |
store i64 %100, i64* %98 | |
br label %typeswitch.done-32 | |
typeswitch.next-28: | |
%101 = icmp eq i8 %24, 10 | |
br i1 %101, label %typeswitch.body-31, label %typeswitch.next-30 | |
typeswitch.body-29: | |
%102 = bitcast %..rawptr %25 to %msg-46.MsgSizeChange* | |
%103 = load %msg-46.MsgSizeChange, %msg-46.MsgSizeChange* %102, align 8 | |
store %msg-46.MsgSizeChange %103, %msg-46.MsgSizeChange* %7 | |
; AssignStmt | |
%104 = load %state-38.State*, %state-38.State** %0, align 8 | |
%105 = getelementptr inbounds %state-38.State, %state-38.State* %104, i64 0 | |
%106 = getelementptr inbounds %state-38.State, %state-38.State* %105, i64 0, i32 7 | |
; SelectorExpr | |
%107 = getelementptr inbounds %msg-46.MsgSizeChange, %msg-46.MsgSizeChange* %7, i64 0, i32 0 | |
%108 = load i64, i64* %107, align 8 | |
store i64 %108, i64* %106 | |
; AssignStmt | |
%109 = load %state-38.State*, %state-38.State** %0, align 8 | |
%110 = getelementptr inbounds %state-38.State, %state-38.State* %109, i64 0 | |
%111 = getelementptr inbounds %state-38.State, %state-38.State* %110, i64 0, i32 8 | |
; SelectorExpr | |
%112 = getelementptr inbounds %msg-46.MsgSizeChange, %msg-46.MsgSizeChange* %7, i64 0, i32 1 | |
%113 = load i64, i64* %112, align 8 | |
store i64 %113, i64* %111 | |
; SelectorExpr | |
%114 = load void (i32, i32, i32, i32)*, void (i32, i32, i32, i32)** @gl-24.viewport, align 8 | |
%115 = load %state-38.State*, %state-38.State** %0, align 8 | |
%116 = getelementptr inbounds %state-38.State, %state-38.State* %115, i64 0 | |
%117 = getelementptr inbounds %state-38.State, %state-38.State* %116, i64 0, i32 7 | |
%118 = load i64, i64* %117, align 8 | |
%119 = trunc i64 %118 to i32 | |
%120 = load %state-38.State*, %state-38.State** %0, align 8 | |
%121 = getelementptr inbounds %state-38.State, %state-38.State* %120, i64 0 | |
%122 = getelementptr inbounds %state-38.State, %state-38.State* %121, i64 0, i32 8 | |
%123 = load i64, i64* %122, align 8 | |
%124 = trunc i64 %123 to i32 | |
call ccc void %114(i32 0, i32 0, i32 %119, i32 %124) | |
; SelectorExpr | |
%125 = load void (i32, i32, i32, i32)*, void (i32, i32, i32, i32)** @gl-24.scissor, align 8 | |
%126 = load %state-38.State*, %state-38.State** %0, align 8 | |
%127 = getelementptr inbounds %state-38.State, %state-38.State* %126, i64 0 | |
%128 = getelementptr inbounds %state-38.State, %state-38.State* %127, i64 0, i32 7 | |
%129 = load i64, i64* %128, align 8 | |
%130 = trunc i64 %129 to i32 | |
%131 = load %state-38.State*, %state-38.State** %0, align 8 | |
%132 = getelementptr inbounds %state-38.State, %state-38.State* %131, i64 0 | |
%133 = getelementptr inbounds %state-38.State, %state-38.State* %132, i64 0, i32 8 | |
%134 = load i64, i64* %133, align 8 | |
%135 = trunc i64 %134 to i32 | |
call ccc void %125(i32 0, i32 0, i32 %130, i32 %135) | |
br label %typeswitch.done-32 | |
typeswitch.next-30: | |
br label %typeswitch.done-32 | |
typeswitch.body-31: | |
%136 = bitcast %..rawptr %25 to %msg-46.MsgMouseWheel* | |
%137 = load %msg-46.MsgMouseWheel, %msg-46.MsgMouseWheel* %136, align 8 | |
store %msg-46.MsgMouseWheel %137, %msg-46.MsgMouseWheel* %8 | |
; AssignStmt | |
; SelectorExpr | |
%138 = load %state-38.State*, %state-38.State** %0, align 8 | |
%139 = getelementptr inbounds %state-38.State, %state-38.State* %138, i64 0 | |
%140 = getelementptr inbounds %state-38.State, %state-38.State* %139, i64 0, i32 10 | |
%141 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %140, i64 0, i32 6 | |
; SelectorExpr | |
%142 = getelementptr inbounds %msg-46.MsgMouseWheel, %msg-46.MsgMouseWheel* %8, i64 0, i32 0 | |
%143 = load i64, i64* %142, align 8 | |
store i64 %143, i64* %141 | |
br label %typeswitch.done-32 | |
typeswitch.done-32: | |
br label %for.loop-1 | |
for.done-33: | |
; AssignStmt | |
%144 = load %state-38.State*, %state-38.State** %0, align 8 | |
%145 = getelementptr inbounds %state-38.State, %state-38.State* %144, i64 0 | |
%146 = getelementptr inbounds %state-38.State, %state-38.State* %145, i64 0, i32 1 | |
; SelectorExpr | |
%147 = load %state-38.State*, %state-38.State** %0, align 8 | |
%148 = getelementptr inbounds %state-38.State, %state-38.State* %147, i64 0 | |
%149 = getelementptr inbounds %state-38.State, %state-38.State* %148, i64 0, i32 13 | |
%150 = getelementptr inbounds %misc-49.TimeData, %misc-49.TimeData* %149, i64 0 | |
%151 = call double @misc-49.time(%misc-49.TimeData* %150, %Context* noalias nonnull %__.context_ptr) | |
store double %151, double* %146 | |
; AssignStmt | |
; SelectorExpr | |
%152 = load %state-38.State*, %state-38.State** %0, align 8 | |
%153 = getelementptr inbounds %state-38.State, %state-38.State* %152, i64 0 | |
%154 = getelementptr inbounds %state-38.State, %state-38.State* %153, i64 0, i32 10 | |
%155 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %154, i64 0, i32 0 | |
%156 = load %state-38.State*, %state-38.State** %0, align 8 | |
%157 = getelementptr inbounds %state-38.State, %state-38.State* %156, i64 0 | |
%158 = getelementptr inbounds %state-38.State, %state-38.State* %157, i64 0, i32 1 | |
%159 = load double, double* %158, align 8 | |
%160 = fptrunc double %159 to float | |
store float %160, float* %155 | |
; AssignStmt | |
; SelectorExpr | |
%161 = load %state-38.State*, %state-38.State** %0, align 8 | |
%162 = getelementptr inbounds %state-38.State, %state-38.State* %161, i64 0 | |
%163 = getelementptr inbounds %state-38.State, %state-38.State* %162, i64 0, i32 10 | |
%164 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %163, i64 0, i32 4 | |
%165 = load %state-38.State*, %state-38.State** %0, align 8 | |
%166 = getelementptr inbounds %state-38.State, %state-38.State* %165, i64 0 | |
%167 = getelementptr inbounds %state-38.State, %state-38.State* %166, i64 0, i32 14 | |
%168 = load i64, i64* %167, align 8 | |
store i64 %168, i64* %164 | |
; AssignStmt | |
; SelectorExpr | |
%169 = load %state-38.State*, %state-38.State** %0, align 8 | |
%170 = getelementptr inbounds %state-38.State, %state-38.State* %169, i64 0 | |
%171 = getelementptr inbounds %state-38.State, %state-38.State* %170, i64 0, i32 10 | |
%172 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %171, i64 0, i32 5 | |
%173 = load %state-38.State*, %state-38.State** %0, align 8 | |
%174 = getelementptr inbounds %state-38.State, %state-38.State* %173, i64 0 | |
%175 = getelementptr inbounds %state-38.State, %state-38.State* %174, i64 0, i32 15 | |
%176 = load i64, i64* %175, align 8 | |
store i64 %176, i64* %172 | |
; AssignStmt | |
; SelectorExpr | |
%177 = load %state-38.State*, %state-38.State** %0, align 8 | |
%178 = getelementptr inbounds %state-38.State, %state-38.State* %177, i64 0 | |
%179 = getelementptr inbounds %state-38.State, %state-38.State* %178, i64 0, i32 10 | |
%180 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %179, i64 0, i32 1 | |
%181 = load %state-38.State*, %state-38.State** %0, align 8 | |
%182 = getelementptr inbounds %state-38.State, %state-38.State* %181, i64 0 | |
%183 = getelementptr inbounds %state-38.State, %state-38.State* %182, i64 0, i32 7 | |
%184 = load i64, i64* %183, align 8 | |
store i64 %184, i64* %180 | |
; AssignStmt | |
; SelectorExpr | |
%185 = load %state-38.State*, %state-38.State** %0, align 8 | |
%186 = getelementptr inbounds %state-38.State, %state-38.State* %185, i64 0 | |
%187 = getelementptr inbounds %state-38.State, %state-38.State* %186, i64 0, i32 10 | |
%188 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %187, i64 0, i32 2 | |
%189 = load %state-38.State*, %state-38.State** %0, align 8 | |
%190 = getelementptr inbounds %state-38.State, %state-38.State* %189, i64 0 | |
%191 = getelementptr inbounds %state-38.State, %state-38.State* %190, i64 0, i32 8 | |
%192 = load i64, i64* %191, align 8 | |
store i64 %192, i64* %188 | |
; AssignStmt | |
; SelectorExpr | |
%193 = load %state-38.State*, %state-38.State** %0, align 8 | |
%194 = getelementptr inbounds %state-38.State, %state-38.State* %193, i64 0 | |
%195 = getelementptr inbounds %state-38.State, %state-38.State* %194, i64 0, i32 10 | |
%196 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %195, i64 0, i32 7 | |
%197 = load %state-38.State*, %state-38.State** %0, align 8 | |
%198 = getelementptr inbounds %state-38.State, %state-38.State* %197, i64 0 | |
%199 = getelementptr inbounds %state-38.State, %state-38.State* %198, i64 0, i32 11 | |
%200 = load i8, i8* %199, align 1 | |
store i8 %200, i8* %196 | |
; AssignStmt | |
; SelectorExpr | |
%201 = load %state-38.State*, %state-38.State** %0, align 8 | |
%202 = getelementptr inbounds %state-38.State, %state-38.State* %201, i64 0 | |
%203 = getelementptr inbounds %state-38.State, %state-38.State* %202, i64 0, i32 10 | |
%204 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %203, i64 0, i32 8 | |
%205 = load %state-38.State*, %state-38.State** %0, align 8 | |
%206 = getelementptr inbounds %state-38.State, %state-38.State* %205, i64 0 | |
%207 = getelementptr inbounds %state-38.State, %state-38.State* %206, i64 0, i32 12 | |
%208 = load i8, i8* %207, align 1 | |
store i8 %208, i8* %204 | |
; SelectorExpr | |
call void @gl-24.clear(i32 16640, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%209 = load %state-38.State*, %state-38.State** %0, align 8 | |
%210 = getelementptr inbounds %state-38.State, %state-38.State* %209, i64 0 | |
%211 = getelementptr inbounds %state-38.State, %state-38.State* %210, i64 0, i32 10 | |
%212 = getelementptr inbounds %brew_imgui-23.FrameState, %brew_imgui-23.FrameState* %211, i64 0 | |
call void @brew_imgui-23.begin_new_frame(%brew_imgui-23.FrameState* %212, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @main-0.end_frame(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %state-38.State*, align 16 | |
%1 = alloca %dear_imgui-50.IO*, align 16 | |
store %state-38.State* %state, %state-38.State** %0 | |
; io | |
; SelectorExpr | |
%2 = call ccc %dear_imgui-50.IO* @igGetIO() | |
store %dear_imgui-50.IO* %2, %dear_imgui-50.IO** %1 | |
; IfStmt | |
; SelectorExpr | |
%3 = load %dear_imgui-50.IO*, %dear_imgui-50.IO** %1, align 8 | |
%4 = getelementptr inbounds %dear_imgui-50.IO, %dear_imgui-50.IO* %3, i64 0 | |
%5 = getelementptr inbounds %dear_imgui-50.IO, %dear_imgui-50.IO* %4, i64 0, i32 39 | |
%6 = load i8, i8* %5, align 1 | |
%7 = trunc i8 %6 to i1 | |
br i1 %7, label %if.then-1, label %if.done-2 | |
if.then-1: | |
call void @main-0.set_cursor(%Context* noalias nonnull %__.context_ptr) | |
br label %if.done-2 | |
if.done-2: | |
; SelectorExpr | |
%8 = load %state-38.State*, %state-38.State** %0, align 8 | |
%9 = getelementptr inbounds %state-38.State, %state-38.State* %8, i64 0 | |
%10 = getelementptr inbounds %state-38.State, %state-38.State* %9, i64 0, i32 5 | |
%11 = load %brew_imgui-23.State*, %brew_imgui-23.State** %10, align 8 | |
%12 = load %state-38.State*, %state-38.State** %0, align 8 | |
%13 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
%14 = getelementptr inbounds %state-38.State, %state-38.State* %13, i64 0, i32 7 | |
%15 = load i64, i64* %14, align 8 | |
%16 = load %state-38.State*, %state-38.State** %0, align 8 | |
%17 = getelementptr inbounds %state-38.State, %state-38.State* %16, i64 0 | |
%18 = getelementptr inbounds %state-38.State, %state-38.State* %17, i64 0, i32 8 | |
%19 = load i64, i64* %18, align 8 | |
call void @brew_imgui-23.render_proc(%brew_imgui-23.State* %11, i1 true, i64 %15, i64 %19, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%20 = load %state-38.State*, %state-38.State** %0, align 8 | |
%21 = getelementptr inbounds %state-38.State, %state-38.State* %20, i64 0 | |
%22 = getelementptr inbounds %state-38.State, %state-38.State* %21, i64 0, i32 3 | |
%23 = load %..rawptr, %..rawptr* %22, align 8 | |
call void @window-45.swap_buffers(%..rawptr %23, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @main-0.main_menu(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %state-38.State*, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca i8, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca %..string, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca {i8*, i64}, align 16 | |
%7 = alloca {%..any*, i64}, align 16 | |
%8 = alloca {i8*, i64}, align 16 | |
%9 = alloca {%..any*, i64}, align 16 | |
%10 = alloca {i8*, i64}, align 16 | |
%11 = alloca {%..any*, i64}, align 16 | |
%12 = alloca {i8*, i64}, align 16 | |
%13 = alloca {%..any*, i64}, align 16 | |
%14 = alloca {i8*, i64}, align 16 | |
%15 = alloca {%..any*, i64}, align 16 | |
%16 = alloca {i8*, i64}, align 16 | |
%17 = alloca {%..any*, i64}, align 16 | |
%18 = alloca {i8*, i64}, align 16 | |
%19 = alloca {%..any*, i64}, align 16 | |
%20 = alloca {i8*, i64}, align 16 | |
%21 = alloca {%..any*, i64}, align 16 | |
%22 = alloca {i8*, i64}, align 16 | |
%23 = alloca {i8*, i64}, align 16 | |
%24 = alloca {i8*, i64}, align 16 | |
%25 = alloca {i8*, i64}, align 16 | |
%26 = alloca %dear_imgui-50.Vec2, align 16 | |
%27 = alloca %libgit2_types-55.Clone_Options, align 16 | |
%28 = alloca i32, align 16 | |
%29 = alloca %Source_Code_Location, align 16 | |
%30 = alloca %libgit2_types-55.Repository*, align 16 | |
%31 = alloca i32, align 16 | |
%32 = alloca {i8*, i64}, align 16 | |
%33 = alloca %..string, align 16 | |
%34 = alloca {i8*, i64}, align 16 | |
%35 = alloca %..string, align 16 | |
%36 = alloca %Source_Code_Location, align 16 | |
%37 = alloca %dear_imgui-50.Vec2, align 16 | |
%38 = alloca {i8*, i64}, align 16 | |
%39 = alloca {i8*, i64}, align 16 | |
%40 = alloca {i8*, i64}, align 16 | |
%41 = alloca {i8*, i64}, align 16 | |
%42 = alloca %dear_imgui-50.Vec2, align 16 | |
%43 = alloca %..string, align 16 | |
%44 = alloca %..string, align 16 | |
%45 = alloca %dear_imgui-50.Vec2, align 16 | |
%46 = alloca {i8*, i64}, align 16 | |
%47 = alloca {i8*, i64}, align 16 | |
%48 = alloca {i8*, i64}, align 16 | |
%49 = alloca {i8*, i64}, align 16 | |
%50 = alloca %dear_imgui-50.Vec2, align 16 | |
%51 = alloca %..string, align 16 | |
%52 = alloca %..string, align 16 | |
%53 = alloca %dear_imgui-50.Vec2, align 16 | |
store %state-38.State* %state, %state-38.State** %0 | |
; open_set_signature | |
store i8 0, i8* %1 | |
; open_clone_menu | |
store i8 0, i8* %2 | |
; open_set_user | |
store i8 0, i8* %3 | |
; IfStmt | |
; SelectorExpr | |
%54 = call ccc i8 @igBeginMainMenuBar() | |
%55 = trunc i8 %54 to i1 | |
br i1 %55, label %if.then-1, label %if.done-25 | |
if.then-1: | |
; DeferStmt | |
; IfStmt | |
; SelectorExpr | |
%56 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$a3, i64 0, i32 0), i64 4}, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %if.then-2, label %if.done-14 | |
if.then-2: | |
; DeferStmt | |
; IfStmt | |
; SelectorExpr | |
%58 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$a4, i64 0, i32 0), i64 8}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$a5, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%59 = trunc i8 %58 to i1 | |
br i1 %59, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; AssignStmt | |
store i8 1, i8* %2 | |
br label %if.done-4 | |
if.done-4: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%60 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5 | |
%61 = load {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %60, align 8 | |
%62 = extractvalue {%..string*, i64, i64, %Allocator} %61, 1 | |
%63 = icmp sgt i64 %62, 0 | |
%64 = zext i1 %63 to i8 | |
%65 = trunc i8 %64 to i1 | |
%66 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$a6, i64 0, i32 0), i64 13}, i1 %65, %Context* noalias nonnull %__.context_ptr) | |
%67 = trunc i8 %66 to i1 | |
br i1 %67, label %if.then-5, label %if.done-11 | |
if.then-5: | |
; DeferStmt | |
; RangeStmt | |
; s | |
%68 = bitcast %..string* %4 to %..rawptr | |
%69 = call %..rawptr @__mem_zero(%..rawptr %68, i64 16) | |
store %..string zeroinitializer, %..string* %4 | |
; SelectorExpr | |
; SelectorExpr | |
%70 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 5 | |
%71 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %70, i64 0, i32 1 | |
%72 = bitcast i64* %5 to %..rawptr | |
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 8) | |
store i64 zeroinitializer, i64* %5 | |
store i64 -1, i64* %5 | |
br label %for.index.loop-6 | |
for.index.loop-6: | |
%74 = load i64, i64* %5, align 8 | |
%75 = add i64 %74, 1 | |
store i64 %75, i64* %5 | |
%76 = load i64, i64* %71, align 8 | |
%77 = icmp slt i64 %75, %76 | |
br i1 %77, label %for.index.body-7, label %for.index.done-10 | |
for.index.body-7: | |
%78 = load i64, i64* %5, align 8 | |
%79 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %70, i64 0, i32 0 | |
%80 = load %..string*, %..string** %79, align 8 | |
%81 = getelementptr inbounds %..string, %..string* %80, i64 %78 | |
%82 = load %..string, %..string* %81, align 8 | |
store %..string %82, %..string* %4 | |
; IfStmt | |
; SelectorExpr | |
%83 = load %..string, %..string* %4, align 8 | |
%84 = call i8 @dear_imgui-50.menu_item1(%..string %83, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$a7, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%85 = trunc i8 %84 to i1 | |
br i1 %85, label %if.then-8, label %if.done-9 | |
if.then-8: | |
; AssignStmt | |
%86 = load %state-38.State*, %state-38.State** %0, align 8 | |
%87 = getelementptr inbounds %state-38.State, %state-38.State* %86, i64 0 | |
%88 = getelementptr inbounds %state-38.State, %state-38.State* %87, i64 0, i32 37 | |
store i8 1, i8* %88 | |
; AssignStmt | |
%89 = load %state-38.State*, %state-38.State** %0, align 8 | |
%90 = getelementptr inbounds %state-38.State, %state-38.State* %89, i64 0 | |
%91 = getelementptr inbounds %state-38.State, %state-38.State* %90, i64 0, i32 38 | |
%92 = load %..string, %..string* %4, align 8 | |
store %..string %92, %..string* %91 | |
br label %if.done-9 | |
if.done-9: | |
br label %for.index.loop-6 | |
for.index.done-10: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndMenu() | |
br label %if.done-11 | |
if.done-11: | |
; SelectorExpr | |
call ccc void @igSeparator() | |
; IfStmt | |
; SelectorExpr | |
%93 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$a8, i64 0, i32 0), i64 5}, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$a9, i64 0, i32 0), i64 9}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%94 = trunc i8 %93 to i1 | |
br i1 %94, label %if.then-12, label %if.done-13 | |
if.then-12: | |
; AssignStmt | |
%95 = load %state-38.State*, %state-38.State** %0, align 8 | |
%96 = getelementptr inbounds %state-38.State, %state-38.State* %95, i64 0 | |
%97 = getelementptr inbounds %state-38.State, %state-38.State* %96, i64 0, i32 0 | |
store i8 0, i8* %97 | |
br label %if.done-13 | |
if.done-13: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndMenu() | |
br label %if.done-14 | |
if.done-14: | |
; IfStmt | |
; SelectorExpr | |
%98 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$aa, i64 0, i32 0), i64 11}, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%99 = trunc i8 %98 to i1 | |
br i1 %99, label %if.then-15, label %if.done-22 | |
if.then-15: | |
; DeferStmt | |
; SelectorExpr | |
%100 = load %state-38.State*, %state-38.State** %0, align 8 | |
%101 = getelementptr inbounds %state-38.State, %state-38.State* %100, i64 0 | |
%102 = getelementptr inbounds %state-38.State, %state-38.State* %101, i64 0, i32 18 | |
%103 = getelementptr inbounds i8, i8* %102, i64 0 | |
%104 = call i8 @dear_imgui-50.checkbox(%..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$ab, i64 0, i32 0), i64 12}, i8* %103, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%105 = load %state-38.State*, %state-38.State** %0, align 8 | |
%106 = getelementptr inbounds %state-38.State, %state-38.State* %105, i64 0 | |
%107 = getelementptr inbounds %state-38.State, %state-38.State* %106, i64 0, i32 19 | |
%108 = getelementptr inbounds i8, i8* %107, i64 0 | |
%109 = call i8 @dear_imgui-50.checkbox(%..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$ac, i64 0, i32 0), i64 16}, i8* %108, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%110 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 4 | |
%111 = getelementptr inbounds i8, i8* %110, i64 0 | |
%112 = call i8 @dear_imgui-50.checkbox(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ad, i64 0, i32 0), i64 13}, i8* %111, %Context* noalias nonnull %__.context_ptr) | |
%113 = trunc i8 %112 to i1 | |
br i1 %113, label %if.then-16, label %if.done-17 | |
if.then-16: | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr) | |
br label %if.done-17 | |
if.done-17: | |
; IfStmt | |
; SelectorExpr | |
%114 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ae, i64 0, i32 0), i64 13}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$af, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%115 = trunc i8 %114 to i1 | |
br i1 %115, label %if.then-18, label %if.done-19 | |
if.then-18: | |
; AssignStmt | |
store i8 1, i8* %1 | |
br label %if.done-19 | |
if.done-19: | |
; IfStmt | |
; SelectorExpr | |
%116 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$b0, i64 0, i32 0), i64 8}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$b1, i64 0, i32 0), i64 1}, i1 false, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%117 = trunc i8 %116 to i1 | |
br i1 %117, label %if.then-20, label %if.done-21 | |
if.then-20: | |
; AssignStmt | |
store i8 1, i8* %3 | |
br label %if.done-21 | |
if.done-21: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndMenu() | |
br label %if.done-22 | |
if.done-22: | |
; IfStmt | |
; SelectorExpr | |
%118 = call i8 @dear_imgui-50.begin_menu(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$b2, i64 0, i32 0), i64 4}, i1 true, %Context* noalias nonnull %__.context_ptr) | |
%119 = trunc i8 %118 to i1 | |
br i1 %119, label %if.then-23, label %if.done-24 | |
if.then-23: | |
; DeferStmt | |
; SelectorExpr | |
%120 = call i8 @dear_imgui-50.menu_item1(%..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$b3, i64 0, i32 0), i64 20}, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$b4, i64 0, i32 0), i64 1}, i1 false, i1 false, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%121 = load %state-38.State*, %state-38.State** %0, align 8 | |
%122 = getelementptr inbounds %state-38.State, %state-38.State* %121, i64 0 | |
%123 = getelementptr inbounds %state-38.State, %state-38.State* %122, i64 0, i32 23 | |
%124 = load %..string, %..string* %123, align 8 | |
%125 = call i8 @dear_imgui-50.menu_item1(%..string %124, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$b5, i64 0, i32 0), i64 1}, i1 false, i1 false, %Context* noalias nonnull %__.context_ptr) | |
; defer | |
; SelectorExpr | |
call ccc void @igEndMenu() | |
br label %if.done-24 | |
if.done-24: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndMainMenuBar() | |
br label %if.done-25 | |
if.done-25: | |
; IfStmt | |
%126 = load i8, i8* %1, align 1 | |
%127 = trunc i8 %126 to i1 | |
br i1 %127, label %if.then-26, label %if.done-33 | |
if.then-26: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%128 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
%129 = load %..string, %..string* %128, align 8 | |
%130 = extractvalue %..string %129, 1 | |
%131 = icmp sgt i64 %130, 0 | |
%132 = zext i1 %131 to i8 | |
%133 = trunc i8 %132 to i1 | |
br i1 %133, label %if.then-27, label %if.else-28 | |
if.then-27: | |
; SelectorExpr | |
; SliceExpr | |
%134 = load %state-38.State*, %state-38.State** %0, align 8 | |
%135 = getelementptr inbounds %state-38.State, %state-38.State* %134, i64 0 | |
%136 = getelementptr inbounds %state-38.State, %state-38.State* %135, i64 0, i32 33 | |
%137 = load [1024 x i8], [1024 x i8]* %136, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$b6, i64 0, i32 0), i64 50}, i64 417, i64 71, i64 0, i64 1024, i64 1024) | |
%138 = getelementptr inbounds [1024 x i8], [1024 x i8]* %136, i64 0, i32 0 | |
%139 = getelementptr inbounds i8, i8* %138, i64 0 | |
%140 = sub i64 1024, 0 | |
%141 = bitcast {i8*, i64}* %6 to %..rawptr | |
%142 = call %..rawptr @__mem_zero(%..rawptr %141, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %6 | |
%143 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 0 | |
store i8* %139, i8** %143 | |
%144 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 1 | |
store i64 %140, i64* %144 | |
%145 = load {i8*, i64}, {i8*, i64}* %6, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%146 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
%147 = load %..string, %..string* %146, align 8 | |
; variadic call argument generation | |
%148 = bitcast {%..any*, i64}* %7 to %..rawptr | |
%149 = call %..rawptr @__mem_zero(%..rawptr %148, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %7 | |
%150 = load {%..any*, i64}, {%..any*, i64}* %7, align 8 | |
%151 = bitcast {i8*, i64}* %8 to %..rawptr | |
%152 = call %..rawptr @__mem_zero(%..rawptr %151, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %8 | |
store {i8*, i64} %145, {i8*, i64}* %8 | |
%153 = bitcast {%..any*, i64}* %9 to %..rawptr | |
%154 = call %..rawptr @__mem_zero(%..rawptr %153, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %9 | |
store {%..any*, i64} %150, {%..any*, i64}* %9 | |
%155 = call %..string @fmt-11.bprintf({i8*, i64}* %8, %..string %147, {%..any*, i64}* %9, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-29 | |
if.else-28: | |
; SelectorExpr | |
; IndexExpr | |
%156 = load %state-38.State*, %state-38.State** %0, align 8 | |
%157 = getelementptr inbounds %state-38.State, %state-38.State* %156, i64 0 | |
%158 = getelementptr inbounds %state-38.State, %state-38.State* %157, i64 0, i32 33 | |
%159 = getelementptr inbounds [1024 x i8], [1024 x i8]* %158, i64 0, i32 0 | |
%160 = getelementptr inbounds i8, i8* %159, i64 0 | |
%161 = bitcast i8* %160 to %..rawptr | |
%162 = call %..rawptr @mem-10.zero(%..rawptr %161, i64 1024) | |
br label %if.done-29 | |
if.done-29: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%163 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
%164 = load %..string, %..string* %163, align 8 | |
%165 = extractvalue %..string %164, 1 | |
%166 = icmp sgt i64 %165, 0 | |
%167 = zext i1 %166 to i8 | |
%168 = trunc i8 %167 to i1 | |
br i1 %168, label %if.then-30, label %if.else-31 | |
if.then-30: | |
; SelectorExpr | |
; SliceExpr | |
%169 = load %state-38.State*, %state-38.State** %0, align 8 | |
%170 = getelementptr inbounds %state-38.State, %state-38.State* %169, i64 0 | |
%171 = getelementptr inbounds %state-38.State, %state-38.State* %170, i64 0, i32 34 | |
%172 = load [1024 x i8], [1024 x i8]* %171, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$b7, i64 0, i32 0), i64 50}, i64 419, i64 72, i64 0, i64 1024, i64 1024) | |
%173 = getelementptr inbounds [1024 x i8], [1024 x i8]* %171, i64 0, i32 0 | |
%174 = getelementptr inbounds i8, i8* %173, i64 0 | |
%175 = sub i64 1024, 0 | |
%176 = bitcast {i8*, i64}* %10 to %..rawptr | |
%177 = call %..rawptr @__mem_zero(%..rawptr %176, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %10 | |
%178 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 0 | |
store i8* %174, i8** %178 | |
%179 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 1 | |
store i64 %175, i64* %179 | |
%180 = load {i8*, i64}, {i8*, i64}* %10, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%181 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
%182 = load %..string, %..string* %181, align 8 | |
; variadic call argument generation | |
%183 = bitcast {%..any*, i64}* %11 to %..rawptr | |
%184 = call %..rawptr @__mem_zero(%..rawptr %183, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %11 | |
%185 = load {%..any*, i64}, {%..any*, i64}* %11, align 8 | |
%186 = bitcast {i8*, i64}* %12 to %..rawptr | |
%187 = call %..rawptr @__mem_zero(%..rawptr %186, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %12 | |
store {i8*, i64} %180, {i8*, i64}* %12 | |
%188 = bitcast {%..any*, i64}* %13 to %..rawptr | |
%189 = call %..rawptr @__mem_zero(%..rawptr %188, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %13 | |
store {%..any*, i64} %185, {%..any*, i64}* %13 | |
%190 = call %..string @fmt-11.bprintf({i8*, i64}* %12, %..string %182, {%..any*, i64}* %13, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-32 | |
if.else-31: | |
; SelectorExpr | |
; IndexExpr | |
%191 = load %state-38.State*, %state-38.State** %0, align 8 | |
%192 = getelementptr inbounds %state-38.State, %state-38.State* %191, i64 0 | |
%193 = getelementptr inbounds %state-38.State, %state-38.State* %192, i64 0, i32 34 | |
%194 = getelementptr inbounds [1024 x i8], [1024 x i8]* %193, i64 0, i32 0 | |
%195 = getelementptr inbounds i8, i8* %194, i64 0 | |
%196 = bitcast i8* %195 to %..rawptr | |
%197 = call %..rawptr @mem-10.zero(%..rawptr %196, i64 1024) | |
br label %if.done-32 | |
if.done-32: | |
; SelectorExpr | |
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$b8, i64 0, i32 0), i64 20}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-33 | |
if.done-33: | |
; IfStmt | |
%198 = load i8, i8* %3, align 1 | |
%199 = trunc i8 %198 to i1 | |
br i1 %199, label %if.then-34, label %if.done-41 | |
if.then-34: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%200 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
%201 = load %..string, %..string* %200, align 8 | |
%202 = extractvalue %..string %201, 1 | |
%203 = icmp sgt i64 %202, 0 | |
%204 = zext i1 %203 to i8 | |
%205 = trunc i8 %204 to i1 | |
br i1 %205, label %if.then-35, label %if.else-36 | |
if.then-35: | |
; SelectorExpr | |
; SliceExpr | |
%206 = load %state-38.State*, %state-38.State** %0, align 8 | |
%207 = getelementptr inbounds %state-38.State, %state-38.State* %206, i64 0 | |
%208 = getelementptr inbounds %state-38.State, %state-38.State* %207, i64 0, i32 31 | |
%209 = load [1024 x i8], [1024 x i8]* %208, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$b9, i64 0, i32 0), i64 50}, i64 425, i64 75, i64 0, i64 1024, i64 1024) | |
%210 = getelementptr inbounds [1024 x i8], [1024 x i8]* %208, i64 0, i32 0 | |
%211 = getelementptr inbounds i8, i8* %210, i64 0 | |
%212 = sub i64 1024, 0 | |
%213 = bitcast {i8*, i64}* %14 to %..rawptr | |
%214 = call %..rawptr @__mem_zero(%..rawptr %213, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %14 | |
%215 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %14, i64 0, i32 0 | |
store i8* %211, i8** %215 | |
%216 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %14, i64 0, i32 1 | |
store i64 %212, i64* %216 | |
%217 = load {i8*, i64}, {i8*, i64}* %14, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%218 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
%219 = load %..string, %..string* %218, align 8 | |
; variadic call argument generation | |
%220 = bitcast {%..any*, i64}* %15 to %..rawptr | |
%221 = call %..rawptr @__mem_zero(%..rawptr %220, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %15 | |
%222 = load {%..any*, i64}, {%..any*, i64}* %15, align 8 | |
%223 = bitcast {i8*, i64}* %16 to %..rawptr | |
%224 = call %..rawptr @__mem_zero(%..rawptr %223, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %16 | |
store {i8*, i64} %217, {i8*, i64}* %16 | |
%225 = bitcast {%..any*, i64}* %17 to %..rawptr | |
%226 = call %..rawptr @__mem_zero(%..rawptr %225, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %17 | |
store {%..any*, i64} %222, {%..any*, i64}* %17 | |
%227 = call %..string @fmt-11.bprintf({i8*, i64}* %16, %..string %219, {%..any*, i64}* %17, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-37 | |
if.else-36: | |
; SelectorExpr | |
; IndexExpr | |
%228 = load %state-38.State*, %state-38.State** %0, align 8 | |
%229 = getelementptr inbounds %state-38.State, %state-38.State* %228, i64 0 | |
%230 = getelementptr inbounds %state-38.State, %state-38.State* %229, i64 0, i32 31 | |
%231 = getelementptr inbounds [1024 x i8], [1024 x i8]* %230, i64 0, i32 0 | |
%232 = getelementptr inbounds i8, i8* %231, i64 0 | |
%233 = bitcast i8* %232 to %..rawptr | |
%234 = call %..rawptr @mem-10.zero(%..rawptr %233, i64 1024) | |
br label %if.done-37 | |
if.done-37: | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%235 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
%236 = load %..string, %..string* %235, align 8 | |
%237 = extractvalue %..string %236, 1 | |
%238 = icmp sgt i64 %237, 0 | |
%239 = zext i1 %238 to i8 | |
%240 = trunc i8 %239 to i1 | |
br i1 %240, label %if.then-38, label %if.else-39 | |
if.then-38: | |
; SelectorExpr | |
; SliceExpr | |
%241 = load %state-38.State*, %state-38.State** %0, align 8 | |
%242 = getelementptr inbounds %state-38.State, %state-38.State* %241, i64 0 | |
%243 = getelementptr inbounds %state-38.State, %state-38.State* %242, i64 0, i32 32 | |
%244 = load [1024 x i8], [1024 x i8]* %243, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ba, i64 0, i32 0), i64 50}, i64 427, i64 75, i64 0, i64 1024, i64 1024) | |
%245 = getelementptr inbounds [1024 x i8], [1024 x i8]* %243, i64 0, i32 0 | |
%246 = getelementptr inbounds i8, i8* %245, i64 0 | |
%247 = sub i64 1024, 0 | |
%248 = bitcast {i8*, i64}* %18 to %..rawptr | |
%249 = call %..rawptr @__mem_zero(%..rawptr %248, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %18 | |
%250 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 0 | |
store i8* %246, i8** %250 | |
%251 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %18, i64 0, i32 1 | |
store i64 %247, i64* %251 | |
%252 = load {i8*, i64}, {i8*, i64}* %18, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%253 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
%254 = load %..string, %..string* %253, align 8 | |
; variadic call argument generation | |
%255 = bitcast {%..any*, i64}* %19 to %..rawptr | |
%256 = call %..rawptr @__mem_zero(%..rawptr %255, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %19 | |
%257 = load {%..any*, i64}, {%..any*, i64}* %19, align 8 | |
%258 = bitcast {i8*, i64}* %20 to %..rawptr | |
%259 = call %..rawptr @__mem_zero(%..rawptr %258, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %20 | |
store {i8*, i64} %252, {i8*, i64}* %20 | |
%260 = bitcast {%..any*, i64}* %21 to %..rawptr | |
%261 = call %..rawptr @__mem_zero(%..rawptr %260, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %21 | |
store {%..any*, i64} %257, {%..any*, i64}* %21 | |
%262 = call %..string @fmt-11.bprintf({i8*, i64}* %20, %..string %254, {%..any*, i64}* %21, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-40 | |
if.else-39: | |
; SelectorExpr | |
; IndexExpr | |
%263 = load %state-38.State*, %state-38.State** %0, align 8 | |
%264 = getelementptr inbounds %state-38.State, %state-38.State* %263, i64 0 | |
%265 = getelementptr inbounds %state-38.State, %state-38.State* %264, i64 0, i32 32 | |
%266 = getelementptr inbounds [1024 x i8], [1024 x i8]* %265, i64 0, i32 0 | |
%267 = getelementptr inbounds i8, i8* %266, i64 0 | |
%268 = bitcast i8* %267 to %..rawptr | |
%269 = call %..rawptr @mem-10.zero(%..rawptr %268, i64 1024) | |
br label %if.done-40 | |
if.done-40: | |
; SelectorExpr | |
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$bb, i64 0, i32 0), i64 15}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-41 | |
if.done-41: | |
; IfStmt | |
%270 = load i8, i8* %2, align 1 | |
%271 = trunc i8 %270 to i1 | |
br i1 %271, label %if.then-42, label %if.done-43 | |
if.then-42: | |
; SelectorExpr | |
; IndexExpr | |
%272 = load %state-38.State*, %state-38.State** %0, align 8 | |
%273 = getelementptr inbounds %state-38.State, %state-38.State* %272, i64 0 | |
%274 = getelementptr inbounds %state-38.State, %state-38.State* %273, i64 0, i32 35 | |
%275 = getelementptr inbounds [1024 x i8], [1024 x i8]* %274, i64 0, i32 0 | |
%276 = getelementptr inbounds i8, i8* %275, i64 0 | |
%277 = bitcast i8* %276 to %..rawptr | |
%278 = call %..rawptr @mem-10.zero(%..rawptr %277, i64 1024) | |
; SelectorExpr | |
; IndexExpr | |
%279 = load %state-38.State*, %state-38.State** %0, align 8 | |
%280 = getelementptr inbounds %state-38.State, %state-38.State* %279, i64 0 | |
%281 = getelementptr inbounds %state-38.State, %state-38.State* %280, i64 0, i32 36 | |
%282 = getelementptr inbounds [1024 x i8], [1024 x i8]* %281, i64 0, i32 0 | |
%283 = getelementptr inbounds i8, i8* %282, i64 0 | |
%284 = bitcast i8* %283 to %..rawptr | |
%285 = call %..rawptr @mem-10.zero(%..rawptr %284, i64 1024) | |
; SelectorExpr | |
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$bc, i64 0, i32 0), i64 17}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-43 | |
if.done-43: | |
; IfStmt | |
; SelectorExpr | |
%286 = call i8 @dear_imgui-50.begin_popup_modal(%..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$bd, i64 0, i32 0), i64 17}, i8* zeroinitializer, i32 64, %Context* noalias nonnull %__.context_ptr) | |
%287 = trunc i8 %286 to i1 | |
br i1 %287, label %if.then-44, label %if.done-53 | |
if.then-44: | |
; DeferStmt | |
; SelectorExpr | |
; SliceExpr | |
%288 = load %state-38.State*, %state-38.State** %0, align 8 | |
%289 = getelementptr inbounds %state-38.State, %state-38.State* %288, i64 0 | |
%290 = getelementptr inbounds %state-38.State, %state-38.State* %289, i64 0, i32 35 | |
%291 = load [1024 x i8], [1024 x i8]* %290, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$be, i64 0, i32 0), i64 50}, i64 440, i64 47, i64 0, i64 1024, i64 1024) | |
%292 = getelementptr inbounds [1024 x i8], [1024 x i8]* %290, i64 0, i32 0 | |
%293 = getelementptr inbounds i8, i8* %292, i64 0 | |
%294 = sub i64 1024, 0 | |
%295 = bitcast {i8*, i64}* %22 to %..rawptr | |
%296 = call %..rawptr @__mem_zero(%..rawptr %295, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %22 | |
%297 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %22, i64 0, i32 0 | |
store i8* %293, i8** %297 | |
%298 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %22, i64 0, i32 1 | |
store i64 %294, i64* %298 | |
%299 = load {i8*, i64}, {i8*, i64}* %22, align 8 | |
%300 = bitcast {i8*, i64}* %23 to %..rawptr | |
%301 = call %..rawptr @__mem_zero(%..rawptr %300, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %23 | |
store {i8*, i64} %299, {i8*, i64}* %23 | |
%302 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$bf, i64 0, i32 0), i64 3}, {i8*, i64}* %23, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SliceExpr | |
%303 = load %state-38.State*, %state-38.State** %0, align 8 | |
%304 = getelementptr inbounds %state-38.State, %state-38.State* %303, i64 0 | |
%305 = getelementptr inbounds %state-38.State, %state-38.State* %304, i64 0, i32 36 | |
%306 = load [1024 x i8], [1024 x i8]* %305, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c0, i64 0, i32 0), i64 50}, i64 441, i64 61, i64 0, i64 1024, i64 1024) | |
%307 = getelementptr inbounds [1024 x i8], [1024 x i8]* %305, i64 0, i32 0 | |
%308 = getelementptr inbounds i8, i8* %307, i64 0 | |
%309 = sub i64 1024, 0 | |
%310 = bitcast {i8*, i64}* %24 to %..rawptr | |
%311 = call %..rawptr @__mem_zero(%..rawptr %310, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %24 | |
%312 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %24, i64 0, i32 0 | |
store i8* %308, i8** %312 | |
%313 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %24, i64 0, i32 1 | |
store i64 %309, i64* %313 | |
%314 = load {i8*, i64}, {i8*, i64}* %24, align 8 | |
%315 = bitcast {i8*, i64}* %25 to %..rawptr | |
%316 = call %..rawptr @__mem_zero(%..rawptr %315, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %25 | |
store {i8*, i64} %314, {i8*, i64}* %25 | |
%317 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$c1, i64 0, i32 0), i64 16}, {i8*, i64}* %25, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%318 = bitcast %dear_imgui-50.Vec2* %26 to %..rawptr | |
%319 = call %..rawptr @__mem_zero(%..rawptr %318, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %26 | |
store %dear_imgui-50.Vec2 {float 0x4064000000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %26 | |
%320 = bitcast %dear_imgui-50.Vec2* %26 to i64* | |
%321 = load i64, i64* %320, align 8 | |
%322 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$c2, i64 0, i32 0), i64 5}, i64 %321, %Context* noalias nonnull %__.context_ptr) | |
%323 = trunc i8 %322 to i1 | |
br i1 %323, label %if.then-45, label %if.done-50 | |
if.then-45: | |
; options | |
; err | |
; SelectorExpr | |
%324 = call {%libgit2_types-55.Clone_Options, i32} @libgit2-29.clone_init_options(i32 1, %Context* noalias nonnull %__.context_ptr) | |
%325 = extractvalue {%libgit2_types-55.Clone_Options, i32} %324, 0 | |
%326 = extractvalue {%libgit2_types-55.Clone_Options, i32} %324, 1 | |
store %libgit2_types-55.Clone_Options %325, %libgit2_types-55.Clone_Options* %27 | |
store i32 %326, i32* %28 | |
; IfStmt | |
%327 = load i32, i32* %28, align 4 | |
%328 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c3, i64 0, i32 0), i64 50}, i64 445, i64 17, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$c4, i64 0, i32 0), i64 9}) | |
%329 = bitcast %Source_Code_Location* %29 to %..rawptr | |
%330 = call %..rawptr @__mem_zero(%..rawptr %329, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %29 | |
store %Source_Code_Location %328, %Source_Code_Location* %29 | |
%331 = call i8 @debug-30.log_if_err(i32 %327, %Source_Code_Location* %29, %Context* noalias nonnull %__.context_ptr) | |
%332 = trunc i8 %331 to i1 | |
br i1 %332, label %if.done-49, label %if.then-46 | |
if.then-46: | |
; repo | |
; err2 | |
; SelectorExpr | |
; SliceExpr | |
%333 = load %state-38.State*, %state-38.State** %0, align 8 | |
%334 = getelementptr inbounds %state-38.State, %state-38.State* %333, i64 0 | |
%335 = getelementptr inbounds %state-38.State, %state-38.State* %334, i64 0, i32 35 | |
%336 = load [1024 x i8], [1024 x i8]* %335, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c5, i64 0, i32 0), i64 50}, i64 446, i64 67, i64 0, i64 1024, i64 1024) | |
%337 = getelementptr inbounds [1024 x i8], [1024 x i8]* %335, i64 0, i32 0 | |
%338 = getelementptr inbounds i8, i8* %337, i64 0 | |
%339 = sub i64 1024, 0 | |
%340 = bitcast {i8*, i64}* %32 to %..rawptr | |
%341 = call %..rawptr @__mem_zero(%..rawptr %340, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %32 | |
%342 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %32, i64 0, i32 0 | |
store i8* %338, i8** %342 | |
%343 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %32, i64 0, i32 1 | |
store i64 %339, i64* %343 | |
%344 = load {i8*, i64}, {i8*, i64}* %32, align 8 | |
%345 = extractvalue {i8*, i64} %344, 0 | |
%346 = extractvalue {i8*, i64} %344, 1 | |
%347 = bitcast %..string* %33 to %..rawptr | |
%348 = call %..rawptr @__mem_zero(%..rawptr %347, i64 16) | |
store %..string zeroinitializer, %..string* %33 | |
%349 = getelementptr inbounds %..string, %..string* %33, i64 0, i32 0 | |
store i8* %345, i8** %349 | |
%350 = getelementptr inbounds %..string, %..string* %33, i64 0, i32 1 | |
store i64 %346, i64* %350 | |
%351 = load %..string, %..string* %33, align 8 | |
; SliceExpr | |
%352 = load %state-38.State*, %state-38.State** %0, align 8 | |
%353 = getelementptr inbounds %state-38.State, %state-38.State* %352, i64 0 | |
%354 = getelementptr inbounds %state-38.State, %state-38.State* %353, i64 0, i32 36 | |
%355 = load [1024 x i8], [1024 x i8]* %354, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c6, i64 0, i32 0), i64 50}, i64 446, i64 100, i64 0, i64 1024, i64 1024) | |
%356 = getelementptr inbounds [1024 x i8], [1024 x i8]* %354, i64 0, i32 0 | |
%357 = getelementptr inbounds i8, i8* %356, i64 0 | |
%358 = sub i64 1024, 0 | |
%359 = bitcast {i8*, i64}* %34 to %..rawptr | |
%360 = call %..rawptr @__mem_zero(%..rawptr %359, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %34 | |
%361 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %34, i64 0, i32 0 | |
store i8* %357, i8** %361 | |
%362 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %34, i64 0, i32 1 | |
store i64 %358, i64* %362 | |
%363 = load {i8*, i64}, {i8*, i64}* %34, align 8 | |
%364 = extractvalue {i8*, i64} %363, 0 | |
%365 = extractvalue {i8*, i64} %363, 1 | |
%366 = bitcast %..string* %35 to %..rawptr | |
%367 = call %..rawptr @__mem_zero(%..rawptr %366, i64 16) | |
store %..string zeroinitializer, %..string* %35 | |
%368 = getelementptr inbounds %..string, %..string* %35, i64 0, i32 0 | |
store i8* %364, i8** %368 | |
%369 = getelementptr inbounds %..string, %..string* %35, i64 0, i32 1 | |
store i64 %365, i64* %369 | |
%370 = load %..string, %..string* %35, align 8 | |
%371 = getelementptr inbounds %libgit2_types-55.Clone_Options, %libgit2_types-55.Clone_Options* %27, i64 0 | |
%372 = call {%libgit2_types-55.Repository*, i32} @libgit2-29.clone(%..string %351, %..string %370, %libgit2_types-55.Clone_Options* %371, %Context* noalias nonnull %__.context_ptr) | |
%373 = extractvalue {%libgit2_types-55.Repository*, i32} %372, 0 | |
%374 = extractvalue {%libgit2_types-55.Repository*, i32} %372, 1 | |
store %libgit2_types-55.Repository* %373, %libgit2_types-55.Repository** %30 | |
store i32 %374, i32* %31 | |
; IfStmt | |
%375 = load i32, i32* %31, align 4 | |
%376 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$c7, i64 0, i32 0), i64 50}, i64 447, i64 21, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$c8, i64 0, i32 0), i64 9}) | |
%377 = bitcast %Source_Code_Location* %36 to %..rawptr | |
%378 = call %..rawptr @__mem_zero(%..rawptr %377, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %36 | |
store %Source_Code_Location %376, %Source_Code_Location* %36 | |
%379 = call i8 @debug-30.log_if_err(i32 %375, %Source_Code_Location* %36, %Context* noalias nonnull %__.context_ptr) | |
%380 = trunc i8 %379 to i1 | |
br i1 %380, label %if.done-48, label %if.then-47 | |
if.then-47: | |
%381 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %30, align 8 | |
%382 = load %state-38.State*, %state-38.State** %0, align 8 | |
call void @main-0.open_repo(%libgit2_types-55.Repository* %381, %state-38.State* %382, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-48 | |
if.done-48: | |
br label %if.done-49 | |
if.done-49: | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-50 | |
if.done-50: | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
; IfStmt | |
; SelectorExpr | |
%383 = bitcast %dear_imgui-50.Vec2* %37 to %..rawptr | |
%384 = call %..rawptr @__mem_zero(%..rawptr %383, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %37 | |
store %dear_imgui-50.Vec2 {float 0x4064000000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %37 | |
%385 = bitcast %dear_imgui-50.Vec2* %37 to i64* | |
%386 = load i64, i64* %385, align 8 | |
%387 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$c9, i64 0, i32 0), i64 6}, i64 %386, %Context* noalias nonnull %__.context_ptr) | |
%388 = trunc i8 %387 to i1 | |
br i1 %388, label %if.then-51, label %if.done-52 | |
if.then-51: | |
; SelectorExpr | |
; IndexExpr | |
%389 = load %state-38.State*, %state-38.State** %0, align 8 | |
%390 = getelementptr inbounds %state-38.State, %state-38.State* %389, i64 0 | |
%391 = getelementptr inbounds %state-38.State, %state-38.State* %390, i64 0, i32 35 | |
%392 = getelementptr inbounds [1024 x i8], [1024 x i8]* %391, i64 0, i32 0 | |
%393 = getelementptr inbounds i8, i8* %392, i64 0 | |
%394 = bitcast i8* %393 to %..rawptr | |
%395 = call %..rawptr @mem-10.zero(%..rawptr %394, i64 1024) | |
; SelectorExpr | |
; IndexExpr | |
%396 = load %state-38.State*, %state-38.State** %0, align 8 | |
%397 = getelementptr inbounds %state-38.State, %state-38.State* %396, i64 0 | |
%398 = getelementptr inbounds %state-38.State, %state-38.State* %397, i64 0, i32 36 | |
%399 = getelementptr inbounds [1024 x i8], [1024 x i8]* %398, i64 0, i32 0 | |
%400 = getelementptr inbounds i8, i8* %399, i64 0 | |
%401 = bitcast i8* %400 to %..rawptr | |
%402 = call %..rawptr @mem-10.zero(%..rawptr %401, i64 1024) | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-52 | |
if.done-52: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndPopup() | |
br label %if.done-53 | |
if.done-53: | |
; IfStmt | |
; SelectorExpr | |
%403 = call i8 @dear_imgui-50.begin_popup_modal(%..string {i8* getelementptr inbounds ([21 x i8], [21 x i8]* @__str$ca, i64 0, i32 0), i64 20}, i8* zeroinitializer, i32 64, %Context* noalias nonnull %__.context_ptr) | |
%404 = trunc i8 %403 to i1 | |
br i1 %404, label %if.then-54, label %if.done-59 | |
if.then-54: | |
; DeferStmt | |
; SelectorExpr | |
; SliceExpr | |
%405 = load %state-38.State*, %state-38.State** %0, align 8 | |
%406 = getelementptr inbounds %state-38.State, %state-38.State* %405, i64 0 | |
%407 = getelementptr inbounds %state-38.State, %state-38.State* %406, i64 0, i32 33 | |
%408 = load [1024 x i8], [1024 x i8]* %407, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$cb, i64 0, i32 0), i64 50}, i64 465, i64 42, i64 0, i64 1024, i64 1024) | |
%409 = getelementptr inbounds [1024 x i8], [1024 x i8]* %407, i64 0, i32 0 | |
%410 = getelementptr inbounds i8, i8* %409, i64 0 | |
%411 = sub i64 1024, 0 | |
%412 = bitcast {i8*, i64}* %38 to %..rawptr | |
%413 = call %..rawptr @__mem_zero(%..rawptr %412, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %38 | |
%414 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %38, i64 0, i32 0 | |
store i8* %410, i8** %414 | |
%415 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %38, i64 0, i32 1 | |
store i64 %411, i64* %415 | |
%416 = load {i8*, i64}, {i8*, i64}* %38, align 8 | |
%417 = bitcast {i8*, i64}* %39 to %..rawptr | |
%418 = call %..rawptr @__mem_zero(%..rawptr %417, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %39 | |
store {i8*, i64} %416, {i8*, i64}* %39 | |
%419 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$cc, i64 0, i32 0), i64 4}, {i8*, i64}* %39, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SliceExpr | |
%420 = load %state-38.State*, %state-38.State** %0, align 8 | |
%421 = getelementptr inbounds %state-38.State, %state-38.State* %420, i64 0 | |
%422 = getelementptr inbounds %state-38.State, %state-38.State* %421, i64 0, i32 34 | |
%423 = load [1024 x i8], [1024 x i8]* %422, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$cd, i64 0, i32 0), i64 50}, i64 466, i64 44, i64 0, i64 1024, i64 1024) | |
%424 = getelementptr inbounds [1024 x i8], [1024 x i8]* %422, i64 0, i32 0 | |
%425 = getelementptr inbounds i8, i8* %424, i64 0 | |
%426 = sub i64 1024, 0 | |
%427 = bitcast {i8*, i64}* %40 to %..rawptr | |
%428 = call %..rawptr @__mem_zero(%..rawptr %427, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %40 | |
%429 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %40, i64 0, i32 0 | |
store i8* %425, i8** %429 | |
%430 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %40, i64 0, i32 1 | |
store i64 %426, i64* %430 | |
%431 = load {i8*, i64}, {i8*, i64}* %40, align 8 | |
%432 = bitcast {i8*, i64}* %41 to %..rawptr | |
%433 = call %..rawptr @__mem_zero(%..rawptr %432, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %41 | |
store {i8*, i64} %431, {i8*, i64}* %41 | |
%434 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$ce, i64 0, i32 0), i64 5}, {i8*, i64}* %41, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
call ccc void @igSeparator() | |
; IfStmt | |
; SelectorExpr | |
%435 = bitcast %dear_imgui-50.Vec2* %42 to %..rawptr | |
%436 = call %..rawptr @__mem_zero(%..rawptr %435, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %42 | |
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %42 | |
%437 = bitcast %dear_imgui-50.Vec2* %42 to i64* | |
%438 = load i64, i64* %437, align 8 | |
%439 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$cf, i64 0, i32 0), i64 4}, i64 %438, %Context* noalias nonnull %__.context_ptr) | |
%440 = trunc i8 %439 to i1 | |
br i1 %440, label %if.then-55, label %if.done-56 | |
if.then-55: | |
; name | |
; SelectorExpr | |
; IndexExpr | |
%441 = load %state-38.State*, %state-38.State** %0, align 8 | |
%442 = getelementptr inbounds %state-38.State, %state-38.State* %441, i64 0 | |
%443 = getelementptr inbounds %state-38.State, %state-38.State* %442, i64 0, i32 33 | |
%444 = getelementptr inbounds [1024 x i8], [1024 x i8]* %443, i64 0, i32 0 | |
%445 = getelementptr inbounds i8, i8* %444, i64 0 | |
%446 = call %..string @strings-12.to_odin_string(i8* %445, %Context* noalias nonnull %__.context_ptr) | |
store %..string %446, %..string* %43 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%447 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
; SelectorExpr | |
%448 = load %..string, %..string* %43, align 8 | |
%449 = call %..string @strings-12.new_string(%..string %448, %Context* noalias nonnull %__.context_ptr) | |
store %..string %449, %..string* %447 | |
; SelectorExpr | |
; IndexExpr | |
%450 = load %state-38.State*, %state-38.State** %0, align 8 | |
%451 = getelementptr inbounds %state-38.State, %state-38.State* %450, i64 0 | |
%452 = getelementptr inbounds %state-38.State, %state-38.State* %451, i64 0, i32 34 | |
%453 = getelementptr inbounds [1024 x i8], [1024 x i8]* %452, i64 0, i32 0 | |
%454 = getelementptr inbounds i8, i8* %453, i64 0 | |
%455 = call %..string @strings-12.to_odin_string(i8* %454, %Context* noalias nonnull %__.context_ptr) | |
store %..string %455, %..string* %44 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%456 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
; SelectorExpr | |
%457 = load %..string, %..string* %44, align 8 | |
%458 = call %..string @strings-12.new_string(%..string %457, %Context* noalias nonnull %__.context_ptr) | |
store %..string %458, %..string* %456 | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; IndexExpr | |
%459 = load %state-38.State*, %state-38.State** %0, align 8 | |
%460 = getelementptr inbounds %state-38.State, %state-38.State* %459, i64 0 | |
%461 = getelementptr inbounds %state-38.State, %state-38.State* %460, i64 0, i32 33 | |
%462 = getelementptr inbounds [1024 x i8], [1024 x i8]* %461, i64 0, i32 0 | |
%463 = getelementptr inbounds i8, i8* %462, i64 0 | |
%464 = bitcast i8* %463 to %..rawptr | |
%465 = call %..rawptr @mem-10.zero(%..rawptr %464, i64 1024) | |
; SelectorExpr | |
; IndexExpr | |
%466 = load %state-38.State*, %state-38.State** %0, align 8 | |
%467 = getelementptr inbounds %state-38.State, %state-38.State* %466, i64 0 | |
%468 = getelementptr inbounds %state-38.State, %state-38.State* %467, i64 0, i32 34 | |
%469 = getelementptr inbounds [1024 x i8], [1024 x i8]* %468, i64 0, i32 0 | |
%470 = getelementptr inbounds i8, i8* %469, i64 0 | |
%471 = bitcast i8* %470 to %..rawptr | |
%472 = call %..rawptr @mem-10.zero(%..rawptr %471, i64 1024) | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-56 | |
if.done-56: | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
; IfStmt | |
; SelectorExpr | |
%473 = bitcast %dear_imgui-50.Vec2* %45 to %..rawptr | |
%474 = call %..rawptr @__mem_zero(%..rawptr %473, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %45 | |
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %45 | |
%475 = bitcast %dear_imgui-50.Vec2* %45 to i64* | |
%476 = load i64, i64* %475, align 8 | |
%477 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$d0, i64 0, i32 0), i64 6}, i64 %476, %Context* noalias nonnull %__.context_ptr) | |
%478 = trunc i8 %477 to i1 | |
br i1 %478, label %if.then-57, label %if.done-58 | |
if.then-57: | |
; SelectorExpr | |
; IndexExpr | |
%479 = load %state-38.State*, %state-38.State** %0, align 8 | |
%480 = getelementptr inbounds %state-38.State, %state-38.State* %479, i64 0 | |
%481 = getelementptr inbounds %state-38.State, %state-38.State* %480, i64 0, i32 33 | |
%482 = getelementptr inbounds [1024 x i8], [1024 x i8]* %481, i64 0, i32 0 | |
%483 = getelementptr inbounds i8, i8* %482, i64 0 | |
%484 = bitcast i8* %483 to %..rawptr | |
%485 = call %..rawptr @mem-10.zero(%..rawptr %484, i64 1024) | |
; SelectorExpr | |
; IndexExpr | |
%486 = load %state-38.State*, %state-38.State** %0, align 8 | |
%487 = getelementptr inbounds %state-38.State, %state-38.State* %486, i64 0 | |
%488 = getelementptr inbounds %state-38.State, %state-38.State* %487, i64 0, i32 34 | |
%489 = getelementptr inbounds [1024 x i8], [1024 x i8]* %488, i64 0, i32 0 | |
%490 = getelementptr inbounds i8, i8* %489, i64 0 | |
%491 = bitcast i8* %490 to %..rawptr | |
%492 = call %..rawptr @mem-10.zero(%..rawptr %491, i64 1024) | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-58 | |
if.done-58: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndPopup() | |
br label %if.done-59 | |
if.done-59: | |
; IfStmt | |
; SelectorExpr | |
%493 = call i8 @dear_imgui-50.begin_popup_modal(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$d1, i64 0, i32 0), i64 15}, i8* zeroinitializer, i32 64, %Context* noalias nonnull %__.context_ptr) | |
%494 = trunc i8 %493 to i1 | |
br i1 %494, label %if.then-60, label %if.done-65 | |
if.then-60: | |
; DeferStmt | |
; SelectorExpr | |
; SliceExpr | |
%495 = load %state-38.State*, %state-38.State** %0, align 8 | |
%496 = getelementptr inbounds %state-38.State, %state-38.State* %495, i64 0 | |
%497 = getelementptr inbounds %state-38.State, %state-38.State* %496, i64 0, i32 31 | |
%498 = load [1024 x i8], [1024 x i8]* %497, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$d2, i64 0, i32 0), i64 50}, i64 490, i64 50, i64 0, i64 1024, i64 1024) | |
%499 = getelementptr inbounds [1024 x i8], [1024 x i8]* %497, i64 0, i32 0 | |
%500 = getelementptr inbounds i8, i8* %499, i64 0 | |
%501 = sub i64 1024, 0 | |
%502 = bitcast {i8*, i64}* %46 to %..rawptr | |
%503 = call %..rawptr @__mem_zero(%..rawptr %502, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %46 | |
%504 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 0 | |
store i8* %500, i8** %504 | |
%505 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 1 | |
store i64 %501, i64* %505 | |
%506 = load {i8*, i64}, {i8*, i64}* %46, align 8 | |
%507 = bitcast {i8*, i64}* %47 to %..rawptr | |
%508 = call %..rawptr @__mem_zero(%..rawptr %507, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %47 | |
store {i8*, i64} %506, {i8*, i64}* %47 | |
%509 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$d3, i64 0, i32 0), i64 8}, {i8*, i64}* %47, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SliceExpr | |
%510 = load %state-38.State*, %state-38.State** %0, align 8 | |
%511 = getelementptr inbounds %state-38.State, %state-38.State* %510, i64 0 | |
%512 = getelementptr inbounds %state-38.State, %state-38.State* %511, i64 0, i32 32 | |
%513 = load [1024 x i8], [1024 x i8]* %512, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$d4, i64 0, i32 0), i64 50}, i64 491, i64 50, i64 0, i64 1024, i64 1024) | |
%514 = getelementptr inbounds [1024 x i8], [1024 x i8]* %512, i64 0, i32 0 | |
%515 = getelementptr inbounds i8, i8* %514, i64 0 | |
%516 = sub i64 1024, 0 | |
%517 = bitcast {i8*, i64}* %48 to %..rawptr | |
%518 = call %..rawptr @__mem_zero(%..rawptr %517, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %48 | |
%519 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %48, i64 0, i32 0 | |
store i8* %515, i8** %519 | |
%520 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %48, i64 0, i32 1 | |
store i64 %516, i64* %520 | |
%521 = load {i8*, i64}, {i8*, i64}* %48, align 8 | |
%522 = bitcast {i8*, i64}* %49 to %..rawptr | |
%523 = call %..rawptr @__mem_zero(%..rawptr %522, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %49 | |
store {i8*, i64} %521, {i8*, i64}* %49 | |
%524 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$d5, i64 0, i32 0), i64 8}, {i8*, i64}* %49, i32 32768, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
call ccc void @igSeparator() | |
; IfStmt | |
; SelectorExpr | |
%525 = bitcast %dear_imgui-50.Vec2* %50 to %..rawptr | |
%526 = call %..rawptr @__mem_zero(%..rawptr %525, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %50 | |
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %50 | |
%527 = bitcast %dear_imgui-50.Vec2* %50 to i64* | |
%528 = load i64, i64* %527, align 8 | |
%529 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$d6, i64 0, i32 0), i64 4}, i64 %528, %Context* noalias nonnull %__.context_ptr) | |
%530 = trunc i8 %529 to i1 | |
br i1 %530, label %if.then-61, label %if.done-62 | |
if.then-61: | |
; username | |
; SelectorExpr | |
; IndexExpr | |
%531 = load %state-38.State*, %state-38.State** %0, align 8 | |
%532 = getelementptr inbounds %state-38.State, %state-38.State* %531, i64 0 | |
%533 = getelementptr inbounds %state-38.State, %state-38.State* %532, i64 0, i32 31 | |
%534 = getelementptr inbounds [1024 x i8], [1024 x i8]* %533, i64 0, i32 0 | |
%535 = getelementptr inbounds i8, i8* %534, i64 0 | |
%536 = call %..string @strings-12.to_odin_string(i8* %535, %Context* noalias nonnull %__.context_ptr) | |
store %..string %536, %..string* %51 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%537 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 0 | |
; SelectorExpr | |
%538 = load %..string, %..string* %51, align 8 | |
%539 = call %..string @strings-12.new_string(%..string %538, %Context* noalias nonnull %__.context_ptr) | |
store %..string %539, %..string* %537 | |
; password | |
; SelectorExpr | |
; IndexExpr | |
%540 = load %state-38.State*, %state-38.State** %0, align 8 | |
%541 = getelementptr inbounds %state-38.State, %state-38.State* %540, i64 0 | |
%542 = getelementptr inbounds %state-38.State, %state-38.State* %541, i64 0, i32 32 | |
%543 = getelementptr inbounds [1024 x i8], [1024 x i8]* %542, i64 0, i32 0 | |
%544 = getelementptr inbounds i8, i8* %543, i64 0 | |
%545 = call %..string @strings-12.to_odin_string(i8* %544, %Context* noalias nonnull %__.context_ptr) | |
store %..string %545, %..string* %52 | |
; AssignStmt | |
; SelectorExpr | |
; SelectorExpr | |
%546 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 1 | |
; SelectorExpr | |
%547 = load %..string, %..string* %52, align 8 | |
%548 = call %..string @strings-12.new_string(%..string %547, %Context* noalias nonnull %__.context_ptr) | |
store %..string %548, %..string* %546 | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; IndexExpr | |
%549 = load %state-38.State*, %state-38.State** %0, align 8 | |
%550 = getelementptr inbounds %state-38.State, %state-38.State* %549, i64 0 | |
%551 = getelementptr inbounds %state-38.State, %state-38.State* %550, i64 0, i32 31 | |
%552 = getelementptr inbounds [1024 x i8], [1024 x i8]* %551, i64 0, i32 0 | |
%553 = getelementptr inbounds i8, i8* %552, i64 0 | |
%554 = bitcast i8* %553 to %..rawptr | |
%555 = call %..rawptr @mem-10.zero(%..rawptr %554, i64 1024) | |
; SelectorExpr | |
; IndexExpr | |
%556 = load %state-38.State*, %state-38.State** %0, align 8 | |
%557 = getelementptr inbounds %state-38.State, %state-38.State* %556, i64 0 | |
%558 = getelementptr inbounds %state-38.State, %state-38.State* %557, i64 0, i32 32 | |
%559 = getelementptr inbounds [1024 x i8], [1024 x i8]* %558, i64 0, i32 0 | |
%560 = getelementptr inbounds i8, i8* %559, i64 0 | |
%561 = bitcast i8* %560 to %..rawptr | |
%562 = call %..rawptr @mem-10.zero(%..rawptr %561, i64 1024) | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-62 | |
if.done-62: | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
; IfStmt | |
; SelectorExpr | |
%563 = bitcast %dear_imgui-50.Vec2* %53 to %..rawptr | |
%564 = call %..rawptr @__mem_zero(%..rawptr %563, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %53 | |
store %dear_imgui-50.Vec2 {float 0x4060e00000000000, float 0x403e000000000000}, %dear_imgui-50.Vec2* %53 | |
%565 = bitcast %dear_imgui-50.Vec2* %53 to i64* | |
%566 = load i64, i64* %565, align 8 | |
%567 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$d7, i64 0, i32 0), i64 6}, i64 %566, %Context* noalias nonnull %__.context_ptr) | |
%568 = trunc i8 %567 to i1 | |
br i1 %568, label %if.then-63, label %if.done-64 | |
if.then-63: | |
; SelectorExpr | |
; IndexExpr | |
%569 = load %state-38.State*, %state-38.State** %0, align 8 | |
%570 = getelementptr inbounds %state-38.State, %state-38.State* %569, i64 0 | |
%571 = getelementptr inbounds %state-38.State, %state-38.State* %570, i64 0, i32 31 | |
%572 = getelementptr inbounds [1024 x i8], [1024 x i8]* %571, i64 0, i32 0 | |
%573 = getelementptr inbounds i8, i8* %572, i64 0 | |
%574 = bitcast i8* %573 to %..rawptr | |
%575 = call %..rawptr @mem-10.zero(%..rawptr %574, i64 1024) | |
; SelectorExpr | |
; IndexExpr | |
%576 = load %state-38.State*, %state-38.State** %0, align 8 | |
%577 = getelementptr inbounds %state-38.State, %state-38.State* %576, i64 0 | |
%578 = getelementptr inbounds %state-38.State, %state-38.State* %577, i64 0, i32 32 | |
%579 = getelementptr inbounds [1024 x i8], [1024 x i8]* %578, i64 0, i32 0 | |
%580 = getelementptr inbounds i8, i8* %579, i64 0 | |
%581 = bitcast i8* %580 to %..rawptr | |
%582 = call %..rawptr @mem-10.zero(%..rawptr %581, i64 1024) | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-64 | |
if.done-64: | |
; defer | |
; SelectorExpr | |
call ccc void @igEndPopup() | |
br label %if.done-65 | |
if.done-65: | |
ret void | |
} | |
define void @main-0.do_async_fetch(%libgit2_types-55.Repository* %repo, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %libgit2_types-55.Repository*, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca %..any, align 16 | |
%3 = alloca {%..any*, i64}, align 16 | |
%4 = alloca [1 x %..any], align 16 | |
%5 = alloca {%..any*, i64}, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca %main-0.do_async_fetch._payload-1215*, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
%9 = alloca %thread-13.Thread*, align 16 | |
store %libgit2_types-55.Repository* %repo, %libgit2_types-55.Repository** %0 | |
; SelectorExpr | |
%10 = bitcast %..string* %1 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 16) | |
store %..string zeroinitializer, %..string* %1 | |
store %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$d8, i64 0, i32 0), i64 17}, %..string* %1 | |
%12 = load %..string, %..string* %1, align 8 | |
%13 = bitcast %..any* %2 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16) | |
store %..any zeroinitializer, %..any* %2 | |
%15 = bitcast %..string* %1 to %..rawptr | |
%16 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%17 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
store %..rawptr %15, %..rawptr* %17 | |
%18 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
store %Type_Info* %16, %Type_Info** %18 | |
%19 = load %..any, %..any* %2, align 8 | |
; variadic call argument generation | |
%20 = bitcast {%..any*, i64}* %3 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %3 | |
%22 = bitcast [1 x %..any]* %4 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %4 | |
%24 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0 | |
store %..any %19, %..any* %24 | |
%25 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0 | |
%26 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 0 | |
store %..any* %25, %..any** %26 | |
%27 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 1 | |
store i64 1, i64* %27 | |
%28 = load {%..any*, i64}, {%..any*, i64}* %3, align 8 | |
%29 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$d9, i64 0, i32 0), i64 50}, i64 515, i64 13, %..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$da, i64 0, i32 0), i64 14}) | |
%30 = bitcast {%..any*, i64}* %5 to %..rawptr | |
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %5 | |
store {%..any*, i64} %28, {%..any*, i64}* %5 | |
%32 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%33 = call %..rawptr @__mem_zero(%..rawptr %32, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %29, %Source_Code_Location* %6 | |
call void @imgui_console-28.log({%..any*, i64}* %5, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr) | |
; p | |
%34 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$db, i64 0, i32 0), i64 50}, i64 519, i64 10, %..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$dc, i64 0, i32 0), i64 14}) | |
%35 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%36 = call %..rawptr @__mem_zero(%..rawptr %35, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %34, %Source_Code_Location* %8 | |
%37 = call %main-0.do_async_fetch._payload-1215* @_preload-0.new-19568(%Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr) | |
store %main-0.do_async_fetch._payload-1215* %37, %main-0.do_async_fetch._payload-1215** %7 | |
; AssignStmt | |
; SelectorExpr | |
%38 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %7, align 8 | |
%39 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %38, i64 0 | |
%40 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %39, i64 0, i32 0 | |
%41 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8 | |
store %libgit2_types-55.Repository* %41, %libgit2_types-55.Repository** %40 | |
; fetch_thread | |
; SelectorExpr | |
%42 = bitcast i64 (%thread-13.Thread*, %Context*)* @main-0.do_async_fetch.Fetch_Thread_Proc-0 to i64 (%thread-13.Thread*, %Context*)* | |
%43 = call %thread-13.Thread* @thread-13.create(i64 (%thread-13.Thread*, %Context*)* %42, %Context* noalias nonnull %__.context_ptr) | |
store %thread-13.Thread* %43, %thread-13.Thread** %9 | |
; AssignStmt | |
; SelectorExpr | |
%44 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8 | |
%45 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %44, i64 0 | |
%46 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %45, i64 0, i32 2 | |
%47 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %7, align 8 | |
%48 = bitcast %main-0.do_async_fetch._payload-1215* %47 to %..rawptr | |
store %..rawptr %48, %..rawptr* %46 | |
; SelectorExpr | |
%49 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8 | |
call void @thread-13.start(%thread-13.Thread* %49, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define i64 @main-0.do_async_fetch.Fetch_Thread_Proc-0(%thread-13.Thread* %thread, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %thread-13.Thread*, align 16 | |
%1 = alloca %main-0.do_async_fetch._payload-1215*, align 16 | |
%2 = alloca %libgit2_types-55.Remote*, align 16 | |
%3 = alloca i32, align 16 | |
%4 = alloca %libgit2_types-55.Remote_Callbacks, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
%6 = alloca %..any, align 16 | |
%7 = alloca %..string, align 16 | |
%8 = alloca {%..any*, i64}, align 16 | |
%9 = alloca [1 x %..any], align 16 | |
%10 = alloca {%..any*, i64}, align 16 | |
%11 = alloca %Source_Code_Location, align 16 | |
%12 = alloca %libgit2_types-55.Fetch_Options, align 16 | |
%13 = alloca {%..string*, i64}, align 16 | |
%14 = alloca %Source_Code_Location, align 16 | |
%15 = alloca %..string, align 16 | |
%16 = alloca %..any, align 16 | |
%17 = alloca {%..any*, i64}, align 16 | |
%18 = alloca [1 x %..any], align 16 | |
%19 = alloca {%..any*, i64}, align 16 | |
%20 = alloca %Source_Code_Location, align 16 | |
%21 = alloca %Source_Code_Location, align 16 | |
store %thread-13.Thread* %thread, %thread-13.Thread** %0 | |
; p | |
; SelectorExpr | |
%22 = load %thread-13.Thread*, %thread-13.Thread** %0, align 8 | |
%23 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %22, i64 0 | |
%24 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %23, i64 0, i32 2 | |
%25 = load %..rawptr, %..rawptr* %24, align 8 | |
%26 = bitcast %..rawptr %25 to %main-0.do_async_fetch._payload-1215* | |
store %main-0.do_async_fetch._payload-1215* %26, %main-0.do_async_fetch._payload-1215** %1 | |
; remote | |
; ok | |
; SelectorExpr | |
%27 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %1, align 8 | |
%28 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %27, i64 0 | |
%29 = getelementptr inbounds %main-0.do_async_fetch._payload-1215, %main-0.do_async_fetch._payload-1215* %28, i64 0, i32 0 | |
%30 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %29, align 8 | |
%31 = call {%libgit2_types-55.Remote*, i32} @libgit2-29.remote_lookup(%libgit2_types-55.Repository* %30, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$dd, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr) | |
%32 = extractvalue {%libgit2_types-55.Remote*, i32} %31, 0 | |
%33 = extractvalue {%libgit2_types-55.Remote*, i32} %31, 1 | |
store %libgit2_types-55.Remote* %32, %libgit2_types-55.Remote** %2 | |
store i32 %33, i32* %3 | |
; remote_cb | |
; SelectorExpr | |
%34 = call {%libgit2_types-55.Remote_Callbacks, i32} @libgit2-29.remote_init_callbacks(%Context* noalias nonnull %__.context_ptr) | |
%35 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %34, 0 | |
%36 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %34, 1 | |
store %libgit2_types-55.Remote_Callbacks %35, %libgit2_types-55.Remote_Callbacks* %4 | |
; AssignStmt | |
; SelectorExpr | |
%37 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %4, i64 0, i32 3 | |
%38 = bitcast i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* @main-0.credentials_callback to i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* | |
store i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %38, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %37 | |
; AssignStmt | |
; SelectorExpr | |
%39 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
%40 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %4, i64 0 | |
%41 = call i32 @libgit2-29.remote_connect(%libgit2_types-55.Remote* %39, i32 0, %libgit2_types-55.Remote_Callbacks* %40, %libgit2_types-55.Proxy_Options* zeroinitializer, %libgit2_types-55.Str_Array* zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
store i32 %41, i32* %3 | |
; IfStmt | |
%42 = load i32, i32* %3, align 4 | |
%43 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$de, i64 0, i32 0), i64 50}, i64 528, i64 13, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$df, i64 0, i32 0), i64 17}) | |
%44 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %43, %Source_Code_Location* %5 | |
%46 = call i8 @debug-30.log_if_err(i32 %42, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
%47 = trunc i8 %46 to i1 | |
br i1 %47, label %if.done-4, label %if.then-1 | |
if.then-1: | |
; SelectorExpr | |
; SelectorExpr | |
%48 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
%49 = call %..string @libgit2-29.remote_name(%libgit2_types-55.Remote* %48, %Context* noalias nonnull %__.context_ptr) | |
%50 = bitcast %..any* %6 to %..rawptr | |
%51 = call %..rawptr @__mem_zero(%..rawptr %50, i64 16) | |
store %..any zeroinitializer, %..any* %6 | |
%52 = bitcast %..string* %7 to %..rawptr | |
%53 = call %..rawptr @__mem_zero(%..rawptr %52, i64 16) | |
store %..string zeroinitializer, %..string* %7 | |
store %..string %49, %..string* %7 | |
%54 = bitcast %..string* %7 to %..rawptr | |
%55 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%56 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 0 | |
store %..rawptr %54, %..rawptr* %56 | |
%57 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 1 | |
store %Type_Info* %55, %Type_Info** %57 | |
%58 = load %..any, %..any* %6, align 8 | |
; variadic call argument generation | |
%59 = bitcast {%..any*, i64}* %8 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8 | |
%61 = bitcast [1 x %..any]* %9 to %..rawptr | |
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %9 | |
%63 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0 | |
store %..any %58, %..any* %63 | |
%64 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0 | |
%65 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0 | |
store %..any* %64, %..any** %65 | |
%66 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1 | |
store i64 1, i64* %66 | |
%67 = load {%..any*, i64}, {%..any*, i64}* %8, align 8 | |
%68 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e0, i64 0, i32 0), i64 50}, i64 529, i64 21, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e1, i64 0, i32 0), i64 17}) | |
%69 = bitcast {%..any*, i64}* %10 to %..rawptr | |
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10 | |
store {%..any*, i64} %67, {%..any*, i64}* %10 | |
%71 = bitcast %Source_Code_Location* %11 to %..rawptr | |
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11 | |
store %Source_Code_Location %68, %Source_Code_Location* %11 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$e2, i64 0, i32 0), i64 15}, {%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %__.context_ptr) | |
; fetch_opt | |
; SelectorExpr | |
%73 = call {%libgit2_types-55.Fetch_Options, i32} @libgit2-29.fetch_init_options(i32 1, %Context* noalias nonnull %__.context_ptr) | |
%74 = extractvalue {%libgit2_types-55.Fetch_Options, i32} %73, 0 | |
%75 = extractvalue {%libgit2_types-55.Fetch_Options, i32} %73, 1 | |
store %libgit2_types-55.Fetch_Options %74, %libgit2_types-55.Fetch_Options* %12 | |
; AssignStmt | |
; SelectorExpr | |
%76 = getelementptr inbounds %libgit2_types-55.Fetch_Options, %libgit2_types-55.Fetch_Options* %12, i64 0, i32 1 | |
%77 = load %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %4, align 8 | |
store %libgit2_types-55.Remote_Callbacks %77, %libgit2_types-55.Remote_Callbacks* %76 | |
; AssignStmt | |
; SelectorExpr | |
%78 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
%79 = getelementptr inbounds %libgit2_types-55.Fetch_Options, %libgit2_types-55.Fetch_Options* %12, i64 0 | |
%80 = bitcast {%..string*, i64}* %13 to %..rawptr | |
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %13 | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %13 | |
%82 = call i32 @libgit2-29.remote_fetch(%libgit2_types-55.Remote* %78, {%..string*, i64}* %13, %libgit2_types-55.Fetch_Options* %79, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$e3, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr) | |
store i32 %82, i32* %3 | |
; IfStmt | |
%83 = load i32, i32* %3, align 4 | |
%84 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e4, i64 0, i32 0), i64 50}, i64 534, i64 17, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e5, i64 0, i32 0), i64 17}) | |
%85 = bitcast %Source_Code_Location* %14 to %..rawptr | |
%86 = call %..rawptr @__mem_zero(%..rawptr %85, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %14 | |
store %Source_Code_Location %84, %Source_Code_Location* %14 | |
%87 = call i8 @debug-30.log_if_err(i32 %83, %Source_Code_Location* %14, %Context* noalias nonnull %__.context_ptr) | |
%88 = trunc i8 %87 to i1 | |
br i1 %88, label %if.done-3, label %if.then-2 | |
if.then-2: | |
; SelectorExpr | |
%89 = bitcast %..string* %15 to %..rawptr | |
%90 = call %..rawptr @__mem_zero(%..rawptr %89, i64 16) | |
store %..string zeroinitializer, %..string* %15 | |
store %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e6, i64 0, i32 0), i64 17}, %..string* %15 | |
%91 = load %..string, %..string* %15, align 8 | |
%92 = bitcast %..any* %16 to %..rawptr | |
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 16) | |
store %..any zeroinitializer, %..any* %16 | |
%94 = bitcast %..string* %15 to %..rawptr | |
%95 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%96 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 0 | |
store %..rawptr %94, %..rawptr* %96 | |
%97 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 1 | |
store %Type_Info* %95, %Type_Info** %97 | |
%98 = load %..any, %..any* %16, align 8 | |
; variadic call argument generation | |
%99 = bitcast {%..any*, i64}* %17 to %..rawptr | |
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %17 | |
%101 = bitcast [1 x %..any]* %18 to %..rawptr | |
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %18 | |
%103 = getelementptr inbounds [1 x %..any], [1 x %..any]* %18, i64 0, i32 0 | |
store %..any %98, %..any* %103 | |
%104 = getelementptr inbounds [1 x %..any], [1 x %..any]* %18, i64 0, i32 0 | |
%105 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %17, i64 0, i32 0 | |
store %..any* %104, %..any** %105 | |
%106 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %17, i64 0, i32 1 | |
store i64 1, i64* %106 | |
%107 = load {%..any*, i64}, {%..any*, i64}* %17, align 8 | |
%108 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e7, i64 0, i32 0), i64 50}, i64 535, i64 25, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$e8, i64 0, i32 0), i64 17}) | |
%109 = bitcast {%..any*, i64}* %19 to %..rawptr | |
%110 = call %..rawptr @__mem_zero(%..rawptr %109, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %19 | |
store {%..any*, i64} %107, {%..any*, i64}* %19 | |
%111 = bitcast %Source_Code_Location* %20 to %..rawptr | |
%112 = call %..rawptr @__mem_zero(%..rawptr %111, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %20 | |
store %Source_Code_Location %108, %Source_Code_Location* %20 | |
call void @imgui_console-28.log({%..any*, i64}* %19, %Source_Code_Location* %20, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-3 | |
if.done-3: | |
; SelectorExpr | |
%113 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
call cc 64 void @git_remote_free(%libgit2_types-55.Remote* %113) | |
br label %if.done-4 | |
if.done-4: | |
%114 = load %main-0.do_async_fetch._payload-1215*, %main-0.do_async_fetch._payload-1215** %1, align 8 | |
%115 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$e9, i64 0, i32 0), i64 50}, i64 539, i64 9, %..string {i8* getelementptr inbounds ([18 x i8], [18 x i8]* @__str$ea, i64 0, i32 0), i64 17}) | |
%116 = bitcast %main-0.do_async_fetch._payload-1215* %114 to %..rawptr | |
%117 = bitcast %Source_Code_Location* %21 to %..rawptr | |
%118 = call %..rawptr @__mem_zero(%..rawptr %117, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %21 | |
store %Source_Code_Location %115, %Source_Code_Location* %21 | |
call void @free_ptr(%..rawptr %116, %Source_Code_Location* %21, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%119 = load i32, i32* %3, align 4 | |
%120 = sext i32 %119 to i64 | |
ret i64 %120 | |
} | |
define void @main-0.do_async_push(%libgit2_types-55.Repository* %repo, {%branch-35.Branch*, i64}* %branches_to_push, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %libgit2_types-55.Repository*, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca %..any, align 16 | |
%3 = alloca {%..any*, i64}, align 16 | |
%4 = alloca [1 x %..any], align 16 | |
%5 = alloca {%..any*, i64}, align 16 | |
%6 = alloca %Source_Code_Location, align 16 | |
%7 = alloca %main-0.do_async_push._payload-1216*, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
%9 = alloca %thread-13.Thread*, align 16 | |
store %libgit2_types-55.Repository* %repo, %libgit2_types-55.Repository** %0 | |
%10 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %branches_to_push, align 8 | |
; SelectorExpr | |
%11 = bitcast %..string* %1 to %..rawptr | |
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 16) | |
store %..string zeroinitializer, %..string* %1 | |
store %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$eb, i64 0, i32 0), i64 16}, %..string* %1 | |
%13 = load %..string, %..string* %1, align 8 | |
%14 = bitcast %..any* %2 to %..rawptr | |
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16) | |
store %..any zeroinitializer, %..any* %2 | |
%16 = bitcast %..string* %1 to %..rawptr | |
%17 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%18 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
store %..rawptr %16, %..rawptr* %18 | |
%19 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
store %Type_Info* %17, %Type_Info** %19 | |
%20 = load %..any, %..any* %2, align 8 | |
; variadic call argument generation | |
%21 = bitcast {%..any*, i64}* %3 to %..rawptr | |
%22 = call %..rawptr @__mem_zero(%..rawptr %21, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %3 | |
%23 = bitcast [1 x %..any]* %4 to %..rawptr | |
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %4 | |
%25 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0 | |
store %..any %20, %..any* %25 | |
%26 = getelementptr inbounds [1 x %..any], [1 x %..any]* %4, i64 0, i32 0 | |
%27 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 0 | |
store %..any* %26, %..any** %27 | |
%28 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %3, i64 0, i32 1 | |
store i64 1, i64* %28 | |
%29 = load {%..any*, i64}, {%..any*, i64}* %3, align 8 | |
%30 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ec, i64 0, i32 0), i64 50}, i64 549, i64 13, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ed, i64 0, i32 0), i64 13}) | |
%31 = bitcast {%..any*, i64}* %5 to %..rawptr | |
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %5 | |
store {%..any*, i64} %29, {%..any*, i64}* %5 | |
%33 = bitcast %Source_Code_Location* %6 to %..rawptr | |
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %6 | |
store %Source_Code_Location %30, %Source_Code_Location* %6 | |
call void @imgui_console-28.log({%..any*, i64}* %5, %Source_Code_Location* %6, %Context* noalias nonnull %__.context_ptr) | |
; p | |
%35 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ee, i64 0, i32 0), i64 50}, i64 554, i64 10, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$ef, i64 0, i32 0), i64 13}) | |
%36 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %35, %Source_Code_Location* %8 | |
%38 = call %main-0.do_async_push._payload-1216* @_preload-0.new-19582(%Source_Code_Location* %8, %Context* noalias nonnull %__.context_ptr) | |
store %main-0.do_async_push._payload-1216* %38, %main-0.do_async_push._payload-1216** %7 | |
; AssignStmt | |
; SelectorExpr | |
%39 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %7, align 8 | |
%40 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %39, i64 0 | |
%41 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %40, i64 0, i32 0 | |
%42 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %0, align 8 | |
store %libgit2_types-55.Repository* %42, %libgit2_types-55.Repository** %41 | |
; AssignStmt | |
; SelectorExpr | |
%43 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %7, align 8 | |
%44 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %43, i64 0 | |
%45 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %44, i64 0, i32 1 | |
%46 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %branches_to_push, align 8 | |
store {%branch-35.Branch*, i64} %46, {%branch-35.Branch*, i64}* %45 | |
; push_thread | |
; SelectorExpr | |
%47 = bitcast i64 (%thread-13.Thread*, %Context*)* @main-0.do_async_push.Push_Thread_Proc-0 to i64 (%thread-13.Thread*, %Context*)* | |
%48 = call %thread-13.Thread* @thread-13.create(i64 (%thread-13.Thread*, %Context*)* %47, %Context* noalias nonnull %__.context_ptr) | |
store %thread-13.Thread* %48, %thread-13.Thread** %9 | |
; AssignStmt | |
; SelectorExpr | |
%49 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8 | |
%50 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %49, i64 0 | |
%51 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %50, i64 0, i32 2 | |
%52 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %7, align 8 | |
%53 = bitcast %main-0.do_async_push._payload-1216* %52 to %..rawptr | |
store %..rawptr %53, %..rawptr* %51 | |
; SelectorExpr | |
%54 = load %thread-13.Thread*, %thread-13.Thread** %9, align 8 | |
call void @thread-13.start(%thread-13.Thread* %54, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define i64 @main-0.do_async_push.Push_Thread_Proc-0(%thread-13.Thread* %thread, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %thread-13.Thread*, align 16 | |
%1 = alloca %main-0.do_async_push._payload-1216*, align 16 | |
%2 = alloca %libgit2_types-55.Remote*, align 16 | |
%3 = alloca %libgit2_types-55.Remote_Callbacks, align 16 | |
%4 = alloca i32, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
%6 = alloca %..any, align 16 | |
%7 = alloca %..string, align 16 | |
%8 = alloca {%..any*, i64}, align 16 | |
%9 = alloca [1 x %..any], align 16 | |
%10 = alloca {%..any*, i64}, align 16 | |
%11 = alloca %Source_Code_Location, align 16 | |
%12 = alloca {%..string*, i64, i64, %Allocator}, align 16 | |
%13 = alloca %branch-35.Branch, align 16 | |
%14 = alloca i64, align 16 | |
%15 = alloca i64, align 16 | |
%16 = alloca %..string, align 16 | |
%17 = alloca %..string, align 16 | |
%18 = alloca %..any, align 16 | |
%19 = alloca %..any, align 16 | |
%20 = alloca {%..any*, i64}, align 16 | |
%21 = alloca [2 x %..any], align 16 | |
%22 = alloca {%..any*, i64}, align 16 | |
%23 = alloca {%..string*, i64}, align 16 | |
%24 = alloca [1 x %..string], align 16 | |
%25 = alloca {%..string*, i64}, align 16 | |
%26 = alloca %Source_Code_Location, align 16 | |
%27 = alloca %libgit2_types-55.Push_Options, align 16 | |
%28 = alloca i32, align 16 | |
%29 = alloca {%..string*, i64}, align 16 | |
%30 = alloca {%..string*, i64}, align 16 | |
%31 = alloca %Source_Code_Location, align 16 | |
%32 = alloca %..string, align 16 | |
%33 = alloca %..any, align 16 | |
%34 = alloca {%..any*, i64}, align 16 | |
%35 = alloca [1 x %..any], align 16 | |
%36 = alloca {%..any*, i64}, align 16 | |
%37 = alloca %Source_Code_Location, align 16 | |
%38 = alloca %Source_Code_Location, align 16 | |
%39 = alloca {%..string*, i64, i64, %Allocator}, align 16 | |
%40 = alloca %Source_Code_Location, align 16 | |
%41 = alloca {%..string*, i64, i64, %Allocator}, align 16 | |
%42 = alloca %Source_Code_Location, align 16 | |
%43 = alloca %Source_Code_Location, align 16 | |
store %thread-13.Thread* %thread, %thread-13.Thread** %0 | |
; p | |
; SelectorExpr | |
%44 = load %thread-13.Thread*, %thread-13.Thread** %0, align 8 | |
%45 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %44, i64 0 | |
%46 = getelementptr inbounds %thread-13.Thread, %thread-13.Thread* %45, i64 0, i32 2 | |
%47 = load %..rawptr, %..rawptr* %46, align 8 | |
%48 = bitcast %..rawptr %47 to %main-0.do_async_push._payload-1216* | |
store %main-0.do_async_push._payload-1216* %48, %main-0.do_async_push._payload-1216** %1 | |
; remote | |
; SelectorExpr | |
%49 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8 | |
%50 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %49, i64 0 | |
%51 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %50, i64 0, i32 0 | |
%52 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %51, align 8 | |
%53 = call {%libgit2_types-55.Remote*, i32} @libgit2-29.remote_lookup(%libgit2_types-55.Repository* %52, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$f0, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr) | |
%54 = extractvalue {%libgit2_types-55.Remote*, i32} %53, 0 | |
%55 = extractvalue {%libgit2_types-55.Remote*, i32} %53, 1 | |
store %libgit2_types-55.Remote* %54, %libgit2_types-55.Remote** %2 | |
; remote_cb | |
; SelectorExpr | |
%56 = call {%libgit2_types-55.Remote_Callbacks, i32} @libgit2-29.remote_init_callbacks(%Context* noalias nonnull %__.context_ptr) | |
%57 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %56, 0 | |
%58 = extractvalue {%libgit2_types-55.Remote_Callbacks, i32} %56, 1 | |
store %libgit2_types-55.Remote_Callbacks %57, %libgit2_types-55.Remote_Callbacks* %3 | |
; AssignStmt | |
; SelectorExpr | |
%59 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0, i32 3 | |
%60 = bitcast i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* @main-0.credentials_callback to i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* | |
store i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %60, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %59 | |
; ok | |
; SelectorExpr | |
%61 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
%62 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0 | |
%63 = call i32 @libgit2-29.remote_connect(%libgit2_types-55.Remote* %61, i32 1, %libgit2_types-55.Remote_Callbacks* %62, %libgit2_types-55.Proxy_Options* zeroinitializer, %libgit2_types-55.Str_Array* zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
store i32 %63, i32* %4 | |
; IfStmt | |
%64 = load i32, i32* %4, align 4 | |
%65 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f1, i64 0, i32 0), i64 50}, i64 564, i64 13, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$f2, i64 0, i32 0), i64 16}) | |
%66 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%67 = call %..rawptr @__mem_zero(%..rawptr %66, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %65, %Source_Code_Location* %5 | |
%68 = call i8 @debug-30.log_if_err(i32 %64, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
%69 = trunc i8 %68 to i1 | |
br i1 %69, label %if.else-7, label %if.then-1 | |
if.then-1: | |
; SelectorExpr | |
; SelectorExpr | |
%70 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
%71 = call %..string @libgit2-29.remote_name(%libgit2_types-55.Remote* %70, %Context* noalias nonnull %__.context_ptr) | |
%72 = bitcast %..any* %6 to %..rawptr | |
%73 = call %..rawptr @__mem_zero(%..rawptr %72, i64 16) | |
store %..any zeroinitializer, %..any* %6 | |
%74 = bitcast %..string* %7 to %..rawptr | |
%75 = call %..rawptr @__mem_zero(%..rawptr %74, i64 16) | |
store %..string zeroinitializer, %..string* %7 | |
store %..string %71, %..string* %7 | |
%76 = bitcast %..string* %7 to %..rawptr | |
%77 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%78 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 0 | |
store %..rawptr %76, %..rawptr* %78 | |
%79 = getelementptr inbounds %..any, %..any* %6, i64 0, i32 1 | |
store %Type_Info* %77, %Type_Info** %79 | |
%80 = load %..any, %..any* %6, align 8 | |
; variadic call argument generation | |
%81 = bitcast {%..any*, i64}* %8 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8 | |
%83 = bitcast [1 x %..any]* %9 to %..rawptr | |
%84 = call %..rawptr @__mem_zero(%..rawptr %83, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %9 | |
%85 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0 | |
store %..any %80, %..any* %85 | |
%86 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0 | |
%87 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0 | |
store %..any* %86, %..any** %87 | |
%88 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1 | |
store i64 1, i64* %88 | |
%89 = load {%..any*, i64}, {%..any*, i64}* %8, align 8 | |
%90 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f3, i64 0, i32 0), i64 50}, i64 565, i64 21, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$f4, i64 0, i32 0), i64 16}) | |
%91 = bitcast {%..any*, i64}* %10 to %..rawptr | |
%92 = call %..rawptr @__mem_zero(%..rawptr %91, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10 | |
store {%..any*, i64} %89, {%..any*, i64}* %10 | |
%93 = bitcast %Source_Code_Location* %11 to %..rawptr | |
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11 | |
store %Source_Code_Location %90, %Source_Code_Location* %11 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$f5, i64 0, i32 0), i64 15}, {%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %__.context_ptr) | |
; refspec | |
%95 = bitcast {%..string*, i64, i64, %Allocator}* %12 to %..rawptr | |
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 40) | |
store {%..string*, i64, i64, %Allocator} zeroinitializer, {%..string*, i64, i64, %Allocator}* %12 | |
; DeferStmt | |
; RangeStmt | |
; b | |
%97 = bitcast %branch-35.Branch* %13 to %..rawptr | |
%98 = call %..rawptr @__mem_zero(%..rawptr %97, i64 208) | |
store %branch-35.Branch zeroinitializer, %branch-35.Branch* %13 | |
%99 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8 | |
%100 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %99, i64 0 | |
%101 = getelementptr inbounds %main-0.do_async_push._payload-1216, %main-0.do_async_push._payload-1216* %100, i64 0, i32 1 | |
%102 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %101, align 8 | |
%103 = bitcast i64* %14 to %..rawptr | |
%104 = call %..rawptr @__mem_zero(%..rawptr %103, i64 8) | |
store i64 zeroinitializer, i64* %14 | |
%105 = extractvalue {%branch-35.Branch*, i64} %102, 1 | |
store i64 %105, i64* %14 | |
%106 = bitcast i64* %15 to %..rawptr | |
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 8) | |
store i64 zeroinitializer, i64* %15 | |
store i64 -1, i64* %15 | |
br label %for.index.loop-2 | |
for.index.loop-2: | |
%108 = load i64, i64* %15, align 8 | |
%109 = add i64 %108, 1 | |
store i64 %109, i64* %15 | |
%110 = load i64, i64* %14, align 8 | |
%111 = icmp slt i64 %109, %110 | |
br i1 %111, label %for.index.body-3, label %for.index.done-4 | |
for.index.body-3: | |
%112 = load i64, i64* %15, align 8 | |
%113 = extractvalue {%branch-35.Branch*, i64} %102, 0 | |
%114 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %113, i64 %112 | |
%115 = load %branch-35.Branch, %branch-35.Branch* %114, align 8 | |
store %branch-35.Branch %115, %branch-35.Branch* %13 | |
; refname | |
; SelectorExpr | |
; SelectorExpr | |
%116 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %13, i64 0, i32 0 | |
%117 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %116, align 8 | |
%118 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %117, %Context* noalias nonnull %__.context_ptr) | |
store %..string %118, %..string* %16 | |
; spec | |
; SelectorExpr | |
%119 = load %..string, %..string* %16, align 8 | |
%120 = load %..string, %..string* %16, align 8 | |
%121 = bitcast %..any* %18 to %..rawptr | |
%122 = call %..rawptr @__mem_zero(%..rawptr %121, i64 16) | |
store %..any zeroinitializer, %..any* %18 | |
%123 = bitcast %..string* %16 to %..rawptr | |
%124 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%125 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 0 | |
store %..rawptr %123, %..rawptr* %125 | |
%126 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 1 | |
store %Type_Info* %124, %Type_Info** %126 | |
%127 = load %..any, %..any* %18, align 8 | |
%128 = bitcast %..any* %19 to %..rawptr | |
%129 = call %..rawptr @__mem_zero(%..rawptr %128, i64 16) | |
store %..any zeroinitializer, %..any* %19 | |
%130 = bitcast %..string* %16 to %..rawptr | |
%131 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%132 = getelementptr inbounds %..any, %..any* %19, i64 0, i32 0 | |
store %..rawptr %130, %..rawptr* %132 | |
%133 = getelementptr inbounds %..any, %..any* %19, i64 0, i32 1 | |
store %Type_Info* %131, %Type_Info** %133 | |
%134 = load %..any, %..any* %19, align 8 | |
; variadic call argument generation | |
%135 = bitcast {%..any*, i64}* %20 to %..rawptr | |
%136 = call %..rawptr @__mem_zero(%..rawptr %135, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %20 | |
%137 = bitcast [2 x %..any]* %21 to %..rawptr | |
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 32) | |
store [2 x %..any] zeroinitializer, [2 x %..any]* %21 | |
%139 = getelementptr inbounds [2 x %..any], [2 x %..any]* %21, i64 0, i32 0 | |
store %..any %127, %..any* %139 | |
%140 = getelementptr inbounds [2 x %..any], [2 x %..any]* %21, i64 0, i32 1 | |
store %..any %134, %..any* %140 | |
%141 = getelementptr inbounds [2 x %..any], [2 x %..any]* %21, i64 0, i32 0 | |
%142 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %20, i64 0, i32 0 | |
store %..any* %141, %..any** %142 | |
%143 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %20, i64 0, i32 1 | |
store i64 2, i64* %143 | |
%144 = load {%..any*, i64}, {%..any*, i64}* %20, align 8 | |
%145 = bitcast {%..any*, i64}* %22 to %..rawptr | |
%146 = call %..rawptr @__mem_zero(%..rawptr %145, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %22 | |
store {%..any*, i64} %144, {%..any*, i64}* %22 | |
%147 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$f6, i64 0, i32 0), i64 5}, {%..any*, i64}* %22, %Context* noalias nonnull %__.context_ptr) | |
store %..string %147, %..string* %17 | |
%148 = getelementptr inbounds {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %12, i64 0 | |
%149 = load %..string, %..string* %17, align 8 | |
; variadic call argument generation | |
%150 = bitcast {%..string*, i64}* %23 to %..rawptr | |
%151 = call %..rawptr @__mem_zero(%..rawptr %150, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %23 | |
%152 = bitcast [1 x %..string]* %24 to %..rawptr | |
%153 = call %..rawptr @__mem_zero(%..rawptr %152, i64 16) | |
store [1 x %..string] zeroinitializer, [1 x %..string]* %24 | |
%154 = getelementptr inbounds [1 x %..string], [1 x %..string]* %24, i64 0, i32 0 | |
store %..string %149, %..string* %154 | |
%155 = getelementptr inbounds [1 x %..string], [1 x %..string]* %24, i64 0, i32 0 | |
%156 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %23, i64 0, i32 0 | |
store %..string* %155, %..string** %156 | |
%157 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %23, i64 0, i32 1 | |
store i64 1, i64* %157 | |
%158 = load {%..string*, i64}, {%..string*, i64}* %23, align 8 | |
%159 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f7, i64 0, i32 0), i64 50}, i64 570, i64 17, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$f8, i64 0, i32 0), i64 16}) | |
%160 = bitcast {%..string*, i64}* %25 to %..rawptr | |
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %25 | |
store {%..string*, i64} %158, {%..string*, i64}* %25 | |
%162 = bitcast %Source_Code_Location* %26 to %..rawptr | |
%163 = call %..rawptr @__mem_zero(%..rawptr %162, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %26 | |
store %Source_Code_Location %159, %Source_Code_Location* %26 | |
%164 = call i64 @_preload-0.append-20623({%..string*, i64, i64, %Allocator}* %148, {%..string*, i64}* %25, %Source_Code_Location* %26, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-2 | |
for.index.done-4: | |
; opts | |
; SelectorExpr | |
%165 = call {%libgit2_types-55.Push_Options, i32} @libgit2-29.push_init_options(i32 1, %Context* noalias nonnull %__.context_ptr) | |
%166 = extractvalue {%libgit2_types-55.Push_Options, i32} %165, 0 | |
%167 = extractvalue {%libgit2_types-55.Push_Options, i32} %165, 1 | |
store %libgit2_types-55.Push_Options %166, %libgit2_types-55.Push_Options* %27 | |
; AssignStmt | |
; SelectorExpr | |
%168 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0, i32 8 | |
%169 = bitcast i32 (i32, i32, i64, %..rawptr)* @main-0.push_transfer_progress to i32 (i32, i32, i64, %..rawptr)* | |
store i32 (i32, i32, i64, %..rawptr)* %169, i32 (i32, i32, i64, %..rawptr)** %168 | |
; AssignStmt | |
; SelectorExpr | |
%170 = getelementptr inbounds %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, i64 0, i32 12 | |
%171 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0 | |
%172 = bitcast %main-0.TransferPayload* %171 to %..rawptr | |
store %..rawptr %172, %..rawptr* %170 | |
; AssignStmt | |
; SelectorExpr | |
%173 = getelementptr inbounds %libgit2_types-55.Push_Options, %libgit2_types-55.Push_Options* %27, i64 0, i32 2 | |
%174 = load %libgit2_types-55.Remote_Callbacks, %libgit2_types-55.Remote_Callbacks* %3, align 8 | |
store %libgit2_types-55.Remote_Callbacks %174, %libgit2_types-55.Remote_Callbacks* %173 | |
; AssignStmt | |
; SelectorExpr | |
%175 = getelementptr inbounds %libgit2_types-55.Push_Options, %libgit2_types-55.Push_Options* %27, i64 0, i32 1 | |
store i32 0, i32* %175 | |
; err | |
; SelectorExpr | |
%176 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
; SliceExpr | |
%177 = load {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %12, align 8 | |
%178 = extractvalue {%..string*, i64, i64, %Allocator} %177, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$f9, i64 0, i32 0), i64 50}, i64 580, i64 51, i64 0, i64 %178, i64 %178) | |
%179 = extractvalue {%..string*, i64, i64, %Allocator} %177, 0 | |
%180 = getelementptr inbounds %..string, %..string* %179, i64 0 | |
%181 = sub i64 %178, 0 | |
%182 = bitcast {%..string*, i64}* %29 to %..rawptr | |
%183 = call %..rawptr @__mem_zero(%..rawptr %182, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %29 | |
%184 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %29, i64 0, i32 0 | |
store %..string* %180, %..string** %184 | |
%185 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %29, i64 0, i32 1 | |
store i64 %181, i64* %185 | |
%186 = load {%..string*, i64}, {%..string*, i64}* %29, align 8 | |
%187 = getelementptr inbounds %libgit2_types-55.Push_Options, %libgit2_types-55.Push_Options* %27, i64 0 | |
%188 = bitcast {%..string*, i64}* %30 to %..rawptr | |
%189 = call %..rawptr @__mem_zero(%..rawptr %188, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %30 | |
store {%..string*, i64} %186, {%..string*, i64}* %30 | |
%190 = call i32 @libgit2-29.remote_push(%libgit2_types-55.Remote* %176, {%..string*, i64}* %30, %libgit2_types-55.Push_Options* %187, %Context* noalias nonnull %__.context_ptr) | |
store i32 %190, i32* %28 | |
; IfStmt | |
%191 = load i32, i32* %28, align 4 | |
%192 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$fa, i64 0, i32 0), i64 50}, i64 581, i64 17, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$fb, i64 0, i32 0), i64 16}) | |
%193 = bitcast %Source_Code_Location* %31 to %..rawptr | |
%194 = call %..rawptr @__mem_zero(%..rawptr %193, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %31 | |
store %Source_Code_Location %192, %Source_Code_Location* %31 | |
%195 = call i8 @debug-30.log_if_err(i32 %191, %Source_Code_Location* %31, %Context* noalias nonnull %__.context_ptr) | |
%196 = trunc i8 %195 to i1 | |
br i1 %196, label %if.done-6, label %if.then-5 | |
if.then-5: | |
; SelectorExpr | |
%197 = bitcast %..string* %32 to %..rawptr | |
%198 = call %..rawptr @__mem_zero(%..rawptr %197, i64 16) | |
store %..string zeroinitializer, %..string* %32 | |
store %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$fc, i64 0, i32 0), i64 16}, %..string* %32 | |
%199 = load %..string, %..string* %32, align 8 | |
%200 = bitcast %..any* %33 to %..rawptr | |
%201 = call %..rawptr @__mem_zero(%..rawptr %200, i64 16) | |
store %..any zeroinitializer, %..any* %33 | |
%202 = bitcast %..string* %32 to %..rawptr | |
%203 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%204 = getelementptr inbounds %..any, %..any* %33, i64 0, i32 0 | |
store %..rawptr %202, %..rawptr* %204 | |
%205 = getelementptr inbounds %..any, %..any* %33, i64 0, i32 1 | |
store %Type_Info* %203, %Type_Info** %205 | |
%206 = load %..any, %..any* %33, align 8 | |
; variadic call argument generation | |
%207 = bitcast {%..any*, i64}* %34 to %..rawptr | |
%208 = call %..rawptr @__mem_zero(%..rawptr %207, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %34 | |
%209 = bitcast [1 x %..any]* %35 to %..rawptr | |
%210 = call %..rawptr @__mem_zero(%..rawptr %209, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %35 | |
%211 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0 | |
store %..any %206, %..any* %211 | |
%212 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0 | |
%213 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 0 | |
store %..any* %212, %..any** %213 | |
%214 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 1 | |
store i64 1, i64* %214 | |
%215 = load {%..any*, i64}, {%..any*, i64}* %34, align 8 | |
%216 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$fd, i64 0, i32 0), i64 50}, i64 582, i64 25, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$fe, i64 0, i32 0), i64 16}) | |
%217 = bitcast {%..any*, i64}* %36 to %..rawptr | |
%218 = call %..rawptr @__mem_zero(%..rawptr %217, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %36 | |
store {%..any*, i64} %215, {%..any*, i64}* %36 | |
%219 = bitcast %Source_Code_Location* %37 to %..rawptr | |
%220 = call %..rawptr @__mem_zero(%..rawptr %219, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %37 | |
store %Source_Code_Location %216, %Source_Code_Location* %37 | |
call void @imgui_console-28.log({%..any*, i64}* %36, %Source_Code_Location* %37, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-6 | |
if.done-6: | |
; SelectorExpr | |
%221 = load %libgit2_types-55.Remote*, %libgit2_types-55.Remote** %2, align 8 | |
call cc 64 void @git_remote_free(%libgit2_types-55.Remote* %221) | |
; AssignStmt | |
; SelectorExpr | |
%222 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 3 | |
store i8 1, i8* %222 | |
%223 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8 | |
%224 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$ff, i64 0, i32 0), i64 50}, i64 586, i64 13, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$100, i64 0, i32 0), i64 16}) | |
%225 = bitcast %main-0.do_async_push._payload-1216* %223 to %..rawptr | |
%226 = bitcast %Source_Code_Location* %38 to %..rawptr | |
%227 = call %..rawptr @__mem_zero(%..rawptr %226, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %38 | |
store %Source_Code_Location %224, %Source_Code_Location* %38 | |
call void @free_ptr(%..rawptr %225, %Source_Code_Location* %38, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%228 = load i32, i32* %28, align 4 | |
%229 = sext i32 %228 to i64 | |
; defer | |
%230 = load {%..string*, i64, i64, %Allocator}, {%..string*, i64, i64, %Allocator}* %12, align 8 | |
%231 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$101, i64 0, i32 0), i64 50}, i64 566, i64 46, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$102, i64 0, i32 0), i64 16}) | |
%232 = bitcast {%..string*, i64, i64, %Allocator}* %39 to %..rawptr | |
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 40) | |
store {%..string*, i64, i64, %Allocator} zeroinitializer, {%..string*, i64, i64, %Allocator}* %39 | |
store {%..string*, i64, i64, %Allocator} %230, {%..string*, i64, i64, %Allocator}* %39 | |
%234 = bitcast %Source_Code_Location* %40 to %..rawptr | |
%235 = call %..rawptr @__mem_zero(%..rawptr %234, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %40 | |
store %Source_Code_Location %231, %Source_Code_Location* %40 | |
call void @_preload-0.free_dynamic_array-23064({%..string*, i64, i64, %Allocator}* %39, %Source_Code_Location* %40, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %229 | |
if.else-7: | |
%236 = load %main-0.do_async_push._payload-1216*, %main-0.do_async_push._payload-1216** %1, align 8 | |
%237 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$103, i64 0, i32 0), i64 50}, i64 589, i64 13, %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$104, i64 0, i32 0), i64 16}) | |
%238 = bitcast %main-0.do_async_push._payload-1216* %236 to %..rawptr | |
%239 = bitcast %Source_Code_Location* %43 to %..rawptr | |
%240 = call %..rawptr @__mem_zero(%..rawptr %239, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %43 | |
store %Source_Code_Location %237, %Source_Code_Location* %43 | |
call void @free_ptr(%..rawptr %238, %Source_Code_Location* %43, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%241 = load i32, i32* %4, align 4 | |
%242 = sext i32 %241 to i64 | |
ret i64 %242 | |
} | |
define void @main-0.repo_window(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %state-38.State*, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca %dear_imgui-50.Vec2, align 16 | |
%3 = alloca %dear_imgui-50.Vec2, align 16 | |
%4 = alloca %dear_imgui-50.Vec2, align 16 | |
%5 = alloca i8, align 16 | |
%6 = alloca {i8*, i64}, align 16 | |
%7 = alloca {i8*, i64}, align 16 | |
%8 = alloca %dear_imgui-50.Vec2, align 16 | |
%9 = alloca %..string, align 16 | |
%10 = alloca %libgit2_types-55.Repository*, align 16 | |
%11 = alloca i32, align 16 | |
%12 = alloca %Source_Code_Location, align 16 | |
%13 = alloca %..any, align 16 | |
%14 = alloca {%..any*, i64}, align 16 | |
%15 = alloca [1 x %..any], align 16 | |
%16 = alloca {%..any*, i64}, align 16 | |
%17 = alloca %Source_Code_Location, align 16 | |
%18 = alloca %..any, align 16 | |
%19 = alloca {%..any*, i64}, align 16 | |
%20 = alloca [1 x %..any], align 16 | |
%21 = alloca {%..any*, i64}, align 16 | |
%22 = alloca %dear_imgui-50.Vec2, align 16 | |
%23 = alloca %..string, align 16 | |
%24 = alloca %libgit2_types-55.Oid, align 16 | |
%25 = alloca %..string, align 16 | |
%26 = alloca %libgit2_types-55.Oid, align 16 | |
%27 = alloca i64, align 16 | |
%28 = alloca i64, align 16 | |
%29 = alloca %libgit2_types-55.Oid, align 16 | |
%30 = alloca %libgit2_types-55.Oid, align 16 | |
%31 = alloca %..any, align 16 | |
%32 = alloca {%..any*, i64}, align 16 | |
%33 = alloca [1 x %..any], align 16 | |
%34 = alloca {%..any*, i64}, align 16 | |
%35 = alloca %..any, align 16 | |
%36 = alloca {%..any*, i64}, align 16 | |
%37 = alloca [1 x %..any], align 16 | |
%38 = alloca {%..any*, i64}, align 16 | |
%39 = alloca %dear_imgui-50.Vec2, align 16 | |
%40 = alloca {%branch-35.Branch*, i64}, align 16 | |
%41 = alloca {%branch-35.Branch*, i64}, align 16 | |
%42 = alloca %dear_imgui-50.Vec2, align 16 | |
%43 = alloca %dear_imgui-50.Vec2, align 16 | |
%44 = alloca %libgit2_types-55.Signature, align 16 | |
%45 = alloca i32, align 16 | |
%46 = alloca %Source_Code_Location, align 16 | |
%47 = alloca %Source_Code_Location, align 16 | |
%48 = alloca %dear_imgui-50.Vec2, align 16 | |
%49 = alloca %libgit2_types-55.Stash_Apply_Options, align 16 | |
%50 = alloca %dear_imgui-50.Vec2, align 16 | |
%51 = alloca %..any, align 16 | |
%52 = alloca {%..any*, i64}, align 16 | |
%53 = alloca [1 x %..any], align 16 | |
%54 = alloca {%..any*, i64}, align 16 | |
store %state-38.State* %state, %state-38.State** %0 | |
; open_push_transfer | |
store i8 0, i8* %1 | |
; SelectorExpr | |
%55 = bitcast %dear_imgui-50.Vec2* %2 to %..rawptr | |
%56 = call %..rawptr @__mem_zero(%..rawptr %55, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %2 | |
store %dear_imgui-50.Vec2 {float 0x406f400000000000, float 0x4032000000000000}, %dear_imgui-50.Vec2* %2 | |
%57 = bitcast %dear_imgui-50.Vec2* %2 to i64* | |
%58 = load i64, i64* %57, align 8 | |
%59 = bitcast %dear_imgui-50.Vec2* %3 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %3 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %3 | |
%61 = bitcast %dear_imgui-50.Vec2* %3 to i64* | |
%62 = load i64, i64* %61, align 8 | |
call ccc void @igSetNextWindowPos(i64 %58, i32 0, i64 %62) | |
; SelectorExpr | |
; CompoundLit | |
%63 = bitcast %dear_imgui-50.Vec2* %4 to %..rawptr | |
%64 = call %..rawptr @__mem_zero(%..rawptr %63, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %4 | |
store %dear_imgui-50.Vec2 {float 0x4079a00000000000, float zeroinitializer}, %dear_imgui-50.Vec2* %4 | |
%65 = load %state-38.State*, %state-38.State** %0, align 8 | |
%66 = getelementptr inbounds %state-38.State, %state-38.State* %65, i64 0 | |
%67 = getelementptr inbounds %state-38.State, %state-38.State* %66, i64 0, i32 8 | |
%68 = load i64, i64* %67, align 8 | |
%69 = sub i64 %68, 18 | |
%70 = sitofp i64 %69 to float | |
%71 = getelementptr inbounds %dear_imgui-50.Vec2, %dear_imgui-50.Vec2* %4, i64 0, i32 1 | |
store float %70, float* %71 | |
%72 = load %dear_imgui-50.Vec2, %dear_imgui-50.Vec2* %4, align 4 | |
%73 = bitcast %dear_imgui-50.Vec2* %4 to i64* | |
%74 = load i64, i64* %73, align 8 | |
call ccc void @igSetNextWindowSize(i64 %74, i32 0) | |
; IfStmt | |
; SelectorExpr | |
%75 = call i8 @dear_imgui-50.begin(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$105, i64 0, i32 0), i64 4}, i8* zeroinitializer, i32 8230, %Context* noalias nonnull %__.context_ptr) | |
%76 = trunc i8 %75 to i1 | |
br i1 %76, label %if.then-1, label %if.done-33 | |
if.then-1: | |
; DeferStmt | |
; IfStmt | |
%77 = load %state-38.State*, %state-38.State** %0, align 8 | |
%78 = getelementptr inbounds %state-38.State, %state-38.State* %77, i64 0 | |
%79 = getelementptr inbounds %state-38.State, %state-38.State* %78, i64 0, i32 40 | |
%80 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %79, align 8 | |
%81 = icmp eq %libgit2_types-55.Repository* %80, zeroinitializer | |
%82 = zext i1 %81 to i8 | |
%83 = trunc i8 %82 to i1 | |
br i1 %83, label %if.then-2, label %if.else-14 | |
if.then-2: | |
; ok | |
; SelectorExpr | |
; SliceExpr | |
%84 = load %state-38.State*, %state-38.State** %0, align 8 | |
%85 = getelementptr inbounds %state-38.State, %state-38.State* %84, i64 0 | |
%86 = getelementptr inbounds %state-38.State, %state-38.State* %85, i64 0, i32 24 | |
%87 = load [256 x i8], [256 x i8]* %86, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$106, i64 0, i32 0), i64 50}, i64 610, i64 58, i64 0, i64 256, i64 256) | |
%88 = getelementptr inbounds [256 x i8], [256 x i8]* %86, i64 0, i32 0 | |
%89 = getelementptr inbounds i8, i8* %88, i64 0 | |
%90 = sub i64 256, 0 | |
%91 = bitcast {i8*, i64}* %6 to %..rawptr | |
%92 = call %..rawptr @__mem_zero(%..rawptr %91, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %6 | |
%93 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 0 | |
store i8* %89, i8** %93 | |
%94 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %6, i64 0, i32 1 | |
store i64 %90, i64* %94 | |
%95 = load {i8*, i64}, {i8*, i64}* %6, align 8 | |
%96 = bitcast {i8*, i64}* %7 to %..rawptr | |
%97 = call %..rawptr @__mem_zero(%..rawptr %96, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %7 | |
store {i8*, i64} %95, {i8*, i64}* %7 | |
%98 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$107, i64 0, i32 0), i64 10}, {i8*, i64}* %7, i32 32, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
store i8 %98, i8* %5 | |
; IfStmt | |
; SelectorExpr | |
%99 = bitcast %dear_imgui-50.Vec2* %8 to %..rawptr | |
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %8 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %8 | |
%101 = bitcast %dear_imgui-50.Vec2* %8 to i64* | |
%102 = load i64, i64* %101, align 8 | |
%103 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$108, i64 0, i32 0), i64 4}, i64 %102, %Context* noalias nonnull %__.context_ptr) | |
%104 = trunc i8 %103 to i1 | |
br i1 %104, label %if.then-5, label %cmp.or-3 | |
cmp.or-3: | |
%105 = load i8, i8* %5, align 1 | |
%106 = trunc i8 %105 to i1 | |
br i1 %106, label %if.then-5, label %cmp.or-4 | |
cmp.or-4: | |
%107 = load %state-38.State*, %state-38.State** %0, align 8 | |
%108 = getelementptr inbounds %state-38.State, %state-38.State* %107, i64 0 | |
%109 = getelementptr inbounds %state-38.State, %state-38.State* %108, i64 0, i32 37 | |
%110 = load i8, i8* %109, align 1 | |
%111 = trunc i8 %110 to i1 | |
br i1 %111, label %if.then-5, label %if.done-13 | |
if.then-5: | |
; path | |
; SelectorExpr | |
; IndexExpr | |
%112 = load %state-38.State*, %state-38.State** %0, align 8 | |
%113 = getelementptr inbounds %state-38.State, %state-38.State* %112, i64 0 | |
%114 = getelementptr inbounds %state-38.State, %state-38.State* %113, i64 0, i32 24 | |
%115 = getelementptr inbounds [256 x i8], [256 x i8]* %114, i64 0, i32 0 | |
%116 = getelementptr inbounds i8, i8* %115, i64 0 | |
%117 = call %..string @strings-12.to_odin_string(i8* %116, %Context* noalias nonnull %__.context_ptr) | |
store %..string %117, %..string* %9 | |
; IfStmt | |
%118 = load %state-38.State*, %state-38.State** %0, align 8 | |
%119 = getelementptr inbounds %state-38.State, %state-38.State* %118, i64 0 | |
%120 = getelementptr inbounds %state-38.State, %state-38.State* %119, i64 0, i32 37 | |
%121 = load i8, i8* %120, align 1 | |
%122 = trunc i8 %121 to i1 | |
br i1 %122, label %if.then-6, label %if.done-7 | |
if.then-6: | |
; AssignStmt | |
%123 = load %state-38.State*, %state-38.State** %0, align 8 | |
%124 = getelementptr inbounds %state-38.State, %state-38.State* %123, i64 0 | |
%125 = getelementptr inbounds %state-38.State, %state-38.State* %124, i64 0, i32 38 | |
%126 = load %..string, %..string* %125, align 8 | |
store %..string %126, %..string* %9 | |
br label %if.done-7 | |
if.done-7: | |
; IfStmt | |
; SelectorExpr | |
%127 = load %..string, %..string* %9, align 8 | |
%128 = call i8 @libgit2-29.is_repository(%..string %127, %Context* noalias nonnull %__.context_ptr) | |
%129 = trunc i8 %128 to i1 | |
br i1 %129, label %if.then-8, label %if.else-11 | |
if.then-8: | |
; new_repo | |
; err | |
; SelectorExpr | |
%130 = load %..string, %..string* %9, align 8 | |
%131 = call {%libgit2_types-55.Repository*, i32} @libgit2-29.repository_open(%..string %130, i32 1, %..string zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
%132 = extractvalue {%libgit2_types-55.Repository*, i32} %131, 0 | |
%133 = extractvalue {%libgit2_types-55.Repository*, i32} %131, 1 | |
store %libgit2_types-55.Repository* %132, %libgit2_types-55.Repository** %10 | |
store i32 %133, i32* %11 | |
; IfStmt | |
%134 = load i32, i32* %11, align 4 | |
%135 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$109, i64 0, i32 0), i64 50}, i64 620, i64 25, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$10a, i64 0, i32 0), i64 11}) | |
%136 = bitcast %Source_Code_Location* %12 to %..rawptr | |
%137 = call %..rawptr @__mem_zero(%..rawptr %136, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %12 | |
store %Source_Code_Location %135, %Source_Code_Location* %12 | |
%138 = call i8 @debug-30.log_if_err(i32 %134, %Source_Code_Location* %12, %Context* noalias nonnull %__.context_ptr) | |
%139 = trunc i8 %138 to i1 | |
br i1 %139, label %if.done-10, label %if.then-9 | |
if.then-9: | |
%140 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %10, align 8 | |
%141 = load %state-38.State*, %state-38.State** %0, align 8 | |
call void @main-0.open_repo(%libgit2_types-55.Repository* %140, %state-38.State* %141, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-10 | |
if.done-10: | |
br label %if.done-12 | |
if.else-11: | |
; SelectorExpr | |
%142 = load %..string, %..string* %9, align 8 | |
%143 = bitcast %..any* %13 to %..rawptr | |
%144 = call %..rawptr @__mem_zero(%..rawptr %143, i64 16) | |
store %..any zeroinitializer, %..any* %13 | |
%145 = bitcast %..string* %9 to %..rawptr | |
%146 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%147 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 0 | |
store %..rawptr %145, %..rawptr* %147 | |
%148 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 1 | |
store %Type_Info* %146, %Type_Info** %148 | |
%149 = load %..any, %..any* %13, align 8 | |
; variadic call argument generation | |
%150 = bitcast {%..any*, i64}* %14 to %..rawptr | |
%151 = call %..rawptr @__mem_zero(%..rawptr %150, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %14 | |
%152 = bitcast [1 x %..any]* %15 to %..rawptr | |
%153 = call %..rawptr @__mem_zero(%..rawptr %152, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %15 | |
%154 = getelementptr inbounds [1 x %..any], [1 x %..any]* %15, i64 0, i32 0 | |
store %..any %149, %..any* %154 | |
%155 = getelementptr inbounds [1 x %..any], [1 x %..any]* %15, i64 0, i32 0 | |
%156 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 0 | |
store %..any* %155, %..any** %156 | |
%157 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 1 | |
store i64 1, i64* %157 | |
%158 = load {%..any*, i64}, {%..any*, i64}* %14, align 8 | |
%159 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$10b, i64 0, i32 0), i64 50}, i64 624, i64 29, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$10c, i64 0, i32 0), i64 11}) | |
%160 = bitcast {%..any*, i64}* %16 to %..rawptr | |
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16 | |
store {%..any*, i64} %158, {%..any*, i64}* %16 | |
%162 = bitcast %Source_Code_Location* %17 to %..rawptr | |
%163 = call %..rawptr @__mem_zero(%..rawptr %162, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %17 | |
store %Source_Code_Location %159, %Source_Code_Location* %17 | |
call void @imgui_console-28.logf_error(%..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$10d, i64 0, i32 0), i64 16}, {%..any*, i64}* %16, %Source_Code_Location* %17, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-12 | |
if.done-12: | |
; AssignStmt | |
%164 = load %state-38.State*, %state-38.State** %0, align 8 | |
%165 = getelementptr inbounds %state-38.State, %state-38.State* %164, i64 0 | |
%166 = getelementptr inbounds %state-38.State, %state-38.State* %165, i64 0, i32 37 | |
store i8 0, i8* %166 | |
br label %if.done-13 | |
if.done-13: | |
br label %if.done-32 | |
if.else-14: | |
; SelectorExpr | |
%167 = load %state-38.State*, %state-38.State** %0, align 8 | |
%168 = getelementptr inbounds %state-38.State, %state-38.State* %167, i64 0 | |
%169 = getelementptr inbounds %state-38.State, %state-38.State* %168, i64 0, i32 41 | |
%170 = load %..string, %..string* %169, align 8 | |
%171 = bitcast %..any* %18 to %..rawptr | |
%172 = call %..rawptr @__mem_zero(%..rawptr %171, i64 16) | |
store %..any zeroinitializer, %..any* %18 | |
%173 = bitcast %..string* %169 to %..rawptr | |
%174 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%175 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 0 | |
store %..rawptr %173, %..rawptr* %175 | |
%176 = getelementptr inbounds %..any, %..any* %18, i64 0, i32 1 | |
store %Type_Info* %174, %Type_Info** %176 | |
%177 = load %..any, %..any* %18, align 8 | |
; variadic call argument generation | |
%178 = bitcast {%..any*, i64}* %19 to %..rawptr | |
%179 = call %..rawptr @__mem_zero(%..rawptr %178, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %19 | |
%180 = bitcast [1 x %..any]* %20 to %..rawptr | |
%181 = call %..rawptr @__mem_zero(%..rawptr %180, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %20 | |
%182 = getelementptr inbounds [1 x %..any], [1 x %..any]* %20, i64 0, i32 0 | |
store %..any %177, %..any* %182 | |
%183 = getelementptr inbounds [1 x %..any], [1 x %..any]* %20, i64 0, i32 0 | |
%184 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %19, i64 0, i32 0 | |
store %..any* %183, %..any** %184 | |
%185 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %19, i64 0, i32 1 | |
store i64 1, i64* %185 | |
%186 = load {%..any*, i64}, {%..any*, i64}* %19, align 8 | |
%187 = bitcast {%..any*, i64}* %21 to %..rawptr | |
%188 = call %..rawptr @__mem_zero(%..rawptr %187, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %21 | |
store {%..any*, i64} %186, {%..any*, i64}* %21 | |
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$10e, i64 0, i32 0), i64 8}, {%..any*, i64}* %21, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
; IfStmt | |
; SelectorExpr | |
%189 = bitcast %dear_imgui-50.Vec2* %22 to %..rawptr | |
%190 = call %..rawptr @__mem_zero(%..rawptr %189, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %22 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %22 | |
%191 = bitcast %dear_imgui-50.Vec2* %22 to i64* | |
%192 = load i64, i64* %191, align 8 | |
%193 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$10f, i64 0, i32 0), i64 10}, i64 %192, %Context* noalias nonnull %__.context_ptr) | |
%194 = trunc i8 %193 to i1 | |
br i1 %194, label %if.then-15, label %if.else-16 | |
if.then-15: | |
; AssignStmt | |
%195 = load %state-38.State*, %state-38.State** %0, align 8 | |
%196 = getelementptr inbounds %state-38.State, %state-38.State* %195, i64 0 | |
%197 = getelementptr inbounds %state-38.State, %state-38.State* %196, i64 0, i32 27 | |
store i8 1, i8* %197 | |
br label %if.done-31 | |
if.else-16: | |
; bname | |
; SelectorExpr | |
; SelectorExpr | |
%198 = load %state-38.State*, %state-38.State** %0, align 8 | |
%199 = getelementptr inbounds %state-38.State, %state-38.State* %198, i64 0 | |
%200 = getelementptr inbounds %state-38.State, %state-38.State* %199, i64 0, i32 43 | |
%201 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %200, i64 0, i32 0 | |
%202 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %201, align 8 | |
%203 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %202, %Context* noalias nonnull %__.context_ptr) | |
store %..string %203, %..string* %23 | |
; bid | |
; SelectorExpr | |
%204 = load %state-38.State*, %state-38.State** %0, align 8 | |
%205 = getelementptr inbounds %state-38.State, %state-38.State* %204, i64 0 | |
%206 = getelementptr inbounds %state-38.State, %state-38.State* %205, i64 0, i32 40 | |
%207 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %206, align 8 | |
%208 = load %..string, %..string* %23, align 8 | |
%209 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %207, %..string %208, %Context* noalias nonnull %__.context_ptr) | |
%210 = extractvalue {%libgit2_types-55.Oid, i32} %209, 0 | |
%211 = extractvalue {%libgit2_types-55.Oid, i32} %209, 1 | |
store %libgit2_types-55.Oid %210, %libgit2_types-55.Oid* %24 | |
; IfStmt | |
; SelectorExpr | |
%212 = load %state-38.State*, %state-38.State** %0, align 8 | |
%213 = getelementptr inbounds %state-38.State, %state-38.State* %212, i64 0 | |
%214 = getelementptr inbounds %state-38.State, %state-38.State* %213, i64 0, i32 43 | |
%215 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %214, i64 0, i32 1 | |
%216 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %215, align 8 | |
%217 = icmp ne %libgit2_types-55.Reference* %216, zeroinitializer | |
%218 = zext i1 %217 to i8 | |
%219 = trunc i8 %218 to i1 | |
br i1 %219, label %if.then-17, label %if.done-22 | |
if.then-17: | |
; uname | |
; SelectorExpr | |
; SelectorExpr | |
%220 = load %state-38.State*, %state-38.State** %0, align 8 | |
%221 = getelementptr inbounds %state-38.State, %state-38.State* %220, i64 0 | |
%222 = getelementptr inbounds %state-38.State, %state-38.State* %221, i64 0, i32 43 | |
%223 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %222, i64 0, i32 1 | |
%224 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %223, align 8 | |
%225 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %224, %Context* noalias nonnull %__.context_ptr) | |
store %..string %225, %..string* %25 | |
; uid | |
; SelectorExpr | |
%226 = load %state-38.State*, %state-38.State** %0, align 8 | |
%227 = getelementptr inbounds %state-38.State, %state-38.State* %226, i64 0 | |
%228 = getelementptr inbounds %state-38.State, %state-38.State* %227, i64 0, i32 40 | |
%229 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %228, align 8 | |
%230 = load %..string, %..string* %25, align 8 | |
%231 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %229, %..string %230, %Context* noalias nonnull %__.context_ptr) | |
%232 = extractvalue {%libgit2_types-55.Oid, i32} %231, 0 | |
%233 = extractvalue {%libgit2_types-55.Oid, i32} %231, 1 | |
store %libgit2_types-55.Oid %232, %libgit2_types-55.Oid* %26 | |
; ahead | |
; behind | |
; SelectorExpr | |
%234 = load %state-38.State*, %state-38.State** %0, align 8 | |
%235 = getelementptr inbounds %state-38.State, %state-38.State* %234, i64 0 | |
%236 = getelementptr inbounds %state-38.State, %state-38.State* %235, i64 0, i32 40 | |
%237 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %236, align 8 | |
%238 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %24, align 1 | |
%239 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %26, align 1 | |
%240 = bitcast %libgit2_types-55.Oid* %29 to %..rawptr | |
%241 = call %..rawptr @__mem_zero(%..rawptr %240, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %29 | |
store %libgit2_types-55.Oid %238, %libgit2_types-55.Oid* %29 | |
%242 = bitcast %libgit2_types-55.Oid* %30 to %..rawptr | |
%243 = call %..rawptr @__mem_zero(%..rawptr %242, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %30 | |
store %libgit2_types-55.Oid %239, %libgit2_types-55.Oid* %30 | |
%244 = call {i64, i64, i32} @libgit2-29.graph_ahead_behind(%libgit2_types-55.Repository* %237, %libgit2_types-55.Oid* %29, %libgit2_types-55.Oid* %30, %Context* noalias nonnull %__.context_ptr) | |
%245 = extractvalue {i64, i64, i32} %244, 0 | |
%246 = extractvalue {i64, i64, i32} %244, 1 | |
%247 = extractvalue {i64, i64, i32} %244, 2 | |
store i64 %245, i64* %27 | |
store i64 %246, i64* %28 | |
; SelectorExpr | |
%248 = load i64, i64* %27, align 8 | |
%249 = bitcast %..any* %31 to %..rawptr | |
%250 = call %..rawptr @__mem_zero(%..rawptr %249, i64 16) | |
store %..any zeroinitializer, %..any* %31 | |
%251 = bitcast i64* %27 to %..rawptr | |
%252 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%253 = getelementptr inbounds %..any, %..any* %31, i64 0, i32 0 | |
store %..rawptr %251, %..rawptr* %253 | |
%254 = getelementptr inbounds %..any, %..any* %31, i64 0, i32 1 | |
store %Type_Info* %252, %Type_Info** %254 | |
%255 = load %..any, %..any* %31, align 8 | |
; variadic call argument generation | |
%256 = bitcast {%..any*, i64}* %32 to %..rawptr | |
%257 = call %..rawptr @__mem_zero(%..rawptr %256, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %32 | |
%258 = bitcast [1 x %..any]* %33 to %..rawptr | |
%259 = call %..rawptr @__mem_zero(%..rawptr %258, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %33 | |
%260 = getelementptr inbounds [1 x %..any], [1 x %..any]* %33, i64 0, i32 0 | |
store %..any %255, %..any* %260 | |
%261 = getelementptr inbounds [1 x %..any], [1 x %..any]* %33, i64 0, i32 0 | |
%262 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %32, i64 0, i32 0 | |
store %..any* %261, %..any** %262 | |
%263 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %32, i64 0, i32 1 | |
store i64 1, i64* %263 | |
%264 = load {%..any*, i64}, {%..any*, i64}* %32, align 8 | |
%265 = bitcast {%..any*, i64}* %34 to %..rawptr | |
%266 = call %..rawptr @__mem_zero(%..rawptr %265, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %34 | |
store {%..any*, i64} %264, {%..any*, i64}* %34 | |
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([27 x i8], [27 x i8]* @__str$110, i64 0, i32 0), i64 26}, {%..any*, i64}* %34, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%267 = load i64, i64* %28, align 8 | |
%268 = bitcast %..any* %35 to %..rawptr | |
%269 = call %..rawptr @__mem_zero(%..rawptr %268, i64 16) | |
store %..any zeroinitializer, %..any* %35 | |
%270 = bitcast i64* %28 to %..rawptr | |
%271 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%272 = getelementptr inbounds %..any, %..any* %35, i64 0, i32 0 | |
store %..rawptr %270, %..rawptr* %272 | |
%273 = getelementptr inbounds %..any, %..any* %35, i64 0, i32 1 | |
store %Type_Info* %271, %Type_Info** %273 | |
%274 = load %..any, %..any* %35, align 8 | |
; variadic call argument generation | |
%275 = bitcast {%..any*, i64}* %36 to %..rawptr | |
%276 = call %..rawptr @__mem_zero(%..rawptr %275, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %36 | |
%277 = bitcast [1 x %..any]* %37 to %..rawptr | |
%278 = call %..rawptr @__mem_zero(%..rawptr %277, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %37 | |
%279 = getelementptr inbounds [1 x %..any], [1 x %..any]* %37, i64 0, i32 0 | |
store %..any %274, %..any* %279 | |
%280 = getelementptr inbounds [1 x %..any], [1 x %..any]* %37, i64 0, i32 0 | |
%281 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %36, i64 0, i32 0 | |
store %..any* %280, %..any** %281 | |
%282 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %36, i64 0, i32 1 | |
store i64 1, i64* %282 | |
%283 = load {%..any*, i64}, {%..any*, i64}* %36, align 8 | |
%284 = bitcast {%..any*, i64}* %38 to %..rawptr | |
%285 = call %..rawptr @__mem_zero(%..rawptr %284, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %38 | |
store {%..any*, i64} %283, {%..any*, i64}* %38 | |
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([28 x i8], [28 x i8]* @__str$111, i64 0, i32 0), i64 27}, {%..any*, i64}* %38, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
%286 = load i64, i64* %27, align 8 | |
%287 = icmp ugt i64 %286, 0 | |
%288 = zext i1 %287 to i8 | |
%289 = trunc i8 %288 to i1 | |
br i1 %289, label %if.then-18, label %if.done-21 | |
if.then-18: | |
; IfStmt | |
; SelectorExpr | |
%290 = bitcast %dear_imgui-50.Vec2* %39 to %..rawptr | |
%291 = call %..rawptr @__mem_zero(%..rawptr %290, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %39 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %39 | |
%292 = bitcast %dear_imgui-50.Vec2* %39 to i64* | |
%293 = load i64, i64* %292, align 8 | |
%294 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$112, i64 0, i32 0), i64 4}, i64 %293, %Context* noalias nonnull %__.context_ptr) | |
%295 = trunc i8 %294 to i1 | |
br i1 %295, label %if.then-19, label %if.done-20 | |
if.then-19: | |
; AssignStmt | |
store i8 1, i8* %1 | |
%296 = load %state-38.State*, %state-38.State** %0, align 8 | |
%297 = getelementptr inbounds %state-38.State, %state-38.State* %296, i64 0 | |
%298 = getelementptr inbounds %state-38.State, %state-38.State* %297, i64 0, i32 40 | |
%299 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %298, align 8 | |
; CompoundLit | |
%300 = bitcast {%branch-35.Branch*, i64}* %40 to %..rawptr | |
%301 = call %..rawptr @__mem_zero(%..rawptr %300, i64 16) | |
store {%branch-35.Branch*, i64} zeroinitializer, {%branch-35.Branch*, i64}* %40 | |
%302 = getelementptr inbounds [1 x %branch-35.Branch], [1 x %branch-35.Branch]* @__csba$2, i64 0, i32 0 | |
%303 = load %state-38.State*, %state-38.State** %0, align 8 | |
%304 = getelementptr inbounds %state-38.State, %state-38.State* %303, i64 0 | |
%305 = getelementptr inbounds %state-38.State, %state-38.State* %304, i64 0, i32 43 | |
%306 = load %branch-35.Branch, %branch-35.Branch* %305, align 8 | |
%307 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %302, i64 0 | |
store %branch-35.Branch %306, %branch-35.Branch* %307 | |
%308 = getelementptr inbounds {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %40, i64 0, i32 0 | |
store %branch-35.Branch* %302, %branch-35.Branch** %308 | |
%309 = getelementptr inbounds {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %40, i64 0, i32 1 | |
store i64 1, i64* %309 | |
%310 = load {%branch-35.Branch*, i64}, {%branch-35.Branch*, i64}* %40, align 8 | |
%311 = bitcast {%branch-35.Branch*, i64}* %41 to %..rawptr | |
%312 = call %..rawptr @__mem_zero(%..rawptr %311, i64 16) | |
store {%branch-35.Branch*, i64} zeroinitializer, {%branch-35.Branch*, i64}* %41 | |
store {%branch-35.Branch*, i64} %310, {%branch-35.Branch*, i64}* %41 | |
call void @main-0.do_async_push(%libgit2_types-55.Repository* %299, {%branch-35.Branch*, i64}* %41, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-20 | |
if.done-20: | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
br label %if.done-21 | |
if.done-21: | |
br label %if.done-22 | |
if.done-22: | |
; IfStmt | |
; SelectorExpr | |
%313 = bitcast %dear_imgui-50.Vec2* %42 to %..rawptr | |
%314 = call %..rawptr @__mem_zero(%..rawptr %313, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %42 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %42 | |
%315 = bitcast %dear_imgui-50.Vec2* %42 to i64* | |
%316 = load i64, i64* %315, align 8 | |
%317 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$113, i64 0, i32 0), i64 5}, i64 %316, %Context* noalias nonnull %__.context_ptr) | |
%318 = trunc i8 %317 to i1 | |
br i1 %318, label %if.then-23, label %if.done-24 | |
if.then-23: | |
%319 = load %state-38.State*, %state-38.State** %0, align 8 | |
%320 = getelementptr inbounds %state-38.State, %state-38.State* %319, i64 0 | |
%321 = getelementptr inbounds %state-38.State, %state-38.State* %320, i64 0, i32 40 | |
%322 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %321, align 8 | |
call void @main-0.do_async_fetch(%libgit2_types-55.Repository* %322, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-24 | |
if.done-24: | |
; SelectorExpr | |
call ccc void @igSeparator() | |
; SelectorExpr | |
%323 = load %state-38.State*, %state-38.State** %0, align 8 | |
%324 = getelementptr inbounds %state-38.State, %state-38.State* %323, i64 0 | |
%325 = getelementptr inbounds %state-38.State, %state-38.State* %324, i64 0, i32 1 | |
%326 = load double, double* %325, align 8 | |
%327 = load %state-38.State*, %state-38.State** %0, align 8 | |
%328 = getelementptr inbounds %state-38.State, %state-38.State* %327, i64 0 | |
%329 = getelementptr inbounds %state-38.State, %state-38.State* %328, i64 0, i32 29 | |
%330 = getelementptr inbounds %status-39.Status, %status-39.Status* %329, i64 0 | |
%331 = load %state-38.State*, %state-38.State** %0, align 8 | |
%332 = getelementptr inbounds %state-38.State, %state-38.State* %331, i64 0 | |
%333 = getelementptr inbounds %state-38.State, %state-38.State* %332, i64 0, i32 40 | |
%334 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %333, align 8 | |
; SelectorExpr | |
%335 = load %state-38.State*, %state-38.State** %0, align 8 | |
%336 = getelementptr inbounds %state-38.State, %state-38.State* %335, i64 0 | |
%337 = getelementptr inbounds %state-38.State, %state-38.State* %336, i64 0, i32 48 | |
%338 = getelementptr inbounds %diff_view-37.Context*, %diff_view-37.Context** %337, i64 0 | |
call void @status-39.window(double %326, %status-39.Status* %330, %libgit2_types-55.Repository* %334, %diff_view-37.Context** %338, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
call ccc void @igSeparator() | |
%339 = load %state-38.State*, %state-38.State** %0, align 8 | |
call void @main-0.commit_window(%state-38.State* %339, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%340 = bitcast %dear_imgui-50.Vec2* %43 to %..rawptr | |
%341 = call %..rawptr @__mem_zero(%..rawptr %340, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %43 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %43 | |
%342 = bitcast %dear_imgui-50.Vec2* %43 to i64* | |
%343 = load i64, i64* %342, align 8 | |
%344 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$114, i64 0, i32 0), i64 5}, i64 %343, %Context* noalias nonnull %__.context_ptr) | |
%345 = trunc i8 %344 to i1 | |
br i1 %345, label %if.then-25, label %if.done-28 | |
if.then-25: | |
; IfStmt | |
; sig | |
; err | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%346 = load %state-38.State*, %state-38.State** %0, align 8 | |
%347 = getelementptr inbounds %state-38.State, %state-38.State* %346, i64 0 | |
%348 = getelementptr inbounds %state-38.State, %state-38.State* %347, i64 0, i32 43 | |
%349 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %348, i64 0, i32 4 | |
%350 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %349, i64 0, i32 2 | |
%351 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %350, i64 0, i32 1 | |
%352 = load %..string, %..string* %351, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%353 = load %state-38.State*, %state-38.State** %0, align 8 | |
%354 = getelementptr inbounds %state-38.State, %state-38.State* %353, i64 0 | |
%355 = getelementptr inbounds %state-38.State, %state-38.State* %354, i64 0, i32 43 | |
%356 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %355, i64 0, i32 4 | |
%357 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %356, i64 0, i32 2 | |
%358 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %357, i64 0, i32 2 | |
%359 = load %..string, %..string* %358, align 8 | |
%360 = call {%libgit2_types-55.Signature, i32} @libgit2-29.signature_now(%..string %352, %..string %359, %Context* noalias nonnull %__.context_ptr) | |
%361 = extractvalue {%libgit2_types-55.Signature, i32} %360, 0 | |
%362 = extractvalue {%libgit2_types-55.Signature, i32} %360, 1 | |
store %libgit2_types-55.Signature %361, %libgit2_types-55.Signature* %44 | |
store i32 %362, i32* %45 | |
%363 = load i32, i32* %45, align 4 | |
%364 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$115, i64 0, i32 0), i64 50}, i64 669, i64 103, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$116, i64 0, i32 0), i64 11}) | |
%365 = bitcast %Source_Code_Location* %46 to %..rawptr | |
%366 = call %..rawptr @__mem_zero(%..rawptr %365, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %46 | |
store %Source_Code_Location %364, %Source_Code_Location* %46 | |
%367 = call i8 @debug-30.log_if_err(i32 %363, %Source_Code_Location* %46, %Context* noalias nonnull %__.context_ptr) | |
%368 = trunc i8 %367 to i1 | |
br i1 %368, label %if.done-27, label %if.then-26 | |
if.then-26: | |
; AssignStmt | |
; SelectorExpr | |
%369 = load %state-38.State*, %state-38.State** %0, align 8 | |
%370 = getelementptr inbounds %state-38.State, %state-38.State* %369, i64 0 | |
%371 = getelementptr inbounds %state-38.State, %state-38.State* %370, i64 0, i32 40 | |
%372 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %371, align 8 | |
%373 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %44, i64 0 | |
%374 = call {%libgit2_types-55.Oid, i32} @libgit2-29.stash_save(%libgit2_types-55.Repository* %372, %libgit2_types-55.Signature* %373, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$117, i64 0, i32 0), i64 12}, i32 0, %Context* noalias nonnull %__.context_ptr) | |
%375 = extractvalue {%libgit2_types-55.Oid, i32} %374, 0 | |
%376 = extractvalue {%libgit2_types-55.Oid, i32} %374, 1 | |
store i32 %376, i32* %45 | |
%377 = load i32, i32* %45, align 4 | |
%378 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$118, i64 0, i32 0), i64 50}, i64 673, i64 25, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$119, i64 0, i32 0), i64 11}) | |
%379 = bitcast %Source_Code_Location* %47 to %..rawptr | |
%380 = call %..rawptr @__mem_zero(%..rawptr %379, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %47 | |
store %Source_Code_Location %378, %Source_Code_Location* %47 | |
%381 = call i8 @debug-30.log_if_err(i32 %377, %Source_Code_Location* %47, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-27 | |
if.done-27: | |
br label %if.done-28 | |
if.done-28: | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
; IfStmt | |
; SelectorExpr | |
%382 = bitcast %dear_imgui-50.Vec2* %48 to %..rawptr | |
%383 = call %..rawptr @__mem_zero(%..rawptr %382, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %48 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %48 | |
%384 = bitcast %dear_imgui-50.Vec2* %48 to i64* | |
%385 = load i64, i64* %384, align 8 | |
%386 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$11a, i64 0, i32 0), i64 3}, i64 %385, %Context* noalias nonnull %__.context_ptr) | |
%387 = trunc i8 %386 to i1 | |
br i1 %387, label %if.then-29, label %if.done-30 | |
if.then-29: | |
; opts | |
; SelectorExpr | |
%388 = call {%libgit2_types-55.Stash_Apply_Options, i32} @libgit2-29.stash_apply_init_options(i32 1, %Context* noalias nonnull %__.context_ptr) | |
%389 = extractvalue {%libgit2_types-55.Stash_Apply_Options, i32} %388, 0 | |
%390 = extractvalue {%libgit2_types-55.Stash_Apply_Options, i32} %388, 1 | |
store %libgit2_types-55.Stash_Apply_Options %389, %libgit2_types-55.Stash_Apply_Options* %49 | |
; SelectorExpr | |
%391 = load %state-38.State*, %state-38.State** %0, align 8 | |
%392 = getelementptr inbounds %state-38.State, %state-38.State* %391, i64 0 | |
%393 = getelementptr inbounds %state-38.State, %state-38.State* %392, i64 0, i32 40 | |
%394 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %393, align 8 | |
%395 = getelementptr inbounds %libgit2_types-55.Stash_Apply_Options, %libgit2_types-55.Stash_Apply_Options* %49, i64 0 | |
%396 = call i32 @libgit2-29.stash_pop(%libgit2_types-55.Repository* %394, i64 0, %libgit2_types-55.Stash_Apply_Options* %395, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-30 | |
if.done-30: | |
br label %if.done-31 | |
if.done-31: | |
br label %if.done-32 | |
if.done-32: | |
; defer | |
; SelectorExpr | |
call ccc void @igEnd() | |
br label %if.done-33 | |
if.done-33: | |
; IfStmt | |
%397 = load i8, i8* %1, align 1 | |
%398 = trunc i8 %397 to i1 | |
br i1 %398, label %if.then-34, label %if.done-35 | |
if.then-34: | |
; SelectorExpr | |
call void @dear_imgui-50.open_popup(%..string {i8* getelementptr inbounds ([26 x i8], [26 x i8]* @__str$11b, i64 0, i32 0), i64 25}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-35 | |
if.done-35: | |
; IfStmt | |
; SelectorExpr | |
%399 = call i8 @dear_imgui-50.begin_popup(%..string {i8* getelementptr inbounds ([26 x i8], [26 x i8]* @__str$11c, i64 0, i32 0), i64 25}, %Context* noalias nonnull %__.context_ptr) | |
%400 = trunc i8 %399 to i1 | |
br i1 %400, label %if.then-36, label %if.done-39 | |
if.then-36: | |
; DeferStmt | |
; SelectorExpr | |
%401 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0 | |
call void @sync_windows-43.mutex_lock(%sync_windows-43.Mutex* %401, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%402 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 3 | |
%403 = load i8, i8* %402, align 1 | |
%404 = trunc i8 %403 to i1 | |
br i1 %404, label %if.then-37, label %if.done-38 | |
if.then-37: | |
; AssignStmt | |
store %main-0.TransferPayload {i64 zeroinitializer, i64 zeroinitializer, i64 zeroinitializer, i8 0}, %main-0.TransferPayload* @main-0.tpayload | |
; SelectorExpr | |
call ccc void @igCloseCurrentPopup() | |
br label %if.done-38 | |
if.done-38: | |
; size | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %50 | |
; SelectorExpr | |
; SelectorExpr | |
%405 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 0 | |
%406 = load i64, i64* %405, align 8 | |
%407 = uitofp i64 %406 to float | |
; SelectorExpr | |
%408 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 1 | |
%409 = load i64, i64* %408, align 8 | |
%410 = uitofp i64 %409 to float | |
%411 = fdiv float %407, %410 | |
%412 = getelementptr inbounds %dear_imgui-50.Vec2, %dear_imgui-50.Vec2* %50, i64 0 | |
call void @dear_imgui-50.progress_bar(float %411, %dear_imgui-50.Vec2* %412, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$11d, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SelectorExpr | |
%413 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* @main-0.tpayload, i64 0, i32 2 | |
%414 = load i64, i64* %413, align 8 | |
%415 = bitcast %..any* %51 to %..rawptr | |
%416 = call %..rawptr @__mem_zero(%..rawptr %415, i64 16) | |
store %..any zeroinitializer, %..any* %51 | |
%417 = bitcast i64* %413 to %..rawptr | |
%418 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%419 = getelementptr inbounds %..any, %..any* %51, i64 0, i32 0 | |
store %..rawptr %417, %..rawptr* %419 | |
%420 = getelementptr inbounds %..any, %..any* %51, i64 0, i32 1 | |
store %Type_Info* %418, %Type_Info** %420 | |
%421 = load %..any, %..any* %51, align 8 | |
; variadic call argument generation | |
%422 = bitcast {%..any*, i64}* %52 to %..rawptr | |
%423 = call %..rawptr @__mem_zero(%..rawptr %422, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %52 | |
%424 = bitcast [1 x %..any]* %53 to %..rawptr | |
%425 = call %..rawptr @__mem_zero(%..rawptr %424, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %53 | |
%426 = getelementptr inbounds [1 x %..any], [1 x %..any]* %53, i64 0, i32 0 | |
store %..any %421, %..any* %426 | |
%427 = getelementptr inbounds [1 x %..any], [1 x %..any]* %53, i64 0, i32 0 | |
%428 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %52, i64 0, i32 0 | |
store %..any* %427, %..any** %428 | |
%429 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %52, i64 0, i32 1 | |
store i64 1, i64* %429 | |
%430 = load {%..any*, i64}, {%..any*, i64}* %52, align 8 | |
%431 = bitcast {%..any*, i64}* %54 to %..rawptr | |
%432 = call %..rawptr @__mem_zero(%..rawptr %431, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %54 | |
store {%..any*, i64} %430, {%..any*, i64}* %54 | |
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$11e, i64 0, i32 0), i64 14}, {%..any*, i64}* %54, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%433 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0 | |
call void @sync_windows-43.mutex_unlock(%sync_windows-43.Mutex* %433, %Context* noalias nonnull %__.context_ptr) | |
; defer | |
; SelectorExpr | |
call ccc void @igEndPopup() | |
br label %if.done-39 | |
if.done-39: | |
; IfStmt | |
%434 = load %state-38.State*, %state-38.State** %0, align 8 | |
%435 = getelementptr inbounds %state-38.State, %state-38.State* %434, i64 0 | |
%436 = getelementptr inbounds %state-38.State, %state-38.State* %435, i64 0, i32 27 | |
%437 = load i8, i8* %436, align 1 | |
%438 = trunc i8 %437 to i1 | |
br i1 %438, label %if.then-40, label %if.done-41 | |
if.then-40: | |
; SelectorExpr | |
%439 = load %state-38.State*, %state-38.State** %0, align 8 | |
%440 = getelementptr inbounds %state-38.State, %state-38.State* %439, i64 0 | |
%441 = getelementptr inbounds %state-38.State, %state-38.State* %440, i64 0, i32 40 | |
%442 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %441, align 8 | |
call cc 64 void @git_repository_free(%libgit2_types-55.Repository* %442) | |
; AssignStmt | |
%443 = load %state-38.State*, %state-38.State** %0, align 8 | |
%444 = getelementptr inbounds %state-38.State, %state-38.State* %443, i64 0 | |
%445 = getelementptr inbounds %state-38.State, %state-38.State* %444, i64 0, i32 40 | |
store %libgit2_types-55.Repository* zeroinitializer, %libgit2_types-55.Repository** %445 | |
; AssignStmt | |
%446 = load %state-38.State*, %state-38.State** %0, align 8 | |
%447 = getelementptr inbounds %state-38.State, %state-38.State* %446, i64 0 | |
%448 = getelementptr inbounds %state-38.State, %state-38.State* %447, i64 0, i32 27 | |
store i8 0, i8* %448 | |
br label %if.done-41 | |
if.done-41: | |
ret void | |
} | |
define void @main-0.commit_window(%state-38.State* %state, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %state-38.State*, align 16 | |
%1 = alloca {%..any*, i64}, align 16 | |
%2 = alloca {%..any*, i64}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
%4 = alloca {i8*, i64}, align 16 | |
%5 = alloca {i8*, i64}, align 16 | |
%6 = alloca {i8*, i64}, align 16 | |
%7 = alloca %dear_imgui-50.Vec2, align 16 | |
%8 = alloca %dear_imgui-50.Vec2, align 16 | |
%9 = alloca %..string, align 16 | |
%10 = alloca %..any, align 16 | |
%11 = alloca %..string, align 16 | |
%12 = alloca %..any, align 16 | |
%13 = alloca %..string, align 16 | |
%14 = alloca {%..any*, i64}, align 16 | |
%15 = alloca [2 x %..any], align 16 | |
%16 = alloca {%..any*, i64}, align 16 | |
%17 = alloca %libgit2_types-55.Signature, align 16 | |
%18 = alloca %libgit2_types-55.Signature, align 16 | |
%19 = alloca %libgit2_types-55.Reference*, align 16 | |
%20 = alloca i32, align 16 | |
%21 = alloca %Source_Code_Location, align 16 | |
%22 = alloca %..string, align 16 | |
%23 = alloca %libgit2_types-55.Oid, align 16 | |
%24 = alloca i32, align 16 | |
%25 = alloca %commit-34.Commit, align 16 | |
%26 = alloca %libgit2_types-55.Oid, align 16 | |
%27 = alloca %libgit2_types-55.Index*, align 16 | |
%28 = alloca i32, align 16 | |
%29 = alloca %Source_Code_Location, align 16 | |
%30 = alloca %libgit2_types-55.Oid, align 16 | |
%31 = alloca i32, align 16 | |
%32 = alloca %Source_Code_Location, align 16 | |
%33 = alloca %libgit2_types-55.Object*, align 16 | |
%34 = alloca i32, align 16 | |
%35 = alloca %libgit2_types-55.Oid, align 16 | |
%36 = alloca %Source_Code_Location, align 16 | |
%37 = alloca %libgit2_types-55.Oid, align 16 | |
%38 = alloca i32, align 16 | |
%39 = alloca {%libgit2_types-55.Commit**, i64}, align 16 | |
%40 = alloca [1 x %libgit2_types-55.Commit*], align 16 | |
%41 = alloca {%libgit2_types-55.Commit**, i64}, align 16 | |
%42 = alloca %Source_Code_Location, align 16 | |
%43 = alloca %libgit2_types-55.Reference*, align 16 | |
%44 = alloca i32, align 16 | |
%45 = alloca %Source_Code_Location, align 16 | |
%46 = alloca %..string, align 16 | |
%47 = alloca i32, align 16 | |
%48 = alloca %..string, align 16 | |
%49 = alloca %libgit2_types-55.Oid, align 16 | |
%50 = alloca i32, align 16 | |
%51 = alloca %commit-34.Commit, align 16 | |
%52 = alloca %libgit2_types-55.Oid, align 16 | |
%53 = alloca %libgit2_types-55.Reference*, align 16 | |
%54 = alloca %branch-35.Branch, align 16 | |
%55 = alloca %Source_Code_Location, align 16 | |
store %state-38.State* %state, %state-38.State** %0 | |
; IfStmt | |
; SelectorExpr | |
%56 = load %state-38.State*, %state-38.State** %0, align 8 | |
%57 = getelementptr inbounds %state-38.State, %state-38.State* %56, i64 0 | |
%58 = getelementptr inbounds %state-38.State, %state-38.State* %57, i64 0, i32 29 | |
%59 = getelementptr inbounds %status-39.Status, %status-39.Status* %58, i64 0, i32 1 | |
%60 = load {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}, {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator}* %59, align 8 | |
%61 = extractvalue {%libgit2_types-55.Status_Entry**, i64, i64, %Allocator} %60, 1 | |
%62 = icmp sgt i64 %61, 0 | |
%63 = zext i1 %62 to i8 | |
%64 = trunc i8 %63 to i1 | |
br i1 %64, label %if.then-1, label %if.done-16 | |
if.then-1: | |
; SelectorExpr | |
; variadic call argument generation | |
%65 = bitcast {%..any*, i64}* %1 to %..rawptr | |
%66 = call %..rawptr @__mem_zero(%..rawptr %65, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %1 | |
%67 = load {%..any*, i64}, {%..any*, i64}* %1, align 8 | |
%68 = bitcast {%..any*, i64}* %2 to %..rawptr | |
%69 = call %..rawptr @__mem_zero(%..rawptr %68, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %2 | |
store {%..any*, i64} %67, {%..any*, i64}* %2 | |
call void @dear_imgui-50.text(%..string {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$11f, i64 0, i32 0), i64 15}, {%..any*, i64}* %2, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SliceExpr | |
%70 = load %state-38.State*, %state-38.State** %0, align 8 | |
%71 = getelementptr inbounds %state-38.State, %state-38.State* %70, i64 0 | |
%72 = getelementptr inbounds %state-38.State, %state-38.State* %71, i64 0, i32 46 | |
%73 = load [513 x i8], [513 x i8]* %72, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$120, i64 0, i32 0), i64 50}, i64 714, i64 58, i64 0, i64 513, i64 513) | |
%74 = getelementptr inbounds [513 x i8], [513 x i8]* %72, i64 0, i32 0 | |
%75 = getelementptr inbounds i8, i8* %74, i64 0 | |
%76 = sub i64 513, 0 | |
%77 = bitcast {i8*, i64}* %3 to %..rawptr | |
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
%79 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 0 | |
store i8* %75, i8** %79 | |
%80 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 1 | |
store i64 %76, i64* %80 | |
%81 = load {i8*, i64}, {i8*, i64}* %3, align 8 | |
%82 = bitcast {i8*, i64}* %4 to %..rawptr | |
%83 = call %..rawptr @__mem_zero(%..rawptr %82, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %4 | |
store {i8*, i64} %81, {i8*, i64}* %4 | |
%84 = call i8 @dear_imgui-50.input_text(%..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$121, i64 0, i32 0), i64 7}, {i8*, i64}* %4, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; SliceExpr | |
%85 = load %state-38.State*, %state-38.State** %0, align 8 | |
%86 = getelementptr inbounds %state-38.State, %state-38.State* %85, i64 0 | |
%87 = getelementptr inbounds %state-38.State, %state-38.State* %86, i64 0, i32 47 | |
%88 = load [4097 x i8], [4097 x i8]* %87, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$122, i64 0, i32 0), i64 50}, i64 715, i64 58, i64 0, i64 4097, i64 4097) | |
%89 = getelementptr inbounds [4097 x i8], [4097 x i8]* %87, i64 0, i32 0 | |
%90 = getelementptr inbounds i8, i8* %89, i64 0 | |
%91 = sub i64 4097, 0 | |
%92 = bitcast {i8*, i64}* %5 to %..rawptr | |
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %5 | |
%94 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 0 | |
store i8* %90, i8** %94 | |
%95 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 1 | |
store i64 %91, i64* %95 | |
%96 = load {i8*, i64}, {i8*, i64}* %5, align 8 | |
%97 = bitcast {i8*, i64}* %6 to %..rawptr | |
%98 = call %..rawptr @__mem_zero(%..rawptr %97, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %6 | |
store {i8*, i64} %96, {i8*, i64}* %6 | |
%99 = bitcast %dear_imgui-50.Vec2* %7 to %..rawptr | |
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %7 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x4059000000000000}, %dear_imgui-50.Vec2* %7 | |
%101 = bitcast %dear_imgui-50.Vec2* %7 to i64* | |
%102 = load i64, i64* %101, align 8 | |
%103 = call i8 @dear_imgui-50.input_text_multiline(%..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$123, i64 0, i32 0), i64 7}, {i8*, i64}* %6, i64 %102, i32 0, i32 (%dear_imgui-50.TextEditCallbackData*)* zeroinitializer, %..rawptr zeroinitializer, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%104 = bitcast %dear_imgui-50.Vec2* %8 to %..rawptr | |
%105 = call %..rawptr @__mem_zero(%..rawptr %104, i64 8) | |
store %dear_imgui-50.Vec2 zeroinitializer, %dear_imgui-50.Vec2* %8 | |
store %dear_imgui-50.Vec2 {float 0x0000000000000000, float 0x0000000000000000}, %dear_imgui-50.Vec2* %8 | |
%106 = bitcast %dear_imgui-50.Vec2* %8 to i64* | |
%107 = load i64, i64* %106, align 8 | |
%108 = call i8 @dear_imgui-50.button(%..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$124, i64 0, i32 0), i64 6}, i64 %107, %Context* noalias nonnull %__.context_ptr) | |
%109 = trunc i8 %108 to i1 | |
br i1 %109, label %if.then-2, label %if.done-15 | |
if.then-2: | |
; commit_msg | |
; SelectorExpr | |
; SelectorExpr | |
; IndexExpr | |
%110 = load %state-38.State*, %state-38.State** %0, align 8 | |
%111 = getelementptr inbounds %state-38.State, %state-38.State* %110, i64 0 | |
%112 = getelementptr inbounds %state-38.State, %state-38.State* %111, i64 0, i32 46 | |
%113 = getelementptr inbounds [513 x i8], [513 x i8]* %112, i64 0, i32 0 | |
%114 = getelementptr inbounds i8, i8* %113, i64 0 | |
%115 = call %..string @strings-12.to_odin_string(i8* %114, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
; IndexExpr | |
%116 = load %state-38.State*, %state-38.State** %0, align 8 | |
%117 = getelementptr inbounds %state-38.State, %state-38.State* %116, i64 0 | |
%118 = getelementptr inbounds %state-38.State, %state-38.State* %117, i64 0, i32 47 | |
%119 = getelementptr inbounds [4097 x i8], [4097 x i8]* %118, i64 0, i32 0 | |
%120 = getelementptr inbounds i8, i8* %119, i64 0 | |
%121 = call %..string @strings-12.to_odin_string(i8* %120, %Context* noalias nonnull %__.context_ptr) | |
%122 = bitcast %..any* %10 to %..rawptr | |
%123 = call %..rawptr @__mem_zero(%..rawptr %122, i64 16) | |
store %..any zeroinitializer, %..any* %10 | |
%124 = bitcast %..string* %11 to %..rawptr | |
%125 = call %..rawptr @__mem_zero(%..rawptr %124, i64 16) | |
store %..string zeroinitializer, %..string* %11 | |
store %..string %115, %..string* %11 | |
%126 = bitcast %..string* %11 to %..rawptr | |
%127 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%128 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 0 | |
store %..rawptr %126, %..rawptr* %128 | |
%129 = getelementptr inbounds %..any, %..any* %10, i64 0, i32 1 | |
store %Type_Info* %127, %Type_Info** %129 | |
%130 = load %..any, %..any* %10, align 8 | |
%131 = bitcast %..any* %12 to %..rawptr | |
%132 = call %..rawptr @__mem_zero(%..rawptr %131, i64 16) | |
store %..any zeroinitializer, %..any* %12 | |
%133 = bitcast %..string* %13 to %..rawptr | |
%134 = call %..rawptr @__mem_zero(%..rawptr %133, i64 16) | |
store %..string zeroinitializer, %..string* %13 | |
store %..string %121, %..string* %13 | |
%135 = bitcast %..string* %13 to %..rawptr | |
%136 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%137 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 0 | |
store %..rawptr %135, %..rawptr* %137 | |
%138 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 1 | |
store %Type_Info* %136, %Type_Info** %138 | |
%139 = load %..any, %..any* %12, align 8 | |
; variadic call argument generation | |
%140 = bitcast {%..any*, i64}* %14 to %..rawptr | |
%141 = call %..rawptr @__mem_zero(%..rawptr %140, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %14 | |
%142 = bitcast [2 x %..any]* %15 to %..rawptr | |
%143 = call %..rawptr @__mem_zero(%..rawptr %142, i64 32) | |
store [2 x %..any] zeroinitializer, [2 x %..any]* %15 | |
%144 = getelementptr inbounds [2 x %..any], [2 x %..any]* %15, i64 0, i32 0 | |
store %..any %130, %..any* %144 | |
%145 = getelementptr inbounds [2 x %..any], [2 x %..any]* %15, i64 0, i32 1 | |
store %..any %139, %..any* %145 | |
%146 = getelementptr inbounds [2 x %..any], [2 x %..any]* %15, i64 0, i32 0 | |
%147 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 0 | |
store %..any* %146, %..any** %147 | |
%148 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 1 | |
store i64 2, i64* %148 | |
%149 = load {%..any*, i64}, {%..any*, i64}* %14, align 8 | |
%150 = bitcast {%..any*, i64}* %16 to %..rawptr | |
%151 = call %..rawptr @__mem_zero(%..rawptr %150, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16 | |
store {%..any*, i64} %149, {%..any*, i64}* %16 | |
%152 = call %..string @fmt-11.aprintf(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$125, i64 0, i32 0), i64 8}, {%..any*, i64}* %16, %Context* noalias nonnull %__.context_ptr) | |
store %..string %152, %..string* %9 | |
; DeferStmt | |
; committer | |
; SelectorExpr | |
; SelectorExpr | |
; SelectorExpr | |
%153 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 2 | |
%154 = load %..string, %..string* %153, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%155 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0, i32 3 | |
%156 = load %..string, %..string* %155, align 8 | |
%157 = call {%libgit2_types-55.Signature, i32} @libgit2-29.signature_now(%..string %154, %..string %156, %Context* noalias nonnull %__.context_ptr) | |
%158 = extractvalue {%libgit2_types-55.Signature, i32} %157, 0 | |
%159 = extractvalue {%libgit2_types-55.Signature, i32} %157, 1 | |
store %libgit2_types-55.Signature %158, %libgit2_types-55.Signature* %17 | |
; author | |
%160 = load %libgit2_types-55.Signature, %libgit2_types-55.Signature* %17, align 8 | |
store %libgit2_types-55.Signature %160, %libgit2_types-55.Signature* %18 | |
; IfStmt | |
; ref | |
; err | |
; SelectorExpr | |
%161 = load %state-38.State*, %state-38.State** %0, align 8 | |
%162 = getelementptr inbounds %state-38.State, %state-38.State* %161, i64 0 | |
%163 = getelementptr inbounds %state-38.State, %state-38.State* %162, i64 0, i32 40 | |
%164 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %163, align 8 | |
%165 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.repository_head(%libgit2_types-55.Repository* %164, %Context* noalias nonnull %__.context_ptr) | |
%166 = extractvalue {%libgit2_types-55.Reference*, i32} %165, 0 | |
%167 = extractvalue {%libgit2_types-55.Reference*, i32} %165, 1 | |
store %libgit2_types-55.Reference* %166, %libgit2_types-55.Reference** %19 | |
store i32 %167, i32* %20 | |
%168 = load i32, i32* %20, align 4 | |
%169 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$126, i64 0, i32 0), i64 50}, i64 728, i64 56, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$127, i64 0, i32 0), i64 13}) | |
%170 = bitcast %Source_Code_Location* %21 to %..rawptr | |
%171 = call %..rawptr @__mem_zero(%..rawptr %170, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %21 | |
store %Source_Code_Location %169, %Source_Code_Location* %21 | |
%172 = call i8 @debug-30.log_if_err(i32 %168, %Source_Code_Location* %21, %Context* noalias nonnull %__.context_ptr) | |
%173 = trunc i8 %172 to i1 | |
br i1 %173, label %if.done-14, label %if.then-3 | |
if.then-3: | |
; refname | |
; SelectorExpr | |
%174 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %19, align 8 | |
%175 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %174, %Context* noalias nonnull %__.context_ptr) | |
store %..string %175, %..string* %22 | |
; oid | |
; ok | |
; SelectorExpr | |
%176 = load %state-38.State*, %state-38.State** %0, align 8 | |
%177 = getelementptr inbounds %state-38.State, %state-38.State* %176, i64 0 | |
%178 = getelementptr inbounds %state-38.State, %state-38.State* %177, i64 0, i32 40 | |
%179 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %178, align 8 | |
%180 = load %..string, %..string* %22, align 8 | |
%181 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %179, %..string %180, %Context* noalias nonnull %__.context_ptr) | |
%182 = extractvalue {%libgit2_types-55.Oid, i32} %181, 0 | |
%183 = extractvalue {%libgit2_types-55.Oid, i32} %181, 1 | |
store %libgit2_types-55.Oid %182, %libgit2_types-55.Oid* %23 | |
store i32 %183, i32* %24 | |
; commit | |
; SelectorExpr | |
%184 = load %state-38.State*, %state-38.State** %0, align 8 | |
%185 = getelementptr inbounds %state-38.State, %state-38.State* %184, i64 0 | |
%186 = getelementptr inbounds %state-38.State, %state-38.State* %185, i64 0, i32 40 | |
%187 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %186, align 8 | |
%188 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %23, align 1 | |
%189 = bitcast %libgit2_types-55.Oid* %26 to %..rawptr | |
%190 = call %..rawptr @__mem_zero(%..rawptr %189, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %26 | |
store %libgit2_types-55.Oid %188, %libgit2_types-55.Oid* %26 | |
%191 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %187, %libgit2_types-55.Oid* %26, %Context* noalias nonnull %__.context_ptr) | |
store %commit-34.Commit %191, %commit-34.Commit* %25 | |
; IfStmt | |
; index | |
; err | |
; SelectorExpr | |
%192 = load %state-38.State*, %state-38.State** %0, align 8 | |
%193 = getelementptr inbounds %state-38.State, %state-38.State* %192, i64 0 | |
%194 = getelementptr inbounds %state-38.State, %state-38.State* %193, i64 0, i32 40 | |
%195 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %194, align 8 | |
%196 = call {%libgit2_types-55.Index*, i32} @libgit2-29.repository_index(%libgit2_types-55.Repository* %195, %Context* noalias nonnull %__.context_ptr) | |
%197 = extractvalue {%libgit2_types-55.Index*, i32} %196, 0 | |
%198 = extractvalue {%libgit2_types-55.Index*, i32} %196, 1 | |
store %libgit2_types-55.Index* %197, %libgit2_types-55.Index** %27 | |
store i32 %198, i32* %28 | |
%199 = load i32, i32* %28, align 4 | |
%200 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$128, i64 0, i32 0), i64 50}, i64 733, i64 63, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$129, i64 0, i32 0), i64 13}) | |
%201 = bitcast %Source_Code_Location* %29 to %..rawptr | |
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %29 | |
store %Source_Code_Location %200, %Source_Code_Location* %29 | |
%203 = call i8 @debug-30.log_if_err(i32 %199, %Source_Code_Location* %29, %Context* noalias nonnull %__.context_ptr) | |
%204 = trunc i8 %203 to i1 | |
br i1 %204, label %if.done-13, label %if.then-4 | |
if.then-4: | |
; IfStmt | |
; tree_id | |
; err | |
; SelectorExpr | |
%205 = load %libgit2_types-55.Index*, %libgit2_types-55.Index** %27, align 8 | |
%206 = call {%libgit2_types-55.Oid, i32} @libgit2-29.index_write_tree(%libgit2_types-55.Index* %205, %Context* noalias nonnull %__.context_ptr) | |
%207 = extractvalue {%libgit2_types-55.Oid, i32} %206, 0 | |
%208 = extractvalue {%libgit2_types-55.Oid, i32} %206, 1 | |
store %libgit2_types-55.Oid %207, %libgit2_types-55.Oid* %30 | |
store i32 %208, i32* %31 | |
%209 = load i32, i32* %31, align 4 | |
%210 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$12a, i64 0, i32 0), i64 50}, i64 735, i64 70, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$12b, i64 0, i32 0), i64 13}) | |
%211 = bitcast %Source_Code_Location* %32 to %..rawptr | |
%212 = call %..rawptr @__mem_zero(%..rawptr %211, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %32 | |
store %Source_Code_Location %210, %Source_Code_Location* %32 | |
%213 = call i8 @debug-30.log_if_err(i32 %209, %Source_Code_Location* %32, %Context* noalias nonnull %__.context_ptr) | |
%214 = trunc i8 %213 to i1 | |
br i1 %214, label %if.done-12, label %if.then-5 | |
if.then-5: | |
; IfStmt | |
; tree | |
; err | |
; SelectorExpr | |
%215 = load %state-38.State*, %state-38.State** %0, align 8 | |
%216 = getelementptr inbounds %state-38.State, %state-38.State* %215, i64 0 | |
%217 = getelementptr inbounds %state-38.State, %state-38.State* %216, i64 0, i32 40 | |
%218 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %217, align 8 | |
%219 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %30, align 1 | |
%220 = bitcast %libgit2_types-55.Oid* %35 to %..rawptr | |
%221 = call %..rawptr @__mem_zero(%..rawptr %220, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %35 | |
store %libgit2_types-55.Oid %219, %libgit2_types-55.Oid* %35 | |
%222 = call {%libgit2_types-55.Object*, i32} @libgit2-29.object_lookup(%libgit2_types-55.Repository* %218, %libgit2_types-55.Oid* %35, i32 2, %Context* noalias nonnull %__.context_ptr) | |
%223 = extractvalue {%libgit2_types-55.Object*, i32} %222, 0 | |
%224 = extractvalue {%libgit2_types-55.Object*, i32} %222, 1 | |
store %libgit2_types-55.Object* %223, %libgit2_types-55.Object** %33 | |
store i32 %224, i32* %34 | |
%225 = load i32, i32* %34, align 4 | |
%226 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$12c, i64 0, i32 0), i64 50}, i64 737, i64 95, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$12d, i64 0, i32 0), i64 13}) | |
%227 = bitcast %Source_Code_Location* %36 to %..rawptr | |
%228 = call %..rawptr @__mem_zero(%..rawptr %227, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %36 | |
store %Source_Code_Location %226, %Source_Code_Location* %36 | |
%229 = call i8 @debug-30.log_if_err(i32 %225, %Source_Code_Location* %36, %Context* noalias nonnull %__.context_ptr) | |
%230 = trunc i8 %229 to i1 | |
br i1 %230, label %if.done-11, label %if.then-6 | |
if.then-6: | |
; IfStmt | |
; id | |
; err | |
; SelectorExpr | |
%231 = load %state-38.State*, %state-38.State** %0, align 8 | |
%232 = getelementptr inbounds %state-38.State, %state-38.State* %231, i64 0 | |
%233 = getelementptr inbounds %state-38.State, %state-38.State* %232, i64 0, i32 40 | |
%234 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %233, align 8 | |
%235 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %18, i64 0 | |
%236 = getelementptr inbounds %libgit2_types-55.Signature, %libgit2_types-55.Signature* %17, i64 0 | |
%237 = load %..string, %..string* %9, align 8 | |
%238 = load %libgit2_types-55.Object*, %libgit2_types-55.Object** %33, align 8 | |
%239 = bitcast %libgit2_types-55.Object* %238 to %libgit2_types-55.Tree* | |
; SelectorExpr | |
%240 = getelementptr inbounds %commit-34.Commit, %commit-34.Commit* %25, i64 0, i32 0 | |
%241 = load %libgit2_types-55.Commit*, %libgit2_types-55.Commit** %240, align 8 | |
; variadic call argument generation | |
%242 = bitcast {%libgit2_types-55.Commit**, i64}* %39 to %..rawptr | |
%243 = call %..rawptr @__mem_zero(%..rawptr %242, i64 16) | |
store {%libgit2_types-55.Commit**, i64} zeroinitializer, {%libgit2_types-55.Commit**, i64}* %39 | |
%244 = bitcast [1 x %libgit2_types-55.Commit*]* %40 to %..rawptr | |
%245 = call %..rawptr @__mem_zero(%..rawptr %244, i64 8) | |
store [1 x %libgit2_types-55.Commit*] zeroinitializer, [1 x %libgit2_types-55.Commit*]* %40 | |
%246 = getelementptr inbounds [1 x %libgit2_types-55.Commit*], [1 x %libgit2_types-55.Commit*]* %40, i64 0, i32 0 | |
store %libgit2_types-55.Commit* %241, %libgit2_types-55.Commit** %246 | |
%247 = getelementptr inbounds [1 x %libgit2_types-55.Commit*], [1 x %libgit2_types-55.Commit*]* %40, i64 0, i32 0 | |
%248 = getelementptr inbounds {%libgit2_types-55.Commit**, i64}, {%libgit2_types-55.Commit**, i64}* %39, i64 0, i32 0 | |
store %libgit2_types-55.Commit** %247, %libgit2_types-55.Commit*** %248 | |
%249 = getelementptr inbounds {%libgit2_types-55.Commit**, i64}, {%libgit2_types-55.Commit**, i64}* %39, i64 0, i32 1 | |
store i64 1, i64* %249 | |
%250 = load {%libgit2_types-55.Commit**, i64}, {%libgit2_types-55.Commit**, i64}* %39, align 8 | |
%251 = bitcast {%libgit2_types-55.Commit**, i64}* %41 to %..rawptr | |
%252 = call %..rawptr @__mem_zero(%..rawptr %251, i64 16) | |
store {%libgit2_types-55.Commit**, i64} zeroinitializer, {%libgit2_types-55.Commit**, i64}* %41 | |
store {%libgit2_types-55.Commit**, i64} %250, {%libgit2_types-55.Commit**, i64}* %41 | |
%253 = call {%libgit2_types-55.Oid, i32} @libgit2-29.commit_create(%libgit2_types-55.Repository* %234, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$12e, i64 0, i32 0), i64 4}, %libgit2_types-55.Signature* %235, %libgit2_types-55.Signature* %236, %..string %237, %libgit2_types-55.Tree* %239, {%libgit2_types-55.Commit**, i64}* %41, %Context* noalias nonnull %__.context_ptr) | |
%254 = extractvalue {%libgit2_types-55.Oid, i32} %253, 0 | |
%255 = extractvalue {%libgit2_types-55.Oid, i32} %253, 1 | |
store %libgit2_types-55.Oid %254, %libgit2_types-55.Oid* %37 | |
store i32 %255, i32* %38 | |
%256 = load i32, i32* %38, align 4 | |
%257 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$12f, i64 0, i32 0), i64 50}, i64 740, i64 104, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$130, i64 0, i32 0), i64 13}) | |
%258 = bitcast %Source_Code_Location* %42 to %..rawptr | |
%259 = call %..rawptr @__mem_zero(%..rawptr %258, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %42 | |
store %Source_Code_Location %257, %Source_Code_Location* %42 | |
%260 = call i8 @debug-30.log_if_err(i32 %256, %Source_Code_Location* %42, %Context* noalias nonnull %__.context_ptr) | |
%261 = trunc i8 %260 to i1 | |
br i1 %261, label %if.done-10, label %if.then-7 | |
if.then-7: | |
; IfStmt | |
; ref | |
; err | |
; SelectorExpr | |
%262 = load %state-38.State*, %state-38.State** %0, align 8 | |
%263 = getelementptr inbounds %state-38.State, %state-38.State* %262, i64 0 | |
%264 = getelementptr inbounds %state-38.State, %state-38.State* %263, i64 0, i32 40 | |
%265 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %264, align 8 | |
%266 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.repository_head(%libgit2_types-55.Repository* %265, %Context* noalias nonnull %__.context_ptr) | |
%267 = extractvalue {%libgit2_types-55.Reference*, i32} %266, 0 | |
%268 = extractvalue {%libgit2_types-55.Reference*, i32} %266, 1 | |
store %libgit2_types-55.Reference* %267, %libgit2_types-55.Reference** %43 | |
store i32 %268, i32* %44 | |
%269 = load i32, i32* %44, align 4 | |
%270 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$131, i64 0, i32 0), i64 50}, i64 742, i64 76, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$132, i64 0, i32 0), i64 13}) | |
%271 = bitcast %Source_Code_Location* %45 to %..rawptr | |
%272 = call %..rawptr @__mem_zero(%..rawptr %271, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %45 | |
store %Source_Code_Location %270, %Source_Code_Location* %45 | |
%273 = call i8 @debug-30.log_if_err(i32 %269, %Source_Code_Location* %45, %Context* noalias nonnull %__.context_ptr) | |
%274 = trunc i8 %273 to i1 | |
br i1 %274, label %if.done-9, label %if.then-8 | |
if.then-8: | |
; bname | |
; err | |
; SelectorExpr | |
%275 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8 | |
%276 = call {%..string, i32} @libgit2-29.branch_name(%libgit2_types-55.Reference* %275, %Context* noalias nonnull %__.context_ptr) | |
%277 = extractvalue {%..string, i32} %276, 0 | |
%278 = extractvalue {%..string, i32} %276, 1 | |
store %..string %277, %..string* %46 | |
store i32 %278, i32* %47 | |
; refname | |
; SelectorExpr | |
%279 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8 | |
%280 = call %..string @libgit2-29.reference_name(%libgit2_types-55.Reference* %279, %Context* noalias nonnull %__.context_ptr) | |
store %..string %280, %..string* %48 | |
; oid | |
; ok | |
; SelectorExpr | |
%281 = load %state-38.State*, %state-38.State** %0, align 8 | |
%282 = getelementptr inbounds %state-38.State, %state-38.State* %281, i64 0 | |
%283 = getelementptr inbounds %state-38.State, %state-38.State* %282, i64 0, i32 40 | |
%284 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %283, align 8 | |
%285 = load %..string, %..string* %48, align 8 | |
%286 = call {%libgit2_types-55.Oid, i32} @libgit2-29.reference_name_to_id(%libgit2_types-55.Repository* %284, %..string %285, %Context* noalias nonnull %__.context_ptr) | |
%287 = extractvalue {%libgit2_types-55.Oid, i32} %286, 0 | |
%288 = extractvalue {%libgit2_types-55.Oid, i32} %286, 1 | |
store %libgit2_types-55.Oid %287, %libgit2_types-55.Oid* %49 | |
store i32 %288, i32* %50 | |
; commit | |
; SelectorExpr | |
%289 = load %state-38.State*, %state-38.State** %0, align 8 | |
%290 = getelementptr inbounds %state-38.State, %state-38.State* %289, i64 0 | |
%291 = getelementptr inbounds %state-38.State, %state-38.State* %290, i64 0, i32 40 | |
%292 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %291, align 8 | |
%293 = load %libgit2_types-55.Oid, %libgit2_types-55.Oid* %49, align 1 | |
%294 = bitcast %libgit2_types-55.Oid* %52 to %..rawptr | |
%295 = call %..rawptr @__mem_zero(%..rawptr %294, i64 20) | |
store %libgit2_types-55.Oid zeroinitializer, %libgit2_types-55.Oid* %52 | |
store %libgit2_types-55.Oid %293, %libgit2_types-55.Oid* %52 | |
%296 = call %commit-34.Commit @commit-34.from_oid(%libgit2_types-55.Repository* %292, %libgit2_types-55.Oid* %52, %Context* noalias nonnull %__.context_ptr) | |
store %commit-34.Commit %296, %commit-34.Commit* %51 | |
; upstream | |
; SelectorExpr | |
%297 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8 | |
%298 = call {%libgit2_types-55.Reference*, i32} @libgit2-29.branch_upstream(%libgit2_types-55.Reference* %297, %Context* noalias nonnull %__.context_ptr) | |
%299 = extractvalue {%libgit2_types-55.Reference*, i32} %298, 0 | |
%300 = extractvalue {%libgit2_types-55.Reference*, i32} %298, 1 | |
store %libgit2_types-55.Reference* %299, %libgit2_types-55.Reference** %53 | |
; AssignStmt | |
%301 = load %state-38.State*, %state-38.State** %0, align 8 | |
%302 = getelementptr inbounds %state-38.State, %state-38.State* %301, i64 0 | |
%303 = getelementptr inbounds %state-38.State, %state-38.State* %302, i64 0, i32 43 | |
; CompoundLit | |
%304 = bitcast %branch-35.Branch* %54 to %..rawptr | |
%305 = call %..rawptr @__mem_zero(%..rawptr %304, i64 208) | |
store %branch-35.Branch zeroinitializer, %branch-35.Branch* %54 | |
store %branch-35.Branch {%libgit2_types-55.Reference* zeroinitializer, %libgit2_types-55.Reference* zeroinitializer, %..string zeroinitializer, i32 1, %commit-34.Commit zeroinitializer, i64 0, i64 0}, %branch-35.Branch* %54 | |
%306 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %43, align 8 | |
%307 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 0 | |
store %libgit2_types-55.Reference* %306, %libgit2_types-55.Reference** %307 | |
%308 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %53, align 8 | |
%309 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 1 | |
store %libgit2_types-55.Reference* %308, %libgit2_types-55.Reference** %309 | |
%310 = load %..string, %..string* %46, align 8 | |
%311 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 2 | |
store %..string %310, %..string* %311 | |
%312 = load %commit-34.Commit, %commit-34.Commit* %51, align 8 | |
%313 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %54, i64 0, i32 4 | |
store %commit-34.Commit %312, %commit-34.Commit* %313 | |
%314 = load %branch-35.Branch, %branch-35.Branch* %54, align 8 | |
store %branch-35.Branch %314, %branch-35.Branch* %303 | |
br label %if.done-9 | |
if.done-9: | |
br label %if.done-10 | |
if.done-10: | |
br label %if.done-11 | |
if.done-11: | |
br label %if.done-12 | |
if.done-12: | |
br label %if.done-13 | |
if.done-13: | |
br label %if.done-14 | |
if.done-14: | |
; AssignStmt | |
%315 = load %state-38.State*, %state-38.State** %0, align 8 | |
%316 = getelementptr inbounds %state-38.State, %state-38.State* %315, i64 0 | |
%317 = getelementptr inbounds %state-38.State, %state-38.State* %316, i64 0, i32 46 | |
store [513 x i8] zeroinitializer, [513 x i8]* %317 | |
; AssignStmt | |
%318 = load %state-38.State*, %state-38.State** %0, align 8 | |
%319 = getelementptr inbounds %state-38.State, %state-38.State* %318, i64 0 | |
%320 = getelementptr inbounds %state-38.State, %state-38.State* %319, i64 0, i32 47 | |
store [4097 x i8] zeroinitializer, [4097 x i8]* %320 | |
; defer | |
; SelectorExpr | |
%321 = load %..string, %..string* %9, align 8 | |
%322 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$133, i64 0, i32 0), i64 50}, i64 720, i64 27, %..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$134, i64 0, i32 0), i64 13}) | |
%323 = bitcast %Source_Code_Location* %55 to %..rawptr | |
%324 = call %..rawptr @__mem_zero(%..rawptr %323, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %55 | |
store %Source_Code_Location %322, %Source_Code_Location* %55 | |
call void @free_string(%..string %321, %Source_Code_Location* %55, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-15 | |
if.done-15: | |
; SelectorExpr | |
call ccc void @igSameLine(float 0x0000000000000000, float 0xbff0000000000000) | |
br label %if.done-16 | |
if.done-16: | |
ret void | |
} | |
define cc 64 i32 @main-0.push_transfer_progress(i32 %current, i32 %total, i64 %bytes, %..rawptr %payload) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
%1 = alloca i32, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca %..rawptr, align 16 | |
%4 = alloca %Context, align 16 | |
%5 = bitcast %Context* %4 to %..rawptr | |
%6 = call %..rawptr @__mem_zero(%..rawptr %5, i64 72) | |
store %Context zeroinitializer, %Context* %4 | |
%7 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %7, %Context* %4 | |
%8 = getelementptr inbounds %Context, %Context* %4, i64 0, i32 0 | |
%9 = call %Allocator @default_allocator(%Context* noalias nonnull %4) | |
store %Allocator %9, %Allocator* %8 | |
%10 = alloca %main-0.TransferPayload*, align 16 | |
%11 = alloca %..any, align 16 | |
%12 = alloca %..any, align 16 | |
%13 = alloca %..any, align 16 | |
%14 = alloca {%..any*, i64}, align 16 | |
%15 = alloca [3 x %..any], align 16 | |
%16 = alloca {%..any*, i64}, align 16 | |
%17 = alloca %Source_Code_Location, align 16 | |
store i32 %current, i32* %0 | |
store i32 %total, i32* %1 | |
store i64 %bytes, i64* %2 | |
store %..rawptr %payload, %..rawptr* %3 | |
; SelectorExpr | |
%18 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0 | |
call void @sync_windows-43.mutex_lock(%sync_windows-43.Mutex* %18, %Context* noalias nonnull %4) | |
; tp | |
%19 = load %..rawptr, %..rawptr* %3, align 8 | |
%20 = bitcast %..rawptr %19 to %main-0.TransferPayload* | |
store %main-0.TransferPayload* %20, %main-0.TransferPayload** %10 | |
; SelectorExpr | |
%21 = load i32, i32* %0, align 4 | |
%22 = load i32, i32* %1, align 4 | |
%23 = load i64, i64* %2, align 8 | |
%24 = bitcast %..any* %11 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store %..any zeroinitializer, %..any* %11 | |
%26 = bitcast i32* %0 to %..rawptr | |
%27 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3 | |
%28 = getelementptr inbounds %..any, %..any* %11, i64 0, i32 0 | |
store %..rawptr %26, %..rawptr* %28 | |
%29 = getelementptr inbounds %..any, %..any* %11, i64 0, i32 1 | |
store %Type_Info* %27, %Type_Info** %29 | |
%30 = load %..any, %..any* %11, align 8 | |
%31 = bitcast %..any* %12 to %..rawptr | |
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 16) | |
store %..any zeroinitializer, %..any* %12 | |
%33 = bitcast i32* %1 to %..rawptr | |
%34 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3 | |
%35 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 0 | |
store %..rawptr %33, %..rawptr* %35 | |
%36 = getelementptr inbounds %..any, %..any* %12, i64 0, i32 1 | |
store %Type_Info* %34, %Type_Info** %36 | |
%37 = load %..any, %..any* %12, align 8 | |
%38 = bitcast %..any* %13 to %..rawptr | |
%39 = call %..rawptr @__mem_zero(%..rawptr %38, i64 16) | |
store %..any zeroinitializer, %..any* %13 | |
%40 = bitcast i64* %2 to %..rawptr | |
%41 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%42 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 0 | |
store %..rawptr %40, %..rawptr* %42 | |
%43 = getelementptr inbounds %..any, %..any* %13, i64 0, i32 1 | |
store %Type_Info* %41, %Type_Info** %43 | |
%44 = load %..any, %..any* %13, align 8 | |
; variadic call argument generation | |
%45 = bitcast {%..any*, i64}* %14 to %..rawptr | |
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %14 | |
%47 = bitcast [3 x %..any]* %15 to %..rawptr | |
%48 = call %..rawptr @__mem_zero(%..rawptr %47, i64 48) | |
store [3 x %..any] zeroinitializer, [3 x %..any]* %15 | |
%49 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 0 | |
store %..any %30, %..any* %49 | |
%50 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 1 | |
store %..any %37, %..any* %50 | |
%51 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 2 | |
store %..any %44, %..any* %51 | |
%52 = getelementptr inbounds [3 x %..any], [3 x %..any]* %15, i64 0, i32 0 | |
%53 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 0 | |
store %..any* %52, %..any** %53 | |
%54 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %14, i64 0, i32 1 | |
store i64 3, i64* %54 | |
%55 = load {%..any*, i64}, {%..any*, i64}* %14, align 8 | |
%56 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$135, i64 0, i32 0), i64 50}, i64 786, i64 17, %..string {i8* getelementptr inbounds ([23 x i8], [23 x i8]* @__str$136, i64 0, i32 0), i64 22}) | |
%57 = bitcast {%..any*, i64}* %16 to %..rawptr | |
%58 = call %..rawptr @__mem_zero(%..rawptr %57, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16 | |
store {%..any*, i64} %55, {%..any*, i64}* %16 | |
%59 = bitcast %Source_Code_Location* %17 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %17 | |
store %Source_Code_Location %56, %Source_Code_Location* %17 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([30 x i8], [30 x i8]* @__str$137, i64 0, i32 0), i64 29}, {%..any*, i64}* %16, %Source_Code_Location* %17, %Context* noalias nonnull %4) | |
; AssignStmt | |
; SelectorExpr | |
%61 = load %main-0.TransferPayload*, %main-0.TransferPayload** %10, align 8 | |
%62 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %61, i64 0 | |
%63 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %62, i64 0, i32 0 | |
%64 = load i32, i32* %0, align 4 | |
%65 = zext i32 %64 to i64 | |
store i64 %65, i64* %63 | |
; AssignStmt | |
; SelectorExpr | |
%66 = load %main-0.TransferPayload*, %main-0.TransferPayload** %10, align 8 | |
%67 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %66, i64 0 | |
%68 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %67, i64 0, i32 1 | |
%69 = load i32, i32* %1, align 4 | |
%70 = zext i32 %69 to i64 | |
store i64 %70, i64* %68 | |
; AssignStmt | |
; SelectorExpr | |
%71 = load %main-0.TransferPayload*, %main-0.TransferPayload** %10, align 8 | |
%72 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %71, i64 0 | |
%73 = getelementptr inbounds %main-0.TransferPayload, %main-0.TransferPayload* %72, i64 0, i32 2 | |
%74 = load i64, i64* %2, align 8 | |
store i64 %74, i64* %73 | |
; SelectorExpr | |
%75 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0 | |
call void @sync_windows-43.mutex_unlock(%sync_windows-43.Mutex* %75, %Context* noalias nonnull %4) | |
; ReturnStmt | |
ret i32 0 | |
} | |
define i8* @main-0.MAKEINTRESOURCEA(i16 %i, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca i16, align 16 | |
store i16 %i, i16* %0 | |
; ReturnStmt | |
%1 = load i16, i16* %0, align 2 | |
%2 = zext i16 %1 to i64 | |
%3 = bitcast i64 %2 to i64 | |
%4 = inttoptr i64 %3 to %..rawptr | |
%5 = bitcast %..rawptr %4 to i8* | |
ret i8* %5 | |
} | |
define void @main-0.set_cursor(%Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
; cur | |
; SelectorExpr | |
%1 = call ccc i32 @igGetMouseCursor() | |
store i32 %1, i32* %0 | |
; SwitchStmt | |
%2 = load i32, i32* %0, align 4 | |
%3 = icmp eq i32 %2, 0 | |
br i1 %3, label %switch.case.body-2, label %switch.case.next-1 | |
switch.case.next-1: | |
%4 = icmp eq i32 %2, 1 | |
br i1 %4, label %switch.fall.body-4, label %switch.case.next-3 | |
switch.case.body-2: | |
; SelectorExpr | |
%5 = load %..rawptr, %..rawptr* @main-0.IDC_ARROW, align 8 | |
%6 = call cc 64 %..rawptr @SetCursor(%..rawptr %5) | |
br label %switch.done-13 | |
switch.case.next-3: | |
%7 = icmp eq i32 %2, 3 | |
br i1 %7, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.fall.body-4: | |
; SelectorExpr | |
%8 = load %..rawptr, %..rawptr* @main-0.IDC_IBEAM, align 8 | |
%9 = call cc 64 %..rawptr @SetCursor(%..rawptr %8) | |
br label %switch.done-13 | |
switch.case.next-5: | |
%10 = icmp eq i32 %2, 4 | |
br i1 %10, label %switch.fall.body-8, label %switch.case.next-7 | |
switch.fall.body-6: | |
; SelectorExpr | |
%11 = load %..rawptr, %..rawptr* @main-0.IDC_SIZENS, align 8 | |
%12 = call cc 64 %..rawptr @SetCursor(%..rawptr %11) | |
br label %switch.done-13 | |
switch.case.next-7: | |
%13 = icmp eq i32 %2, 5 | |
br i1 %13, label %switch.fall.body-10, label %switch.case.next-9 | |
switch.fall.body-8: | |
; SelectorExpr | |
%14 = load %..rawptr, %..rawptr* @main-0.IDC_SIZEWE, align 8 | |
%15 = call cc 64 %..rawptr @SetCursor(%..rawptr %14) | |
br label %switch.done-13 | |
switch.case.next-9: | |
%16 = icmp eq i32 %2, 6 | |
br i1 %16, label %switch.fall.body-12, label %switch.case.next-11 | |
switch.fall.body-10: | |
; SelectorExpr | |
%17 = load %..rawptr, %..rawptr* @main-0.IDC_SIZENESW, align 8 | |
%18 = call cc 64 %..rawptr @SetCursor(%..rawptr %17) | |
br label %switch.done-13 | |
switch.case.next-11: | |
br label %switch.done-13 | |
switch.fall.body-12: | |
; SelectorExpr | |
%19 = load %..rawptr, %..rawptr* @main-0.IDC_SIZENWSE, align 8 | |
%20 = call cc 64 %..rawptr @SetCursor(%..rawptr %19) | |
br label %switch.done-13 | |
switch.done-13: | |
ret void | |
} | |
define void @main-0.main() #0 { | |
decls-0: | |
%0 = alloca %Context, align 16 | |
%1 = bitcast %Context* %0 to %..rawptr | |
%2 = call %..rawptr @__mem_zero(%..rawptr %1, i64 72) | |
store %Context zeroinitializer, %Context* %0 | |
%3 = load %Context, %Context* @__ggv$0, align 8 | |
store %Context %3, %Context* %0 | |
%4 = getelementptr inbounds %Context, %Context* %0, i64 0, i32 0 | |
%5 = call %Allocator @default_allocator(%Context* noalias nonnull %0) | |
store %Allocator %5, %Allocator* %4 | |
%6 = alloca %..string, align 16 | |
%7 = alloca %..any, align 16 | |
%8 = alloca {%..any*, i64}, align 16 | |
%9 = alloca [1 x %..any], align 16 | |
%10 = alloca {%..any*, i64}, align 16 | |
%11 = alloca %Source_Code_Location, align 16 | |
%12 = alloca %state-38.State, align 16 | |
%13 = alloca i32, align 16 | |
%14 = alloca %..string, align 16 | |
%15 = alloca %..any, align 16 | |
%16 = alloca {%..any*, i64}, align 16 | |
%17 = alloca [1 x %..any], align 16 | |
%18 = alloca {%..any*, i64}, align 16 | |
%19 = alloca %Source_Code_Location, align 16 | |
%20 = alloca %..any, align 16 | |
%21 = alloca %..string, align 16 | |
%22 = alloca {%..any*, i64}, align 16 | |
%23 = alloca [1 x %..any], align 16 | |
%24 = alloca {%..any*, i64}, align 16 | |
%25 = alloca %Source_Code_Location, align 16 | |
%26 = alloca %..any, align 16 | |
%27 = alloca %..string, align 16 | |
%28 = alloca {%..any*, i64}, align 16 | |
%29 = alloca [1 x %..any], align 16 | |
%30 = alloca {%..any*, i64}, align 16 | |
%31 = alloca %Source_Code_Location, align 16 | |
%32 = alloca %..any, align 16 | |
%33 = alloca %..string, align 16 | |
%34 = alloca {%..any*, i64}, align 16 | |
%35 = alloca [1 x %..any], align 16 | |
%36 = alloca {%..any*, i64}, align 16 | |
%37 = alloca %Source_Code_Location, align 16 | |
%38 = alloca %..any, align 16 | |
%39 = alloca %..string, align 16 | |
%40 = alloca {%..any*, i64}, align 16 | |
%41 = alloca [1 x %..any], align 16 | |
%42 = alloca {%..any*, i64}, align 16 | |
%43 = alloca %Source_Code_Location, align 16 | |
%44 = alloca %debug-30.Debug_Settings, align 16 | |
%45 = alloca %debug-30.Debug_Settings, align 16 | |
%46 = alloca {i8*, i64}, align 16 | |
%47 = alloca {i8*, i64}, align 16 | |
%48 = alloca i8, align 16 | |
; SelectorExpr | |
call void @settings-36.load(%Context* noalias nonnull %0) | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %0) | |
; DeferStmt | |
; SelectorExpr | |
%49 = bitcast %..string* %6 to %..rawptr | |
%50 = call %..rawptr @__mem_zero(%..rawptr %49, i64 16) | |
store %..string zeroinitializer, %..string* %6 | |
store %..string {i8* getelementptr inbounds ([17 x i8], [17 x i8]* @__str$138, i64 0, i32 0), i64 16}, %..string* %6 | |
%51 = load %..string, %..string* %6, align 8 | |
%52 = bitcast %..any* %7 to %..rawptr | |
%53 = call %..rawptr @__mem_zero(%..rawptr %52, i64 16) | |
store %..any zeroinitializer, %..any* %7 | |
%54 = bitcast %..string* %6 to %..rawptr | |
%55 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%56 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 0 | |
store %..rawptr %54, %..rawptr* %56 | |
%57 = getelementptr inbounds %..any, %..any* %7, i64 0, i32 1 | |
store %Type_Info* %55, %Type_Info** %57 | |
%58 = load %..any, %..any* %7, align 8 | |
; variadic call argument generation | |
%59 = bitcast {%..any*, i64}* %8 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %8 | |
%61 = bitcast [1 x %..any]* %9 to %..rawptr | |
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %9 | |
%63 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0 | |
store %..any %58, %..any* %63 | |
%64 = getelementptr inbounds [1 x %..any], [1 x %..any]* %9, i64 0, i32 0 | |
%65 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 0 | |
store %..any* %64, %..any** %65 | |
%66 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %8, i64 0, i32 1 | |
store i64 1, i64* %66 | |
%67 = load {%..any*, i64}, {%..any*, i64}* %8, align 8 | |
%68 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$139, i64 0, i32 0), i64 50}, i64 826, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$13a, i64 0, i32 0), i64 4}) | |
%69 = bitcast {%..any*, i64}* %10 to %..rawptr | |
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %10 | |
store {%..any*, i64} %67, {%..any*, i64}* %10 | |
%71 = bitcast %Source_Code_Location* %11 to %..rawptr | |
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11 | |
store %Source_Code_Location %68, %Source_Code_Location* %11 | |
call void @imgui_console-28.log({%..any*, i64}* %10, %Source_Code_Location* %11, %Context* noalias nonnull %0) | |
; SelectorExpr | |
call void @imgui_console-28.add_default_commands(%Context* noalias nonnull %0) | |
; SelectorExpr | |
%73 = bitcast void ({%..string*, i64}*, %Context*)* @main-0.set_user to void ({%..string*, i64}*, %Context*)* | |
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$13b, i64 0, i32 0), i64 8}, void ({%..string*, i64}*, %Context*)* %73, %Context* noalias nonnull %0) | |
; SelectorExpr | |
%74 = bitcast void ({%..string*, i64}*, %Context*)* @main-0.set_signature to void ({%..string*, i64}*, %Context*)* | |
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$13c, i64 0, i32 0), i64 13}, void ({%..string*, i64}*, %Context*)* %74, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; SelectorExpr | |
%75 = bitcast void ({%..string*, i64}*, %Context*)* @settings-36.save_settings_cmd to void ({%..string*, i64}*, %Context*)* | |
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$13d, i64 0, i32 0), i64 13}, void ({%..string*, i64}*, %Context*)* %75, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; SelectorExpr | |
%76 = bitcast void ({%..string*, i64}*, %Context*)* @settings-36.load_settings_cmd to void ({%..string*, i64}*, %Context*)* | |
call void @imgui_console-28.add_command(%..string {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$13e, i64 0, i32 0), i64 13}, void ({%..string*, i64}*, %Context*)* %76, %Context* noalias nonnull %0) | |
; SelectorExpr | |
%77 = getelementptr inbounds %sync_windows-43.Mutex, %sync_windows-43.Mutex* @main-0.push_lock, i64 0 | |
call void @sync_windows-43.mutex_init(%sync_windows-43.Mutex* %77, i64 0, %Context* noalias nonnull %0) | |
; state | |
store %state-38.State {i8 0, double zeroinitializer, %..rawptr zeroinitializer, %..rawptr zeroinitializer, %..rawptr zeroinitializer, %brew_imgui-23.State* zeroinitializer, %msg-46.Msg zeroinitializer, i64 1280, i64 720, i8 0, %brew_imgui-23.FrameState zeroinitializer, i8 0, i8 0, %misc-49.TimeData zeroinitializer, i64 0, i64 0, i8 0, i8 0, i8 1, i8 0, i32 zeroinitializer, i32 zeroinitializer, i32 zeroinitializer, %..string zeroinitializer, [256 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, i8 0, %log-33.Log zeroinitializer, %status-39.Status zeroinitializer, i8 1, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, [1024 x i8] zeroinitializer, i8 0, %..string zeroinitializer, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* zeroinitializer, %libgit2_types-55.Repository* zeroinitializer, %..string zeroinitializer, %libgit2_types-55.Status_List* zeroinitializer, %branch-35.Branch zeroinitializer, {%branch-35.Branch_Collection*, i64} zeroinitializer, {%branch-35.Branch_Collection*, i64} zeroinitializer, [513 x i8] zeroinitializer, [4097 x i8] zeroinitializer, %diff_view-37.Context* zeroinitializer}, %state-38.State* %12 | |
%78 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
call void @main-0.init(%state-38.State* %78, %Context* noalias nonnull %0) | |
; SelectorExpr | |
%79 = call i32 @libgit2-29.lib_init(%Context* noalias nonnull %0) | |
; lib_features | |
; SelectorExpr | |
%80 = call i32 @libgit2-29.lib_features(%Context* noalias nonnull %0) | |
store i32 %80, i32* %13 | |
; SelectorExpr | |
%81 = bitcast %..string* %14 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 16) | |
store %..string zeroinitializer, %..string* %14 | |
store %..string {i8* getelementptr inbounds ([22 x i8], [22 x i8]* @__str$13f, i64 0, i32 0), i64 21}, %..string* %14 | |
%83 = load %..string, %..string* %14, align 8 | |
%84 = bitcast %..any* %15 to %..rawptr | |
%85 = call %..rawptr @__mem_zero(%..rawptr %84, i64 16) | |
store %..any zeroinitializer, %..any* %15 | |
%86 = bitcast %..string* %14 to %..rawptr | |
%87 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%88 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 0 | |
store %..rawptr %86, %..rawptr* %88 | |
%89 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 1 | |
store %Type_Info* %87, %Type_Info** %89 | |
%90 = load %..any, %..any* %15, align 8 | |
; variadic call argument generation | |
%91 = bitcast {%..any*, i64}* %16 to %..rawptr | |
%92 = call %..rawptr @__mem_zero(%..rawptr %91, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %16 | |
%93 = bitcast [1 x %..any]* %17 to %..rawptr | |
%94 = call %..rawptr @__mem_zero(%..rawptr %93, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %17 | |
%95 = getelementptr inbounds [1 x %..any], [1 x %..any]* %17, i64 0, i32 0 | |
store %..any %90, %..any* %95 | |
%96 = getelementptr inbounds [1 x %..any], [1 x %..any]* %17, i64 0, i32 0 | |
%97 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %16, i64 0, i32 0 | |
store %..any* %96, %..any** %97 | |
%98 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %16, i64 0, i32 1 | |
store i64 1, i64* %98 | |
%99 = load {%..any*, i64}, {%..any*, i64}* %16, align 8 | |
%100 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$140, i64 0, i32 0), i64 50}, i64 843, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$141, i64 0, i32 0), i64 4}) | |
%101 = bitcast {%..any*, i64}* %18 to %..rawptr | |
%102 = call %..rawptr @__mem_zero(%..rawptr %101, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %18 | |
store {%..any*, i64} %99, {%..any*, i64}* %18 | |
%103 = bitcast %Source_Code_Location* %19 to %..rawptr | |
%104 = call %..rawptr @__mem_zero(%..rawptr %103, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %19 | |
store %Source_Code_Location %100, %Source_Code_Location* %19 | |
call void @imgui_console-28.log({%..any*, i64}* %18, %Source_Code_Location* %19, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; TernaryExpr | |
%105 = load i32, i32* %13, align 4 | |
%106 = call i8 @main-0.main.feature_set-0(i32 1, i32 %105, %Context* noalias nonnull %0) | |
%107 = trunc i8 %106 to i1 | |
br i1 %107, label %if.then-1, label %if.else-2 | |
if.then-1: | |
br label %if.done-3 | |
if.else-2: | |
br label %if.done-3 | |
if.done-3: | |
%108 = phi %..string [ {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$142, i64 0, i32 0), i64 12}, %if.then-1 ], [ {i8* getelementptr inbounds ([16 x i8], [16 x i8]* @__str$143, i64 0, i32 0), i64 15}, %if.else-2 ] | |
%109 = bitcast %..any* %20 to %..rawptr | |
%110 = call %..rawptr @__mem_zero(%..rawptr %109, i64 16) | |
store %..any zeroinitializer, %..any* %20 | |
%111 = bitcast %..string* %21 to %..rawptr | |
%112 = call %..rawptr @__mem_zero(%..rawptr %111, i64 16) | |
store %..string zeroinitializer, %..string* %21 | |
store %..string %108, %..string* %21 | |
%113 = bitcast %..string* %21 to %..rawptr | |
%114 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%115 = getelementptr inbounds %..any, %..any* %20, i64 0, i32 0 | |
store %..rawptr %113, %..rawptr* %115 | |
%116 = getelementptr inbounds %..any, %..any* %20, i64 0, i32 1 | |
store %Type_Info* %114, %Type_Info** %116 | |
%117 = load %..any, %..any* %20, align 8 | |
; variadic call argument generation | |
%118 = bitcast {%..any*, i64}* %22 to %..rawptr | |
%119 = call %..rawptr @__mem_zero(%..rawptr %118, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %22 | |
%120 = bitcast [1 x %..any]* %23 to %..rawptr | |
%121 = call %..rawptr @__mem_zero(%..rawptr %120, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %23 | |
%122 = getelementptr inbounds [1 x %..any], [1 x %..any]* %23, i64 0, i32 0 | |
store %..any %117, %..any* %122 | |
%123 = getelementptr inbounds [1 x %..any], [1 x %..any]* %23, i64 0, i32 0 | |
%124 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %22, i64 0, i32 0 | |
store %..any* %123, %..any** %124 | |
%125 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %22, i64 0, i32 1 | |
store i64 1, i64* %125 | |
%126 = load {%..any*, i64}, {%..any*, i64}* %22, align 8 | |
%127 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$144, i64 0, i32 0), i64 50}, i64 844, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$145, i64 0, i32 0), i64 4}) | |
%128 = bitcast {%..any*, i64}* %24 to %..rawptr | |
%129 = call %..rawptr @__mem_zero(%..rawptr %128, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %24 | |
store {%..any*, i64} %126, {%..any*, i64}* %24 | |
%130 = bitcast %Source_Code_Location* %25 to %..rawptr | |
%131 = call %..rawptr @__mem_zero(%..rawptr %130, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %25 | |
store %Source_Code_Location %127, %Source_Code_Location* %25 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([15 x i8], [15 x i8]* @__str$146, i64 0, i32 0), i64 14}, {%..any*, i64}* %24, %Source_Code_Location* %25, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; TernaryExpr | |
%132 = load i32, i32* %13, align 4 | |
%133 = call i8 @main-0.main.feature_set-0(i32 2, i32 %132, %Context* noalias nonnull %0) | |
%134 = trunc i8 %133 to i1 | |
br i1 %134, label %if.then-4, label %if.else-5 | |
if.then-4: | |
br label %if.done-6 | |
if.else-5: | |
br label %if.done-6 | |
if.done-6: | |
%135 = phi %..string [ {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$147, i64 0, i32 0), i64 10}, %if.then-4 ], [ {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$148, i64 0, i32 0), i64 13}, %if.else-5 ] | |
%136 = bitcast %..any* %26 to %..rawptr | |
%137 = call %..rawptr @__mem_zero(%..rawptr %136, i64 16) | |
store %..any zeroinitializer, %..any* %26 | |
%138 = bitcast %..string* %27 to %..rawptr | |
%139 = call %..rawptr @__mem_zero(%..rawptr %138, i64 16) | |
store %..string zeroinitializer, %..string* %27 | |
store %..string %135, %..string* %27 | |
%140 = bitcast %..string* %27 to %..rawptr | |
%141 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%142 = getelementptr inbounds %..any, %..any* %26, i64 0, i32 0 | |
store %..rawptr %140, %..rawptr* %142 | |
%143 = getelementptr inbounds %..any, %..any* %26, i64 0, i32 1 | |
store %Type_Info* %141, %Type_Info** %143 | |
%144 = load %..any, %..any* %26, align 8 | |
; variadic call argument generation | |
%145 = bitcast {%..any*, i64}* %28 to %..rawptr | |
%146 = call %..rawptr @__mem_zero(%..rawptr %145, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %28 | |
%147 = bitcast [1 x %..any]* %29 to %..rawptr | |
%148 = call %..rawptr @__mem_zero(%..rawptr %147, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %29 | |
%149 = getelementptr inbounds [1 x %..any], [1 x %..any]* %29, i64 0, i32 0 | |
store %..any %144, %..any* %149 | |
%150 = getelementptr inbounds [1 x %..any], [1 x %..any]* %29, i64 0, i32 0 | |
%151 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %28, i64 0, i32 0 | |
store %..any* %150, %..any** %151 | |
%152 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %28, i64 0, i32 1 | |
store i64 1, i64* %152 | |
%153 = load {%..any*, i64}, {%..any*, i64}* %28, align 8 | |
%154 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$149, i64 0, i32 0), i64 50}, i64 846, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$14a, i64 0, i32 0), i64 4}) | |
%155 = bitcast {%..any*, i64}* %30 to %..rawptr | |
%156 = call %..rawptr @__mem_zero(%..rawptr %155, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %30 | |
store {%..any*, i64} %153, {%..any*, i64}* %30 | |
%157 = bitcast %Source_Code_Location* %31 to %..rawptr | |
%158 = call %..rawptr @__mem_zero(%..rawptr %157, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %31 | |
store %Source_Code_Location %154, %Source_Code_Location* %31 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$14b, i64 0, i32 0), i64 12}, {%..any*, i64}* %30, %Source_Code_Location* %31, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; TernaryExpr | |
%159 = load i32, i32* %13, align 4 | |
%160 = call i8 @main-0.main.feature_set-0(i32 4, i32 %159, %Context* noalias nonnull %0) | |
%161 = trunc i8 %160 to i1 | |
br i1 %161, label %if.then-7, label %if.else-8 | |
if.then-7: | |
br label %if.done-9 | |
if.else-8: | |
br label %if.done-9 | |
if.done-9: | |
%162 = phi %..string [ {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$14c, i64 0, i32 0), i64 10}, %if.then-7 ], [ {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$14d, i64 0, i32 0), i64 13}, %if.else-8 ] | |
%163 = bitcast %..any* %32 to %..rawptr | |
%164 = call %..rawptr @__mem_zero(%..rawptr %163, i64 16) | |
store %..any zeroinitializer, %..any* %32 | |
%165 = bitcast %..string* %33 to %..rawptr | |
%166 = call %..rawptr @__mem_zero(%..rawptr %165, i64 16) | |
store %..string zeroinitializer, %..string* %33 | |
store %..string %162, %..string* %33 | |
%167 = bitcast %..string* %33 to %..rawptr | |
%168 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%169 = getelementptr inbounds %..any, %..any* %32, i64 0, i32 0 | |
store %..rawptr %167, %..rawptr* %169 | |
%170 = getelementptr inbounds %..any, %..any* %32, i64 0, i32 1 | |
store %Type_Info* %168, %Type_Info** %170 | |
%171 = load %..any, %..any* %32, align 8 | |
; variadic call argument generation | |
%172 = bitcast {%..any*, i64}* %34 to %..rawptr | |
%173 = call %..rawptr @__mem_zero(%..rawptr %172, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %34 | |
%174 = bitcast [1 x %..any]* %35 to %..rawptr | |
%175 = call %..rawptr @__mem_zero(%..rawptr %174, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %35 | |
%176 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0 | |
store %..any %171, %..any* %176 | |
%177 = getelementptr inbounds [1 x %..any], [1 x %..any]* %35, i64 0, i32 0 | |
%178 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 0 | |
store %..any* %177, %..any** %178 | |
%179 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %34, i64 0, i32 1 | |
store i64 1, i64* %179 | |
%180 = load {%..any*, i64}, {%..any*, i64}* %34, align 8 | |
%181 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$14e, i64 0, i32 0), i64 50}, i64 848, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$14f, i64 0, i32 0), i64 4}) | |
%182 = bitcast {%..any*, i64}* %36 to %..rawptr | |
%183 = call %..rawptr @__mem_zero(%..rawptr %182, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %36 | |
store {%..any*, i64} %180, {%..any*, i64}* %36 | |
%184 = bitcast %Source_Code_Location* %37 to %..rawptr | |
%185 = call %..rawptr @__mem_zero(%..rawptr %184, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %37 | |
store %Source_Code_Location %181, %Source_Code_Location* %37 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$150, i64 0, i32 0), i64 10}, {%..any*, i64}* %36, %Source_Code_Location* %37, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; TernaryExpr | |
%186 = load i32, i32* %13, align 4 | |
%187 = call i8 @main-0.main.feature_set-0(i32 8, i32 %186, %Context* noalias nonnull %0) | |
%188 = trunc i8 %187 to i1 | |
br i1 %188, label %if.then-10, label %if.else-11 | |
if.then-10: | |
br label %if.done-12 | |
if.else-11: | |
br label %if.done-12 | |
if.done-12: | |
%189 = phi %..string [ {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$151, i64 0, i32 0), i64 10}, %if.then-10 ], [ {i8* getelementptr inbounds ([14 x i8], [14 x i8]* @__str$152, i64 0, i32 0), i64 13}, %if.else-11 ] | |
%190 = bitcast %..any* %38 to %..rawptr | |
%191 = call %..rawptr @__mem_zero(%..rawptr %190, i64 16) | |
store %..any zeroinitializer, %..any* %38 | |
%192 = bitcast %..string* %39 to %..rawptr | |
%193 = call %..rawptr @__mem_zero(%..rawptr %192, i64 16) | |
store %..string zeroinitializer, %..string* %39 | |
store %..string %189, %..string* %39 | |
%194 = bitcast %..string* %39 to %..rawptr | |
%195 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 18 | |
%196 = getelementptr inbounds %..any, %..any* %38, i64 0, i32 0 | |
store %..rawptr %194, %..rawptr* %196 | |
%197 = getelementptr inbounds %..any, %..any* %38, i64 0, i32 1 | |
store %Type_Info* %195, %Type_Info** %197 | |
%198 = load %..any, %..any* %38, align 8 | |
; variadic call argument generation | |
%199 = bitcast {%..any*, i64}* %40 to %..rawptr | |
%200 = call %..rawptr @__mem_zero(%..rawptr %199, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %40 | |
%201 = bitcast [1 x %..any]* %41 to %..rawptr | |
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 16) | |
store [1 x %..any] zeroinitializer, [1 x %..any]* %41 | |
%203 = getelementptr inbounds [1 x %..any], [1 x %..any]* %41, i64 0, i32 0 | |
store %..any %198, %..any* %203 | |
%204 = getelementptr inbounds [1 x %..any], [1 x %..any]* %41, i64 0, i32 0 | |
%205 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %40, i64 0, i32 0 | |
store %..any* %204, %..any** %205 | |
%206 = getelementptr inbounds {%..any*, i64}, {%..any*, i64}* %40, i64 0, i32 1 | |
store i64 1, i64* %206 | |
%207 = load {%..any*, i64}, {%..any*, i64}* %40, align 8 | |
%208 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$153, i64 0, i32 0), i64 50}, i64 850, i64 13, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$154, i64 0, i32 0), i64 4}) | |
%209 = bitcast {%..any*, i64}* %42 to %..rawptr | |
%210 = call %..rawptr @__mem_zero(%..rawptr %209, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %42 | |
store {%..any*, i64} %207, {%..any*, i64}* %42 | |
%211 = bitcast %Source_Code_Location* %43 to %..rawptr | |
%212 = call %..rawptr @__mem_zero(%..rawptr %211, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %43 | |
store %Source_Code_Location %208, %Source_Code_Location* %43 | |
call void @imgui_console-28.logf(%..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$155, i64 0, i32 0), i64 11}, {%..any*, i64}* %42, %Source_Code_Location* %43, %Context* noalias nonnull %0) | |
; _settings | |
%213 = call %debug-30.Debug_Settings @debug-30.debug_get_settings(%Context* noalias nonnull %0) | |
store %debug-30.Debug_Settings %213, %debug-30.Debug_Settings* %44 | |
; AssignStmt | |
; SelectorExpr | |
%214 = getelementptr inbounds %debug-30.Debug_Settings, %debug-30.Debug_Settings* %44, i64 0, i32 0 | |
store i8 1, i8* %214 | |
%215 = load %debug-30.Debug_Settings, %debug-30.Debug_Settings* %44, align 1 | |
%216 = bitcast %debug-30.Debug_Settings* %45 to %..rawptr | |
%217 = call %..rawptr @__mem_zero(%..rawptr %216, i64 3) | |
store %debug-30.Debug_Settings {i8 0, i8 1, i8 1}, %debug-30.Debug_Settings* %45 | |
store %debug-30.Debug_Settings %215, %debug-30.Debug_Settings* %45 | |
call void @debug-30.debug_set_settings(%debug-30.Debug_Settings* %45, %Context* noalias nonnull %0) | |
; AssignStmt | |
; SelectorExpr | |
%218 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 39 | |
%219 = bitcast i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* @main-0.credentials_callback to i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* | |
store i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %219, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %218 | |
; AssignStmt | |
; SelectorExpr | |
%220 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 0 | |
store i8 1, i8* %220 | |
; ForStmt | |
br label %for.loop-13 | |
for.loop-13: | |
; SelectorExpr | |
%221 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 0 | |
%222 = load i8, i8* %221, align 1 | |
%223 = trunc i8 %222 to i1 | |
br i1 %223, label %for.body-14, label %for.done-27 | |
for.body-14: | |
%224 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
call void @main-0.begin_frame(%state-38.State* %224, %Context* noalias nonnull %0) | |
%225 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
call void @main-0.main_menu(%state-38.State* %225, %Context* noalias nonnull %0) | |
%226 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
call void @main-0.repo_window(%state-38.State* %226, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; SelectorExpr | |
%227 = getelementptr inbounds %settings-36.Settings, %settings-36.Settings* @settings-36.instance, i64 0 | |
; SelectorExpr | |
%228 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 8 | |
%229 = load i64, i64* %228, align 8 | |
; SelectorExpr | |
%230 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 40 | |
%231 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %230, align 8 | |
; SliceExpr | |
; SelectorExpr | |
%232 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 26 | |
%233 = load [1024 x i8], [1024 x i8]* %232, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([51 x i8], [51 x i8]* @__str$156, i64 0, i32 0), i64 50}, i64 867, i64 58, i64 0, i64 1024, i64 1024) | |
%234 = getelementptr inbounds [1024 x i8], [1024 x i8]* %232, i64 0, i32 0 | |
%235 = getelementptr inbounds i8, i8* %234, i64 0 | |
%236 = sub i64 1024, 0 | |
%237 = bitcast {i8*, i64}* %46 to %..rawptr | |
%238 = call %..rawptr @__mem_zero(%..rawptr %237, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %46 | |
%239 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 0 | |
store i8* %235, i8** %239 | |
%240 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %46, i64 0, i32 1 | |
store i64 %236, i64* %240 | |
%241 = load {i8*, i64}, {i8*, i64}* %46, align 8 | |
; SelectorExpr | |
%242 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 43 | |
%243 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %242, i64 0 | |
; SelectorExpr | |
%244 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 39 | |
%245 = load i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)*, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)** %244, align 8 | |
; SelectorExpr | |
%246 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 44 | |
%247 = getelementptr inbounds {%branch-35.Branch_Collection*, i64}, {%branch-35.Branch_Collection*, i64}* %246, i64 0 | |
; SelectorExpr | |
%248 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 45 | |
%249 = getelementptr inbounds {%branch-35.Branch_Collection*, i64}, {%branch-35.Branch_Collection*, i64}* %248, i64 0 | |
%250 = bitcast {i8*, i64}* %47 to %..rawptr | |
%251 = call %..rawptr @__mem_zero(%..rawptr %250, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %47 | |
store {i8*, i64} %241, {i8*, i64}* %47 | |
call void @branch-35.window(%settings-36.Settings* %227, i64 %229, %libgit2_types-55.Repository* %231, {i8*, i64}* %47, %branch-35.Branch* %243, i32 (%libgit2_types-55.Cred**, i8*, i8*, i32, %..rawptr)* %245, {%branch-35.Branch_Collection*, i64}* %247, {%branch-35.Branch_Collection*, i64}* %249, %Context* noalias nonnull %0) | |
; SelectorExpr | |
; SelectorExpr | |
%252 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 28 | |
%253 = getelementptr inbounds %log-33.Log, %log-33.Log* %252, i64 0 | |
; SelectorExpr | |
%254 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 40 | |
%255 = load %libgit2_types-55.Repository*, %libgit2_types-55.Repository** %254, align 8 | |
; SelectorExpr | |
; SelectorExpr | |
%256 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 43 | |
%257 = getelementptr inbounds %branch-35.Branch, %branch-35.Branch* %256, i64 0, i32 0 | |
%258 = load %libgit2_types-55.Reference*, %libgit2_types-55.Reference** %257, align 8 | |
call void @log-33.window(%log-33.Log* %253, %libgit2_types-55.Repository* %255, %libgit2_types-55.Reference* %258, %Context* noalias nonnull %0) | |
; IfStmt | |
; SelectorExpr | |
%259 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48 | |
%260 = load %diff_view-37.Context*, %diff_view-37.Context** %259, align 8 | |
%261 = icmp ne %diff_view-37.Context* %260, zeroinitializer | |
%262 = zext i1 %261 to i8 | |
%263 = trunc i8 %262 to i1 | |
br i1 %263, label %if.then-15, label %if.done-18 | |
if.then-15: | |
; keep_open | |
store i8 1, i8* %48 | |
; SelectorExpr | |
; SelectorExpr | |
%264 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48 | |
%265 = load %diff_view-37.Context*, %diff_view-37.Context** %264, align 8 | |
%266 = getelementptr inbounds i8, i8* %48, i64 0 | |
call void @diff_view-37.window(%diff_view-37.Context* %265, i8* %266, %Context* noalias nonnull %0) | |
; IfStmt | |
%267 = load i8, i8* %48, align 1 | |
%268 = trunc i8 %267 to i1 | |
br i1 %268, label %if.done-17, label %if.then-16 | |
if.then-16: | |
; SelectorExpr | |
; SelectorExpr | |
%269 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48 | |
%270 = load %diff_view-37.Context*, %diff_view-37.Context** %269, align 8 | |
call void @diff_view-37.free(%diff_view-37.Context* %270, %Context* noalias nonnull %0) | |
; AssignStmt | |
; SelectorExpr | |
%271 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 48 | |
store %diff_view-37.Context* zeroinitializer, %diff_view-37.Context** %271 | |
br label %if.done-17 | |
if.done-17: | |
br label %if.done-18 | |
if.done-18: | |
; IfStmt | |
; SelectorExpr | |
%272 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 18 | |
%273 = load i8, i8* %272, align 1 | |
%274 = trunc i8 %273 to i1 | |
br i1 %274, label %if.then-19, label %if.done-20 | |
if.then-19: | |
; SelectorExpr | |
; SelectorExpr | |
%275 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 18 | |
%276 = getelementptr inbounds i8, i8* %275, i64 0 | |
; SelectorExpr | |
%277 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 16 | |
%278 = getelementptr inbounds i8, i8* %277, i64 0 | |
; SelectorExpr | |
%279 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 17 | |
%280 = getelementptr inbounds i8, i8* %279, i64 0 | |
call void @imgui_console-28.draw_console(i8* %276, i8* %278, i8* %280, %Context* noalias nonnull %0) | |
br label %if.done-20 | |
if.done-20: | |
; IfStmt | |
; SelectorExpr | |
%281 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 16 | |
%282 = load i8, i8* %281, align 1 | |
%283 = trunc i8 %282 to i1 | |
br i1 %283, label %if.then-21, label %if.done-22 | |
if.then-21: | |
; SelectorExpr | |
; SelectorExpr | |
%284 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 16 | |
%285 = getelementptr inbounds i8, i8* %284, i64 0 | |
call void @imgui_console-28.draw_log(i8* %285, %Context* noalias nonnull %0) | |
br label %if.done-22 | |
if.done-22: | |
; IfStmt | |
; SelectorExpr | |
%286 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 17 | |
%287 = load i8, i8* %286, align 1 | |
%288 = trunc i8 %287 to i1 | |
br i1 %288, label %if.then-23, label %if.done-24 | |
if.then-23: | |
; SelectorExpr | |
; SelectorExpr | |
%289 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 17 | |
%290 = getelementptr inbounds i8, i8* %289, i64 0 | |
call void @imgui_console-28.draw_history(i8* %290, %Context* noalias nonnull %0) | |
br label %if.done-24 | |
if.done-24: | |
; IfStmt | |
; SelectorExpr | |
%291 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 19 | |
%292 = load i8, i8* %291, align 1 | |
%293 = trunc i8 %292 to i1 | |
br i1 %293, label %if.then-25, label %if.done-26 | |
if.then-25: | |
; SelectorExpr | |
; SelectorExpr | |
%294 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0, i32 19 | |
%295 = getelementptr inbounds i8, i8* %294, i64 0 | |
call ccc void @igShowDemoWindow(i8* %295) | |
br label %if.done-26 | |
if.done-26: | |
%296 = getelementptr inbounds %state-38.State, %state-38.State* %12, i64 0 | |
call void @main-0.end_frame(%state-38.State* %296, %Context* noalias nonnull %0) | |
br label %for.loop-13 | |
for.done-27: | |
; SelectorExpr | |
%297 = call i32 @libgit2-29.lib_shutdown(%Context* noalias nonnull %0) | |
; defer | |
; SelectorExpr | |
call void @settings-36.save(%Context* noalias nonnull %0) | |
ret void | |
} | |
define i8 @main-0.main.feature_set-0(i32 %test, i32 %value, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
%1 = alloca i32, align 16 | |
store i32 %test, i32* %0 | |
store i32 %value, i32* %1 | |
; ReturnStmt | |
%2 = load i32, i32* %0, align 4 | |
%3 = load i32, i32* %1, align 4 | |
%4 = and i32 %2, %3 | |
%5 = load i32, i32* %0, align 4 | |
%6 = icmp eq i32 %4, %5 | |
%7 = zext i1 %6 to i8 | |
ret i8 %7 | |
} | |
define {i64, i64} @os_windows-6.open(%..string %path, i64 %mode, i32 %perm, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i32, align 16 | |
%3 = alloca {i64, i64}, align 16 | |
%4 = alloca i32, align 16 | |
%5 = alloca i32, align 16 | |
%6 = alloca %windows-15.Security_Attributes*, align 16 | |
%7 = alloca %windows-15.Security_Attributes, align 16 | |
%8 = alloca i32, align 16 | |
%9 = alloca [300 x i8], align 16 | |
%10 = alloca {i8*, i64}, align 16 | |
%11 = alloca i8*, align 16 | |
%12 = alloca {i8*, i64}, align 16 | |
%13 = alloca {i8*, i64}, align 16 | |
%14 = alloca {i8*, i64}, align 16 | |
%15 = alloca i64, align 16 | |
%16 = alloca {i64, i64}, align 16 | |
%17 = alloca i64, align 16 | |
%18 = alloca {i64, i64}, align 16 | |
store %..string %path, %..string* %0 | |
store i64 %mode, i64* %1 | |
store i32 %perm, i32* %2 | |
; IfStmt | |
%19 = load %..string, %..string* %0, align 8 | |
%20 = extractvalue %..string %19, 1 | |
%21 = icmp eq i64 %20, 0 | |
%22 = zext i1 %21 to i8 | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%24 = bitcast {i64, i64}* %3 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %3 | |
%26 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 0 | |
store i64 -1, i64* %26 | |
%27 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 1 | |
store i64 2, i64* %27 | |
%28 = load {i64, i64}, {i64, i64}* %3, align 8 | |
ret {i64, i64} %28 | |
if.done-2: | |
; access | |
%29 = bitcast i32* %4 to %..rawptr | |
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 4) | |
store i32 zeroinitializer, i32* %4 | |
; SwitchStmt | |
%31 = load i64, i64* %1, align 8 | |
%32 = and i64 %31, 3 | |
%33 = icmp eq i64 %32, 0 | |
br i1 %33, label %switch.case.body-4, label %switch.case.next-3 | |
switch.case.next-3: | |
%34 = icmp eq i64 %32, 1 | |
br i1 %34, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.case.body-4: | |
; AssignStmt | |
store i32 2147483648, i32* %4 | |
br label %switch.done-9 | |
switch.case.next-5: | |
%35 = icmp eq i64 %32, 2 | |
br i1 %35, label %switch.fall.body-8, label %switch.case.next-7 | |
switch.fall.body-6: | |
; AssignStmt | |
store i32 1073741824, i32* %4 | |
br label %switch.done-9 | |
switch.case.next-7: | |
br label %switch.done-9 | |
switch.fall.body-8: | |
; AssignStmt | |
store i32 3221225472, i32* %4 | |
br label %switch.done-9 | |
switch.done-9: | |
; IfStmt | |
%36 = load i64, i64* %1, align 8 | |
%37 = and i64 %36, 64 | |
%38 = icmp ne i64 %37, 0 | |
%39 = zext i1 %38 to i8 | |
%40 = trunc i8 %39 to i1 | |
br i1 %40, label %if.then-10, label %if.done-11 | |
if.then-10: | |
; AssignStmt | |
%41 = load i32, i32* %4, align 4 | |
%42 = or i32 %41, 1073741824 | |
store i32 %42, i32* %4 | |
br label %if.done-11 | |
if.done-11: | |
; IfStmt | |
%43 = load i64, i64* %1, align 8 | |
%44 = and i64 %43, 1024 | |
%45 = icmp ne i64 %44, 0 | |
%46 = zext i1 %45 to i8 | |
%47 = trunc i8 %46 to i1 | |
br i1 %47, label %if.then-12, label %if.done-13 | |
if.then-12: | |
; AssignStmt | |
%48 = load i32, i32* %4, align 4 | |
%49 = xor i32 1073741824, -1 | |
%50 = and i32 %48, %49 | |
store i32 %50, i32* %4 | |
; AssignStmt | |
%51 = load i32, i32* %4, align 4 | |
%52 = or i32 %51, 4 | |
store i32 %52, i32* %4 | |
br label %if.done-13 | |
if.done-13: | |
; share_mode | |
store i32 3, i32* %5 | |
; sa | |
store %windows-15.Security_Attributes* zeroinitializer, %windows-15.Security_Attributes** %6 | |
; sa_inherit | |
store %windows-15.Security_Attributes {i32 24, %..rawptr zeroinitializer, i32 1}, %windows-15.Security_Attributes* %7 | |
; IfStmt | |
%53 = load i64, i64* %1, align 8 | |
%54 = and i64 %53, 524288 | |
%55 = icmp eq i64 %54, 0 | |
%56 = zext i1 %55 to i8 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %if.then-14, label %if.done-15 | |
if.then-14: | |
; AssignStmt | |
%58 = getelementptr inbounds %windows-15.Security_Attributes, %windows-15.Security_Attributes* %7, i64 0 | |
store %windows-15.Security_Attributes* %58, %windows-15.Security_Attributes** %6 | |
br label %if.done-15 | |
if.done-15: | |
; create_mode | |
%59 = bitcast i32* %8 to %..rawptr | |
%60 = call %..rawptr @__mem_zero(%..rawptr %59, i64 4) | |
store i32 zeroinitializer, i32* %8 | |
; SwitchStmt | |
%61 = load i64, i64* %1, align 8 | |
%62 = and i64 %61, 192 | |
%63 = icmp eq i64 %62, 192 | |
%64 = zext i1 %63 to i8 | |
%65 = icmp eq i8 1, %64 | |
br i1 %65, label %switch.case.body-17, label %switch.case.next-16 | |
switch.case.next-16: | |
%66 = load i64, i64* %1, align 8 | |
%67 = and i64 %66, 576 | |
%68 = icmp eq i64 %67, 576 | |
%69 = zext i1 %68 to i8 | |
%70 = icmp eq i8 1, %69 | |
br i1 %70, label %switch.fall.body-19, label %switch.case.next-18 | |
switch.case.body-17: | |
; AssignStmt | |
store i32 1, i32* %8 | |
br label %switch.done-24 | |
switch.case.next-18: | |
%71 = load i64, i64* %1, align 8 | |
%72 = and i64 %71, 64 | |
%73 = icmp eq i64 %72, 64 | |
%74 = zext i1 %73 to i8 | |
%75 = icmp eq i8 1, %74 | |
br i1 %75, label %switch.fall.body-21, label %switch.case.next-20 | |
switch.fall.body-19: | |
; AssignStmt | |
store i32 2, i32* %8 | |
br label %switch.done-24 | |
switch.case.next-20: | |
%76 = load i64, i64* %1, align 8 | |
%77 = and i64 %76, 512 | |
%78 = icmp eq i64 %77, 512 | |
%79 = zext i1 %78 to i8 | |
%80 = icmp eq i8 1, %79 | |
br i1 %80, label %switch.fall.body-23, label %switch.case.next-22 | |
switch.fall.body-21: | |
; AssignStmt | |
store i32 4, i32* %8 | |
br label %switch.done-24 | |
switch.case.next-22: | |
; AssignStmt | |
store i32 3, i32* %8 | |
br label %switch.done-24 | |
switch.fall.body-23: | |
; AssignStmt | |
store i32 5, i32* %8 | |
br label %switch.done-24 | |
switch.done-24: | |
; buf | |
%81 = bitcast [300 x i8]* %9 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 300) | |
store [300 x i8] zeroinitializer, [300 x i8]* %9 | |
; SliceExpr | |
%83 = load [300 x i8], [300 x i8]* %9, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$157, i64 0, i32 0), i64 53}, i64 99, i64 10, i64 0, i64 300, i64 300) | |
%84 = getelementptr inbounds [300 x i8], [300 x i8]* %9, i64 0, i32 0 | |
%85 = getelementptr inbounds i8, i8* %84, i64 0 | |
%86 = sub i64 300, 0 | |
%87 = bitcast {i8*, i64}* %10 to %..rawptr | |
%88 = call %..rawptr @__mem_zero(%..rawptr %87, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %10 | |
%89 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 0 | |
store i8* %85, i8** %89 | |
%90 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %10, i64 0, i32 1 | |
store i64 %86, i64* %90 | |
%91 = load {i8*, i64}, {i8*, i64}* %10, align 8 | |
%92 = load %..string, %..string* %0, align 8 | |
%93 = extractvalue %..string %92, 0 | |
%94 = bitcast i8** %11 to %..rawptr | |
%95 = call %..rawptr @__mem_zero(%..rawptr %94, i64 8) | |
store i8* zeroinitializer, i8** %11 | |
store i8* %93, i8** %11 | |
%96 = extractvalue %..string %92, 1 | |
%97 = sub i64 %96, 0 | |
%98 = load i8*, i8** %11, align 8 | |
%99 = getelementptr inbounds i8, i8* %98, i64 0 | |
%100 = bitcast {i8*, i64}* %12 to %..rawptr | |
%101 = call %..rawptr @__mem_zero(%..rawptr %100, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %12 | |
%102 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %12, i64 0, i32 0 | |
store i8* %99, i8** %102 | |
%103 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %12, i64 0, i32 1 | |
store i64 %97, i64* %103 | |
%104 = load {i8*, i64}, {i8*, i64}* %12, align 8 | |
%105 = bitcast {i8*, i64}* %13 to %..rawptr | |
%106 = call %..rawptr @__mem_zero(%..rawptr %105, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %13 | |
store {i8*, i64} %91, {i8*, i64}* %13 | |
%107 = bitcast {i8*, i64}* %14 to %..rawptr | |
%108 = call %..rawptr @__mem_zero(%..rawptr %107, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %14 | |
store {i8*, i64} %104, {i8*, i64}* %14 | |
%109 = call i64 @_preload-0.copy-19783({i8*, i64}* %13, {i8*, i64}* %14) | |
; handle | |
; SelectorExpr | |
; IndexExpr | |
%110 = getelementptr inbounds [300 x i8], [300 x i8]* %9, i64 0, i32 0 | |
%111 = getelementptr inbounds i8, i8* %110, i64 0 | |
%112 = load i32, i32* %4, align 4 | |
%113 = load i32, i32* %5, align 4 | |
%114 = load %windows-15.Security_Attributes*, %windows-15.Security_Attributes** %6, align 8 | |
%115 = load i32, i32* %8, align 4 | |
%116 = bitcast %windows-15.Security_Attributes* %114 to %..rawptr | |
%117 = call cc 64 %..rawptr @CreateFileA(i8* %111, i32 %112, i32 %113, %..rawptr %116, i32 %115, i32 128, %..rawptr zeroinitializer) | |
%118 = ptrtoint %..rawptr %117 to i64 | |
store i64 %118, i64* %15 | |
; IfStmt | |
%119 = load i64, i64* %15, align 8 | |
%120 = icmp ne i64 %119, -1 | |
%121 = zext i1 %120 to i8 | |
%122 = trunc i8 %121 to i1 | |
br i1 %122, label %if.then-25, label %if.done-26 | |
if.then-25: | |
; ReturnStmt | |
%123 = load i64, i64* %15, align 8 | |
%124 = bitcast {i64, i64}* %16 to %..rawptr | |
%125 = call %..rawptr @__mem_zero(%..rawptr %124, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %16 | |
%126 = getelementptr inbounds {i64, i64}, {i64, i64}* %16, i64 0, i32 0 | |
store i64 %123, i64* %126 | |
%127 = getelementptr inbounds {i64, i64}, {i64, i64}* %16, i64 0, i32 1 | |
store i64 0, i64* %127 | |
%128 = load {i64, i64}, {i64, i64}* %16, align 8 | |
ret {i64, i64} %128 | |
if.done-26: | |
; err | |
; SelectorExpr | |
%129 = call cc 64 i32 @GetLastError() | |
%130 = sext i32 %129 to i64 | |
store i64 %130, i64* %17 | |
; ReturnStmt | |
%131 = load i64, i64* %17, align 8 | |
%132 = bitcast {i64, i64}* %18 to %..rawptr | |
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %18 | |
%134 = getelementptr inbounds {i64, i64}, {i64, i64}* %18, i64 0, i32 0 | |
store i64 -1, i64* %134 | |
%135 = getelementptr inbounds {i64, i64}, {i64, i64}* %18, i64 0, i32 1 | |
store i64 %131, i64* %135 | |
%136 = load {i64, i64}, {i64, i64}* %18, align 8 | |
ret {i64, i64} %136 | |
} | |
define void @os_windows-6.close(i64 %fd, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
store i64 %fd, i64* %0 | |
; SelectorExpr | |
%1 = load i64, i64* %0, align 8 | |
%2 = inttoptr i64 %1 to %..rawptr | |
%3 = call cc 64 i32 @CloseHandle(%..rawptr %2) | |
ret void | |
} | |
define {i64, i64} @os_windows-6.write(i64 %fd, {i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca {i64, i64}, align 16 | |
%2 = alloca i32, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i32, align 16 | |
%7 = alloca i32, align 16 | |
%8 = alloca i64, align 16 | |
%9 = alloca {i64, i64}, align 16 | |
%10 = alloca {i64, i64}, align 16 | |
store i64 %fd, i64* %0 | |
%11 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
; IfStmt | |
%12 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%13 = extractvalue {i8*, i64} %12, 1 | |
%14 = icmp eq i64 %13, 0 | |
%15 = zext i1 %14 to i8 | |
%16 = trunc i8 %15 to i1 | |
br i1 %16, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%17 = bitcast {i64, i64}* %1 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %1 | |
%19 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 0 | |
store i64 0, i64* %19 | |
%20 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 1 | |
store i64 0, i64* %20 | |
%21 = load {i64, i64}, {i64, i64}* %1, align 8 | |
ret {i64, i64} %21 | |
if.done-2: | |
; single_write_length | |
%22 = bitcast i32* %2 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 4) | |
store i32 zeroinitializer, i32* %2 | |
; total_write | |
%24 = bitcast i64* %3 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
; length | |
%26 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%27 = extractvalue {i8*, i64} %26, 1 | |
%28 = bitcast i64 %27 to i64 | |
store i64 %28, i64* %4 | |
; ForStmt | |
br label %for.loop-3 | |
for.loop-3: | |
%29 = load i64, i64* %3, align 8 | |
%30 = load i64, i64* %4, align 8 | |
%31 = icmp slt i64 %29, %30 | |
%32 = zext i1 %31 to i8 | |
%33 = trunc i8 %32 to i1 | |
br i1 %33, label %for.body-4, label %for.done-8 | |
for.body-4: | |
; remaining | |
%34 = load i64, i64* %4, align 8 | |
%35 = load i64, i64* %3, align 8 | |
%36 = sub i64 %34, %35 | |
store i64 %36, i64* %5 | |
; to_write | |
; min | |
%37 = load i64, i64* %5, align 8 | |
%38 = trunc i64 %37 to i32 | |
%39 = icmp slt i32 %38, 2147483647 | |
%40 = select i1 %39, i32 %38, i32 2147483647 | |
store i32 %40, i32* %6 | |
; e | |
; SelectorExpr | |
%41 = load i64, i64* %0, align 8 | |
%42 = inttoptr i64 %41 to %..rawptr | |
; IndexExpr | |
%43 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%44 = extractvalue {i8*, i64} %43, 0 | |
%45 = load i64, i64* %3, align 8 | |
%46 = bitcast i64 %45 to i64 | |
%47 = extractvalue {i8*, i64} %43, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$158, i64 0, i32 0), i64 53}, i64 125, i64 49, i64 %46, i64 %47) | |
%48 = getelementptr inbounds i8, i8* %44, i64 %46 | |
%49 = getelementptr inbounds i8, i8* %48, i64 0 | |
%50 = load i32, i32* %6, align 4 | |
%51 = getelementptr inbounds i32, i32* %2, i64 0 | |
%52 = bitcast i8* %49 to %..rawptr | |
%53 = call cc 64 i32 @WriteFile(%..rawptr %42, %..rawptr %52, i32 %50, i32* %51, %..rawptr zeroinitializer) | |
store i32 %53, i32* %7 | |
; IfStmt | |
%54 = load i32, i32* %2, align 4 | |
%55 = icmp sle i32 %54, 0 | |
%56 = zext i1 %55 to i32 | |
%57 = icmp ne i32 %56, 0 | |
%58 = zext i1 %57 to i8 | |
%59 = trunc i8 %58 to i1 | |
br i1 %59, label %if.then-6, label %cmp.or-5 | |
cmp.or-5: | |
%60 = load i32, i32* %7, align 4 | |
%61 = icmp ne i32 %60, 0 | |
%62 = zext i1 %61 to i8 | |
%63 = trunc i8 %62 to i1 | |
br i1 %63, label %if.done-7, label %if.then-6 | |
if.then-6: | |
; err | |
; SelectorExpr | |
%64 = call cc 64 i32 @GetLastError() | |
%65 = sext i32 %64 to i64 | |
store i64 %65, i64* %8 | |
; ReturnStmt | |
%66 = load i64, i64* %3, align 8 | |
%67 = bitcast i64 %66 to i64 | |
%68 = load i64, i64* %8, align 8 | |
%69 = bitcast {i64, i64}* %9 to %..rawptr | |
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %9 | |
%71 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 0 | |
store i64 %67, i64* %71 | |
%72 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 1 | |
store i64 %68, i64* %72 | |
%73 = load {i64, i64}, {i64, i64}* %9, align 8 | |
ret {i64, i64} %73 | |
if.done-7: | |
; AssignStmt | |
%74 = load i32, i32* %2, align 4 | |
%75 = sext i32 %74 to i64 | |
%76 = load i64, i64* %3, align 8 | |
%77 = add i64 %76, %75 | |
store i64 %77, i64* %3 | |
br label %for.loop-3 | |
for.done-8: | |
; ReturnStmt | |
%78 = load i64, i64* %3, align 8 | |
%79 = bitcast i64 %78 to i64 | |
%80 = bitcast {i64, i64}* %10 to %..rawptr | |
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %10 | |
%82 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 0 | |
store i64 %79, i64* %82 | |
%83 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 1 | |
store i64 0, i64* %83 | |
%84 = load {i64, i64}, {i64, i64}* %10, align 8 | |
ret {i64, i64} %84 | |
} | |
define {i64, i64} @os_windows-6.read(i64 %fd, {i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca {i64, i64}, align 16 | |
%2 = alloca i32, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i32, align 16 | |
%7 = alloca i32, align 16 | |
%8 = alloca i64, align 16 | |
%9 = alloca {i64, i64}, align 16 | |
%10 = alloca {i64, i64}, align 16 | |
store i64 %fd, i64* %0 | |
%11 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
; IfStmt | |
%12 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%13 = extractvalue {i8*, i64} %12, 1 | |
%14 = icmp eq i64 %13, 0 | |
%15 = zext i1 %14 to i8 | |
%16 = trunc i8 %15 to i1 | |
br i1 %16, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%17 = bitcast {i64, i64}* %1 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %1 | |
%19 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 0 | |
store i64 0, i64* %19 | |
%20 = getelementptr inbounds {i64, i64}, {i64, i64}* %1, i64 0, i32 1 | |
store i64 0, i64* %20 | |
%21 = load {i64, i64}, {i64, i64}* %1, align 8 | |
ret {i64, i64} %21 | |
if.done-2: | |
; single_read_length | |
%22 = bitcast i32* %2 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 4) | |
store i32 zeroinitializer, i32* %2 | |
; total_read | |
%24 = bitcast i64* %3 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
; length | |
%26 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%27 = extractvalue {i8*, i64} %26, 1 | |
%28 = bitcast i64 %27 to i64 | |
store i64 %28, i64* %4 | |
; ForStmt | |
br label %for.loop-3 | |
for.loop-3: | |
%29 = load i64, i64* %3, align 8 | |
%30 = load i64, i64* %4, align 8 | |
%31 = icmp slt i64 %29, %30 | |
%32 = zext i1 %31 to i8 | |
%33 = trunc i8 %32 to i1 | |
br i1 %33, label %for.body-4, label %for.done-8 | |
for.body-4: | |
; remaining | |
%34 = load i64, i64* %4, align 8 | |
%35 = load i64, i64* %3, align 8 | |
%36 = sub i64 %34, %35 | |
store i64 %36, i64* %5 | |
; to_read | |
; min | |
%37 = load i64, i64* %5, align 8 | |
%38 = trunc i64 %37 to i32 | |
%39 = icmp ult i32 %38, 4294967295 | |
%40 = select i1 %39, i32 %38, i32 4294967295 | |
store i32 %40, i32* %6 | |
; e | |
; SelectorExpr | |
%41 = load i64, i64* %0, align 8 | |
%42 = inttoptr i64 %41 to %..rawptr | |
; IndexExpr | |
%43 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%44 = extractvalue {i8*, i64} %43, 0 | |
%45 = load i64, i64* %3, align 8 | |
%46 = bitcast i64 %45 to i64 | |
%47 = extractvalue {i8*, i64} %43, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$159, i64 0, i32 0), i64 53}, i64 147, i64 48, i64 %46, i64 %47) | |
%48 = getelementptr inbounds i8, i8* %44, i64 %46 | |
%49 = getelementptr inbounds i8, i8* %48, i64 0 | |
%50 = load i32, i32* %6, align 4 | |
%51 = getelementptr inbounds i32, i32* %2, i64 0 | |
%52 = bitcast i8* %49 to %..rawptr | |
%53 = call cc 64 i32 @ReadFile(%..rawptr %42, %..rawptr %52, i32 %50, i32* %51, %..rawptr zeroinitializer) | |
store i32 %53, i32* %7 | |
; IfStmt | |
%54 = load i32, i32* %2, align 4 | |
%55 = icmp sle i32 %54, 0 | |
%56 = zext i1 %55 to i32 | |
%57 = icmp ne i32 %56, 0 | |
%58 = zext i1 %57 to i8 | |
%59 = trunc i8 %58 to i1 | |
br i1 %59, label %if.then-6, label %cmp.or-5 | |
cmp.or-5: | |
%60 = load i32, i32* %7, align 4 | |
%61 = icmp ne i32 %60, 0 | |
%62 = zext i1 %61 to i8 | |
%63 = trunc i8 %62 to i1 | |
br i1 %63, label %if.done-7, label %if.then-6 | |
if.then-6: | |
; err | |
; SelectorExpr | |
%64 = call cc 64 i32 @GetLastError() | |
%65 = sext i32 %64 to i64 | |
store i64 %65, i64* %8 | |
; ReturnStmt | |
%66 = load i64, i64* %3, align 8 | |
%67 = bitcast i64 %66 to i64 | |
%68 = load i64, i64* %8, align 8 | |
%69 = bitcast {i64, i64}* %9 to %..rawptr | |
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %9 | |
%71 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 0 | |
store i64 %67, i64* %71 | |
%72 = getelementptr inbounds {i64, i64}, {i64, i64}* %9, i64 0, i32 1 | |
store i64 %68, i64* %72 | |
%73 = load {i64, i64}, {i64, i64}* %9, align 8 | |
ret {i64, i64} %73 | |
if.done-7: | |
; AssignStmt | |
%74 = load i32, i32* %2, align 4 | |
%75 = sext i32 %74 to i64 | |
%76 = load i64, i64* %3, align 8 | |
%77 = add i64 %76, %75 | |
store i64 %77, i64* %3 | |
br label %for.loop-3 | |
for.done-8: | |
; ReturnStmt | |
%78 = load i64, i64* %3, align 8 | |
%79 = bitcast i64 %78 to i64 | |
%80 = bitcast {i64, i64}* %10 to %..rawptr | |
%81 = call %..rawptr @__mem_zero(%..rawptr %80, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %10 | |
%82 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 0 | |
store i64 %79, i64* %82 | |
%83 = getelementptr inbounds {i64, i64}, {i64, i64}* %10, i64 0, i32 1 | |
store i64 0, i64* %83 | |
%84 = load {i64, i64}, {i64, i64}* %10, align 8 | |
ret {i64, i64} %84 | |
} | |
define {i64, i64} @os_windows-6.file_size(i64 %fd, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca {i64, i64}, align 16 | |
store i64 %fd, i64* %0 | |
; length | |
%4 = bitcast i64* %1 to %..rawptr | |
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 8) | |
store i64 zeroinitializer, i64* %1 | |
; err | |
%6 = bitcast i64* %2 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
; IfStmt | |
; SelectorExpr | |
%8 = load i64, i64* %0, align 8 | |
%9 = inttoptr i64 %8 to %..rawptr | |
%10 = getelementptr inbounds i64, i64* %1, i64 0 | |
%11 = call cc 64 i32 @GetFileSizeEx(%..rawptr %9, i64* %10) | |
%12 = icmp ne i32 %11, 0 | |
%13 = zext i1 %12 to i8 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %if.done-2, label %if.then-1 | |
if.then-1: | |
; AssignStmt | |
; SelectorExpr | |
%15 = call cc 64 i32 @GetLastError() | |
%16 = sext i32 %15 to i64 | |
store i64 %16, i64* %2 | |
br label %if.done-2 | |
if.done-2: | |
; ReturnStmt | |
%17 = load i64, i64* %1, align 8 | |
%18 = load i64, i64* %2, align 8 | |
%19 = bitcast {i64, i64}* %3 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16) | |
store {i64, i64} zeroinitializer, {i64, i64}* %3 | |
%21 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 0 | |
store i64 %17, i64* %21 | |
%22 = getelementptr inbounds {i64, i64}, {i64, i64}* %3, i64 0, i32 1 | |
store i64 %18, i64* %22 | |
%23 = load {i64, i64}, {i64, i64}* %3, align 8 | |
ret {i64, i64} %23 | |
} | |
define i64 @os_windows-6.get_std_handle(i64 %h, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %..rawptr, align 16 | |
store i64 %h, i64* %0 | |
; fd | |
; SelectorExpr | |
%2 = load i64, i64* %0, align 8 | |
%3 = trunc i64 %2 to i32 | |
%4 = call cc 64 %..rawptr @GetStdHandle(i32 %3) | |
store %..rawptr %4, %..rawptr* %1 | |
; SelectorExpr | |
%5 = load %..rawptr, %..rawptr* %1, align 8 | |
%6 = call cc 64 i32 @SetHandleInformation(%..rawptr %5, i32 1, i32 0) | |
; ReturnStmt | |
%7 = load %..rawptr, %..rawptr* %1, align 8 | |
%8 = ptrtoint %..rawptr %7 to i64 | |
ret i64 %8 | |
} | |
define %..rawptr @os_windows-6.heap_alloc(i64 %size, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
store i64 %size, i64* %0 | |
; ReturnStmt | |
; SelectorExpr | |
; SelectorExpr | |
%1 = call cc 64 %..rawptr @GetProcessHeap() | |
%2 = load i64, i64* %0, align 8 | |
%3 = call cc 64 %..rawptr @HeapAlloc(%..rawptr %1, i32 8, i64 %2) | |
ret %..rawptr %3 | |
} | |
define %..rawptr @os_windows-6.heap_resize(%..rawptr %ptr, i64 %new_size, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
store %..rawptr %ptr, %..rawptr* %0 | |
store i64 %new_size, i64* %1 | |
; IfStmt | |
%2 = load i64, i64* %1, align 8 | |
%3 = icmp eq i64 %2, 0 | |
%4 = zext i1 %3 to i8 | |
%5 = trunc i8 %4 to i1 | |
br i1 %5, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%6 = load %..rawptr, %..rawptr* %0, align 8 | |
call void @os_windows-6.heap_free(%..rawptr %6, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret %..rawptr zeroinitializer | |
if.done-2: | |
; IfStmt | |
%7 = load %..rawptr, %..rawptr* %0, align 8 | |
%8 = icmp eq %..rawptr %7, zeroinitializer | |
%9 = zext i1 %8 to i8 | |
%10 = trunc i8 %9 to i1 | |
br i1 %10, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; ReturnStmt | |
%11 = load i64, i64* %1, align 8 | |
%12 = call %..rawptr @os_windows-6.heap_alloc(i64 %11, %Context* noalias nonnull %__.context_ptr) | |
ret %..rawptr %12 | |
if.done-4: | |
; ReturnStmt | |
; SelectorExpr | |
; SelectorExpr | |
%13 = call cc 64 %..rawptr @GetProcessHeap() | |
%14 = load %..rawptr, %..rawptr* %0, align 8 | |
%15 = load i64, i64* %1, align 8 | |
%16 = call cc 64 %..rawptr @HeapReAlloc(%..rawptr %13, i32 8, %..rawptr %14, i64 %15) | |
ret %..rawptr %16 | |
} | |
define void @os_windows-6.heap_free(%..rawptr %ptr, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
store %..rawptr %ptr, %..rawptr* %0 | |
; IfStmt | |
%1 = load %..rawptr, %..rawptr* %0, align 8 | |
%2 = icmp eq %..rawptr %1, zeroinitializer | |
%3 = zext i1 %2 to i8 | |
%4 = trunc i8 %3 to i1 | |
br i1 %4, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; SelectorExpr | |
; SelectorExpr | |
%5 = call cc 64 %..rawptr @GetProcessHeap() | |
%6 = load %..rawptr, %..rawptr* %0, align 8 | |
%7 = call cc 64 i32 @HeapFree(%..rawptr %5, i32 0, %..rawptr %6) | |
ret void | |
} | |
define i64 @os_windows-6.current_thread_id(%Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
; ReturnStmt | |
; SelectorExpr | |
%0 = call cc 64 i32 @GetCurrentThreadId() | |
%1 = zext i32 %0 to i64 | |
ret i64 %1 | |
} | |
define %..rawptr @mem-10.set(%..rawptr %data, i32 %value, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i32, align 16 | |
%2 = alloca i64, align 16 | |
store %..rawptr %data, %..rawptr* %0 | |
store i32 %value, i32* %1 | |
store i64 %len, i64* %2 | |
; ReturnStmt | |
%3 = load %..rawptr, %..rawptr* %0, align 8 | |
%4 = load i32, i32* %1, align 4 | |
%5 = load i64, i64* %2, align 8 | |
%6 = call %..rawptr @__mem_set(%..rawptr %3, i32 %4, i64 %5) | |
ret %..rawptr %6 | |
} | |
define %..rawptr @mem-10.zero(%..rawptr %data, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca i64, align 16 | |
store %..rawptr %data, %..rawptr* %0 | |
store i64 %len, i64* %1 | |
; ReturnStmt | |
%2 = load %..rawptr, %..rawptr* %0, align 8 | |
%3 = load i64, i64* %1, align 8 | |
%4 = call %..rawptr @__mem_zero(%..rawptr %2, i64 %3) | |
ret %..rawptr %4 | |
} | |
define %..rawptr @mem-10.copy(%..rawptr %dst, %..rawptr %src, i64 %len) #0 { | |
decls-0: | |
%0 = alloca %..rawptr, align 16 | |
%1 = alloca %..rawptr, align 16 | |
%2 = alloca i64, align 16 | |
store %..rawptr %dst, %..rawptr* %0 | |
store %..rawptr %src, %..rawptr* %1 | |
store i64 %len, i64* %2 | |
; ReturnStmt | |
%3 = load %..rawptr, %..rawptr* %0, align 8 | |
%4 = load %..rawptr, %..rawptr* %1, align 8 | |
%5 = load i64, i64* %2, align 8 | |
%6 = call %..rawptr @__mem_copy(%..rawptr %3, %..rawptr %4, i64 %5) | |
ret %..rawptr %6 | |
} | |
define %Context @mem-10.context_from_allocator(%Allocator* %a, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %Context, align 16 | |
%1 = load %Allocator, %Allocator* %a, align 8 | |
; c | |
%2 = load %Context, %Context* %__.context_ptr, align 8 | |
store %Context %2, %Context* %0 | |
; AssignStmt | |
; SelectorExpr | |
%3 = getelementptr inbounds %Context, %Context* %0, i64 0, i32 0 | |
%4 = load %Allocator, %Allocator* %a, align 8 | |
store %Allocator %4, %Allocator* %3 | |
; ReturnStmt | |
%5 = load %Context, %Context* %0, align 8 | |
ret %Context %5 | |
} | |
define {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %backing, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %raw-5.Slice, align 16 | |
%1 = alloca %raw-5.Dynamic_Array, align 16 | |
%2 = alloca %raw-5.Dynamic_Array, align 16 | |
%3 = load {i8*, i64}, {i8*, i64}* %backing, align 8 | |
; s | |
%4 = load {i8*, i64}, {i8*, i64}* %backing, align 8 | |
%5 = bitcast {i8*, i64}* %backing to %raw-5.Slice* | |
%6 = load %raw-5.Slice, %raw-5.Slice* %5, align 8 | |
store %raw-5.Slice %6, %raw-5.Slice* %0 | |
; d | |
; CompoundLit | |
%7 = bitcast %raw-5.Dynamic_Array* %2 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 40) | |
store %raw-5.Dynamic_Array zeroinitializer, %raw-5.Dynamic_Array* %2 | |
store %raw-5.Dynamic_Array {%..rawptr zeroinitializer, i64 0, i64 zeroinitializer, %Allocator zeroinitializer}, %raw-5.Dynamic_Array* %2 | |
; SelectorExpr | |
%9 = getelementptr inbounds %raw-5.Slice, %raw-5.Slice* %0, i64 0, i32 0 | |
%10 = load %..rawptr, %..rawptr* %9, align 8 | |
%11 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, i64 0, i32 0 | |
store %..rawptr %10, %..rawptr* %11 | |
; SelectorExpr | |
%12 = getelementptr inbounds %raw-5.Slice, %raw-5.Slice* %0, i64 0, i32 1 | |
%13 = load i64, i64* %12, align 8 | |
%14 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, i64 0, i32 2 | |
store i64 %13, i64* %14 | |
%15 = call %Allocator @nil_allocator(%Context* noalias nonnull %__.context_ptr) | |
%16 = getelementptr inbounds %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, i64 0, i32 3 | |
store %Allocator %15, %Allocator* %16 | |
%17 = load %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %2, align 8 | |
store %raw-5.Dynamic_Array %17, %raw-5.Dynamic_Array* %1 | |
; ReturnStmt | |
%18 = load %raw-5.Dynamic_Array, %raw-5.Dynamic_Array* %1, align 8 | |
%19 = bitcast %raw-5.Dynamic_Array* %1 to {i8*, i64, i64, %Allocator}* | |
%20 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %19, align 8 | |
ret {i8*, i64, i64, %Allocator} %20 | |
} | |
define %..string @fmt-11.to_string({i8*, i64, i64, %Allocator}* %buf, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64}, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %buf, align 8 | |
; ReturnStmt | |
; SliceExpr | |
%3 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %buf, align 8 | |
%4 = extractvalue {i8*, i64, i64, %Allocator} %3, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15a, i64 0, i32 0), i64 46}, i64 46, i64 19, i64 0, i64 %4, i64 %4) | |
%5 = extractvalue {i8*, i64, i64, %Allocator} %3, 0 | |
%6 = getelementptr inbounds i8, i8* %5, i64 0 | |
%7 = sub i64 %4, 0 | |
%8 = bitcast {i8*, i64}* %0 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %0 | |
%10 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %0, i64 0, i32 0 | |
store i8* %6, i8** %10 | |
%11 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %0, i64 0, i32 1 | |
store i64 %7, i64* %11 | |
%12 = load {i8*, i64}, {i8*, i64}* %0, align 8 | |
%13 = extractvalue {i8*, i64} %12, 0 | |
%14 = extractvalue {i8*, i64} %12, 1 | |
%15 = bitcast %..string* %1 to %..rawptr | |
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 16) | |
store %..string zeroinitializer, %..string* %1 | |
%17 = getelementptr inbounds %..string, %..string* %1, i64 0, i32 0 | |
store i8* %13, i8** %17 | |
%18 = getelementptr inbounds %..string, %..string* %1, i64 0, i32 1 | |
store i64 %14, i64* %18 | |
%19 = load %..string, %..string* %1, align 8 | |
ret %..string %19 | |
} | |
define void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %buf, %..string %s, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca {%..string*, i64}, align 16 | |
%3 = alloca [1 x %..string], align 16 | |
%4 = alloca {%..string*, i64}, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0 | |
store %..string %s, %..string* %1 | |
%6 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%7 = load %..string, %..string* %1, align 8 | |
; variadic call argument generation | |
%8 = bitcast {%..string*, i64}* %2 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %2 | |
%10 = bitcast [1 x %..string]* %3 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 16) | |
store [1 x %..string] zeroinitializer, [1 x %..string]* %3 | |
%12 = getelementptr inbounds [1 x %..string], [1 x %..string]* %3, i64 0, i32 0 | |
store %..string %7, %..string* %12 | |
%13 = getelementptr inbounds [1 x %..string], [1 x %..string]* %3, i64 0, i32 0 | |
%14 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %2, i64 0, i32 0 | |
store %..string* %13, %..string** %14 | |
%15 = getelementptr inbounds {%..string*, i64}, {%..string*, i64}* %2, i64 0, i32 1 | |
store i64 1, i64* %15 | |
%16 = load {%..string*, i64}, {%..string*, i64}* %2, align 8 | |
%17 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15b, i64 0, i32 0), i64 46}, i64 51, i64 2, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$15c, i64 0, i32 0), i64 12}) | |
%18 = bitcast {%..string*, i64}* %4 to %..rawptr | |
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16) | |
store {%..string*, i64} zeroinitializer, {%..string*, i64}* %4 | |
store {%..string*, i64} %16, {%..string*, i64}* %4 | |
%20 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %17, %Source_Code_Location* %5 | |
%22 = call i64 @_preload-0.append_string-19886({i8*, i64, i64, %Allocator}* %6, {%..string*, i64}* %4, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @fmt-11.write_bytes({i8*, i64, i64, %Allocator}* %buf, {i8*, i64}* %data, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16 | |
%1 = alloca {i8*, i64}, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0 | |
%3 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%4 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%5 = load {i8*, i64}, {i8*, i64}* %data, align 8 | |
%6 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15d, i64 0, i32 0), i64 46}, i64 54, i64 2, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$15e, i64 0, i32 0), i64 11}) | |
%7 = bitcast {i8*, i64}* %1 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %1 | |
store {i8*, i64} %5, {i8*, i64}* %1 | |
%9 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %6, %Source_Code_Location* %2 | |
%11 = call i64 @_preload-0.append-19894({i8*, i64, i64, %Allocator}* %4, {i8*, i64}* %1, %Source_Code_Location* %2, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %buf, i8 %data, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca [1 x i8], align 16 | |
%4 = alloca {i8*, i64}, align 16 | |
%5 = alloca %Source_Code_Location, align 16 | |
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0 | |
store i8 %data, i8* %1 | |
%6 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%7 = load i8, i8* %1, align 1 | |
; variadic call argument generation | |
%8 = bitcast {i8*, i64}* %2 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
%10 = bitcast [1 x i8]* %3 to %..rawptr | |
%11 = call %..rawptr @__mem_zero(%..rawptr %10, i64 1) | |
store [1 x i8] zeroinitializer, [1 x i8]* %3 | |
%12 = getelementptr inbounds [1 x i8], [1 x i8]* %3, i64 0, i32 0 | |
store i8 %7, i8* %12 | |
%13 = getelementptr inbounds [1 x i8], [1 x i8]* %3, i64 0, i32 0 | |
%14 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0 | |
store i8* %13, i8** %14 | |
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1 | |
store i64 1, i64* %15 | |
%16 = load {i8*, i64}, {i8*, i64}* %2, align 8 | |
%17 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$15f, i64 0, i32 0), i64 46}, i64 57, i64 2, %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$160, i64 0, i32 0), i64 10}) | |
%18 = bitcast {i8*, i64}* %4 to %..rawptr | |
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %4 | |
store {i8*, i64} %16, {i8*, i64}* %4 | |
%20 = bitcast %Source_Code_Location* %5 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %5 | |
store %Source_Code_Location %17, %Source_Code_Location* %5 | |
%22 = call i64 @_preload-0.append-19894({i8*, i64, i64, %Allocator}* %6, {i8*, i64}* %4, %Source_Code_Location* %5, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %buf, i32 %r, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16 | |
%1 = alloca i32, align 16 | |
%2 = alloca [4 x i8], align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca {i8*, i64}, align 16 | |
%5 = alloca {i8*, i64}, align 16 | |
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0 | |
store i32 %r, i32* %1 | |
; IfStmt | |
%6 = load i32, i32* %1, align 4 | |
%7 = icmp slt i32 %6, 128 | |
%8 = zext i1 %7 to i8 | |
%9 = trunc i8 %8 to i1 | |
br i1 %9, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%10 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%11 = load i32, i32* %1, align 4 | |
%12 = trunc i32 %11 to i8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %10, i8 %12, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; b | |
; n | |
; SelectorExpr | |
%13 = load i32, i32* %1, align 4 | |
%14 = call {[4 x i8], i64} @utf8-4.encode_rune(i32 %13, %Context* noalias nonnull %__.context_ptr) | |
%15 = extractvalue {[4 x i8], i64} %14, 0 | |
%16 = extractvalue {[4 x i8], i64} %14, 1 | |
store [4 x i8] %15, [4 x i8]* %2 | |
store i64 %16, i64* %3 | |
%17 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SliceExpr | |
%18 = load i64, i64* %3, align 8 | |
%19 = load [4 x i8], [4 x i8]* %2, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$161, i64 0, i32 0), i64 46}, i64 66, i64 20, i64 0, i64 %18, i64 4) | |
%20 = getelementptr inbounds [4 x i8], [4 x i8]* %2, i64 0, i32 0 | |
%21 = getelementptr inbounds i8, i8* %20, i64 0 | |
%22 = sub i64 %18, 0 | |
%23 = bitcast {i8*, i64}* %4 to %..rawptr | |
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %4 | |
%25 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 0 | |
store i8* %21, i8** %25 | |
%26 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 1 | |
store i64 %22, i64* %26 | |
%27 = load {i8*, i64}, {i8*, i64}* %4, align 8 | |
%28 = bitcast {i8*, i64}* %5 to %..rawptr | |
%29 = call %..rawptr @__mem_zero(%..rawptr %28, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %5 | |
store {i8*, i64} %27, {i8*, i64}* %5 | |
call void @fmt-11.write_bytes({i8*, i64, i64, %Allocator}* %17, {i8*, i64}* %5, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %buf, i64 %i, i64 %base, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca [129 x i8], align 16 | |
%4 = alloca %..string, align 16 | |
%5 = alloca {i8*, i64}, align 16 | |
%6 = alloca {i8*, i64}, align 16 | |
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0 | |
store i64 %i, i64* %1 | |
store i64 %base, i64* %2 | |
; b | |
%7 = bitcast [129 x i8]* %3 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 129) | |
store [129 x i8] zeroinitializer, [129 x i8]* %3 | |
; s | |
; SelectorExpr | |
; SliceExpr | |
%9 = load [129 x i8], [129 x i8]* %3, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$162, i64 0, i32 0), i64 46}, i64 71, i64 28, i64 0, i64 129, i64 129) | |
%10 = getelementptr inbounds [129 x i8], [129 x i8]* %3, i64 0, i32 0 | |
%11 = getelementptr inbounds i8, i8* %10, i64 0 | |
%12 = sub i64 129, 0 | |
%13 = bitcast {i8*, i64}* %5 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %5 | |
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 0 | |
store i8* %11, i8** %15 | |
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %5, i64 0, i32 1 | |
store i64 %12, i64* %16 | |
%17 = load {i8*, i64}, {i8*, i64}* %5, align 8 | |
%18 = load i64, i64* %1, align 8 | |
%19 = bitcast i64 %18 to i64 | |
%20 = load i64, i64* %2, align 8 | |
; SelectorExpr | |
%21 = load %..string, %..string* @strconv-42.digits, align 8 | |
%22 = bitcast {i8*, i64}* %6 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %6 | |
store {i8*, i64} %17, {i8*, i64}* %6 | |
%24 = call %..string @strconv-42.append_bits({i8*, i64}* %6, i64 %19, i64 %20, i1 true, i64 64, %..string %21, i64 0, %Context* noalias nonnull %__.context_ptr) | |
store %..string %24, %..string* %4 | |
%25 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%26 = load %..string, %..string* %4, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %25, %..string %26, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define i64 @fmt-11.fprintln(i64 %fd, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca [4096 x i8], align 16 | |
%2 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
%4 = alloca {i8*, i64}, align 16 | |
%5 = alloca %..string, align 16 | |
%6 = alloca {%..any*, i64}, align 16 | |
store i64 %fd, i64* %0 | |
%7 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; data | |
%8 = bitcast [4096 x i8]* %1 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 4096) | |
store [4096 x i8] zeroinitializer, [4096 x i8]* %1 | |
; buf | |
; SliceExpr | |
%10 = load [4096 x i8], [4096 x i8]* %1, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$163, i64 0, i32 0), i64 46}, i64 85, i64 38, i64 0, i64 4096, i64 4096) | |
%11 = getelementptr inbounds [4096 x i8], [4096 x i8]* %1, i64 0, i32 0 | |
%12 = getelementptr inbounds i8, i8* %11, i64 0 | |
%13 = sub i64 4096, 0 | |
%14 = bitcast {i8*, i64}* %3 to %..rawptr | |
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 0 | |
store i8* %12, i8** %16 | |
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %3, i64 0, i32 1 | |
store i64 %13, i64* %17 | |
%18 = load {i8*, i64}, {i8*, i64}* %3, align 8 | |
%19 = bitcast {i8*, i64}* %4 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %4 | |
store {i8*, i64} %18, {i8*, i64}* %4 | |
%21 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %4, %Context* noalias nonnull %__.context_ptr) | |
store {i8*, i64, i64, %Allocator} %21, {i8*, i64, i64, %Allocator}* %2 | |
; res | |
%22 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %2, i64 0 | |
%23 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%24 = bitcast {%..any*, i64}* %6 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %6 | |
store {%..any*, i64} %23, {%..any*, i64}* %6 | |
%26 = call %..string @fmt-11.sbprintln({i8*, i64, i64, %Allocator}* %22, {%..any*, i64}* %6, %Context* noalias nonnull %__.context_ptr) | |
store %..string %26, %..string* %5 | |
; SelectorExpr | |
%27 = load i64, i64* %0, align 8 | |
%28 = load %..string, %..string* %5, align 8 | |
%29 = call {i64, i64} @os-3.write_string(i64 %27, %..string %28, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%30 = load %..string, %..string* %5, align 8 | |
%31 = extractvalue %..string %30, 1 | |
ret i64 %31 | |
} | |
define i64 @fmt-11.fprintf(i64 %fd, %..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca [4096 x i8], align 16 | |
%3 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
%4 = alloca {i8*, i64}, align 16 | |
%5 = alloca {i8*, i64}, align 16 | |
%6 = alloca %..string, align 16 | |
%7 = alloca {%..any*, i64}, align 16 | |
store i64 %fd, i64* %0 | |
store %..string %fmt, %..string* %1 | |
%8 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; data | |
%9 = bitcast [4096 x i8]* %2 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 4096) | |
store [4096 x i8] zeroinitializer, [4096 x i8]* %2 | |
; buf | |
; SliceExpr | |
%11 = load [4096 x i8], [4096 x i8]* %2, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$164, i64 0, i32 0), i64 46}, i64 92, i64 38, i64 0, i64 4096, i64 4096) | |
%12 = getelementptr inbounds [4096 x i8], [4096 x i8]* %2, i64 0, i32 0 | |
%13 = getelementptr inbounds i8, i8* %12, i64 0 | |
%14 = sub i64 4096, 0 | |
%15 = bitcast {i8*, i64}* %4 to %..rawptr | |
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %4 | |
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 0 | |
store i8* %13, i8** %17 | |
%18 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %4, i64 0, i32 1 | |
store i64 %14, i64* %18 | |
%19 = load {i8*, i64}, {i8*, i64}* %4, align 8 | |
%20 = bitcast {i8*, i64}* %5 to %..rawptr | |
%21 = call %..rawptr @__mem_zero(%..rawptr %20, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %5 | |
store {i8*, i64} %19, {i8*, i64}* %5 | |
%22 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %5, %Context* noalias nonnull %__.context_ptr) | |
store {i8*, i64, i64, %Allocator} %22, {i8*, i64, i64, %Allocator}* %3 | |
; res | |
%23 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %3, i64 0 | |
%24 = load %..string, %..string* %1, align 8 | |
%25 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%26 = bitcast {%..any*, i64}* %7 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %7 | |
store {%..any*, i64} %25, {%..any*, i64}* %7 | |
%28 = call %..string @fmt-11.sbprintf({i8*, i64, i64, %Allocator}* %23, %..string %24, {%..any*, i64}* %7, %Context* noalias nonnull %__.context_ptr) | |
store %..string %28, %..string* %6 | |
; SelectorExpr | |
%29 = load i64, i64* %0, align 8 | |
%30 = load %..string, %..string* %6, align 8 | |
%31 = call {i64, i64} @os-3.write_string(i64 %29, %..string %30, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%32 = load %..string, %..string* %6, align 8 | |
%33 = extractvalue %..string %32, 1 | |
ret i64 %33 | |
} | |
define i64 @fmt-11.println({%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {%..any*, i64}, align 16 | |
%1 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; ReturnStmt | |
; SelectorExpr | |
%2 = load i64, i64* @os_windows-6.stdout, align 8 | |
%3 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%4 = bitcast {%..any*, i64}* %0 to %..rawptr | |
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %0 | |
store {%..any*, i64} %3, {%..any*, i64}* %0 | |
%6 = call i64 @fmt-11.fprintln(i64 %2, {%..any*, i64}* %0, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %6 | |
} | |
define i64 @fmt-11.println_err({%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {%..any*, i64}, align 16 | |
%1 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; ReturnStmt | |
; SelectorExpr | |
%2 = load i64, i64* @os_windows-6.stderr, align 8 | |
%3 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%4 = bitcast {%..any*, i64}* %0 to %..rawptr | |
%5 = call %..rawptr @__mem_zero(%..rawptr %4, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %0 | |
store {%..any*, i64} %3, {%..any*, i64}* %0 | |
%6 = call i64 @fmt-11.fprintln(i64 %2, {%..any*, i64}* %0, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %6 | |
} | |
define i64 @fmt-11.printf(%..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca {%..any*, i64}, align 16 | |
store %..string %fmt, %..string* %0 | |
%2 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; ReturnStmt | |
; SelectorExpr | |
%3 = load i64, i64* @os_windows-6.stdout, align 8 | |
%4 = load %..string, %..string* %0, align 8 | |
%5 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%6 = bitcast {%..any*, i64}* %1 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %1 | |
store {%..any*, i64} %5, {%..any*, i64}* %1 | |
%8 = call i64 @fmt-11.fprintf(i64 %3, %..string %4, {%..any*, i64}* %1, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %8 | |
} | |
define i64 @fmt-11.printf_err(%..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca {%..any*, i64}, align 16 | |
store %..string %fmt, %..string* %0 | |
%2 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; ReturnStmt | |
; SelectorExpr | |
%3 = load i64, i64* @os_windows-6.stderr, align 8 | |
%4 = load %..string, %..string* %0, align 8 | |
%5 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%6 = bitcast {%..any*, i64}* %1 to %..rawptr | |
%7 = call %..rawptr @__mem_zero(%..rawptr %6, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %1 | |
store {%..any*, i64} %5, {%..any*, i64}* %1 | |
%8 = call i64 @fmt-11.fprintf(i64 %3, %..string %4, {%..any*, i64}* %1, %Context* noalias nonnull %__.context_ptr) | |
ret i64 %8 | |
} | |
define %..string @fmt-11.aprintf(%..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
%2 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
%3 = alloca %Source_Code_Location, align 16 | |
%4 = alloca {%..any*, i64}, align 16 | |
%5 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
store %..string %fmt, %..string* %0 | |
%6 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; buf | |
; make | |
call void @__dynamic_array_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$165, i64 0, i32 0), i64 46}, i64 121, i64 28, i64 0, i64 0, i64 0) | |
%7 = bitcast {i8*, i64, i64, %Allocator}* %2 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 40) | |
store {i8*, i64, i64, %Allocator} zeroinitializer, {i8*, i64, i64, %Allocator}* %2 | |
%9 = bitcast {i8*, i64, i64, %Allocator}* %2 to %..rawptr | |
%10 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$166, i64 0, i32 0), i64 46}, i64 121, i64 28, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$167, i64 0, i32 0), i64 7}) | |
%11 = bitcast %Source_Code_Location* %3 to %..rawptr | |
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %3 | |
store %Source_Code_Location %10, %Source_Code_Location* %3 | |
call void @__dynamic_array_make(%..rawptr %9, i64 1, i64 1, i64 0, i64 0, %Source_Code_Location* %3, %Context* noalias nonnull %__.context_ptr) | |
%13 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %2, align 8 | |
%14 = bitcast {i8*, i64, i64, %Allocator}* %2 to {i8*, i64, i64, %Allocator}* | |
%15 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %14, align 8 | |
store {i8*, i64, i64, %Allocator} %15, {i8*, i64, i64, %Allocator}* %1 | |
%16 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %1, i64 0 | |
%17 = load %..string, %..string* %0, align 8 | |
%18 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%19 = bitcast {%..any*, i64}* %4 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %4 | |
store {%..any*, i64} %18, {%..any*, i64}* %4 | |
%21 = call %..string @fmt-11.sbprintf({i8*, i64, i64, %Allocator}* %16, %..string %17, {%..any*, i64}* %4, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
%22 = load {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %1, align 8 | |
%23 = bitcast {i8*, i64, i64, %Allocator}* %5 to %..rawptr | |
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 40) | |
store {i8*, i64, i64, %Allocator} zeroinitializer, {i8*, i64, i64, %Allocator}* %5 | |
store {i8*, i64, i64, %Allocator} %22, {i8*, i64, i64, %Allocator}* %5 | |
%25 = call %..string @fmt-11.to_string({i8*, i64, i64, %Allocator}* %5, %Context* noalias nonnull %__.context_ptr) | |
ret %..string %25 | |
} | |
define %..string @fmt-11.bprint({i8*, i64}* %buf, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
%1 = alloca {i8*, i64}, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca {%..any*, i64}, align 16 | |
%4 = load {i8*, i64}, {i8*, i64}* %buf, align 8 | |
%5 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; sb | |
; SliceExpr | |
%6 = load {i8*, i64}, {i8*, i64}* %buf, align 8 | |
%7 = extractvalue {i8*, i64} %6, 1 | |
%8 = load {i8*, i64}, {i8*, i64}* %buf, align 8 | |
%9 = extractvalue {i8*, i64} %8, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$168, i64 0, i32 0), i64 46}, i64 129, i64 36, i64 0, i64 %7, i64 %9) | |
%10 = extractvalue {i8*, i64} %8, 0 | |
%11 = getelementptr inbounds i8, i8* %10, i64 0 | |
%12 = sub i64 %7, 0 | |
%13 = bitcast {i8*, i64}* %1 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %1 | |
%15 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %1, i64 0, i32 0 | |
store i8* %11, i8** %15 | |
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %1, i64 0, i32 1 | |
store i64 %12, i64* %16 | |
%17 = load {i8*, i64}, {i8*, i64}* %1, align 8 | |
%18 = bitcast {i8*, i64}* %2 to %..rawptr | |
%19 = call %..rawptr @__mem_zero(%..rawptr %18, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
store {i8*, i64} %17, {i8*, i64}* %2 | |
%20 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %2, %Context* noalias nonnull %__.context_ptr) | |
store {i8*, i64, i64, %Allocator} %20, {i8*, i64, i64, %Allocator}* %0 | |
; ReturnStmt | |
%21 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %0, i64 0 | |
%22 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%23 = bitcast {%..any*, i64}* %3 to %..rawptr | |
%24 = call %..rawptr @__mem_zero(%..rawptr %23, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %3 | |
store {%..any*, i64} %22, {%..any*, i64}* %3 | |
%25 = call %..string @fmt-11.sbprint({i8*, i64, i64, %Allocator}* %21, {%..any*, i64}* %3, %Context* noalias nonnull %__.context_ptr) | |
ret %..string %25 | |
} | |
define %..string @fmt-11.bprintf({i8*, i64}* %buf, %..string %fmt, {%..any*, i64}* %args, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca {i8*, i64, i64, %Allocator}, align 16 | |
%2 = alloca {i8*, i64}, align 16 | |
%3 = alloca {i8*, i64}, align 16 | |
%4 = alloca {%..any*, i64}, align 16 | |
%5 = load {i8*, i64}, {i8*, i64}* %buf, align 8 | |
store %..string %fmt, %..string* %0 | |
%6 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
; sb | |
; SliceExpr | |
%7 = load {i8*, i64}, {i8*, i64}* %buf, align 8 | |
%8 = extractvalue {i8*, i64} %7, 1 | |
%9 = load {i8*, i64}, {i8*, i64}* %buf, align 8 | |
%10 = extractvalue {i8*, i64} %9, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$169, i64 0, i32 0), i64 46}, i64 137, i64 36, i64 0, i64 %8, i64 %10) | |
%11 = extractvalue {i8*, i64} %9, 0 | |
%12 = getelementptr inbounds i8, i8* %11, i64 0 | |
%13 = sub i64 %8, 0 | |
%14 = bitcast {i8*, i64}* %2 to %..rawptr | |
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %2 | |
%16 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 0 | |
store i8* %12, i8** %16 | |
%17 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %2, i64 0, i32 1 | |
store i64 %13, i64* %17 | |
%18 = load {i8*, i64}, {i8*, i64}* %2, align 8 | |
%19 = bitcast {i8*, i64}* %3 to %..rawptr | |
%20 = call %..rawptr @__mem_zero(%..rawptr %19, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %3 | |
store {i8*, i64} %18, {i8*, i64}* %3 | |
%21 = call {i8*, i64, i64, %Allocator} @fmt-11.string_buffer_from_slice({i8*, i64}* %3, %Context* noalias nonnull %__.context_ptr) | |
store {i8*, i64, i64, %Allocator} %21, {i8*, i64, i64, %Allocator}* %1 | |
; ReturnStmt | |
%22 = getelementptr inbounds {i8*, i64, i64, %Allocator}, {i8*, i64, i64, %Allocator}* %1, i64 0 | |
%23 = load %..string, %..string* %0, align 8 | |
%24 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%25 = bitcast {%..any*, i64}* %4 to %..rawptr | |
%26 = call %..rawptr @__mem_zero(%..rawptr %25, i64 16) | |
store {%..any*, i64} zeroinitializer, {%..any*, i64}* %4 | |
store {%..any*, i64} %24, {%..any*, i64}* %4 | |
%27 = call %..string @fmt-11.sbprintf({i8*, i64, i64, %Allocator}* %22, %..string %23, {%..any*, i64}* %4, %Context* noalias nonnull %__.context_ptr) | |
ret %..string %27 | |
} | |
define void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %buf, %Type_Info* %ti, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca {i8*, i64, i64, %Allocator}*, align 16 | |
%1 = alloca %Type_Info*, align 16 | |
%2 = alloca %Type_Info_Named, align 16 | |
%3 = alloca %Type_Info_Integer, align 16 | |
%4 = alloca %..any, align 16 | |
%5 = alloca %..any, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca i64, align 16 | |
%8 = alloca i64, align 16 | |
%9 = alloca %..any, align 16 | |
%10 = alloca %Type_Info_Rune, align 16 | |
%11 = alloca %Type_Info_Float, align 16 | |
%12 = alloca %Type_Info_Complex, align 16 | |
%13 = alloca %Type_Info_String, align 16 | |
%14 = alloca %Type_Info_Boolean, align 16 | |
%15 = alloca %..any, align 16 | |
%16 = alloca %..any, align 16 | |
%17 = alloca i8, align 16 | |
%18 = alloca %..any, align 16 | |
%19 = alloca %Type_Info_Any, align 16 | |
%20 = alloca %Type_Info_Pointer, align 16 | |
%21 = alloca %Type_Info_Procedure, align 16 | |
%22 = alloca %Type_Info_Tuple, align 16 | |
%23 = alloca {%Type_Info_Tuple, i8}, align 16 | |
%24 = alloca %Type_Info*, align 16 | |
%25 = alloca i64, align 16 | |
%26 = alloca i64, align 16 | |
%27 = alloca i64, align 16 | |
%28 = alloca %Type_Info_Tuple, align 16 | |
%29 = alloca i64, align 16 | |
%30 = alloca %..string, align 16 | |
%31 = alloca i64, align 16 | |
%32 = alloca i64, align 16 | |
%33 = alloca i64, align 16 | |
%34 = alloca %Type_Info*, align 16 | |
%35 = alloca %Type_Info_Array, align 16 | |
%36 = alloca %Type_Info_Dynamic_Array, align 16 | |
%37 = alloca %Type_Info_Slice, align 16 | |
%38 = alloca %Type_Info_Map, align 16 | |
%39 = alloca %Type_Info_Struct, align 16 | |
%40 = alloca %..string, align 16 | |
%41 = alloca i64, align 16 | |
%42 = alloca i64, align 16 | |
%43 = alloca i64, align 16 | |
%44 = alloca %Type_Info_Union, align 16 | |
%45 = alloca %Type_Info*, align 16 | |
%46 = alloca i64, align 16 | |
%47 = alloca i64, align 16 | |
%48 = alloca i64, align 16 | |
%49 = alloca %Type_Info_Enum, align 16 | |
%50 = alloca %..string, align 16 | |
%51 = alloca i64, align 16 | |
%52 = alloca i64, align 16 | |
%53 = alloca i64, align 16 | |
%54 = alloca %Type_Info_Bit_Field, align 16 | |
%55 = alloca %..string, align 16 | |
%56 = alloca i64, align 16 | |
%57 = alloca i64, align 16 | |
%58 = alloca i64, align 16 | |
store {i8*, i64, i64, %Allocator}* %buf, {i8*, i64, i64, %Allocator}** %0 | |
store %Type_Info* %ti, %Type_Info** %1 | |
; IfStmt | |
%59 = load %Type_Info*, %Type_Info** %1, align 8 | |
%60 = icmp eq %Type_Info* %59, zeroinitializer | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-1, label %if.done-2 | |
if.then-1: | |
%63 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %63, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$16a, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; TypeSwitchStmt | |
; SelectorExpr | |
%64 = load %Type_Info*, %Type_Info** %1, align 8 | |
%65 = getelementptr inbounds %Type_Info, %Type_Info* %64, i64 0 | |
%66 = getelementptr inbounds %Type_Info, %Type_Info* %65, i64 0, i32 2 | |
%67 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %66, align 8 | |
; get union's tag | |
%68 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %66, i64 0, i32 2 ; UnionTagPtr | |
%69 = load i8, i8* %68, align 1 | |
%70 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %66 to %..rawptr | |
%71 = icmp eq i8 %69, 1 | |
br i1 %71, label %typeswitch.body-4, label %typeswitch.next-3 | |
typeswitch.next-3: | |
%72 = icmp eq i8 %69, 2 | |
br i1 %72, label %typeswitch.body-6, label %typeswitch.next-5 | |
typeswitch.body-4: | |
%73 = bitcast %..rawptr %70 to %Type_Info_Named* | |
%74 = load %Type_Info_Named, %Type_Info_Named* %73, align 8 | |
store %Type_Info_Named %74, %Type_Info_Named* %2 | |
%75 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%76 = getelementptr inbounds %Type_Info_Named, %Type_Info_Named* %2, i64 0, i32 0 | |
%77 = load %..string, %..string* %76, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %75, %..string %77, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-5: | |
%78 = icmp eq i8 %69, 3 | |
br i1 %78, label %typeswitch.body-18, label %typeswitch.next-17 | |
typeswitch.body-6: | |
%79 = bitcast %..rawptr %70 to %Type_Info_Integer* | |
%80 = load %Type_Info_Integer, %Type_Info_Integer* %79, align 1 | |
store %Type_Info_Integer %80, %Type_Info_Integer* %3 | |
; a | |
; CompoundLit | |
%81 = bitcast %..any* %5 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 16) | |
store %..any zeroinitializer, %..any* %5 | |
store %..any zeroinitializer, %..any* %5 | |
%83 = load %Type_Info*, %Type_Info** %1, align 8 | |
%84 = getelementptr inbounds %..any, %..any* %5, i64 0, i32 1 | |
store %Type_Info* %83, %Type_Info** %84 | |
%85 = load %..any, %..any* %5, align 8 | |
store %..any %85, %..any* %4 | |
; TypeSwitchStmt | |
%86 = load %..any, %..any* %4, align 8 | |
%87 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%88 = load %Type_Info*, %Type_Info** %87, align 8 | |
%89 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6 | |
%90 = icmp eq %Type_Info* %88, %89 | |
br i1 %90, label %typeswitch.body-8, label %typeswitch.next-7 | |
typeswitch.next-7: | |
%91 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%92 = load %Type_Info*, %Type_Info** %91, align 8 | |
%93 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%94 = icmp eq %Type_Info* %92, %93 | |
br i1 %94, label %typeswitch.body-10, label %typeswitch.next-9 | |
typeswitch.body-8: | |
%95 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%96 = load %..rawptr, %..rawptr* %95, align 8 | |
%97 = bitcast %..rawptr %96 to i64* | |
%98 = load i64, i64* %97, align 8 | |
store i64 %98, i64* %6 | |
%99 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %99, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$16b, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
typeswitch.next-9: | |
%100 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%101 = load %Type_Info*, %Type_Info** %100, align 8 | |
%102 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 55 | |
%103 = icmp eq %Type_Info* %101, %102 | |
br i1 %103, label %typeswitch.body-12, label %typeswitch.next-11 | |
typeswitch.body-10: | |
%104 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%105 = load %..rawptr, %..rawptr* %104, align 8 | |
%106 = bitcast %..rawptr %105 to i64* | |
%107 = load i64, i64* %106, align 8 | |
store i64 %107, i64* %7 | |
%108 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %108, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$16c, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
typeswitch.next-11: | |
store %..any %86, %..any* %9 | |
%109 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; TernaryExpr | |
; SelectorExpr | |
%110 = getelementptr inbounds %Type_Info_Integer, %Type_Info_Integer* %3, i64 0, i32 0 | |
%111 = load i8, i8* %110, align 1 | |
%112 = trunc i8 %111 to i1 | |
br i1 %112, label %if.then-13, label %if.else-14 | |
typeswitch.body-12: | |
%113 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%114 = load %..rawptr, %..rawptr* %113, align 8 | |
%115 = bitcast %..rawptr %114 to i64* | |
%116 = load i64, i64* %115, align 8 | |
store i64 %116, i64* %8 | |
%117 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %117, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$16d, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
if.then-13: | |
br label %if.done-15 | |
if.else-14: | |
br label %if.done-15 | |
if.done-15: | |
%118 = phi i32 [ 105, %if.then-13 ], [ 117, %if.else-14 ] | |
%119 = trunc i32 %118 to i8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %109, i8 %119, %Context* noalias nonnull %__.context_ptr) | |
%120 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%121 = load %Type_Info*, %Type_Info** %1, align 8 | |
%122 = getelementptr inbounds %Type_Info, %Type_Info* %121, i64 0 | |
%123 = getelementptr inbounds %Type_Info, %Type_Info* %122, i64 0, i32 0 | |
%124 = load i64, i64* %123, align 8 | |
%125 = mul i64 8, %124 | |
%126 = bitcast i64 %125 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %120, i64 %126, i64 10, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-16 | |
typeswitch.done-16: | |
br label %typeswitch.done-110 | |
typeswitch.next-17: | |
%127 = icmp eq i8 %69, 4 | |
br i1 %127, label %typeswitch.body-20, label %typeswitch.next-19 | |
typeswitch.body-18: | |
%128 = bitcast %..rawptr %70 to %Type_Info_Rune* | |
%129 = load %Type_Info_Rune, %Type_Info_Rune* %128, align 1 | |
store %Type_Info_Rune %129, %Type_Info_Rune* %10 | |
%130 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %130, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$16e, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-19: | |
%131 = icmp eq i8 %69, 5 | |
br i1 %131, label %typeswitch.body-22, label %typeswitch.next-21 | |
typeswitch.body-20: | |
%132 = bitcast %..rawptr %70 to %Type_Info_Float* | |
%133 = load %Type_Info_Float, %Type_Info_Float* %132, align 1 | |
store %Type_Info_Float %133, %Type_Info_Float* %11 | |
%134 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %134, i8 102, %Context* noalias nonnull %__.context_ptr) | |
%135 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%136 = load %Type_Info*, %Type_Info** %1, align 8 | |
%137 = getelementptr inbounds %Type_Info, %Type_Info* %136, i64 0 | |
%138 = getelementptr inbounds %Type_Info, %Type_Info* %137, i64 0, i32 0 | |
%139 = load i64, i64* %138, align 8 | |
%140 = mul i64 8, %139 | |
%141 = bitcast i64 %140 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %135, i64 %141, i64 10, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-21: | |
%142 = icmp eq i8 %69, 6 | |
br i1 %142, label %typeswitch.body-24, label %typeswitch.next-23 | |
typeswitch.body-22: | |
%143 = bitcast %..rawptr %70 to %Type_Info_Complex* | |
%144 = load %Type_Info_Complex, %Type_Info_Complex* %143, align 1 | |
store %Type_Info_Complex %144, %Type_Info_Complex* %12 | |
%145 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %145, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$16f, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
%146 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%147 = load %Type_Info*, %Type_Info** %1, align 8 | |
%148 = getelementptr inbounds %Type_Info, %Type_Info* %147, i64 0 | |
%149 = getelementptr inbounds %Type_Info, %Type_Info* %148, i64 0, i32 0 | |
%150 = load i64, i64* %149, align 8 | |
%151 = mul i64 8, %150 | |
%152 = bitcast i64 %151 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %146, i64 %152, i64 10, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-23: | |
%153 = icmp eq i8 %69, 7 | |
br i1 %153, label %typeswitch.body-26, label %typeswitch.next-25 | |
typeswitch.body-24: | |
%154 = bitcast %..rawptr %70 to %Type_Info_String* | |
%155 = load %Type_Info_String, %Type_Info_String* %154, align 1 | |
store %Type_Info_String %155, %Type_Info_String* %13 | |
%156 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %156, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$170, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-25: | |
%157 = icmp eq i8 %69, 8 | |
br i1 %157, label %typeswitch.body-31, label %typeswitch.next-30 | |
typeswitch.body-26: | |
%158 = bitcast %..rawptr %70 to %Type_Info_Boolean* | |
%159 = load %Type_Info_Boolean, %Type_Info_Boolean* %158, align 1 | |
store %Type_Info_Boolean %159, %Type_Info_Boolean* %14 | |
; a | |
; CompoundLit | |
%160 = bitcast %..any* %16 to %..rawptr | |
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16) | |
store %..any zeroinitializer, %..any* %16 | |
store %..any zeroinitializer, %..any* %16 | |
%162 = load %Type_Info*, %Type_Info** %1, align 8 | |
%163 = getelementptr inbounds %..any, %..any* %16, i64 0, i32 1 | |
store %Type_Info* %162, %Type_Info** %163 | |
%164 = load %..any, %..any* %16, align 8 | |
store %..any %164, %..any* %15 | |
; TypeSwitchStmt | |
%165 = load %..any, %..any* %15, align 8 | |
%166 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 1 | |
%167 = load %Type_Info*, %Type_Info** %166, align 8 | |
%168 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 27 | |
%169 = icmp eq %Type_Info* %167, %168 | |
br i1 %169, label %typeswitch.body-28, label %typeswitch.next-27 | |
typeswitch.next-27: | |
store %..any %165, %..any* %18 | |
%170 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %170, i8 98, %Context* noalias nonnull %__.context_ptr) | |
%171 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%172 = load %Type_Info*, %Type_Info** %1, align 8 | |
%173 = getelementptr inbounds %Type_Info, %Type_Info* %172, i64 0 | |
%174 = getelementptr inbounds %Type_Info, %Type_Info* %173, i64 0, i32 0 | |
%175 = load i64, i64* %174, align 8 | |
%176 = mul i64 8, %175 | |
%177 = bitcast i64 %176 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %171, i64 %177, i64 10, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-29 | |
typeswitch.body-28: | |
%178 = getelementptr inbounds %..any, %..any* %15, i64 0, i32 0 | |
%179 = load %..rawptr, %..rawptr* %178, align 8 | |
%180 = bitcast %..rawptr %179 to i8* | |
%181 = load i8, i8* %180, align 1 | |
store i8 %181, i8* %17 | |
%182 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %182, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$171, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-29 | |
typeswitch.done-29: | |
br label %typeswitch.done-110 | |
typeswitch.next-30: | |
%183 = icmp eq i8 %69, 9 | |
br i1 %183, label %typeswitch.body-33, label %typeswitch.next-32 | |
typeswitch.body-31: | |
%184 = bitcast %..rawptr %70 to %Type_Info_Any* | |
%185 = load %Type_Info_Any, %Type_Info_Any* %184, align 1 | |
store %Type_Info_Any %185, %Type_Info_Any* %19 | |
%186 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %186, %..string {i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__str$172, i64 0, i32 0), i64 3}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-32: | |
%187 = icmp eq i8 %69, 10 | |
br i1 %187, label %typeswitch.body-38, label %typeswitch.next-37 | |
typeswitch.body-33: | |
%188 = bitcast %..rawptr %70 to %Type_Info_Pointer* | |
%189 = load %Type_Info_Pointer, %Type_Info_Pointer* %188, align 8 | |
store %Type_Info_Pointer %189, %Type_Info_Pointer* %20 | |
; IfStmt | |
; SelectorExpr | |
%190 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0 | |
%191 = load %Type_Info*, %Type_Info** %190, align 8 | |
%192 = icmp eq %Type_Info* %191, zeroinitializer | |
%193 = zext i1 %192 to i8 | |
%194 = trunc i8 %193 to i1 | |
br i1 %194, label %if.then-34, label %if.else-35 | |
if.then-34: | |
%195 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %195, %..string {i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__str$173, i64 0, i32 0), i64 6}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-36 | |
if.else-35: | |
%196 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %196, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$174, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
%197 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%198 = getelementptr inbounds %Type_Info_Pointer, %Type_Info_Pointer* %20, i64 0, i32 0 | |
%199 = load %Type_Info*, %Type_Info** %198, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %197, %Type_Info* %199, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-36 | |
if.done-36: | |
br label %typeswitch.done-110 | |
typeswitch.next-37: | |
%200 = icmp eq i8 %69, 14 | |
br i1 %200, label %typeswitch.body-52, label %typeswitch.next-51 | |
typeswitch.body-38: | |
%201 = bitcast %..rawptr %70 to %Type_Info_Procedure* | |
%202 = load %Type_Info_Procedure, %Type_Info_Procedure* %201, align 8 | |
store %Type_Info_Procedure %202, %Type_Info_Procedure* %21 | |
%203 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %203, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$175, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%204 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0 | |
%205 = load %Type_Info*, %Type_Info** %204, align 8 | |
%206 = icmp eq %Type_Info* %205, zeroinitializer | |
%207 = zext i1 %206 to i8 | |
%208 = trunc i8 %207 to i1 | |
br i1 %208, label %if.then-39, label %if.else-40 | |
if.then-39: | |
%209 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %209, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$176, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-48 | |
if.else-40: | |
; t | |
; SelectorExpr | |
; SelectorExpr | |
%210 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 0 | |
%211 = load %Type_Info*, %Type_Info** %210, align 8 | |
%212 = getelementptr inbounds %Type_Info, %Type_Info* %211, i64 0 | |
%213 = getelementptr inbounds %Type_Info, %Type_Info* %212, i64 0, i32 2 | |
%214 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %213, align 8 | |
; cast - union_cast | |
%215 = bitcast {%Type_Info_Tuple, i8}* %23 to %..rawptr | |
%216 = call %..rawptr @__mem_zero(%..rawptr %215, i64 40) | |
store {%Type_Info_Tuple, i8} zeroinitializer, {%Type_Info_Tuple, i8}* %23 | |
%217 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %213, i64 0, i32 2 ; UnionTagPtr | |
%218 = load i8, i8* %217, align 1 | |
%219 = icmp eq i8 %218, 14 | |
br i1 %219, label %union_cast.ok-41, label %union_cast.end-42 | |
union_cast.ok-41: | |
%220 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0 | |
%221 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1 | |
%222 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %213 to %Type_Info_Tuple* | |
%223 = load %Type_Info_Tuple, %Type_Info_Tuple* %222, align 8 | |
store %Type_Info_Tuple %223, %Type_Info_Tuple* %220 | |
store i8 1, i8* %221 | |
br label %union_cast.end-42 | |
union_cast.end-42: | |
%224 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 1 | |
%225 = load i8, i8* %224, align 1 | |
%226 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 24 | |
%227 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 46 | |
%228 = trunc i8 %225 to i1 | |
call void @__type_assertion_check(i1 %228, %..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$177, i64 0, i32 0), i64 46}, i64 205, i64 21, %Type_Info* %226, %Type_Info* %227) | |
%229 = getelementptr inbounds {%Type_Info_Tuple, i8}, {%Type_Info_Tuple, i8}* %23, i64 0, i32 0 | |
%230 = load %Type_Info_Tuple, %Type_Info_Tuple* %229, align 8 | |
store %Type_Info_Tuple %230, %Type_Info_Tuple* %22 | |
%231 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %231, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$178, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; t | |
%232 = bitcast %Type_Info** %24 to %..rawptr | |
%233 = call %..rawptr @__mem_zero(%..rawptr %232, i64 8) | |
store %Type_Info* zeroinitializer, %Type_Info** %24 | |
; i | |
%234 = bitcast i64* %25 to %..rawptr | |
%235 = call %..rawptr @__mem_zero(%..rawptr %234, i64 8) | |
store i64 zeroinitializer, i64* %25 | |
; SelectorExpr | |
%236 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %22, i64 0, i32 0 | |
%237 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %236, align 8 | |
%238 = bitcast i64* %26 to %..rawptr | |
%239 = call %..rawptr @__mem_zero(%..rawptr %238, i64 8) | |
store i64 zeroinitializer, i64* %26 | |
%240 = extractvalue {%Type_Info**, i64} %237, 1 | |
store i64 %240, i64* %26 | |
%241 = bitcast i64* %27 to %..rawptr | |
%242 = call %..rawptr @__mem_zero(%..rawptr %241, i64 8) | |
store i64 zeroinitializer, i64* %27 | |
store i64 -1, i64* %27 | |
br label %for.index.loop-43 | |
for.index.loop-43: | |
%243 = load i64, i64* %27, align 8 | |
%244 = add i64 %243, 1 | |
store i64 %244, i64* %27 | |
%245 = load i64, i64* %26, align 8 | |
%246 = icmp slt i64 %244, %245 | |
br i1 %246, label %for.index.body-44, label %for.index.done-47 | |
for.index.body-44: | |
%247 = load i64, i64* %27, align 8 | |
%248 = extractvalue {%Type_Info**, i64} %237, 0 | |
%249 = getelementptr inbounds %Type_Info*, %Type_Info** %248, i64 %247 | |
%250 = load %Type_Info*, %Type_Info** %249, align 8 | |
store %Type_Info* %250, %Type_Info** %24 | |
store i64 %247, i64* %25 | |
; IfStmt | |
%251 = load i64, i64* %25, align 8 | |
%252 = icmp sgt i64 %251, 0 | |
%253 = zext i1 %252 to i8 | |
%254 = trunc i8 %253 to i1 | |
br i1 %254, label %if.then-45, label %if.done-46 | |
if.then-45: | |
%255 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %255, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$179, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-46 | |
if.done-46: | |
%256 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%257 = load %Type_Info*, %Type_Info** %24, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %256, %Type_Info* %257, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-43 | |
for.index.done-47: | |
%258 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %258, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$17a, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-48 | |
if.done-48: | |
; IfStmt | |
; SelectorExpr | |
%259 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1 | |
%260 = load %Type_Info*, %Type_Info** %259, align 8 | |
%261 = icmp ne %Type_Info* %260, zeroinitializer | |
%262 = zext i1 %261 to i8 | |
%263 = trunc i8 %262 to i1 | |
br i1 %263, label %if.then-49, label %if.done-50 | |
if.then-49: | |
%264 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %264, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$17b, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
%265 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%266 = getelementptr inbounds %Type_Info_Procedure, %Type_Info_Procedure* %21, i64 0, i32 1 | |
%267 = load %Type_Info*, %Type_Info** %266, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %265, %Type_Info* %267, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-50 | |
if.done-50: | |
br label %typeswitch.done-110 | |
typeswitch.next-51: | |
%268 = icmp eq i8 %69, 11 | |
br i1 %268, label %typeswitch.body-65, label %typeswitch.next-64 | |
typeswitch.body-52: | |
%269 = bitcast %..rawptr %70 to %Type_Info_Tuple* | |
%270 = load %Type_Info_Tuple, %Type_Info_Tuple* %269, align 8 | |
store %Type_Info_Tuple %270, %Type_Info_Tuple* %28 | |
; count | |
; SelectorExpr | |
%271 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1 | |
%272 = load {%..string*, i64}, {%..string*, i64}* %271, align 8 | |
%273 = extractvalue {%..string*, i64} %272, 1 | |
store i64 %273, i64* %29 | |
; IfStmt | |
%274 = load i64, i64* %29, align 8 | |
%275 = icmp ne i64 %274, 1 | |
%276 = zext i1 %275 to i8 | |
%277 = trunc i8 %276 to i1 | |
br i1 %277, label %if.then-53, label %if.done-54 | |
if.then-53: | |
%278 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %278, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$17c, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-54 | |
if.done-54: | |
; RangeStmt | |
; name | |
%279 = bitcast %..string* %30 to %..rawptr | |
%280 = call %..rawptr @__mem_zero(%..rawptr %279, i64 16) | |
store %..string zeroinitializer, %..string* %30 | |
; i | |
%281 = bitcast i64* %31 to %..rawptr | |
%282 = call %..rawptr @__mem_zero(%..rawptr %281, i64 8) | |
store i64 zeroinitializer, i64* %31 | |
; SelectorExpr | |
%283 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 1 | |
%284 = load {%..string*, i64}, {%..string*, i64}* %283, align 8 | |
%285 = bitcast i64* %32 to %..rawptr | |
%286 = call %..rawptr @__mem_zero(%..rawptr %285, i64 8) | |
store i64 zeroinitializer, i64* %32 | |
%287 = extractvalue {%..string*, i64} %284, 1 | |
store i64 %287, i64* %32 | |
%288 = bitcast i64* %33 to %..rawptr | |
%289 = call %..rawptr @__mem_zero(%..rawptr %288, i64 8) | |
store i64 zeroinitializer, i64* %33 | |
store i64 -1, i64* %33 | |
br label %for.index.loop-55 | |
for.index.loop-55: | |
%290 = load i64, i64* %33, align 8 | |
%291 = add i64 %290, 1 | |
store i64 %291, i64* %33 | |
%292 = load i64, i64* %32, align 8 | |
%293 = icmp slt i64 %291, %292 | |
br i1 %293, label %for.index.body-56, label %for.index.done-61 | |
for.index.body-56: | |
%294 = load i64, i64* %33, align 8 | |
%295 = extractvalue {%..string*, i64} %284, 0 | |
%296 = getelementptr inbounds %..string, %..string* %295, i64 %294 | |
%297 = load %..string, %..string* %296, align 8 | |
store %..string %297, %..string* %30 | |
store i64 %294, i64* %31 | |
; IfStmt | |
%298 = load i64, i64* %31, align 8 | |
%299 = icmp sgt i64 %298, 0 | |
%300 = zext i1 %299 to i8 | |
%301 = trunc i8 %300 to i1 | |
br i1 %301, label %if.then-57, label %if.done-58 | |
if.then-57: | |
%302 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %302, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$17d, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-58 | |
if.done-58: | |
; t | |
; IndexExpr | |
; SelectorExpr | |
%303 = getelementptr inbounds %Type_Info_Tuple, %Type_Info_Tuple* %28, i64 0, i32 0 | |
%304 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %303, align 8 | |
%305 = extractvalue {%Type_Info**, i64} %304, 0 | |
%306 = load i64, i64* %31, align 8 | |
%307 = extractvalue {%Type_Info**, i64} %304, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$17e, i64 0, i32 0), i64 46}, i64 223, i64 20, i64 %306, i64 %307) | |
%308 = getelementptr inbounds %Type_Info*, %Type_Info** %305, i64 %306 | |
%309 = load %Type_Info*, %Type_Info** %308, align 8 | |
store %Type_Info* %309, %Type_Info** %34 | |
; IfStmt | |
%310 = load %..string, %..string* %30, align 8 | |
%311 = extractvalue %..string %310, 1 | |
%312 = icmp sgt i64 %311, 0 | |
%313 = zext i1 %312 to i8 | |
%314 = trunc i8 %313 to i1 | |
br i1 %314, label %if.then-59, label %if.done-60 | |
if.then-59: | |
%315 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%316 = load %..string, %..string* %30, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %315, %..string %316, %Context* noalias nonnull %__.context_ptr) | |
%317 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %317, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$17f, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-60 | |
if.done-60: | |
%318 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%319 = load %Type_Info*, %Type_Info** %34, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %318, %Type_Info* %319, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-55 | |
for.index.done-61: | |
; IfStmt | |
%320 = load i64, i64* %29, align 8 | |
%321 = icmp ne i64 %320, 1 | |
%322 = zext i1 %321 to i8 | |
%323 = trunc i8 %322 to i1 | |
br i1 %323, label %if.then-62, label %if.done-63 | |
if.then-62: | |
%324 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %324, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$180, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-63 | |
if.done-63: | |
br label %typeswitch.done-110 | |
typeswitch.next-64: | |
%325 = icmp eq i8 %69, 12 | |
br i1 %325, label %typeswitch.body-67, label %typeswitch.next-66 | |
typeswitch.body-65: | |
%326 = bitcast %..rawptr %70 to %Type_Info_Array* | |
%327 = load %Type_Info_Array, %Type_Info_Array* %326, align 8 | |
store %Type_Info_Array %327, %Type_Info_Array* %35 | |
%328 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %328, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$181, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
%329 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%330 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 2 | |
%331 = load i64, i64* %330, align 8 | |
%332 = bitcast i64 %331 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %329, i64 %332, i64 10, %Context* noalias nonnull %__.context_ptr) | |
%333 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %333, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$182, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
%334 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%335 = getelementptr inbounds %Type_Info_Array, %Type_Info_Array* %35, i64 0, i32 0 | |
%336 = load %Type_Info*, %Type_Info** %335, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %334, %Type_Info* %336, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-66: | |
%337 = icmp eq i8 %69, 13 | |
br i1 %337, label %typeswitch.body-69, label %typeswitch.next-68 | |
typeswitch.body-67: | |
%338 = bitcast %..rawptr %70 to %Type_Info_Dynamic_Array* | |
%339 = load %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %338, align 8 | |
store %Type_Info_Dynamic_Array %339, %Type_Info_Dynamic_Array* %36 | |
%340 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %340, %..string {i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__str$183, i64 0, i32 0), i64 9}, %Context* noalias nonnull %__.context_ptr) | |
%341 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%342 = getelementptr inbounds %Type_Info_Dynamic_Array, %Type_Info_Dynamic_Array* %36, i64 0, i32 0 | |
%343 = load %Type_Info*, %Type_Info** %342, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %341, %Type_Info* %343, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-68: | |
%344 = icmp eq i8 %69, 18 | |
br i1 %344, label %typeswitch.body-71, label %typeswitch.next-70 | |
typeswitch.body-69: | |
%345 = bitcast %..rawptr %70 to %Type_Info_Slice* | |
%346 = load %Type_Info_Slice, %Type_Info_Slice* %345, align 8 | |
store %Type_Info_Slice %346, %Type_Info_Slice* %37 | |
%347 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %347, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$184, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%348 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%349 = getelementptr inbounds %Type_Info_Slice, %Type_Info_Slice* %37, i64 0, i32 0 | |
%350 = load %Type_Info*, %Type_Info** %349, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %348, %Type_Info* %350, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-70: | |
%351 = icmp eq i8 %69, 15 | |
br i1 %351, label %typeswitch.body-73, label %typeswitch.next-72 | |
typeswitch.body-71: | |
%352 = bitcast %..rawptr %70 to %Type_Info_Map* | |
%353 = load %Type_Info_Map, %Type_Info_Map* %352, align 8 | |
store %Type_Info_Map %353, %Type_Info_Map* %38 | |
%354 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %354, %..string {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$185, i64 0, i32 0), i64 4}, %Context* noalias nonnull %__.context_ptr) | |
%355 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%356 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 0 | |
%357 = load %Type_Info*, %Type_Info** %356, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %355, %Type_Info* %357, %Context* noalias nonnull %__.context_ptr) | |
%358 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %358, i8 93, %Context* noalias nonnull %__.context_ptr) | |
%359 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%360 = getelementptr inbounds %Type_Info_Map, %Type_Info_Map* %38, i64 0, i32 1 | |
%361 = load %Type_Info*, %Type_Info** %360, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %359, %Type_Info* %361, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-72: | |
%362 = icmp eq i8 %69, 16 | |
br i1 %362, label %typeswitch.body-86, label %typeswitch.next-85 | |
typeswitch.body-73: | |
%363 = bitcast %..rawptr %70 to %Type_Info_Struct* | |
%364 = load %Type_Info_Struct, %Type_Info_Struct* %363, align 8 | |
store %Type_Info_Struct %364, %Type_Info_Struct* %39 | |
%365 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %365, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$186, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%366 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 4 | |
%367 = load i8, i8* %366, align 1 | |
%368 = trunc i8 %367 to i1 | |
br i1 %368, label %if.then-74, label %if.done-75 | |
if.then-74: | |
%369 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %369, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$187, i64 0, i32 0), i64 8}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-75 | |
if.done-75: | |
; IfStmt | |
; SelectorExpr | |
%370 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 5 | |
%371 = load i8, i8* %370, align 1 | |
%372 = trunc i8 %371 to i1 | |
br i1 %372, label %if.then-76, label %if.done-77 | |
if.then-76: | |
%373 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %373, %..string {i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__str$188, i64 0, i32 0), i64 11}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-77 | |
if.done-77: | |
; IfStmt | |
; SelectorExpr | |
%374 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 6 | |
%375 = load i8, i8* %374, align 1 | |
%376 = trunc i8 %375 to i1 | |
br i1 %376, label %if.then-78, label %if.done-79 | |
if.then-78: | |
%377 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %377, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$189, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
%378 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%379 = load %Type_Info*, %Type_Info** %1, align 8 | |
%380 = getelementptr inbounds %Type_Info, %Type_Info* %379, i64 0 | |
%381 = getelementptr inbounds %Type_Info, %Type_Info* %380, i64 0, i32 1 | |
%382 = load i64, i64* %381, align 8 | |
%383 = bitcast i64 %382 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %378, i64 %383, i64 10, %Context* noalias nonnull %__.context_ptr) | |
%384 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %384, i8 32, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-79 | |
if.done-79: | |
%385 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %385, i8 123, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; name | |
%386 = bitcast %..string* %40 to %..rawptr | |
%387 = call %..rawptr @__mem_zero(%..rawptr %386, i64 16) | |
store %..string zeroinitializer, %..string* %40 | |
; i | |
%388 = bitcast i64* %41 to %..rawptr | |
%389 = call %..rawptr @__mem_zero(%..rawptr %388, i64 8) | |
store i64 zeroinitializer, i64* %41 | |
; SelectorExpr | |
%390 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 1 | |
%391 = load {%..string*, i64}, {%..string*, i64}* %390, align 8 | |
%392 = bitcast i64* %42 to %..rawptr | |
%393 = call %..rawptr @__mem_zero(%..rawptr %392, i64 8) | |
store i64 zeroinitializer, i64* %42 | |
%394 = extractvalue {%..string*, i64} %391, 1 | |
store i64 %394, i64* %42 | |
%395 = bitcast i64* %43 to %..rawptr | |
%396 = call %..rawptr @__mem_zero(%..rawptr %395, i64 8) | |
store i64 zeroinitializer, i64* %43 | |
store i64 -1, i64* %43 | |
br label %for.index.loop-80 | |
for.index.loop-80: | |
%397 = load i64, i64* %43, align 8 | |
%398 = add i64 %397, 1 | |
store i64 %398, i64* %43 | |
%399 = load i64, i64* %42, align 8 | |
%400 = icmp slt i64 %398, %399 | |
br i1 %400, label %for.index.body-81, label %for.index.done-84 | |
for.index.body-81: | |
%401 = load i64, i64* %43, align 8 | |
%402 = extractvalue {%..string*, i64} %391, 0 | |
%403 = getelementptr inbounds %..string, %..string* %402, i64 %401 | |
%404 = load %..string, %..string* %403, align 8 | |
store %..string %404, %..string* %40 | |
store i64 %401, i64* %41 | |
; IfStmt | |
%405 = load i64, i64* %41, align 8 | |
%406 = icmp sgt i64 %405, 0 | |
%407 = zext i1 %406 to i8 | |
%408 = trunc i8 %407 to i1 | |
br i1 %408, label %if.then-82, label %if.done-83 | |
if.then-82: | |
%409 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %409, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$18a, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-83 | |
if.done-83: | |
%410 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%411 = load %..string, %..string* %40, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %410, %..string %411, %Context* noalias nonnull %__.context_ptr) | |
%412 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %412, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$18b, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%413 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; IndexExpr | |
; SelectorExpr | |
%414 = getelementptr inbounds %Type_Info_Struct, %Type_Info_Struct* %39, i64 0, i32 0 | |
%415 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %414, align 8 | |
%416 = extractvalue {%Type_Info**, i64} %415, 0 | |
%417 = load i64, i64* %41, align 8 | |
%418 = extractvalue {%Type_Info**, i64} %415, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$18c, i64 0, i32 0), i64 46}, i64 265, i64 31, i64 %417, i64 %418) | |
%419 = getelementptr inbounds %Type_Info*, %Type_Info** %416, i64 %417 | |
%420 = load %Type_Info*, %Type_Info** %419, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %413, %Type_Info* %420, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-80 | |
for.index.done-84: | |
%421 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %421, i8 125, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-85: | |
%422 = icmp eq i8 %69, 17 | |
br i1 %422, label %typeswitch.body-93, label %typeswitch.next-92 | |
typeswitch.body-86: | |
%423 = bitcast %..rawptr %70 to %Type_Info_Union* | |
%424 = load %Type_Info_Union, %Type_Info_Union* %423, align 8 | |
store %Type_Info_Union %424, %Type_Info_Union* %44 | |
%425 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %425, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$18d, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; variant | |
%426 = bitcast %Type_Info** %45 to %..rawptr | |
%427 = call %..rawptr @__mem_zero(%..rawptr %426, i64 8) | |
store %Type_Info* zeroinitializer, %Type_Info** %45 | |
; i | |
%428 = bitcast i64* %46 to %..rawptr | |
%429 = call %..rawptr @__mem_zero(%..rawptr %428, i64 8) | |
store i64 zeroinitializer, i64* %46 | |
; SelectorExpr | |
%430 = getelementptr inbounds %Type_Info_Union, %Type_Info_Union* %44, i64 0, i32 0 | |
%431 = load {%Type_Info**, i64}, {%Type_Info**, i64}* %430, align 8 | |
%432 = bitcast i64* %47 to %..rawptr | |
%433 = call %..rawptr @__mem_zero(%..rawptr %432, i64 8) | |
store i64 zeroinitializer, i64* %47 | |
%434 = extractvalue {%Type_Info**, i64} %431, 1 | |
store i64 %434, i64* %47 | |
%435 = bitcast i64* %48 to %..rawptr | |
%436 = call %..rawptr @__mem_zero(%..rawptr %435, i64 8) | |
store i64 zeroinitializer, i64* %48 | |
store i64 -1, i64* %48 | |
br label %for.index.loop-87 | |
for.index.loop-87: | |
%437 = load i64, i64* %48, align 8 | |
%438 = add i64 %437, 1 | |
store i64 %438, i64* %48 | |
%439 = load i64, i64* %47, align 8 | |
%440 = icmp slt i64 %438, %439 | |
br i1 %440, label %for.index.body-88, label %for.index.done-91 | |
for.index.body-88: | |
%441 = load i64, i64* %48, align 8 | |
%442 = extractvalue {%Type_Info**, i64} %431, 0 | |
%443 = getelementptr inbounds %Type_Info*, %Type_Info** %442, i64 %441 | |
%444 = load %Type_Info*, %Type_Info** %443, align 8 | |
store %Type_Info* %444, %Type_Info** %45 | |
store i64 %441, i64* %46 | |
; IfStmt | |
%445 = load i64, i64* %46, align 8 | |
%446 = icmp sgt i64 %445, 0 | |
%447 = zext i1 %446 to i8 | |
%448 = trunc i8 %447 to i1 | |
br i1 %448, label %if.then-89, label %if.done-90 | |
if.then-89: | |
%449 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %449, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$18e, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-90 | |
if.done-90: | |
%450 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%451 = load %Type_Info*, %Type_Info** %45, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %450, %Type_Info* %451, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-87 | |
for.index.done-91: | |
%452 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %452, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$18f, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-92: | |
%453 = icmp eq i8 %69, 19 | |
br i1 %453, label %typeswitch.body-102, label %typeswitch.next-101 | |
typeswitch.body-93: | |
%454 = bitcast %..rawptr %70 to %Type_Info_Enum* | |
%455 = load %Type_Info_Enum, %Type_Info_Enum* %454, align 8 | |
store %Type_Info_Enum %455, %Type_Info_Enum* %49 | |
%456 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %456, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$190, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr) | |
%457 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%458 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 0 | |
%459 = load %Type_Info*, %Type_Info** %458, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %457, %Type_Info* %459, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%460 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 3 | |
%461 = load i8, i8* %460, align 1 | |
%462 = trunc i8 %461 to i1 | |
br i1 %462, label %if.then-94, label %if.done-95 | |
if.then-94: | |
%463 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %463, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$191, i64 0, i32 0), i64 8}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-95 | |
if.done-95: | |
%464 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %464, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$192, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; name | |
%465 = bitcast %..string* %50 to %..rawptr | |
%466 = call %..rawptr @__mem_zero(%..rawptr %465, i64 16) | |
store %..string zeroinitializer, %..string* %50 | |
; i | |
%467 = bitcast i64* %51 to %..rawptr | |
%468 = call %..rawptr @__mem_zero(%..rawptr %467, i64 8) | |
store i64 zeroinitializer, i64* %51 | |
; SelectorExpr | |
%469 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %49, i64 0, i32 1 | |
%470 = load {%..string*, i64}, {%..string*, i64}* %469, align 8 | |
%471 = bitcast i64* %52 to %..rawptr | |
%472 = call %..rawptr @__mem_zero(%..rawptr %471, i64 8) | |
store i64 zeroinitializer, i64* %52 | |
%473 = extractvalue {%..string*, i64} %470, 1 | |
store i64 %473, i64* %52 | |
%474 = bitcast i64* %53 to %..rawptr | |
%475 = call %..rawptr @__mem_zero(%..rawptr %474, i64 8) | |
store i64 zeroinitializer, i64* %53 | |
store i64 -1, i64* %53 | |
br label %for.index.loop-96 | |
for.index.loop-96: | |
%476 = load i64, i64* %53, align 8 | |
%477 = add i64 %476, 1 | |
store i64 %477, i64* %53 | |
%478 = load i64, i64* %52, align 8 | |
%479 = icmp slt i64 %477, %478 | |
br i1 %479, label %for.index.body-97, label %for.index.done-100 | |
for.index.body-97: | |
%480 = load i64, i64* %53, align 8 | |
%481 = extractvalue {%..string*, i64} %470, 0 | |
%482 = getelementptr inbounds %..string, %..string* %481, i64 %480 | |
%483 = load %..string, %..string* %482, align 8 | |
store %..string %483, %..string* %50 | |
store i64 %480, i64* %51 | |
; IfStmt | |
%484 = load i64, i64* %51, align 8 | |
%485 = icmp sgt i64 %484, 0 | |
%486 = zext i1 %485 to i8 | |
%487 = trunc i8 %486 to i1 | |
br i1 %487, label %if.then-98, label %if.done-99 | |
if.then-98: | |
%488 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %488, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$193, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-99 | |
if.done-99: | |
%489 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%490 = load %..string, %..string* %50, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %489, %..string %490, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-96 | |
for.index.done-100: | |
%491 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %491, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$194, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.next-101: | |
br label %typeswitch.done-110 | |
typeswitch.body-102: | |
%492 = bitcast %..rawptr %70 to %Type_Info_Bit_Field* | |
%493 = load %Type_Info_Bit_Field, %Type_Info_Bit_Field* %492, align 8 | |
store %Type_Info_Bit_Field %493, %Type_Info_Bit_Field* %54 | |
%494 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %494, %..string {i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__str$195, i64 0, i32 0), i64 10}, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%495 = load %Type_Info*, %Type_Info** %1, align 8 | |
%496 = getelementptr inbounds %Type_Info, %Type_Info* %495, i64 0 | |
%497 = getelementptr inbounds %Type_Info, %Type_Info* %496, i64 0, i32 1 | |
%498 = load i64, i64* %497, align 8 | |
%499 = icmp ne i64 %498, 1 | |
%500 = zext i1 %499 to i8 | |
%501 = trunc i8 %500 to i1 | |
br i1 %501, label %if.then-103, label %if.done-104 | |
if.then-103: | |
%502 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %502, %..string {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__str$196, i64 0, i32 0), i64 7}, %Context* noalias nonnull %__.context_ptr) | |
%503 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; SelectorExpr | |
%504 = load %Type_Info*, %Type_Info** %1, align 8 | |
%505 = getelementptr inbounds %Type_Info, %Type_Info* %504, i64 0 | |
%506 = getelementptr inbounds %Type_Info, %Type_Info* %505, i64 0, i32 1 | |
%507 = load i64, i64* %506, align 8 | |
%508 = bitcast i64 %507 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %503, i64 %508, i64 10, %Context* noalias nonnull %__.context_ptr) | |
%509 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %509, i32 32, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-104 | |
if.done-104: | |
%510 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %510, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$197, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
; RangeStmt | |
; name | |
%511 = bitcast %..string* %55 to %..rawptr | |
%512 = call %..rawptr @__mem_zero(%..rawptr %511, i64 16) | |
store %..string zeroinitializer, %..string* %55 | |
; i | |
%513 = bitcast i64* %56 to %..rawptr | |
%514 = call %..rawptr @__mem_zero(%..rawptr %513, i64 8) | |
store i64 zeroinitializer, i64* %56 | |
; SelectorExpr | |
%515 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 0 | |
%516 = load {%..string*, i64}, {%..string*, i64}* %515, align 8 | |
%517 = bitcast i64* %57 to %..rawptr | |
%518 = call %..rawptr @__mem_zero(%..rawptr %517, i64 8) | |
store i64 zeroinitializer, i64* %57 | |
%519 = extractvalue {%..string*, i64} %516, 1 | |
store i64 %519, i64* %57 | |
%520 = bitcast i64* %58 to %..rawptr | |
%521 = call %..rawptr @__mem_zero(%..rawptr %520, i64 8) | |
store i64 zeroinitializer, i64* %58 | |
store i64 -1, i64* %58 | |
br label %for.index.loop-105 | |
for.index.loop-105: | |
%522 = load i64, i64* %58, align 8 | |
%523 = add i64 %522, 1 | |
store i64 %523, i64* %58 | |
%524 = load i64, i64* %57, align 8 | |
%525 = icmp slt i64 %523, %524 | |
br i1 %525, label %for.index.body-106, label %for.index.done-109 | |
for.index.body-106: | |
%526 = load i64, i64* %58, align 8 | |
%527 = extractvalue {%..string*, i64} %516, 0 | |
%528 = getelementptr inbounds %..string, %..string* %527, i64 %526 | |
%529 = load %..string, %..string* %528, align 8 | |
store %..string %529, %..string* %55 | |
store i64 %526, i64* %56 | |
; IfStmt | |
%530 = load i64, i64* %56, align 8 | |
%531 = icmp sgt i64 %530, 0 | |
%532 = zext i1 %531 to i8 | |
%533 = trunc i8 %532 to i1 | |
br i1 %533, label %if.then-107, label %if.done-108 | |
if.then-107: | |
%534 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %534, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$198, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-108 | |
if.done-108: | |
%535 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
%536 = load %..string, %..string* %55, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %535, %..string %536, %Context* noalias nonnull %__.context_ptr) | |
%537 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %537, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$199, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%538 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
; IndexExpr | |
; SelectorExpr | |
%539 = getelementptr inbounds %Type_Info_Bit_Field, %Type_Info_Bit_Field* %54, i64 0, i32 1 | |
%540 = load {i32*, i64}, {i32*, i64}* %539, align 8 | |
%541 = extractvalue {i32*, i64} %540, 0 | |
%542 = load i64, i64* %56, align 8 | |
%543 = extractvalue {i32*, i64} %540, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19a, i64 0, i32 0), i64 46}, i64 300, i64 33, i64 %542, i64 %543) | |
%544 = getelementptr inbounds i32, i32* %541, i64 %542 | |
%545 = load i32, i32* %544, align 4 | |
%546 = sext i32 %545 to i64 | |
call void @fmt-11.write_i64({i8*, i64, i64, %Allocator}* %538, i64 %546, i64 10, %Context* noalias nonnull %__.context_ptr) | |
br label %for.index.loop-105 | |
for.index.done-109: | |
%547 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %0, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %547, %..string {i8* getelementptr inbounds ([2 x i8], [2 x i8]* @__str$19b, i64 0, i32 0), i64 1}, %Context* noalias nonnull %__.context_ptr) | |
br label %typeswitch.done-110 | |
typeswitch.done-110: | |
ret void | |
} | |
define {i64, i64, i8} @fmt-11._parse_int(%..string %s, i64 %offset, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i8, align 16 | |
%5 = alloca i8, align 16 | |
%6 = alloca {i64, i64, i8}, align 16 | |
store %..string %s, %..string* %0 | |
store i64 %offset, i64* %1 | |
%7 = bitcast i64* %2 to %..rawptr | |
%8 = call %..rawptr @__mem_zero(%..rawptr %7, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
%9 = bitcast i64* %3 to %..rawptr | |
%10 = call %..rawptr @__mem_zero(%..rawptr %9, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%11 = bitcast i8* %4 to %..rawptr | |
%12 = call %..rawptr @__mem_zero(%..rawptr %11, i64 1) | |
store i8 zeroinitializer, i8* %4 | |
; AssignStmt | |
%13 = load i64, i64* %1, align 8 | |
store i64 %13, i64* %3 | |
; ForStmt | |
br label %for.loop-1 | |
for.loop-1: | |
%14 = load i64, i64* %3, align 8 | |
%15 = load %..string, %..string* %0, align 8 | |
%16 = extractvalue %..string %15, 1 | |
%17 = icmp sle i64 %14, %16 | |
%18 = zext i1 %17 to i8 | |
%19 = trunc i8 %18 to i1 | |
br i1 %19, label %for.body-2, label %for.done-5 | |
for.body-2: | |
; c | |
; IndexExpr | |
%20 = load %..string, %..string* %0, align 8 | |
%21 = extractvalue %..string %20, 0 | |
%22 = extractvalue %..string %20, 1 | |
%23 = load i64, i64* %3, align 8 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19c, i64 0, i32 0), i64 46}, i64 312, i64 10, i64 %23, i64 %22) | |
%24 = getelementptr inbounds i8, i8* %21, i64 %23 | |
%25 = load i8, i8* %24, align 1 | |
store i8 %25, i8* %5 | |
; IfStmt | |
%26 = load i8, i8* %5, align 1 | |
%27 = call i8 @fmt-11._parse_int.is_digit-0(i8 %26, %Context* noalias nonnull %__.context_ptr) | |
%28 = trunc i8 %27 to i1 | |
br i1 %28, label %if.done-4, label %if.then-3 | |
if.then-3: | |
; break | |
br label %for.done-5 | |
if.done-4: | |
; AssignStmt | |
%29 = load i64, i64* %3, align 8 | |
%30 = add i64 %29, 1 | |
store i64 %30, i64* %3 | |
; AssignStmt | |
%31 = load i64, i64* %2, align 8 | |
%32 = mul i64 %31, 10 | |
store i64 %32, i64* %2 | |
; AssignStmt | |
%33 = load i8, i8* %5, align 1 | |
%34 = zext i8 %33 to i64 | |
%35 = sub i64 %34, 48 | |
%36 = load i64, i64* %2, align 8 | |
%37 = add i64 %36, %35 | |
store i64 %37, i64* %2 | |
br label %for.loop-1 | |
for.done-5: | |
; AssignStmt | |
%38 = load i64, i64* %3, align 8 | |
%39 = load i64, i64* %1, align 8 | |
%40 = icmp sgt i64 %38, %39 | |
%41 = zext i1 %40 to i8 | |
store i8 %41, i8* %4 | |
; ReturnStmt | |
%42 = load i64, i64* %2, align 8 | |
%43 = load i64, i64* %3, align 8 | |
%44 = load i8, i8* %4, align 1 | |
%45 = bitcast {i64, i64, i8}* %6 to %..rawptr | |
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %6 | |
%47 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %6, i64 0, i32 0 | |
store i64 %42, i64* %47 | |
%48 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %6, i64 0, i32 1 | |
store i64 %43, i64* %48 | |
%49 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %6, i64 0, i32 2 | |
store i8 %44, i8* %49 | |
%50 = load {i64, i64, i8}, {i64, i64, i8}* %6, align 8 | |
ret {i64, i64, i8} %50 | |
} | |
define i8 @fmt-11._parse_int.is_digit-0(i8 %r, %Context* noalias nonnull %__.context_ptr) alwaysinline #1 { | |
decls-0: | |
%0 = alloca i8, align 16 | |
store i8 %r, i8* %0 | |
; ReturnStmt | |
%1 = load i8, i8* %0, align 1 | |
%2 = icmp ule i8 48, %1 | |
%3 = zext i1 %2 to i8 | |
%4 = load i8, i8* %0, align 1 | |
%5 = icmp ule i8 48, %4 | |
%6 = zext i1 %5 to i8 | |
%7 = trunc i8 %6 to i1 | |
br i1 %7, label %logical.cmp.rhs-1, label %logical.cmp.done-2 | |
logical.cmp.rhs-1: | |
%8 = load i8, i8* %0, align 1 | |
%9 = icmp ule i8 %8, 57 | |
%10 = zext i1 %9 to i8 | |
br label %logical.cmp.done-2 | |
logical.cmp.done-2: | |
%11 = phi i8 [ 0, %decls-0 ], [ %10, %logical.cmp.rhs-1 ] | |
ret i8 %11 | |
} | |
define {i64, i64, i8} @fmt-11._arg_number(%fmt-11.Fmt_Info* %fi, i64 %arg_index, %..string %format, i64 %offset, i64 %arg_count, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca %..string, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca i8, align 16 | |
%8 = alloca {i64, i64, i8}, align 16 | |
%9 = alloca i64, align 16 | |
%10 = alloca %..string, align 16 | |
%11 = alloca {i64, i64, i8}, align 16 | |
%12 = alloca {i64, i64, i8}, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store i64 %arg_index, i64* %1 | |
store %..string %format, %..string* %2 | |
store i64 %offset, i64* %3 | |
store i64 %arg_count, i64* %4 | |
%13 = bitcast i64* %5 to %..rawptr | |
%14 = call %..rawptr @__mem_zero(%..rawptr %13, i64 8) | |
store i64 zeroinitializer, i64* %5 | |
%15 = bitcast i64* %6 to %..rawptr | |
%16 = call %..rawptr @__mem_zero(%..rawptr %15, i64 8) | |
store i64 zeroinitializer, i64* %6 | |
%17 = bitcast i8* %7 to %..rawptr | |
%18 = call %..rawptr @__mem_zero(%..rawptr %17, i64 1) | |
store i8 zeroinitializer, i8* %7 | |
; IfStmt | |
%19 = load %..string, %..string* %2, align 8 | |
%20 = extractvalue %..string %19, 1 | |
%21 = load i64, i64* %3, align 8 | |
%22 = icmp sle i64 %20, %21 | |
%23 = zext i1 %22 to i8 | |
%24 = trunc i8 %23 to i1 | |
br i1 %24, label %if.then-2, label %cmp.or-1 | |
cmp.or-1: | |
; IndexExpr | |
%25 = load %..string, %..string* %2, align 8 | |
%26 = extractvalue %..string %25, 0 | |
%27 = extractvalue %..string %25, 1 | |
%28 = load i64, i64* %3, align 8 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19d, i64 0, i32 0), i64 46}, i64 341, i64 37, i64 %28, i64 %27) | |
%29 = getelementptr inbounds i8, i8* %26, i64 %28 | |
%30 = load i8, i8* %29, align 1 | |
%31 = icmp ne i8 %30, 91 | |
%32 = zext i1 %31 to i8 | |
%33 = trunc i8 %32 to i1 | |
br i1 %33, label %if.then-2, label %if.done-3 | |
if.then-2: | |
; ReturnStmt | |
%34 = load i64, i64* %1, align 8 | |
%35 = load i64, i64* %3, align 8 | |
%36 = bitcast {i64, i64, i8}* %8 to %..rawptr | |
%37 = call %..rawptr @__mem_zero(%..rawptr %36, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %8 | |
%38 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 0 | |
store i64 %34, i64* %38 | |
%39 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 1 | |
store i64 %35, i64* %39 | |
%40 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 2 | |
store i8 0, i8* %40 | |
%41 = load {i64, i64, i8}, {i64, i64, i8}* %8, align 8 | |
ret {i64, i64, i8} %41 | |
if.done-3: | |
; AssignStmt | |
; SelectorExpr | |
%42 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%43 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %42, i64 0 | |
%44 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %43, i64 0, i32 10 | |
store i8 1, i8* %44 | |
; width | |
%45 = bitcast i64* %9 to %..rawptr | |
%46 = call %..rawptr @__mem_zero(%..rawptr %45, i64 8) | |
store i64 zeroinitializer, i64* %9 | |
; AssignStmt | |
; SliceExpr | |
%47 = load i64, i64* %3, align 8 | |
%48 = load %..string, %..string* %2, align 8 | |
%49 = extractvalue %..string %48, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19e, i64 0, i32 0), i64 46}, i64 347, i64 44, i64 %47, i64 %49, i64 %49) | |
%50 = extractvalue %..string %48, 0 | |
%51 = getelementptr inbounds i8, i8* %50, i64 %47 | |
%52 = sub i64 %49, %47 | |
%53 = bitcast %..string* %10 to %..rawptr | |
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 16) | |
store %..string zeroinitializer, %..string* %10 | |
%55 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 0 | |
store i8* %51, i8** %55 | |
%56 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 1 | |
store i64 %52, i64* %56 | |
%57 = load %..string, %..string* %10, align 8 | |
%58 = call {i64, i64, i8} @fmt-11._arg_number.parse_arg_number-0(%..string %57, %Context* noalias nonnull %__.context_ptr) | |
%59 = extractvalue {i64, i64, i8} %58, 0 | |
%60 = extractvalue {i64, i64, i8} %58, 1 | |
%61 = extractvalue {i64, i64, i8} %58, 2 | |
store i64 %59, i64* %5 | |
store i64 %60, i64* %9 | |
store i8 %61, i8* %7 | |
; IfStmt | |
%62 = load i8, i8* %7, align 1 | |
%63 = trunc i8 %62 to i1 | |
br i1 %63, label %cmp.and-4, label %if.done-7 | |
cmp.and-4: | |
%64 = load i64, i64* %5, align 8 | |
%65 = icmp sle i64 0, %64 | |
%66 = zext i1 %65 to i8 | |
%67 = trunc i8 %66 to i1 | |
br i1 %67, label %cmp.and-5, label %if.done-7 | |
cmp.and-5: | |
%68 = load i64, i64* %5, align 8 | |
%69 = load i64, i64* %4, align 8 | |
%70 = icmp slt i64 %68, %69 | |
%71 = zext i1 %70 to i8 | |
%72 = trunc i8 %71 to i1 | |
br i1 %72, label %if.then-6, label %if.done-7 | |
if.then-6: | |
; ReturnStmt | |
%73 = load i64, i64* %5, align 8 | |
%74 = load i64, i64* %3, align 8 | |
%75 = load i64, i64* %9, align 8 | |
%76 = add i64 %74, %75 | |
%77 = bitcast {i64, i64, i8}* %11 to %..rawptr | |
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %11 | |
%79 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %11, i64 0, i32 0 | |
store i64 %73, i64* %79 | |
%80 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %11, i64 0, i32 1 | |
store i64 %76, i64* %80 | |
%81 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %11, i64 0, i32 2 | |
store i8 1, i8* %81 | |
%82 = load {i64, i64, i8}, {i64, i64, i8}* %11, align 8 | |
ret {i64, i64, i8} %82 | |
if.done-7: | |
; AssignStmt | |
; SelectorExpr | |
%83 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%84 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %83, i64 0 | |
%85 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %84, i64 0, i32 11 | |
store i8 0, i8* %85 | |
; ReturnStmt | |
%86 = load i64, i64* %1, align 8 | |
%87 = load i64, i64* %3, align 8 | |
%88 = load i64, i64* %9, align 8 | |
%89 = add i64 %87, %88 | |
%90 = bitcast {i64, i64, i8}* %12 to %..rawptr | |
%91 = call %..rawptr @__mem_zero(%..rawptr %90, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %12 | |
%92 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %12, i64 0, i32 0 | |
store i64 %86, i64* %92 | |
%93 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %12, i64 0, i32 1 | |
store i64 %89, i64* %93 | |
%94 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %12, i64 0, i32 2 | |
store i8 0, i8* %94 | |
%95 = load {i64, i64, i8}, {i64, i64, i8}* %12, align 8 | |
ret {i64, i64, i8} %95 | |
} | |
define {i64, i64, i8} @fmt-11._arg_number.parse_arg_number-0(%..string %format, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..string, align 16 | |
%1 = alloca {i64, i64, i8}, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca i8, align 16 | |
%8 = alloca {i64, i64, i8}, align 16 | |
%9 = alloca {i64, i64, i8}, align 16 | |
%10 = alloca {i64, i64, i8}, align 16 | |
store %..string %format, %..string* %0 | |
; IfStmt | |
%11 = load %..string, %..string* %0, align 8 | |
%12 = extractvalue %..string %11, 1 | |
%13 = icmp slt i64 %12, 3 | |
%14 = zext i1 %13 to i8 | |
%15 = trunc i8 %14 to i1 | |
br i1 %15, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
%16 = bitcast {i64, i64, i8}* %1 to %..rawptr | |
%17 = call %..rawptr @__mem_zero(%..rawptr %16, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %1 | |
%18 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %1, i64 0, i32 0 | |
store i64 0, i64* %18 | |
%19 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %1, i64 0, i32 1 | |
store i64 1, i64* %19 | |
%20 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %1, i64 0, i32 2 | |
store i8 0, i8* %20 | |
%21 = load {i64, i64, i8}, {i64, i64, i8}* %1, align 8 | |
ret {i64, i64, i8} %21 | |
if.done-2: | |
; RangeStmt | |
; i | |
%22 = bitcast i64* %2 to %..rawptr | |
%23 = call %..rawptr @__mem_zero(%..rawptr %22, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
%24 = bitcast i64* %3 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
store i64 1, i64* %3 | |
%26 = bitcast i64* %4 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 0, i64* %4 | |
br label %for.interval.loop-3 | |
for.interval.loop-3: | |
%28 = load %..string, %..string* %0, align 8 | |
%29 = extractvalue %..string %28, 1 | |
%30 = load i64, i64* %3, align 8 | |
%31 = icmp sle i64 %30, %29 | |
br i1 %31, label %for.interval.body-4, label %for.interval.done-10 | |
for.interval.body-4: | |
%32 = load i64, i64* %3, align 8 | |
%33 = load i64, i64* %4, align 8 | |
%34 = load i64, i64* %3, align 8 | |
%35 = add i64 %34, 1 | |
store i64 %35, i64* %3 | |
%36 = load i64, i64* %4, align 8 | |
%37 = add i64 %36, 1 | |
store i64 %37, i64* %4 | |
store i64 %32, i64* %2 | |
; IfStmt | |
; IndexExpr | |
%38 = load %..string, %..string* %0, align 8 | |
%39 = extractvalue %..string %38, 0 | |
%40 = extractvalue %..string %38, 1 | |
%41 = load i64, i64* %2, align 8 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$19f, i64 0, i32 0), i64 46}, i64 328, i64 14, i64 %41, i64 %40) | |
%42 = getelementptr inbounds i8, i8* %39, i64 %41 | |
%43 = load i8, i8* %42, align 1 | |
%44 = icmp eq i8 %43, 93 | |
%45 = zext i1 %44 to i8 | |
%46 = trunc i8 %45 to i1 | |
br i1 %46, label %if.then-5, label %if.done-9 | |
if.then-5: | |
; width | |
; new_index | |
; ok | |
%47 = load %..string, %..string* %0, align 8 | |
%48 = call {i64, i64, i8} @fmt-11._parse_int(%..string %47, i64 1, %Context* noalias nonnull %__.context_ptr) | |
%49 = extractvalue {i64, i64, i8} %48, 0 | |
%50 = extractvalue {i64, i64, i8} %48, 1 | |
%51 = extractvalue {i64, i64, i8} %48, 2 | |
store i64 %49, i64* %5 | |
store i64 %50, i64* %6 | |
store i8 %51, i8* %7 | |
; IfStmt | |
%52 = load i8, i8* %7, align 1 | |
%53 = trunc i8 %52 to i1 | |
br i1 %53, label %cmp.or-6, label %if.then-7 | |
cmp.or-6: | |
%54 = load i64, i64* %6, align 8 | |
%55 = load i64, i64* %2, align 8 | |
%56 = icmp ne i64 %54, %55 | |
%57 = zext i1 %56 to i8 | |
%58 = trunc i8 %57 to i1 | |
br i1 %58, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
%59 = load i64, i64* %2, align 8 | |
%60 = add i64 %59, 1 | |
%61 = bitcast {i64, i64, i8}* %8 to %..rawptr | |
%62 = call %..rawptr @__mem_zero(%..rawptr %61, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %8 | |
%63 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 0 | |
store i64 0, i64* %63 | |
%64 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 1 | |
store i64 %60, i64* %64 | |
%65 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %8, i64 0, i32 2 | |
store i8 0, i8* %65 | |
%66 = load {i64, i64, i8}, {i64, i64, i8}* %8, align 8 | |
ret {i64, i64, i8} %66 | |
if.done-8: | |
; ReturnStmt | |
%67 = load i64, i64* %5, align 8 | |
%68 = sub i64 %67, 1 | |
%69 = load i64, i64* %2, align 8 | |
%70 = add i64 %69, 1 | |
%71 = bitcast {i64, i64, i8}* %9 to %..rawptr | |
%72 = call %..rawptr @__mem_zero(%..rawptr %71, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %9 | |
%73 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %9, i64 0, i32 0 | |
store i64 %68, i64* %73 | |
%74 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %9, i64 0, i32 1 | |
store i64 %70, i64* %74 | |
%75 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %9, i64 0, i32 2 | |
store i8 1, i8* %75 | |
%76 = load {i64, i64, i8}, {i64, i64, i8}* %9, align 8 | |
ret {i64, i64, i8} %76 | |
if.done-9: | |
br label %for.interval.loop-3 | |
for.interval.done-10: | |
; ReturnStmt | |
%77 = bitcast {i64, i64, i8}* %10 to %..rawptr | |
%78 = call %..rawptr @__mem_zero(%..rawptr %77, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %10 | |
%79 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %10, i64 0, i32 0 | |
store i64 0, i64* %79 | |
%80 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %10, i64 0, i32 1 | |
store i64 1, i64* %80 | |
%81 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %10, i64 0, i32 2 | |
store i8 0, i8* %81 | |
%82 = load {i64, i64, i8}, {i64, i64, i8}* %10, align 8 | |
ret {i64, i64, i8} %82 | |
} | |
define {i64, i64, i8} @fmt-11.int_from_arg({%..any*, i64}* %args, i64 %arg_index, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca %..any, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca i16, align 16 | |
%8 = alloca i32, align 16 | |
%9 = alloca i64, align 16 | |
%10 = alloca i8, align 16 | |
%11 = alloca i16, align 16 | |
%12 = alloca i32, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca %..any, align 16 | |
%15 = alloca {i64, i64, i8}, align 16 | |
%16 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
store i64 %arg_index, i64* %0 | |
; num | |
store i64 0, i64* %1 | |
; new_arg_index | |
%17 = load i64, i64* %0, align 8 | |
store i64 %17, i64* %2 | |
; ok | |
store i8 1, i8* %3 | |
; IfStmt | |
%18 = load i64, i64* %0, align 8 | |
%19 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%20 = extractvalue {%..any*, i64} %19, 1 | |
%21 = icmp slt i64 %18, %20 | |
%22 = zext i1 %21 to i8 | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.done-21 | |
if.then-1: | |
; arg | |
; IndexExpr | |
%24 = load {%..any*, i64}, {%..any*, i64}* %args, align 8 | |
%25 = extractvalue {%..any*, i64} %24, 0 | |
%26 = load i64, i64* %0, align 8 | |
%27 = extractvalue {%..any*, i64} %24, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1a0, i64 0, i32 0), i64 46}, i64 360, i64 15, i64 %26, i64 %27) | |
%28 = getelementptr inbounds %..any, %..any* %25, i64 %26 | |
%29 = load %..any, %..any* %28, align 8 | |
store %..any %29, %..any* %4 | |
; AssignStmt | |
; SelectorExpr | |
%30 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
; SelectorExpr | |
%31 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%32 = load %Type_Info*, %Type_Info** %31, align 8 | |
%33 = call %Type_Info* @type_info_base(%Type_Info* %32, %Context* noalias nonnull %__.context_ptr) | |
store %Type_Info* %33, %Type_Info** %30 | |
; TypeSwitchStmt | |
%34 = load %..any, %..any* %4, align 8 | |
%35 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%36 = load %Type_Info*, %Type_Info** %35, align 8 | |
%37 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6 | |
%38 = icmp eq %Type_Info* %36, %37 | |
br i1 %38, label %typeswitch.body-3, label %typeswitch.next-2 | |
typeswitch.next-2: | |
%39 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%40 = load %Type_Info*, %Type_Info** %39, align 8 | |
%41 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 67 | |
%42 = icmp eq %Type_Info* %40, %41 | |
br i1 %42, label %typeswitch.body-5, label %typeswitch.next-4 | |
typeswitch.body-3: | |
%43 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%44 = load %..rawptr, %..rawptr* %43, align 8 | |
%45 = bitcast %..rawptr %44 to i64* | |
%46 = load i64, i64* %45, align 8 | |
store i64 %46, i64* %5 | |
; AssignStmt | |
%47 = load i64, i64* %5, align 8 | |
store i64 %47, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-4: | |
%48 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%49 = load %Type_Info*, %Type_Info** %48, align 8 | |
%50 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 68 | |
%51 = icmp eq %Type_Info* %49, %50 | |
br i1 %51, label %typeswitch.body-7, label %typeswitch.next-6 | |
typeswitch.body-5: | |
%52 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%53 = load %..rawptr, %..rawptr* %52, align 8 | |
%54 = bitcast %..rawptr %53 to i8* | |
%55 = load i8, i8* %54, align 1 | |
store i8 %55, i8* %6 | |
; AssignStmt | |
%56 = load i8, i8* %6, align 1 | |
%57 = sext i8 %56 to i64 | |
store i64 %57, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-6: | |
%58 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%59 = load %Type_Info*, %Type_Info** %58, align 8 | |
%60 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11 | |
%61 = icmp eq %Type_Info* %59, %60 | |
br i1 %61, label %typeswitch.body-9, label %typeswitch.next-8 | |
typeswitch.body-7: | |
%62 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%63 = load %..rawptr, %..rawptr* %62, align 8 | |
%64 = bitcast %..rawptr %63 to i16* | |
%65 = load i16, i16* %64, align 2 | |
store i16 %65, i16* %7 | |
; AssignStmt | |
%66 = load i16, i16* %7, align 2 | |
%67 = sext i16 %66 to i64 | |
store i64 %67, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-8: | |
%68 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%69 = load %Type_Info*, %Type_Info** %68, align 8 | |
%70 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 69 | |
%71 = icmp eq %Type_Info* %69, %70 | |
br i1 %71, label %typeswitch.body-11, label %typeswitch.next-10 | |
typeswitch.body-9: | |
%72 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%73 = load %..rawptr, %..rawptr* %72, align 8 | |
%74 = bitcast %..rawptr %73 to i32* | |
%75 = load i32, i32* %74, align 4 | |
store i32 %75, i32* %8 | |
; AssignStmt | |
%76 = load i32, i32* %8, align 4 | |
%77 = sext i32 %76 to i64 | |
store i64 %77, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-10: | |
%78 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%79 = load %Type_Info*, %Type_Info** %78, align 8 | |
%80 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 20 | |
%81 = icmp eq %Type_Info* %79, %80 | |
br i1 %81, label %typeswitch.body-13, label %typeswitch.next-12 | |
typeswitch.body-11: | |
%82 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%83 = load %..rawptr, %..rawptr* %82, align 8 | |
%84 = bitcast %..rawptr %83 to i64* | |
%85 = load i64, i64* %84, align 8 | |
store i64 %85, i64* %9 | |
; AssignStmt | |
%86 = load i64, i64* %9, align 8 | |
%87 = bitcast i64 %86 to i64 | |
store i64 %87, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-12: | |
%88 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%89 = load %Type_Info*, %Type_Info** %88, align 8 | |
%90 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 70 | |
%91 = icmp eq %Type_Info* %89, %90 | |
br i1 %91, label %typeswitch.body-15, label %typeswitch.next-14 | |
typeswitch.body-13: | |
%92 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%93 = load %..rawptr, %..rawptr* %92, align 8 | |
%94 = bitcast %..rawptr %93 to i8* | |
%95 = load i8, i8* %94, align 1 | |
store i8 %95, i8* %10 | |
; AssignStmt | |
%96 = load i8, i8* %10, align 1 | |
%97 = zext i8 %96 to i64 | |
store i64 %97, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-14: | |
%98 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%99 = load %Type_Info*, %Type_Info** %98, align 8 | |
%100 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3 | |
%101 = icmp eq %Type_Info* %99, %100 | |
br i1 %101, label %typeswitch.body-17, label %typeswitch.next-16 | |
typeswitch.body-15: | |
%102 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%103 = load %..rawptr, %..rawptr* %102, align 8 | |
%104 = bitcast %..rawptr %103 to i16* | |
%105 = load i16, i16* %104, align 2 | |
store i16 %105, i16* %11 | |
; AssignStmt | |
%106 = load i16, i16* %11, align 2 | |
%107 = zext i16 %106 to i64 | |
store i64 %107, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-16: | |
%108 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 1 | |
%109 = load %Type_Info*, %Type_Info** %108, align 8 | |
%110 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 71 | |
%111 = icmp eq %Type_Info* %109, %110 | |
br i1 %111, label %typeswitch.body-19, label %typeswitch.next-18 | |
typeswitch.body-17: | |
%112 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%113 = load %..rawptr, %..rawptr* %112, align 8 | |
%114 = bitcast %..rawptr %113 to i32* | |
%115 = load i32, i32* %114, align 4 | |
store i32 %115, i32* %12 | |
; AssignStmt | |
%116 = load i32, i32* %12, align 4 | |
%117 = zext i32 %116 to i64 | |
store i64 %117, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.next-18: | |
store %..any %34, %..any* %14 | |
; AssignStmt | |
store i8 0, i8* %3 | |
br label %typeswitch.done-20 | |
typeswitch.body-19: | |
%118 = getelementptr inbounds %..any, %..any* %4, i64 0, i32 0 | |
%119 = load %..rawptr, %..rawptr* %118, align 8 | |
%120 = bitcast %..rawptr %119 to i64* | |
%121 = load i64, i64* %120, align 8 | |
store i64 %121, i64* %13 | |
; AssignStmt | |
%122 = load i64, i64* %13, align 8 | |
%123 = bitcast i64 %122 to i64 | |
store i64 %123, i64* %1 | |
br label %typeswitch.done-20 | |
typeswitch.done-20: | |
br label %if.done-21 | |
if.done-21: | |
; ReturnStmt | |
%124 = load i64, i64* %1, align 8 | |
%125 = load i64, i64* %2, align 8 | |
%126 = load i8, i8* %3, align 1 | |
%127 = bitcast {i64, i64, i8}* %15 to %..rawptr | |
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 24) | |
store {i64, i64, i8} zeroinitializer, {i64, i64, i8}* %15 | |
%129 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %15, i64 0, i32 0 | |
store i64 %124, i64* %129 | |
%130 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %15, i64 0, i32 1 | |
store i64 %125, i64* %130 | |
%131 = getelementptr inbounds {i64, i64, i8}, {i64, i64, i8}* %15, i64 0, i32 2 | |
store i8 %126, i8* %131 | |
%132 = load {i64, i64, i8}, {i64, i64, i8}* %15, align 8 | |
ret {i64, i64, i8} %132 | |
} | |
define void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %fi, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i32, align 16 | |
%2 = alloca %Source_Code_Location, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store i32 %verb, i32* %1 | |
%3 = load i32, i32* %1, align 4 | |
%4 = icmp ne i32 %3, 118 | |
%5 = zext i1 %4 to i8 | |
%6 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1a1, i64 0, i32 0), i64 46}, i64 382, i64 2, %..string {i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__str$1a2, i64 0, i32 0), i64 12}) | |
%7 = trunc i8 %5 to i1 | |
%8 = bitcast %Source_Code_Location* %2 to %..rawptr | |
%9 = call %..rawptr @__mem_zero(%..rawptr %8, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %2 | |
store %Source_Code_Location %6, %Source_Code_Location* %2 | |
%10 = call i8 @assert(i1 %7, %..string zeroinitializer, %Source_Code_Location* %2) | |
%11 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%12 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %11, i64 0 | |
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0, i32 12 | |
%14 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %13, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %14, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1a3, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%15 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%16 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %15, i64 0 | |
%17 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %16, i64 0, i32 12 | |
%18 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %17, align 8 | |
%19 = load i32, i32* %1, align 4 | |
call void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %18, i32 %19, %Context* noalias nonnull %__.context_ptr) | |
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0 | |
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 12 | |
%23 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %22, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %23, i8 40, %Context* noalias nonnull %__.context_ptr) | |
; IfStmt | |
; SelectorExpr | |
%24 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%25 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %24, i64 0 | |
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0, i32 13 | |
%27 = getelementptr inbounds %..any, %..any* %26, i64 0, i32 1 | |
%28 = load %Type_Info*, %Type_Info** %27, align 8 | |
%29 = icmp ne %Type_Info* %28, zeroinitializer | |
%30 = zext i1 %29 to i8 | |
%31 = trunc i8 %30 to i1 | |
br i1 %31, label %if.then-1, label %if.else-2 | |
if.then-1: | |
%32 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%33 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %32, i64 0 | |
%34 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %33, i64 0, i32 12 | |
%35 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %34, align 8 | |
; SelectorExpr | |
%36 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%37 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %36, i64 0 | |
%38 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %37, i64 0, i32 13 | |
%39 = getelementptr inbounds %..any, %..any* %38, i64 0, i32 1 | |
%40 = load %Type_Info*, %Type_Info** %39, align 8 | |
call void @fmt-11.write_type({i8*, i64, i64, %Allocator}* %35, %Type_Info* %40, %Context* noalias nonnull %__.context_ptr) | |
%41 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%42 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %41, i64 0 | |
%43 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %42, i64 0, i32 12 | |
%44 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %43, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %44, i8 61, %Context* noalias nonnull %__.context_ptr) | |
%45 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%46 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%47 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %46, i64 0 | |
%48 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %47, i64 0, i32 13 | |
%49 = load %..any, %..any* %48, align 8 | |
call void @fmt-11.fmt_value(%fmt-11.Fmt_Info* %45, %..any %49, i32 118, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-3 | |
if.else-2: | |
%50 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%51 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %50, i64 0 | |
%52 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %51, i64 0, i32 12 | |
%53 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %52, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %53, %..string {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$1a4, i64 0, i32 0), i64 5}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-3 | |
if.done-3: | |
%54 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%55 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %54, i64 0 | |
%56 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %55, i64 0, i32 12 | |
%57 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %56, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %57, i8 41, %Context* noalias nonnull %__.context_ptr) | |
ret void | |
} | |
define void @fmt-11.fmt_bool(%fmt-11.Fmt_Info* %fi, i1 %b, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i8, align 16 | |
%2 = alloca i32, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
%3 = zext i1 %b to i8 | |
store i8 %3, i8* %1 | |
store i32 %verb, i32* %2 | |
; SwitchStmt | |
%4 = load i32, i32* %2, align 4 | |
%5 = icmp eq i32 %4, 116 | |
br i1 %5, label %switch.case.body-3, label %switch.case.next-1 | |
switch.case.next-1: | |
%6 = icmp eq i32 %4, 118 | |
br i1 %6, label %switch.case.body-3, label %switch.case.next-2 | |
switch.case.next-2: | |
%7 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%8 = load i32, i32* %2, align 4 | |
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %7, i32 %8, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-7 | |
switch.case.body-3: | |
%9 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%10 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %9, i64 0 | |
%11 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %10, i64 0, i32 12 | |
%12 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %11, align 8 | |
; TernaryExpr | |
%13 = load i8, i8* %1, align 1 | |
%14 = trunc i8 %13 to i1 | |
br i1 %14, label %if.then-4, label %if.else-5 | |
if.then-4: | |
br label %if.done-6 | |
if.else-5: | |
br label %if.done-6 | |
if.done-6: | |
%15 = phi %..string [ {i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__str$1a5, i64 0, i32 0), i64 4}, %if.then-4 ], [ {i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__str$1a6, i64 0, i32 0), i64 5}, %if.else-5 ] | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %12, %..string %15, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-7 | |
switch.done-7: | |
ret void | |
} | |
define void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %fi, i64 %width, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i8, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store i64 %width, i64* %1 | |
; IfStmt | |
%5 = load i64, i64* %1, align 8 | |
%6 = icmp sle i64 %5, 0 | |
%7 = zext i1 %6 to i8 | |
%8 = trunc i8 %7 to i1 | |
br i1 %8, label %if.then-1, label %if.done-2 | |
if.then-1: | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; pad_byte | |
store i8 48, i8* %2 | |
; IfStmt | |
; SelectorExpr | |
%9 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%10 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %9, i64 0 | |
%11 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %10, i64 0, i32 2 | |
%12 = load i8, i8* %11, align 1 | |
%13 = trunc i8 %12 to i1 | |
br i1 %13, label %if.then-3, label %if.done-4 | |
if.then-3: | |
; AssignStmt | |
store i8 32, i8* %2 | |
br label %if.done-4 | |
if.done-4: | |
; RangeStmt | |
%14 = bitcast i64* %3 to %..rawptr | |
%15 = call %..rawptr @__mem_zero(%..rawptr %14, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
store i64 0, i64* %3 | |
%16 = bitcast i64* %4 to %..rawptr | |
%17 = call %..rawptr @__mem_zero(%..rawptr %16, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 0, i64* %4 | |
br label %for.interval.loop-5 | |
for.interval.loop-5: | |
%18 = load i64, i64* %1, align 8 | |
%19 = load i64, i64* %3, align 8 | |
%20 = icmp slt i64 %19, %18 | |
br i1 %20, label %for.interval.body-6, label %for.interval.done-7 | |
for.interval.body-6: | |
%21 = load i64, i64* %3, align 8 | |
%22 = load i64, i64* %4, align 8 | |
%23 = load i64, i64* %3, align 8 | |
%24 = add i64 %23, 1 | |
store i64 %24, i64* %3 | |
%25 = load i64, i64* %4, align 8 | |
%26 = add i64 %25, 1 | |
store i64 %26, i64* %4 | |
; SelectorExpr | |
%27 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%28 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %27, i64 0 | |
%29 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %28, i64 0, i32 12 | |
%30 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %29, align 8 | |
%31 = load i8, i8* %2, align 1 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %30, i8 %31, %Context* noalias nonnull %__.context_ptr) | |
br label %for.interval.loop-5 | |
for.interval.done-7: | |
ret void | |
} | |
define void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %fi, i64 %u, i64 %base, i1 %is_signed, i64 %bit_size, %..string %digits, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca %..string, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca i64, align 16 | |
%8 = alloca %Source_Code_Location, align 16 | |
%9 = alloca i64, align 16 | |
%10 = alloca i8, align 16 | |
%11 = alloca %Source_Code_Location, align 16 | |
%12 = alloca [256 x i8], align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca i64, align 16 | |
%15 = alloca %..string, align 16 | |
%16 = alloca {i8*, i64}, align 16 | |
%17 = alloca {i8*, i64}, align 16 | |
%18 = alloca i8, align 16 | |
%19 = alloca i8, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store i64 %u, i64* %1 | |
store i64 %base, i64* %2 | |
%20 = zext i1 %is_signed to i8 | |
store i8 %20, i8* %3 | |
store i64 %bit_size, i64* %4 | |
store %..string %digits, %..string* %5 | |
; neg | |
; SelectorExpr | |
%21 = load i64, i64* %1, align 8 | |
%22 = load i8, i8* %3, align 1 | |
%23 = load i64, i64* %4, align 8 | |
%24 = trunc i8 %22 to i1 | |
%25 = call {i64, i8} @strconv-42.is_integer_negative(i64 %21, i1 %24, i64 %23, %Context* noalias nonnull %__.context_ptr) | |
%26 = extractvalue {i64, i8} %25, 0 | |
%27 = extractvalue {i64, i8} %25, 1 | |
store i8 %27, i8* %6 | |
; IfStmt | |
; SelectorExpr | |
%28 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%29 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %28, i64 0 | |
%30 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %29, i64 0, i32 5 | |
%31 = load i8, i8* %30, align 1 | |
%32 = trunc i8 %31 to i1 | |
br i1 %32, label %if.then-2, label %cmp.or-1 | |
cmp.or-1: | |
; SelectorExpr | |
%33 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%34 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %33, i64 0 | |
%35 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %34, i64 0, i32 6 | |
%36 = load i8, i8* %35, align 1 | |
%37 = trunc i8 %36 to i1 | |
br i1 %37, label %if.then-2, label %if.done-5 | |
if.then-2: | |
; width | |
; SelectorExpr | |
%38 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%39 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %38, i64 0 | |
%40 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %39, i64 0, i32 7 | |
%41 = load i64, i64* %40, align 8 | |
; SelectorExpr | |
%42 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%43 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %42, i64 0 | |
%44 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %43, i64 0, i32 8 | |
%45 = load i64, i64* %44, align 8 | |
%46 = add i64 %41, %45 | |
%47 = add i64 %46, 3 | |
store i64 %47, i64* %7 | |
; IfStmt | |
%48 = load i64, i64* %7, align 8 | |
%49 = icmp sgt i64 %48, 256 | |
%50 = zext i1 %49 to i8 | |
%51 = trunc i8 %50 to i1 | |
br i1 %51, label %if.then-3, label %if.done-4 | |
if.then-3: | |
%52 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1a7, i64 0, i32 0), i64 46}, i64 425, i64 4, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$1a8, i64 0, i32 0), i64 8}) | |
%53 = bitcast %Source_Code_Location* %8 to %..rawptr | |
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %8 | |
store %Source_Code_Location %52, %Source_Code_Location* %8 | |
call void @panic(%..string {i8* getelementptr inbounds ([54 x i8], [54 x i8]* @__str$1a9, i64 0, i32 0), i64 53}, %Source_Code_Location* %8) | |
br label %if.done-4 | |
if.done-4: | |
br label %if.done-5 | |
if.done-5: | |
; prec | |
store i64 0, i64* %9 | |
; IfStmt | |
; SelectorExpr | |
%55 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%56 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %55, i64 0 | |
%57 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %56, i64 0, i32 6 | |
%58 = load i8, i8* %57, align 1 | |
%59 = trunc i8 %58 to i1 | |
br i1 %59, label %if.then-6, label %if.else-10 | |
if.then-6: | |
; AssignStmt | |
; SelectorExpr | |
%60 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%61 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %60, i64 0 | |
%62 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %61, i64 0, i32 8 | |
%63 = load i64, i64* %62, align 8 | |
store i64 %63, i64* %9 | |
; IfStmt | |
%64 = load i64, i64* %9, align 8 | |
%65 = icmp eq i64 %64, 0 | |
%66 = zext i1 %65 to i8 | |
%67 = trunc i8 %66 to i1 | |
br i1 %67, label %cmp.and-7, label %if.done-9 | |
cmp.and-7: | |
%68 = load i64, i64* %1, align 8 | |
%69 = icmp eq i64 %68, 0 | |
%70 = zext i1 %69 to i8 | |
%71 = trunc i8 %70 to i1 | |
br i1 %71, label %if.then-8, label %if.done-9 | |
if.then-8: | |
; prev_zero | |
; SelectorExpr | |
%72 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%73 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %72, i64 0 | |
%74 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %73, i64 0, i32 3 | |
%75 = load i8, i8* %74, align 1 | |
store i8 %75, i8* %10 | |
; AssignStmt | |
; SelectorExpr | |
%76 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%77 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %76, i64 0 | |
%78 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %77, i64 0, i32 3 | |
store i8 0, i8* %78 | |
%79 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
; SelectorExpr | |
%80 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%81 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %80, i64 0 | |
%82 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %81, i64 0, i32 7 | |
%83 = load i64, i64* %82, align 8 | |
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %79, i64 %83, %Context* noalias nonnull %__.context_ptr) | |
; AssignStmt | |
; SelectorExpr | |
%84 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%85 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %84, i64 0 | |
%86 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %85, i64 0, i32 3 | |
%87 = load i8, i8* %10, align 1 | |
store i8 %87, i8* %86 | |
; ReturnStmt | |
ret void | |
if.done-9: | |
br label %if.done-18 | |
if.else-10: | |
; IfStmt | |
; SelectorExpr | |
%88 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%89 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %88, i64 0 | |
%90 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %89, i64 0, i32 3 | |
%91 = load i8, i8* %90, align 1 | |
%92 = trunc i8 %91 to i1 | |
br i1 %92, label %cmp.and-11, label %if.done-17 | |
cmp.and-11: | |
; SelectorExpr | |
%93 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%94 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %93, i64 0 | |
%95 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %94, i64 0, i32 5 | |
%96 = load i8, i8* %95, align 1 | |
%97 = trunc i8 %96 to i1 | |
br i1 %97, label %if.then-12, label %if.done-17 | |
if.then-12: | |
; AssignStmt | |
; SelectorExpr | |
%98 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%99 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %98, i64 0 | |
%100 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %99, i64 0, i32 7 | |
%101 = load i64, i64* %100, align 8 | |
store i64 %101, i64* %9 | |
; IfStmt | |
%102 = load i8, i8* %6, align 1 | |
%103 = trunc i8 %102 to i1 | |
br i1 %103, label %if.then-15, label %cmp.or-13 | |
cmp.or-13: | |
; SelectorExpr | |
%104 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%105 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %104, i64 0 | |
%106 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %105, i64 0, i32 1 | |
%107 = load i8, i8* %106, align 1 | |
%108 = trunc i8 %107 to i1 | |
br i1 %108, label %if.then-15, label %cmp.or-14 | |
cmp.or-14: | |
; SelectorExpr | |
%109 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%110 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %109, i64 0 | |
%111 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %110, i64 0, i32 2 | |
%112 = load i8, i8* %111, align 1 | |
%113 = trunc i8 %112 to i1 | |
br i1 %113, label %if.then-15, label %if.done-16 | |
if.then-15: | |
; AssignStmt | |
%114 = load i64, i64* %9, align 8 | |
%115 = sub i64 %114, 1 | |
store i64 %115, i64* %9 | |
br label %if.done-16 | |
if.done-16: | |
br label %if.done-17 | |
if.done-17: | |
br label %if.done-18 | |
if.done-18: | |
; SwitchStmt | |
%116 = load i64, i64* %2, align 8 | |
%117 = icmp eq i64 %116, 2 | |
br i1 %117, label %switch.case.body-24, label %switch.case.next-19 | |
switch.case.next-19: | |
%118 = icmp eq i64 %116, 8 | |
br i1 %118, label %switch.case.body-24, label %switch.case.next-20 | |
switch.case.next-20: | |
%119 = icmp eq i64 %116, 10 | |
br i1 %119, label %switch.case.body-24, label %switch.case.next-21 | |
switch.case.next-21: | |
%120 = icmp eq i64 %116, 12 | |
br i1 %120, label %switch.case.body-24, label %switch.case.next-22 | |
switch.case.next-22: | |
%121 = icmp eq i64 %116, 16 | |
br i1 %121, label %switch.case.body-24, label %switch.case.next-23 | |
switch.case.next-23: | |
%122 = call %Source_Code_Location @make_source_code_location(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1aa, i64 0, i32 0), i64 46}, i64 451, i64 3, %..string {i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__str$1ab, i64 0, i32 0), i64 8}) | |
%123 = bitcast %Source_Code_Location* %11 to %..rawptr | |
%124 = call %..rawptr @__mem_zero(%..rawptr %123, i64 48) | |
store %Source_Code_Location zeroinitializer, %Source_Code_Location* %11 | |
store %Source_Code_Location %122, %Source_Code_Location* %11 | |
call void @panic(%..string {i8* getelementptr inbounds ([31 x i8], [31 x i8]* @__str$1ac, i64 0, i32 0), i64 30}, %Source_Code_Location* %11) | |
br label %switch.done-25 | |
switch.case.body-24: | |
; break | |
br label %switch.done-25 | |
switch.done-25: | |
; buf | |
%125 = bitcast [256 x i8]* %12 to %..rawptr | |
%126 = call %..rawptr @__mem_zero(%..rawptr %125, i64 256) | |
store [256 x i8] zeroinitializer, [256 x i8]* %12 | |
; start | |
store i64 0, i64* %13 | |
; flags | |
%127 = bitcast i64* %14 to %..rawptr | |
%128 = call %..rawptr @__mem_zero(%..rawptr %127, i64 8) | |
store i64 zeroinitializer, i64* %14 | |
; IfStmt | |
; SelectorExpr | |
%129 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%130 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %129, i64 0 | |
%131 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %130, i64 0, i32 4 | |
%132 = load i8, i8* %131, align 1 | |
%133 = trunc i8 %132 to i1 | |
br i1 %133, label %cmp.and-26, label %if.done-28 | |
cmp.and-26: | |
; SelectorExpr | |
%134 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%135 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %134, i64 0 | |
%136 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %135, i64 0, i32 3 | |
%137 = load i8, i8* %136, align 1 | |
%138 = trunc i8 %137 to i1 | |
br i1 %138, label %if.done-28, label %if.then-27 | |
if.then-27: | |
; AssignStmt | |
%139 = load i64, i64* %14, align 8 | |
%140 = or i64 %139, 1 | |
store i64 %140, i64* %14 | |
br label %if.done-28 | |
if.done-28: | |
; IfStmt | |
; SelectorExpr | |
%141 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%142 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %141, i64 0 | |
%143 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %142, i64 0, i32 1 | |
%144 = load i8, i8* %143, align 1 | |
%145 = trunc i8 %144 to i1 | |
br i1 %145, label %if.then-29, label %if.done-30 | |
if.then-29: | |
; AssignStmt | |
%146 = load i64, i64* %14, align 8 | |
%147 = or i64 %146, 2 | |
store i64 %147, i64* %14 | |
br label %if.done-30 | |
if.done-30: | |
; IfStmt | |
; SelectorExpr | |
%148 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%149 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %148, i64 0 | |
%150 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %149, i64 0, i32 2 | |
%151 = load i8, i8* %150, align 1 | |
%152 = trunc i8 %151 to i1 | |
br i1 %152, label %if.then-31, label %if.done-32 | |
if.then-31: | |
; AssignStmt | |
%153 = load i64, i64* %14, align 8 | |
%154 = or i64 %153, 4 | |
store i64 %154, i64* %14 | |
br label %if.done-32 | |
if.done-32: | |
; s | |
; SelectorExpr | |
; SliceExpr | |
%155 = load i64, i64* %13, align 8 | |
%156 = load [256 x i8], [256 x i8]* %12, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1ad, i64 0, i32 0), i64 46}, i64 461, i64 30, i64 %155, i64 256, i64 256) | |
%157 = getelementptr inbounds [256 x i8], [256 x i8]* %12, i64 0, i32 0 | |
%158 = getelementptr inbounds i8, i8* %157, i64 %155 | |
%159 = sub i64 256, %155 | |
%160 = bitcast {i8*, i64}* %16 to %..rawptr | |
%161 = call %..rawptr @__mem_zero(%..rawptr %160, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %16 | |
%162 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %16, i64 0, i32 0 | |
store i8* %158, i8** %162 | |
%163 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %16, i64 0, i32 1 | |
store i64 %159, i64* %163 | |
%164 = load {i8*, i64}, {i8*, i64}* %16, align 8 | |
%165 = load i64, i64* %1, align 8 | |
%166 = load i64, i64* %2, align 8 | |
%167 = load i8, i8* %3, align 1 | |
%168 = load i64, i64* %4, align 8 | |
%169 = load %..string, %..string* %5, align 8 | |
%170 = load i64, i64* %14, align 8 | |
%171 = bitcast {i8*, i64}* %17 to %..rawptr | |
%172 = call %..rawptr @__mem_zero(%..rawptr %171, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %17 | |
store {i8*, i64} %164, {i8*, i64}* %17 | |
%173 = trunc i8 %167 to i1 | |
%174 = call %..string @strconv-42.append_bits({i8*, i64}* %17, i64 %165, i64 %166, i1 %173, i64 %168, %..string %169, i64 %170, %Context* noalias nonnull %__.context_ptr) | |
store %..string %174, %..string* %15 | |
; IfStmt | |
; SelectorExpr | |
%175 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%176 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %175, i64 0 | |
%177 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %176, i64 0, i32 4 | |
%178 = load i8, i8* %177, align 1 | |
%179 = trunc i8 %178 to i1 | |
br i1 %179, label %cmp.and-33, label %if.done-46 | |
cmp.and-33: | |
; SelectorExpr | |
%180 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%181 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %180, i64 0 | |
%182 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %181, i64 0, i32 3 | |
%183 = load i8, i8* %182, align 1 | |
%184 = trunc i8 %183 to i1 | |
br i1 %184, label %if.then-34, label %if.done-46 | |
if.then-34: | |
; c | |
store i8 0, i8* %18 | |
; SwitchStmt | |
%185 = load i64, i64* %2, align 8 | |
%186 = icmp eq i64 %185, 2 | |
br i1 %186, label %switch.case.body-36, label %switch.case.next-35 | |
switch.case.next-35: | |
%187 = icmp eq i64 %185, 8 | |
br i1 %187, label %switch.fall.body-38, label %switch.case.next-37 | |
switch.case.body-36: | |
; AssignStmt | |
store i8 98, i8* %18 | |
br label %switch.done-43 | |
switch.case.next-37: | |
%188 = icmp eq i64 %185, 12 | |
br i1 %188, label %switch.fall.body-40, label %switch.case.next-39 | |
switch.fall.body-38: | |
; AssignStmt | |
store i8 111, i8* %18 | |
br label %switch.done-43 | |
switch.case.next-39: | |
%189 = icmp eq i64 %185, 16 | |
br i1 %189, label %switch.fall.body-42, label %switch.case.next-41 | |
switch.fall.body-40: | |
; AssignStmt | |
store i8 122, i8* %18 | |
br label %switch.done-43 | |
switch.case.next-41: | |
br label %switch.done-43 | |
switch.fall.body-42: | |
; AssignStmt | |
store i8 120, i8* %18 | |
br label %switch.done-43 | |
switch.done-43: | |
; IfStmt | |
%190 = load i8, i8* %18, align 1 | |
%191 = icmp ne i8 %190, 0 | |
%192 = zext i1 %191 to i8 | |
%193 = trunc i8 %192 to i1 | |
br i1 %193, label %if.then-44, label %if.done-45 | |
if.then-44: | |
; SelectorExpr | |
%194 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%195 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %194, i64 0 | |
%196 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %195, i64 0, i32 12 | |
%197 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %196, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %197, i8 48, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%198 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%199 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %198, i64 0 | |
%200 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %199, i64 0, i32 12 | |
%201 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %200, align 8 | |
%202 = load i8, i8* %18, align 1 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %201, i8 %202, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-45 | |
if.done-45: | |
br label %if.done-46 | |
if.done-46: | |
; prev_zero | |
; SelectorExpr | |
%203 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%204 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %203, i64 0 | |
%205 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %204, i64 0, i32 3 | |
%206 = load i8, i8* %205, align 1 | |
store i8 %206, i8* %19 | |
; DeferStmt | |
; AssignStmt | |
; SelectorExpr | |
%207 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%208 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %207, i64 0 | |
%209 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %208, i64 0, i32 3 | |
store i8 0, i8* %209 | |
%210 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%211 = load %..string, %..string* %15, align 8 | |
call void @fmt-11._pad(%fmt-11.Fmt_Info* %210, %..string %211, %Context* noalias nonnull %__.context_ptr) | |
; defer | |
; AssignStmt | |
; SelectorExpr | |
%212 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%213 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %212, i64 0 | |
%214 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %213, i64 0, i32 3 | |
%215 = load i8, i8* %19, align 1 | |
store i8 %215, i8* %214 | |
ret void | |
} | |
define void @fmt-11.fmt_rune(%fmt-11.Fmt_Info* %fi, i32 %r, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i32, align 16 | |
%2 = alloca i32, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store i32 %r, i32* %1 | |
store i32 %verb, i32* %2 | |
; SwitchStmt | |
%3 = load i32, i32* %2, align 4 | |
%4 = icmp eq i32 %3, 99 | |
br i1 %4, label %switch.case.body-4, label %switch.case.next-1 | |
switch.case.next-1: | |
%5 = icmp eq i32 %3, 114 | |
br i1 %5, label %switch.case.body-4, label %switch.case.next-2 | |
switch.case.next-2: | |
%6 = icmp eq i32 %3, 118 | |
br i1 %6, label %switch.case.body-4, label %switch.case.next-3 | |
switch.case.next-3: | |
%7 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%8 = load i32, i32* %1, align 4 | |
%9 = sext i32 %8 to i64 | |
%10 = load i32, i32* %2, align 4 | |
call void @fmt-11.fmt_int(%fmt-11.Fmt_Info* %7, i64 %9, i1 false, i64 32, i32 %10, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-5 | |
switch.case.body-4: | |
; SelectorExpr | |
%11 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%12 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %11, i64 0 | |
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0, i32 12 | |
%14 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %13, align 8 | |
%15 = load i32, i32* %1, align 4 | |
call void @fmt-11.write_rune({i8*, i64, i64, %Allocator}* %14, i32 %15, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-5 | |
switch.done-5: | |
ret void | |
} | |
define void @fmt-11.fmt_int(%fmt-11.Fmt_Info* %fi, i64 %u, i1 %is_signed, i64 %bit_size, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca i64, align 16 | |
%2 = alloca i8, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i32, align 16 | |
%5 = alloca i32, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store i64 %u, i64* %1 | |
%6 = zext i1 %is_signed to i8 | |
store i8 %6, i8* %2 | |
store i64 %bit_size, i64* %3 | |
store i32 %verb, i32* %4 | |
; SwitchStmt | |
%7 = load i32, i32* %4, align 4 | |
%8 = icmp eq i32 %7, 118 | |
br i1 %8, label %switch.case.body-2, label %switch.case.next-1 | |
switch.case.next-1: | |
%9 = icmp eq i32 %7, 98 | |
br i1 %9, label %switch.fall.body-4, label %switch.case.next-3 | |
switch.case.body-2: | |
%10 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%11 = load i64, i64* %1, align 8 | |
%12 = load i8, i8* %2, align 1 | |
%13 = load i64, i64* %3, align 8 | |
%14 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
%15 = trunc i8 %12 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %10, i64 %11, i64 10, i1 %15, i64 %13, %..string %14, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-3: | |
%16 = icmp eq i32 %7, 111 | |
br i1 %16, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.fall.body-4: | |
%17 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%18 = load i64, i64* %1, align 8 | |
%19 = load i8, i8* %2, align 1 | |
%20 = load i64, i64* %3, align 8 | |
%21 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
%22 = trunc i8 %19 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %17, i64 %18, i64 2, i1 %22, i64 %20, %..string %21, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-5: | |
%23 = icmp eq i32 %7, 100 | |
br i1 %23, label %switch.fall.body-8, label %switch.case.next-7 | |
switch.fall.body-6: | |
%24 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%25 = load i64, i64* %1, align 8 | |
%26 = load i8, i8* %2, align 1 | |
%27 = load i64, i64* %3, align 8 | |
%28 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
%29 = trunc i8 %26 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %24, i64 %25, i64 8, i1 %29, i64 %27, %..string %28, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-7: | |
%30 = icmp eq i32 %7, 122 | |
br i1 %30, label %switch.fall.body-10, label %switch.case.next-9 | |
switch.fall.body-8: | |
%31 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%32 = load i64, i64* %1, align 8 | |
%33 = load i8, i8* %2, align 1 | |
%34 = load i64, i64* %3, align 8 | |
%35 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
%36 = trunc i8 %33 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %31, i64 %32, i64 10, i1 %36, i64 %34, %..string %35, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-9: | |
%37 = icmp eq i32 %7, 120 | |
br i1 %37, label %switch.fall.body-12, label %switch.case.next-11 | |
switch.fall.body-10: | |
%38 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%39 = load i64, i64* %1, align 8 | |
%40 = load i8, i8* %2, align 1 | |
%41 = load i64, i64* %3, align 8 | |
%42 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
%43 = trunc i8 %40 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %38, i64 %39, i64 12, i1 %43, i64 %41, %..string %42, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-11: | |
%44 = icmp eq i32 %7, 88 | |
br i1 %44, label %switch.fall.body-14, label %switch.case.next-13 | |
switch.fall.body-12: | |
%45 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%46 = load i64, i64* %1, align 8 | |
%47 = load i8, i8* %2, align 1 | |
%48 = load i64, i64* %3, align 8 | |
%49 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
%50 = trunc i8 %47 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %45, i64 %46, i64 16, i1 %50, i64 %48, %..string %49, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-13: | |
%51 = icmp eq i32 %7, 99 | |
br i1 %51, label %switch.fall.body-17, label %switch.case.next-15 | |
switch.fall.body-14: | |
%52 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%53 = load i64, i64* %1, align 8 | |
%54 = load i8, i8* %2, align 1 | |
%55 = load i64, i64* %3, align 8 | |
%56 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8 | |
%57 = trunc i8 %54 to i1 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %52, i64 %53, i64 16, i1 %57, i64 %55, %..string %56, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-15: | |
%58 = icmp eq i32 %7, 114 | |
br i1 %58, label %switch.fall.body-17, label %switch.case.next-16 | |
switch.case.next-16: | |
%59 = icmp eq i32 %7, 85 | |
br i1 %59, label %switch.fall.body-19, label %switch.case.next-18 | |
switch.fall.body-17: | |
%60 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%61 = load i64, i64* %1, align 8 | |
%62 = trunc i64 %61 to i32 | |
%63 = load i32, i32* %4, align 4 | |
call void @fmt-11.fmt_rune(%fmt-11.Fmt_Info* %60, i32 %62, i32 %63, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.case.next-18: | |
%64 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%65 = load i32, i32* %4, align 4 | |
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %64, i32 %65, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-24 | |
switch.fall.body-19: | |
; r | |
%66 = load i64, i64* %1, align 8 | |
%67 = trunc i64 %66 to i32 | |
store i32 %67, i32* %5 | |
; IfStmt | |
%68 = load i32, i32* %5, align 4 | |
%69 = icmp slt i32 %68, 0 | |
%70 = zext i1 %69 to i8 | |
%71 = trunc i8 %70 to i1 | |
br i1 %71, label %if.then-21, label %cmp.or-20 | |
cmp.or-20: | |
%72 = load i32, i32* %5, align 4 | |
%73 = icmp sgt i32 %72, 1114111 | |
%74 = zext i1 %73 to i8 | |
%75 = trunc i8 %74 to i1 | |
br i1 %75, label %if.then-21, label %if.else-22 | |
if.then-21: | |
%76 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%77 = load i32, i32* %4, align 4 | |
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %76, i32 %77, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-23 | |
if.else-22: | |
; SelectorExpr | |
%78 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%79 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %78, i64 0 | |
%80 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %79, i64 0, i32 12 | |
%81 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %80, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %81, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1ae, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
%82 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%83 = load i64, i64* %1, align 8 | |
%84 = load i64, i64* %3, align 8 | |
%85 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %82, i64 %83, i64 16, i1 false, i64 %84, %..string %85, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-23 | |
if.done-23: | |
br label %switch.done-24 | |
switch.done-24: | |
ret void | |
} | |
define void @fmt-11._pad(%fmt-11.Fmt_Info* %fi, %..string %s, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca i64, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store %..string %s, %..string* %1 | |
; IfStmt | |
; SelectorExpr | |
%3 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%4 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %3, i64 0 | |
%5 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %4, i64 0, i32 5 | |
%6 = load i8, i8* %5, align 1 | |
%7 = trunc i8 %6 to i1 | |
br i1 %7, label %if.done-2, label %if.then-1 | |
if.then-1: | |
; SelectorExpr | |
%8 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%9 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %8, i64 0 | |
%10 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %9, i64 0, i32 12 | |
%11 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %10, align 8 | |
%12 = load %..string, %..string* %1, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %11, %..string %12, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret void | |
if.done-2: | |
; width | |
; SelectorExpr | |
%13 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%14 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %13, i64 0 | |
%15 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %14, i64 0, i32 7 | |
%16 = load i64, i64* %15, align 8 | |
; SelectorExpr | |
%17 = load %..string, %..string* %1, align 8 | |
%18 = call i64 @utf8-4.rune_count_from_string(%..string %17, %Context* noalias nonnull %__.context_ptr) | |
%19 = sub i64 %16, %18 | |
store i64 %19, i64* %2 | |
; IfStmt | |
; SelectorExpr | |
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0 | |
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 0 | |
%23 = load i8, i8* %22, align 1 | |
%24 = trunc i8 %23 to i1 | |
br i1 %24, label %if.then-3, label %if.else-4 | |
if.then-3: | |
; SelectorExpr | |
%25 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0 | |
%27 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %26, i64 0, i32 12 | |
%28 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %27, align 8 | |
%29 = load %..string, %..string* %1, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %28, %..string %29, %Context* noalias nonnull %__.context_ptr) | |
%30 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%31 = load i64, i64* %2, align 8 | |
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %30, i64 %31, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-5 | |
if.else-4: | |
%32 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%33 = load i64, i64* %2, align 8 | |
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %32, i64 %33, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%34 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%35 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %34, i64 0 | |
%36 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %35, i64 0, i32 12 | |
%37 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %36, align 8 | |
%38 = load %..string, %..string* %1, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %37, %..string %38, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-5 | |
if.done-5: | |
ret void | |
} | |
define void @fmt-11.fmt_float(%fmt-11.Fmt_Info* %fi, double %v, i64 %bit_size, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca double, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i32, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca [386 x i8], align 16 | |
%6 = alloca %..string, align 16 | |
%7 = alloca {i8*, i64}, align 16 | |
%8 = alloca {i8*, i64}, align 16 | |
%9 = alloca {i8*, i64}, align 16 | |
%10 = alloca %..string, align 16 | |
%11 = alloca %..string, align 16 | |
%12 = alloca %..string, align 16 | |
%13 = alloca %..string, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store double %v, double* %1 | |
store i64 %bit_size, i64* %2 | |
store i32 %verb, i32* %3 | |
; SwitchStmt | |
%14 = load i32, i32* %3, align 4 | |
%15 = icmp eq i32 %14, 102 | |
br i1 %15, label %switch.case.body-4, label %switch.case.next-1 | |
switch.case.next-1: | |
%16 = icmp eq i32 %14, 70 | |
br i1 %16, label %switch.case.body-4, label %switch.case.next-2 | |
switch.case.next-2: | |
%17 = icmp eq i32 %14, 118 | |
br i1 %17, label %switch.case.body-4, label %switch.case.next-3 | |
switch.case.next-3: | |
%18 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%19 = load i32, i32* %3, align 4 | |
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %18, i32 %19, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-28 | |
switch.case.body-4: | |
; prec | |
store i64 3, i64* %4 | |
; IfStmt | |
; SelectorExpr | |
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0 | |
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 6 | |
%23 = load i8, i8* %22, align 1 | |
%24 = trunc i8 %23 to i1 | |
br i1 %24, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; AssignStmt | |
; SelectorExpr | |
%25 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0 | |
%27 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %26, i64 0, i32 8 | |
%28 = load i64, i64* %27, align 8 | |
store i64 %28, i64* %4 | |
br label %if.done-6 | |
if.done-6: | |
; buf | |
%29 = bitcast [386 x i8]* %5 to %..rawptr | |
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 386) | |
store [386 x i8] zeroinitializer, [386 x i8]* %5 | |
; str | |
; SelectorExpr | |
; SliceExpr | |
%31 = load [386 x i8], [386 x i8]* %5, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1af, i64 0, i32 0), i64 46}, i64 548, i64 34, i64 1, i64 386, i64 386) | |
%32 = getelementptr inbounds [386 x i8], [386 x i8]* %5, i64 0, i32 0 | |
%33 = getelementptr inbounds i8, i8* %32, i64 1 | |
%34 = sub i64 386, 1 | |
%35 = bitcast {i8*, i64}* %7 to %..rawptr | |
%36 = call %..rawptr @__mem_zero(%..rawptr %35, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %7 | |
%37 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 0 | |
store i8* %33, i8** %37 | |
%38 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %7, i64 0, i32 1 | |
store i64 %34, i64* %38 | |
%39 = load {i8*, i64}, {i8*, i64}* %7, align 8 | |
%40 = load double, double* %1, align 8 | |
%41 = load i64, i64* %4, align 8 | |
%42 = load i64, i64* %2, align 8 | |
%43 = bitcast {i8*, i64}* %8 to %..rawptr | |
%44 = call %..rawptr @__mem_zero(%..rawptr %43, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %8 | |
store {i8*, i64} %39, {i8*, i64}* %8 | |
%45 = call %..string @strconv-42.append_float({i8*, i64}* %8, double %40, i8 102, i64 %41, i64 %42, %Context* noalias nonnull %__.context_ptr) | |
store %..string %45, %..string* %6 | |
; AssignStmt | |
; SliceExpr | |
%46 = load %..string, %..string* %6, align 8 | |
%47 = extractvalue %..string %46, 1 | |
%48 = add i64 %47, 1 | |
%49 = load [386 x i8], [386 x i8]* %5, align 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b0, i64 0, i32 0), i64 46}, i64 549, i64 19, i64 0, i64 %48, i64 386) | |
%50 = getelementptr inbounds [386 x i8], [386 x i8]* %5, i64 0, i32 0 | |
%51 = getelementptr inbounds i8, i8* %50, i64 0 | |
%52 = sub i64 %48, 0 | |
%53 = bitcast {i8*, i64}* %9 to %..rawptr | |
%54 = call %..rawptr @__mem_zero(%..rawptr %53, i64 16) | |
store {i8*, i64} zeroinitializer, {i8*, i64}* %9 | |
%55 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %9, i64 0, i32 0 | |
store i8* %51, i8** %55 | |
%56 = getelementptr inbounds {i8*, i64}, {i8*, i64}* %9, i64 0, i32 1 | |
store i64 %52, i64* %56 | |
%57 = load {i8*, i64}, {i8*, i64}* %9, align 8 | |
%58 = extractvalue {i8*, i64} %57, 0 | |
%59 = extractvalue {i8*, i64} %57, 1 | |
%60 = bitcast %..string* %10 to %..rawptr | |
%61 = call %..rawptr @__mem_zero(%..rawptr %60, i64 16) | |
store %..string zeroinitializer, %..string* %10 | |
%62 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 0 | |
store i8* %58, i8** %62 | |
%63 = getelementptr inbounds %..string, %..string* %10, i64 0, i32 1 | |
store i64 %59, i64* %63 | |
%64 = load %..string, %..string* %10, align 8 | |
store %..string %64, %..string* %6 | |
; IfStmt | |
; IndexExpr | |
%65 = load %..string, %..string* %6, align 8 | |
%66 = extractvalue %..string %65, 0 | |
%67 = extractvalue %..string %65, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b1, i64 0, i32 0), i64 46}, i64 550, i64 10, i64 1, i64 %67) | |
%68 = getelementptr inbounds i8, i8* %66, i64 1 | |
%69 = load i8, i8* %68, align 1 | |
%70 = icmp eq i8 %69, 43 | |
%71 = zext i1 %70 to i8 | |
%72 = trunc i8 %71 to i1 | |
br i1 %72, label %if.then-8, label %cmp.or-7 | |
cmp.or-7: | |
; IndexExpr | |
%73 = load %..string, %..string* %6, align 8 | |
%74 = extractvalue %..string %73, 0 | |
%75 = extractvalue %..string %73, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b2, i64 0, i32 0), i64 46}, i64 550, i64 27, i64 1, i64 %75) | |
%76 = getelementptr inbounds i8, i8* %74, i64 1 | |
%77 = load i8, i8* %76, align 1 | |
%78 = icmp eq i8 %77, 45 | |
%79 = zext i1 %78 to i8 | |
%80 = trunc i8 %79 to i1 | |
br i1 %80, label %if.then-8, label %if.else-9 | |
if.then-8: | |
; AssignStmt | |
; SliceExpr | |
%81 = load %..string, %..string* %6, align 8 | |
%82 = extractvalue %..string %81, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b3, i64 0, i32 0), i64 46}, i64 551, i64 13, i64 1, i64 %82, i64 %82) | |
%83 = extractvalue %..string %81, 0 | |
%84 = getelementptr inbounds i8, i8* %83, i64 1 | |
%85 = sub i64 %82, 1 | |
%86 = bitcast %..string* %11 to %..rawptr | |
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16) | |
store %..string zeroinitializer, %..string* %11 | |
%88 = getelementptr inbounds %..string, %..string* %11, i64 0, i32 0 | |
store i8* %84, i8** %88 | |
%89 = getelementptr inbounds %..string, %..string* %11, i64 0, i32 1 | |
store i64 %85, i64* %89 | |
%90 = load %..string, %..string* %11, align 8 | |
store %..string %90, %..string* %6 | |
br label %if.done-10 | |
if.else-9: | |
; AssignStmt | |
; IndexExpr | |
%91 = load %..string, %..string* %6, align 8 | |
%92 = extractvalue %..string %91, 0 | |
%93 = extractvalue %..string %91, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b4, i64 0, i32 0), i64 46}, i64 553, i64 8, i64 0, i64 %93) | |
%94 = getelementptr inbounds i8, i8* %92, i64 0 | |
store i8 43, i8* %94 | |
br label %if.done-10 | |
if.done-10: | |
; IfStmt | |
; SelectorExpr | |
%95 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%96 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %95, i64 0 | |
%97 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %96, i64 0, i32 2 | |
%98 = load i8, i8* %97, align 1 | |
%99 = trunc i8 %98 to i1 | |
br i1 %99, label %cmp.and-11, label %if.done-14 | |
cmp.and-11: | |
; SelectorExpr | |
%100 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%101 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %100, i64 0 | |
%102 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %101, i64 0, i32 1 | |
%103 = load i8, i8* %102, align 1 | |
%104 = trunc i8 %103 to i1 | |
br i1 %104, label %if.done-14, label %cmp.and-12 | |
cmp.and-12: | |
; IndexExpr | |
%105 = load %..string, %..string* %6, align 8 | |
%106 = extractvalue %..string %105, 0 | |
%107 = extractvalue %..string %105, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b5, i64 0, i32 0), i64 46}, i64 556, i64 34, i64 0, i64 %107) | |
%108 = getelementptr inbounds i8, i8* %106, i64 0 | |
%109 = load i8, i8* %108, align 1 | |
%110 = icmp eq i8 %109, 43 | |
%111 = zext i1 %110 to i8 | |
%112 = trunc i8 %111 to i1 | |
br i1 %112, label %if.then-13, label %if.done-14 | |
if.then-13: | |
; AssignStmt | |
; IndexExpr | |
%113 = load %..string, %..string* %6, align 8 | |
%114 = extractvalue %..string %113, 0 | |
%115 = extractvalue %..string %113, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b6, i64 0, i32 0), i64 46}, i64 557, i64 8, i64 0, i64 %115) | |
%116 = getelementptr inbounds i8, i8* %114, i64 0 | |
store i8 32, i8* %116 | |
br label %if.done-14 | |
if.done-14: | |
; IfStmt | |
%117 = load %..string, %..string* %6, align 8 | |
%118 = extractvalue %..string %117, 1 | |
%119 = icmp sgt i64 %118, 1 | |
%120 = zext i1 %119 to i8 | |
%121 = trunc i8 %120 to i1 | |
br i1 %121, label %cmp.and-15, label %if.done-18 | |
cmp.and-15: | |
; IndexExpr | |
%122 = load %..string, %..string* %6, align 8 | |
%123 = extractvalue %..string %122, 0 | |
%124 = extractvalue %..string %122, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b7, i64 0, i32 0), i64 46}, i64 560, i64 26, i64 1, i64 %124) | |
%125 = getelementptr inbounds i8, i8* %123, i64 1 | |
%126 = load i8, i8* %125, align 1 | |
%127 = icmp eq i8 %126, 78 | |
%128 = zext i1 %127 to i8 | |
%129 = trunc i8 %128 to i1 | |
br i1 %129, label %cmp.and-16, label %if.done-18 | |
cmp.and-16: | |
; IndexExpr | |
%130 = load %..string, %..string* %6, align 8 | |
%131 = extractvalue %..string %130, 0 | |
%132 = extractvalue %..string %130, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b8, i64 0, i32 0), i64 46}, i64 560, i64 43, i64 1, i64 %132) | |
%133 = getelementptr inbounds i8, i8* %131, i64 1 | |
%134 = load i8, i8* %133, align 1 | |
%135 = icmp eq i8 %134, 73 | |
%136 = zext i1 %135 to i8 | |
%137 = trunc i8 %136 to i1 | |
br i1 %137, label %if.then-17, label %if.done-18 | |
if.then-17: | |
; SelectorExpr | |
%138 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%139 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %138, i64 0 | |
%140 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %139, i64 0, i32 12 | |
%141 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %140, align 8 | |
%142 = load %..string, %..string* %6, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %141, %..string %142, %Context* noalias nonnull %__.context_ptr) | |
; ReturnStmt | |
ret void | |
if.done-18: | |
; IfStmt | |
; SelectorExpr | |
%143 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%144 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %143, i64 0 | |
%145 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %144, i64 0, i32 1 | |
%146 = load i8, i8* %145, align 1 | |
%147 = trunc i8 %146 to i1 | |
br i1 %147, label %if.then-20, label %cmp.or-19 | |
cmp.or-19: | |
; IndexExpr | |
%148 = load %..string, %..string* %6, align 8 | |
%149 = extractvalue %..string %148, 0 | |
%150 = extractvalue %..string %148, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1b9, i64 0, i32 0), i64 46}, i64 565, i64 21, i64 0, i64 %150) | |
%151 = getelementptr inbounds i8, i8* %149, i64 0 | |
%152 = load i8, i8* %151, align 1 | |
%153 = icmp ne i8 %152, 43 | |
%154 = zext i1 %153 to i8 | |
%155 = trunc i8 %154 to i1 | |
br i1 %155, label %if.then-20, label %if.else-26 | |
if.then-20: | |
; IfStmt | |
; SelectorExpr | |
%156 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%157 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %156, i64 0 | |
%158 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %157, i64 0, i32 3 | |
%159 = load i8, i8* %158, align 1 | |
%160 = trunc i8 %159 to i1 | |
br i1 %160, label %cmp.and-21, label %if.else-24 | |
cmp.and-21: | |
; SelectorExpr | |
%161 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%162 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %161, i64 0 | |
%163 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %162, i64 0, i32 5 | |
%164 = load i8, i8* %163, align 1 | |
%165 = trunc i8 %164 to i1 | |
br i1 %165, label %cmp.and-22, label %if.else-24 | |
cmp.and-22: | |
; SelectorExpr | |
%166 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%167 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %166, i64 0 | |
%168 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %167, i64 0, i32 7 | |
%169 = load i64, i64* %168, align 8 | |
%170 = load %..string, %..string* %6, align 8 | |
%171 = extractvalue %..string %170, 1 | |
%172 = icmp sgt i64 %169, %171 | |
%173 = zext i1 %172 to i8 | |
%174 = trunc i8 %173 to i1 | |
br i1 %174, label %if.then-23, label %if.else-24 | |
if.then-23: | |
; SelectorExpr | |
%175 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%176 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %175, i64 0 | |
%177 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %176, i64 0, i32 12 | |
%178 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %177, align 8 | |
; IndexExpr | |
%179 = load %..string, %..string* %6, align 8 | |
%180 = extractvalue %..string %179, 0 | |
%181 = extractvalue %..string %179, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1ba, i64 0, i32 0), i64 46}, i64 567, i64 28, i64 0, i64 %181) | |
%182 = getelementptr inbounds i8, i8* %180, i64 0 | |
%183 = load i8, i8* %182, align 1 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %178, i8 %183, %Context* noalias nonnull %__.context_ptr) | |
%184 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
; SelectorExpr | |
%185 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%186 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %185, i64 0 | |
%187 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %186, i64 0, i32 7 | |
%188 = load i64, i64* %187, align 8 | |
%189 = load %..string, %..string* %6, align 8 | |
%190 = extractvalue %..string %189, 1 | |
%191 = sub i64 %188, %190 | |
call void @fmt-11.fmt_write_padding(%fmt-11.Fmt_Info* %184, i64 %191, %Context* noalias nonnull %__.context_ptr) | |
; SelectorExpr | |
%192 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%193 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %192, i64 0 | |
%194 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %193, i64 0, i32 12 | |
%195 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %194, align 8 | |
; SliceExpr | |
%196 = load %..string, %..string* %6, align 8 | |
%197 = extractvalue %..string %196, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bb, i64 0, i32 0), i64 46}, i64 569, i64 29, i64 1, i64 %197, i64 %197) | |
%198 = extractvalue %..string %196, 0 | |
%199 = getelementptr inbounds i8, i8* %198, i64 1 | |
%200 = sub i64 %197, 1 | |
%201 = bitcast %..string* %12 to %..rawptr | |
%202 = call %..rawptr @__mem_zero(%..rawptr %201, i64 16) | |
store %..string zeroinitializer, %..string* %12 | |
%203 = getelementptr inbounds %..string, %..string* %12, i64 0, i32 0 | |
store i8* %199, i8** %203 | |
%204 = getelementptr inbounds %..string, %..string* %12, i64 0, i32 1 | |
store i64 %200, i64* %204 | |
%205 = load %..string, %..string* %12, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %195, %..string %205, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-25 | |
if.else-24: | |
%206 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%207 = load %..string, %..string* %6, align 8 | |
call void @fmt-11._pad(%fmt-11.Fmt_Info* %206, %..string %207, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-25 | |
if.done-25: | |
br label %if.done-27 | |
if.else-26: | |
%208 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
; SliceExpr | |
%209 = load %..string, %..string* %6, align 8 | |
%210 = extractvalue %..string %209, 1 | |
call void @__slice_expr_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bc, i64 0, i32 0), i64 46}, i64 574, i64 16, i64 1, i64 %210, i64 %210) | |
%211 = extractvalue %..string %209, 0 | |
%212 = getelementptr inbounds i8, i8* %211, i64 1 | |
%213 = sub i64 %210, 1 | |
%214 = bitcast %..string* %13 to %..rawptr | |
%215 = call %..rawptr @__mem_zero(%..rawptr %214, i64 16) | |
store %..string zeroinitializer, %..string* %13 | |
%216 = getelementptr inbounds %..string, %..string* %13, i64 0, i32 0 | |
store i8* %212, i8** %216 | |
%217 = getelementptr inbounds %..string, %..string* %13, i64 0, i32 1 | |
store i64 %213, i64* %217 | |
%218 = load %..string, %..string* %13, align 8 | |
call void @fmt-11._pad(%fmt-11.Fmt_Info* %208, %..string %218, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-27 | |
if.done-27: | |
br label %switch.done-28 | |
switch.done-28: | |
ret void | |
} | |
define void @fmt-11.fmt_string(%fmt-11.Fmt_Info* %fi, %..string %s, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca %..string, align 16 | |
%2 = alloca i32, align 16 | |
%3 = alloca i8, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i64, align 16 | |
%7 = alloca %..string, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store %..string %s, %..string* %1 | |
store i32 %verb, i32* %2 | |
; SwitchStmt | |
%8 = load i32, i32* %2, align 4 | |
%9 = icmp eq i32 %8, 115 | |
br i1 %9, label %switch.case.body-3, label %switch.case.next-1 | |
switch.case.next-1: | |
%10 = icmp eq i32 %8, 118 | |
br i1 %10, label %switch.case.body-3, label %switch.case.next-2 | |
switch.case.next-2: | |
%11 = icmp eq i32 %8, 120 | |
br i1 %11, label %switch.fall.body-6, label %switch.case.next-4 | |
switch.case.body-3: | |
; SelectorExpr | |
%12 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0 | |
%14 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %13, i64 0, i32 12 | |
%15 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %14, align 8 | |
%16 = load %..string, %..string* %1, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %15, %..string %16, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-15 | |
switch.case.next-4: | |
%17 = icmp eq i32 %8, 88 | |
br i1 %17, label %switch.fall.body-6, label %switch.case.next-5 | |
switch.case.next-5: | |
%18 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%19 = load i32, i32* %2, align 4 | |
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %18, i32 %19, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-15 | |
switch.fall.body-6: | |
; space | |
; SelectorExpr | |
%20 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%21 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %20, i64 0 | |
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0, i32 2 | |
%23 = load i8, i8* %22, align 1 | |
store i8 %23, i8* %3 | |
; AssignStmt | |
; SelectorExpr | |
%24 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%25 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %24, i64 0 | |
%26 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %25, i64 0, i32 2 | |
store i8 0, i8* %26 | |
; DeferStmt | |
; RangeStmt | |
; i | |
%27 = bitcast i64* %4 to %..rawptr | |
%28 = call %..rawptr @__mem_zero(%..rawptr %27, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
%29 = bitcast i64* %5 to %..rawptr | |
%30 = call %..rawptr @__mem_zero(%..rawptr %29, i64 8) | |
store i64 zeroinitializer, i64* %5 | |
store i64 0, i64* %5 | |
%31 = bitcast i64* %6 to %..rawptr | |
%32 = call %..rawptr @__mem_zero(%..rawptr %31, i64 8) | |
store i64 zeroinitializer, i64* %6 | |
store i64 0, i64* %6 | |
br label %for.interval.loop-7 | |
for.interval.loop-7: | |
%33 = load %..string, %..string* %1, align 8 | |
%34 = extractvalue %..string %33, 1 | |
%35 = load i64, i64* %5, align 8 | |
%36 = icmp slt i64 %35, %34 | |
br i1 %36, label %for.interval.body-8, label %for.interval.done-14 | |
for.interval.body-8: | |
%37 = load i64, i64* %5, align 8 | |
%38 = load i64, i64* %6, align 8 | |
%39 = load i64, i64* %5, align 8 | |
%40 = add i64 %39, 1 | |
store i64 %40, i64* %5 | |
%41 = load i64, i64* %6, align 8 | |
%42 = add i64 %41, 1 | |
store i64 %42, i64* %6 | |
store i64 %37, i64* %4 | |
; IfStmt | |
%43 = load i64, i64* %4, align 8 | |
%44 = icmp sgt i64 %43, 0 | |
%45 = zext i1 %44 to i8 | |
%46 = trunc i8 %45 to i1 | |
br i1 %46, label %cmp.and-9, label %if.done-11 | |
cmp.and-9: | |
%47 = load i8, i8* %3, align 1 | |
%48 = trunc i8 %47 to i1 | |
br i1 %48, label %if.then-10, label %if.done-11 | |
if.then-10: | |
; SelectorExpr | |
%49 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%50 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %49, i64 0 | |
%51 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %50, i64 0, i32 12 | |
%52 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %51, align 8 | |
call void @fmt-11.write_byte({i8*, i64, i64, %Allocator}* %52, i8 32, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-11 | |
if.done-11: | |
; char_set | |
%53 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8 | |
store %..string %53, %..string* %7 | |
; IfStmt | |
%54 = load i32, i32* %2, align 4 | |
%55 = icmp eq i32 %54, 120 | |
%56 = zext i1 %55 to i8 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %if.then-12, label %if.done-13 | |
if.then-12: | |
; AssignStmt | |
%58 = load %..string, %..string* @fmt-11.__DIGITS_LOWER, align 8 | |
store %..string %58, %..string* %7 | |
br label %if.done-13 | |
if.done-13: | |
%59 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
; IndexExpr | |
%60 = load %..string, %..string* %1, align 8 | |
%61 = extractvalue %..string %60, 0 | |
%62 = extractvalue %..string %60, 1 | |
%63 = load i64, i64* %4, align 8 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bd, i64 0, i32 0), i64 46}, i64 595, i64 23, i64 %63, i64 %62) | |
%64 = getelementptr inbounds i8, i8* %61, i64 %63 | |
%65 = load i8, i8* %64, align 1 | |
%66 = zext i8 %65 to i64 | |
%67 = load %..string, %..string* %7, align 8 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %59, i64 %66, i64 16, i1 false, i64 8, %..string %67, %Context* noalias nonnull %__.context_ptr) | |
br label %for.interval.loop-7 | |
for.interval.done-14: | |
; defer | |
; AssignStmt | |
; SelectorExpr | |
%68 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%69 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %68, i64 0 | |
%70 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %69, i64 0, i32 2 | |
%71 = load i8, i8* %3, align 1 | |
store i8 %71, i8* %70 | |
br label %switch.done-15 | |
switch.done-15: | |
ret void | |
} | |
define void @fmt-11.fmt_pointer(%fmt-11.Fmt_Info* %fi, %..rawptr %p, i32 %verb, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %fmt-11.Fmt_Info*, align 16 | |
%1 = alloca %..rawptr, align 16 | |
%2 = alloca i32, align 16 | |
%3 = alloca i64, align 16 | |
store %fmt-11.Fmt_Info* %fi, %fmt-11.Fmt_Info** %0 | |
store %..rawptr %p, %..rawptr* %1 | |
store i32 %verb, i32* %2 | |
; SwitchStmt | |
%4 = load i32, i32* %2, align 4 | |
%5 = icmp eq i32 %4, 112 | |
br i1 %5, label %switch.case.body-3, label %switch.case.next-1 | |
switch.case.next-1: | |
%6 = icmp eq i32 %4, 118 | |
br i1 %6, label %switch.case.body-3, label %switch.case.next-2 | |
switch.case.next-2: | |
%7 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%8 = load i32, i32* %2, align 4 | |
call void @fmt-11.fmt_bad_verb(%fmt-11.Fmt_Info* %7, i32 %8, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-7 | |
switch.case.body-3: | |
; u | |
%9 = load %..rawptr, %..rawptr* %1, align 8 | |
%10 = ptrtoint %..rawptr %9 to i64 | |
%11 = bitcast i64 %10 to i64 | |
store i64 %11, i64* %3 | |
; IfStmt | |
; SelectorExpr | |
%12 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%13 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %12, i64 0 | |
%14 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %13, i64 0, i32 4 | |
%15 = load i8, i8* %14, align 1 | |
%16 = trunc i8 %15 to i1 | |
br i1 %16, label %cmp.or-4, label %if.then-5 | |
cmp.or-4: | |
%17 = load i32, i32* %2, align 4 | |
%18 = icmp eq i32 %17, 118 | |
%19 = zext i1 %18 to i8 | |
%20 = trunc i8 %19 to i1 | |
br i1 %20, label %if.then-5, label %if.done-6 | |
if.then-5: | |
; SelectorExpr | |
%21 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%22 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %21, i64 0 | |
%23 = getelementptr inbounds %fmt-11.Fmt_Info, %fmt-11.Fmt_Info* %22, i64 0, i32 12 | |
%24 = load {i8*, i64, i64, %Allocator}*, {i8*, i64, i64, %Allocator}** %23, align 8 | |
call void @fmt-11.write_string({i8*, i64, i64, %Allocator}* %24, %..string {i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__str$1be, i64 0, i32 0), i64 2}, %Context* noalias nonnull %__.context_ptr) | |
br label %if.done-6 | |
if.done-6: | |
%25 = load %fmt-11.Fmt_Info*, %fmt-11.Fmt_Info** %0, align 8 | |
%26 = load i64, i64* %3, align 8 | |
%27 = load %..string, %..string* @fmt-11.__DIGITS_UPPER, align 8 | |
call void @fmt-11._fmt_int(%fmt-11.Fmt_Info* %25, i64 %26, i64 16, i1 false, i64 64, %..string %27, %Context* noalias nonnull %__.context_ptr) | |
br label %switch.done-7 | |
switch.done-7: | |
ret void | |
} | |
define {%..string, i8} @fmt-11.enum_value_to_string(%..any %v, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca %..any, align 16 | |
%1 = alloca %Type_Info_Enum, align 16 | |
%2 = alloca %..any, align 16 | |
%3 = alloca %..any, align 16 | |
%4 = alloca i32, align 16 | |
%5 = alloca %Type_Info_Enum, align 16 | |
%6 = alloca {%..string, i8}, align 16 | |
%7 = alloca i8, align 16 | |
%8 = alloca %Type_Info_Enum, align 16 | |
%9 = alloca {%..string, i8}, align 16 | |
%10 = alloca i16, align 16 | |
%11 = alloca %Type_Info_Enum, align 16 | |
%12 = alloca {%..string, i8}, align 16 | |
%13 = alloca i32, align 16 | |
%14 = alloca %Type_Info_Enum, align 16 | |
%15 = alloca {%..string, i8}, align 16 | |
%16 = alloca i64, align 16 | |
%17 = alloca %Type_Info_Enum, align 16 | |
%18 = alloca {%..string, i8}, align 16 | |
%19 = alloca i64, align 16 | |
%20 = alloca %Type_Info_Enum, align 16 | |
%21 = alloca {%..string, i8}, align 16 | |
%22 = alloca i8, align 16 | |
%23 = alloca %Type_Info_Enum, align 16 | |
%24 = alloca {%..string, i8}, align 16 | |
%25 = alloca i16, align 16 | |
%26 = alloca %Type_Info_Enum, align 16 | |
%27 = alloca {%..string, i8}, align 16 | |
%28 = alloca i32, align 16 | |
%29 = alloca %Type_Info_Enum, align 16 | |
%30 = alloca {%..string, i8}, align 16 | |
%31 = alloca i64, align 16 | |
%32 = alloca %Type_Info_Enum, align 16 | |
%33 = alloca {%..string, i8}, align 16 | |
%34 = alloca i64, align 16 | |
%35 = alloca %Type_Info_Enum, align 16 | |
%36 = alloca {%..string, i8}, align 16 | |
%37 = alloca i64, align 16 | |
%38 = alloca %Type_Info_Enum, align 16 | |
%39 = alloca {%..string, i8}, align 16 | |
%40 = alloca float, align 16 | |
%41 = alloca %Type_Info_Enum, align 16 | |
%42 = alloca {%..string, i8}, align 16 | |
%43 = alloca double, align 16 | |
%44 = alloca %Type_Info_Enum, align 16 | |
%45 = alloca {%..string, i8}, align 16 | |
%46 = alloca {[0 x <8 x i8>], [72 x i8], i8}, align 16 | |
%47 = alloca {%..string, i8}, align 16 | |
%48 = alloca {%..string, i8}, align 16 | |
store %..any %v, %..any* %0 | |
; AssignStmt | |
; SelectorExpr | |
%49 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 1 | |
; SelectorExpr | |
%50 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 1 | |
%51 = load %Type_Info*, %Type_Info** %50, align 8 | |
%52 = call %Type_Info* @type_info_base(%Type_Info* %51, %Context* noalias nonnull %__.context_ptr) | |
store %Type_Info* %52, %Type_Info** %49 | |
; TypeSwitchStmt | |
; SelectorExpr | |
; SelectorExpr | |
%53 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 1 | |
%54 = load %Type_Info*, %Type_Info** %53, align 8 | |
%55 = getelementptr inbounds %Type_Info, %Type_Info* %54, i64 0 | |
%56 = getelementptr inbounds %Type_Info, %Type_Info* %55, i64 0, i32 2 | |
%57 = load {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %56, align 8 | |
; get union's tag | |
%58 = getelementptr inbounds {[0 x <8 x i8>], [72 x i8], i8}, {[0 x <8 x i8>], [72 x i8], i8}* %56, i64 0, i32 2 ; UnionTagPtr | |
%59 = load i8, i8* %58, align 1 | |
%60 = bitcast {[0 x <8 x i8>], [72 x i8], i8}* %56 to %..rawptr | |
%61 = icmp eq i8 %59, 17 | |
br i1 %61, label %typeswitch.body-2, label %typeswitch.next-1 | |
typeswitch.next-1: | |
store {[0 x <8 x i8>], [72 x i8], i8} %57, {[0 x <8 x i8>], [72 x i8], i8}* %46 | |
; ReturnStmt | |
%62 = bitcast {%..string, i8}* %47 to %..rawptr | |
%63 = call %..rawptr @__mem_zero(%..rawptr %62, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %47 | |
%64 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %47, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %64 | |
%65 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %47, i64 0, i32 1 | |
store i8 0, i8* %65 | |
%66 = load {%..string, i8}, {%..string, i8}* %47, align 8 | |
ret {%..string, i8} %66 | |
typeswitch.body-2: | |
%67 = bitcast %..rawptr %60 to %Type_Info_Enum* | |
%68 = load %Type_Info_Enum, %Type_Info_Enum* %67, align 8 | |
store %Type_Info_Enum %68, %Type_Info_Enum* %1 | |
; a | |
; CompoundLit | |
%69 = bitcast %..any* %3 to %..rawptr | |
%70 = call %..rawptr @__mem_zero(%..rawptr %69, i64 16) | |
store %..any zeroinitializer, %..any* %3 | |
store %..any zeroinitializer, %..any* %3 | |
; SelectorExpr | |
%71 = getelementptr inbounds %..any, %..any* %0, i64 0, i32 0 | |
%72 = load %..rawptr, %..rawptr* %71, align 8 | |
%73 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 0 | |
store %..rawptr %72, %..rawptr* %73 | |
; SelectorExpr | |
%74 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %1, i64 0, i32 0 | |
%75 = load %Type_Info*, %Type_Info** %74, align 8 | |
%76 = call %Type_Info* @type_info_base(%Type_Info* %75, %Context* noalias nonnull %__.context_ptr) | |
%77 = getelementptr inbounds %..any, %..any* %3, i64 0, i32 1 | |
store %Type_Info* %76, %Type_Info** %77 | |
%78 = load %..any, %..any* %3, align 8 | |
store %..any %78, %..any* %2 | |
; TypeSwitchStmt | |
%79 = load %..any, %..any* %2, align 8 | |
%80 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%81 = load %Type_Info*, %Type_Info** %80, align 8 | |
%82 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 66 | |
%83 = icmp eq %Type_Info* %81, %82 | |
br i1 %83, label %typeswitch.body-4, label %typeswitch.next-3 | |
typeswitch.next-3: | |
%84 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%85 = load %Type_Info*, %Type_Info** %84, align 8 | |
%86 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 67 | |
%87 = icmp eq %Type_Info* %85, %86 | |
br i1 %87, label %typeswitch.body-6, label %typeswitch.next-5 | |
typeswitch.body-4: | |
%88 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%89 = load %..rawptr, %..rawptr* %88, align 8 | |
%90 = bitcast %..rawptr %89 to i32* | |
%91 = load i32, i32* %90, align 4 | |
store i32 %91, i32* %4 | |
; ReturnStmt | |
%92 = load i32, i32* %4, align 4 | |
%93 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%94 = bitcast %Type_Info_Enum* %5 to %..rawptr | |
%95 = call %..rawptr @__mem_zero(%..rawptr %94, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %5 | |
store %Type_Info_Enum %93, %Type_Info_Enum* %5 | |
%96 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-0(i32 %92, %Type_Info_Enum* %5, %Context* noalias nonnull %__.context_ptr) | |
%97 = extractvalue {%..string, i8} %96, 0 | |
%98 = extractvalue {%..string, i8} %96, 1 | |
%99 = bitcast {%..string, i8}* %6 to %..rawptr | |
%100 = call %..rawptr @__mem_zero(%..rawptr %99, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %6 | |
%101 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %6, i64 0, i32 0 | |
store %..string %97, %..string* %101 | |
%102 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %6, i64 0, i32 1 | |
store i8 %98, i8* %102 | |
%103 = load {%..string, i8}, {%..string, i8}* %6, align 8 | |
ret {%..string, i8} %103 | |
typeswitch.next-5: | |
%104 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%105 = load %Type_Info*, %Type_Info** %104, align 8 | |
%106 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 68 | |
%107 = icmp eq %Type_Info* %105, %106 | |
br i1 %107, label %typeswitch.body-8, label %typeswitch.next-7 | |
typeswitch.body-6: | |
%108 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%109 = load %..rawptr, %..rawptr* %108, align 8 | |
%110 = bitcast %..rawptr %109 to i8* | |
%111 = load i8, i8* %110, align 1 | |
store i8 %111, i8* %7 | |
; ReturnStmt | |
%112 = load i8, i8* %7, align 1 | |
%113 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%114 = bitcast %Type_Info_Enum* %8 to %..rawptr | |
%115 = call %..rawptr @__mem_zero(%..rawptr %114, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %8 | |
store %Type_Info_Enum %113, %Type_Info_Enum* %8 | |
%116 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-1(i8 %112, %Type_Info_Enum* %8, %Context* noalias nonnull %__.context_ptr) | |
%117 = extractvalue {%..string, i8} %116, 0 | |
%118 = extractvalue {%..string, i8} %116, 1 | |
%119 = bitcast {%..string, i8}* %9 to %..rawptr | |
%120 = call %..rawptr @__mem_zero(%..rawptr %119, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %9 | |
%121 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0 | |
store %..string %117, %..string* %121 | |
%122 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1 | |
store i8 %118, i8* %122 | |
%123 = load {%..string, i8}, {%..string, i8}* %9, align 8 | |
ret {%..string, i8} %123 | |
typeswitch.next-7: | |
%124 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%125 = load %Type_Info*, %Type_Info** %124, align 8 | |
%126 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 11 | |
%127 = icmp eq %Type_Info* %125, %126 | |
br i1 %127, label %typeswitch.body-10, label %typeswitch.next-9 | |
typeswitch.body-8: | |
%128 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%129 = load %..rawptr, %..rawptr* %128, align 8 | |
%130 = bitcast %..rawptr %129 to i16* | |
%131 = load i16, i16* %130, align 2 | |
store i16 %131, i16* %10 | |
; ReturnStmt | |
%132 = load i16, i16* %10, align 2 | |
%133 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%134 = bitcast %Type_Info_Enum* %11 to %..rawptr | |
%135 = call %..rawptr @__mem_zero(%..rawptr %134, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %11 | |
store %Type_Info_Enum %133, %Type_Info_Enum* %11 | |
%136 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-2(i16 %132, %Type_Info_Enum* %11, %Context* noalias nonnull %__.context_ptr) | |
%137 = extractvalue {%..string, i8} %136, 0 | |
%138 = extractvalue {%..string, i8} %136, 1 | |
%139 = bitcast {%..string, i8}* %12 to %..rawptr | |
%140 = call %..rawptr @__mem_zero(%..rawptr %139, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %12 | |
%141 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %12, i64 0, i32 0 | |
store %..string %137, %..string* %141 | |
%142 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %12, i64 0, i32 1 | |
store i8 %138, i8* %142 | |
%143 = load {%..string, i8}, {%..string, i8}* %12, align 8 | |
ret {%..string, i8} %143 | |
typeswitch.next-9: | |
%144 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%145 = load %Type_Info*, %Type_Info** %144, align 8 | |
%146 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 69 | |
%147 = icmp eq %Type_Info* %145, %146 | |
br i1 %147, label %typeswitch.body-12, label %typeswitch.next-11 | |
typeswitch.body-10: | |
%148 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%149 = load %..rawptr, %..rawptr* %148, align 8 | |
%150 = bitcast %..rawptr %149 to i32* | |
%151 = load i32, i32* %150, align 4 | |
store i32 %151, i32* %13 | |
; ReturnStmt | |
%152 = load i32, i32* %13, align 4 | |
%153 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%154 = bitcast %Type_Info_Enum* %14 to %..rawptr | |
%155 = call %..rawptr @__mem_zero(%..rawptr %154, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %14 | |
store %Type_Info_Enum %153, %Type_Info_Enum* %14 | |
%156 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-3(i32 %152, %Type_Info_Enum* %14, %Context* noalias nonnull %__.context_ptr) | |
%157 = extractvalue {%..string, i8} %156, 0 | |
%158 = extractvalue {%..string, i8} %156, 1 | |
%159 = bitcast {%..string, i8}* %15 to %..rawptr | |
%160 = call %..rawptr @__mem_zero(%..rawptr %159, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %15 | |
%161 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %15, i64 0, i32 0 | |
store %..string %157, %..string* %161 | |
%162 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %15, i64 0, i32 1 | |
store i8 %158, i8* %162 | |
%163 = load {%..string, i8}, {%..string, i8}* %15, align 8 | |
ret {%..string, i8} %163 | |
typeswitch.next-11: | |
%164 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%165 = load %Type_Info*, %Type_Info** %164, align 8 | |
%166 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 6 | |
%167 = icmp eq %Type_Info* %165, %166 | |
br i1 %167, label %typeswitch.body-14, label %typeswitch.next-13 | |
typeswitch.body-12: | |
%168 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%169 = load %..rawptr, %..rawptr* %168, align 8 | |
%170 = bitcast %..rawptr %169 to i64* | |
%171 = load i64, i64* %170, align 8 | |
store i64 %171, i64* %16 | |
; ReturnStmt | |
%172 = load i64, i64* %16, align 8 | |
%173 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%174 = bitcast %Type_Info_Enum* %17 to %..rawptr | |
%175 = call %..rawptr @__mem_zero(%..rawptr %174, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %17 | |
store %Type_Info_Enum %173, %Type_Info_Enum* %17 | |
%176 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-4(i64 %172, %Type_Info_Enum* %17, %Context* noalias nonnull %__.context_ptr) | |
%177 = extractvalue {%..string, i8} %176, 0 | |
%178 = extractvalue {%..string, i8} %176, 1 | |
%179 = bitcast {%..string, i8}* %18 to %..rawptr | |
%180 = call %..rawptr @__mem_zero(%..rawptr %179, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %18 | |
%181 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0 | |
store %..string %177, %..string* %181 | |
%182 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1 | |
store i8 %178, i8* %182 | |
%183 = load {%..string, i8}, {%..string, i8}* %18, align 8 | |
ret {%..string, i8} %183 | |
typeswitch.next-13: | |
%184 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%185 = load %Type_Info*, %Type_Info** %184, align 8 | |
%186 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 20 | |
%187 = icmp eq %Type_Info* %185, %186 | |
br i1 %187, label %typeswitch.body-16, label %typeswitch.next-15 | |
typeswitch.body-14: | |
%188 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%189 = load %..rawptr, %..rawptr* %188, align 8 | |
%190 = bitcast %..rawptr %189 to i64* | |
%191 = load i64, i64* %190, align 8 | |
store i64 %191, i64* %19 | |
; ReturnStmt | |
%192 = load i64, i64* %19, align 8 | |
%193 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%194 = bitcast %Type_Info_Enum* %20 to %..rawptr | |
%195 = call %..rawptr @__mem_zero(%..rawptr %194, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %20 | |
store %Type_Info_Enum %193, %Type_Info_Enum* %20 | |
%196 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-5(i64 %192, %Type_Info_Enum* %20, %Context* noalias nonnull %__.context_ptr) | |
%197 = extractvalue {%..string, i8} %196, 0 | |
%198 = extractvalue {%..string, i8} %196, 1 | |
%199 = bitcast {%..string, i8}* %21 to %..rawptr | |
%200 = call %..rawptr @__mem_zero(%..rawptr %199, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %21 | |
%201 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %21, i64 0, i32 0 | |
store %..string %197, %..string* %201 | |
%202 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %21, i64 0, i32 1 | |
store i8 %198, i8* %202 | |
%203 = load {%..string, i8}, {%..string, i8}* %21, align 8 | |
ret {%..string, i8} %203 | |
typeswitch.next-15: | |
%204 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%205 = load %Type_Info*, %Type_Info** %204, align 8 | |
%206 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 70 | |
%207 = icmp eq %Type_Info* %205, %206 | |
br i1 %207, label %typeswitch.body-18, label %typeswitch.next-17 | |
typeswitch.body-16: | |
%208 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%209 = load %..rawptr, %..rawptr* %208, align 8 | |
%210 = bitcast %..rawptr %209 to i8* | |
%211 = load i8, i8* %210, align 1 | |
store i8 %211, i8* %22 | |
; ReturnStmt | |
%212 = load i8, i8* %22, align 1 | |
%213 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%214 = bitcast %Type_Info_Enum* %23 to %..rawptr | |
%215 = call %..rawptr @__mem_zero(%..rawptr %214, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %23 | |
store %Type_Info_Enum %213, %Type_Info_Enum* %23 | |
%216 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-6(i8 %212, %Type_Info_Enum* %23, %Context* noalias nonnull %__.context_ptr) | |
%217 = extractvalue {%..string, i8} %216, 0 | |
%218 = extractvalue {%..string, i8} %216, 1 | |
%219 = bitcast {%..string, i8}* %24 to %..rawptr | |
%220 = call %..rawptr @__mem_zero(%..rawptr %219, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %24 | |
%221 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %24, i64 0, i32 0 | |
store %..string %217, %..string* %221 | |
%222 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %24, i64 0, i32 1 | |
store i8 %218, i8* %222 | |
%223 = load {%..string, i8}, {%..string, i8}* %24, align 8 | |
ret {%..string, i8} %223 | |
typeswitch.next-17: | |
%224 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%225 = load %Type_Info*, %Type_Info** %224, align 8 | |
%226 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 3 | |
%227 = icmp eq %Type_Info* %225, %226 | |
br i1 %227, label %typeswitch.body-20, label %typeswitch.next-19 | |
typeswitch.body-18: | |
%228 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%229 = load %..rawptr, %..rawptr* %228, align 8 | |
%230 = bitcast %..rawptr %229 to i16* | |
%231 = load i16, i16* %230, align 2 | |
store i16 %231, i16* %25 | |
; ReturnStmt | |
%232 = load i16, i16* %25, align 2 | |
%233 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%234 = bitcast %Type_Info_Enum* %26 to %..rawptr | |
%235 = call %..rawptr @__mem_zero(%..rawptr %234, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %26 | |
store %Type_Info_Enum %233, %Type_Info_Enum* %26 | |
%236 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-7(i16 %232, %Type_Info_Enum* %26, %Context* noalias nonnull %__.context_ptr) | |
%237 = extractvalue {%..string, i8} %236, 0 | |
%238 = extractvalue {%..string, i8} %236, 1 | |
%239 = bitcast {%..string, i8}* %27 to %..rawptr | |
%240 = call %..rawptr @__mem_zero(%..rawptr %239, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %27 | |
%241 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %27, i64 0, i32 0 | |
store %..string %237, %..string* %241 | |
%242 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %27, i64 0, i32 1 | |
store i8 %238, i8* %242 | |
%243 = load {%..string, i8}, {%..string, i8}* %27, align 8 | |
ret {%..string, i8} %243 | |
typeswitch.next-19: | |
%244 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%245 = load %Type_Info*, %Type_Info** %244, align 8 | |
%246 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 71 | |
%247 = icmp eq %Type_Info* %245, %246 | |
br i1 %247, label %typeswitch.body-22, label %typeswitch.next-21 | |
typeswitch.body-20: | |
%248 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%249 = load %..rawptr, %..rawptr* %248, align 8 | |
%250 = bitcast %..rawptr %249 to i32* | |
%251 = load i32, i32* %250, align 4 | |
store i32 %251, i32* %28 | |
; ReturnStmt | |
%252 = load i32, i32* %28, align 4 | |
%253 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%254 = bitcast %Type_Info_Enum* %29 to %..rawptr | |
%255 = call %..rawptr @__mem_zero(%..rawptr %254, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %29 | |
store %Type_Info_Enum %253, %Type_Info_Enum* %29 | |
%256 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-8(i32 %252, %Type_Info_Enum* %29, %Context* noalias nonnull %__.context_ptr) | |
%257 = extractvalue {%..string, i8} %256, 0 | |
%258 = extractvalue {%..string, i8} %256, 1 | |
%259 = bitcast {%..string, i8}* %30 to %..rawptr | |
%260 = call %..rawptr @__mem_zero(%..rawptr %259, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %30 | |
%261 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %30, i64 0, i32 0 | |
store %..string %257, %..string* %261 | |
%262 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %30, i64 0, i32 1 | |
store i8 %258, i8* %262 | |
%263 = load {%..string, i8}, {%..string, i8}* %30, align 8 | |
ret {%..string, i8} %263 | |
typeswitch.next-21: | |
%264 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%265 = load %Type_Info*, %Type_Info** %264, align 8 | |
%266 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 72 | |
%267 = icmp eq %Type_Info* %265, %266 | |
br i1 %267, label %typeswitch.body-24, label %typeswitch.next-23 | |
typeswitch.body-22: | |
%268 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%269 = load %..rawptr, %..rawptr* %268, align 8 | |
%270 = bitcast %..rawptr %269 to i64* | |
%271 = load i64, i64* %270, align 8 | |
store i64 %271, i64* %31 | |
; ReturnStmt | |
%272 = load i64, i64* %31, align 8 | |
%273 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%274 = bitcast %Type_Info_Enum* %32 to %..rawptr | |
%275 = call %..rawptr @__mem_zero(%..rawptr %274, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %32 | |
store %Type_Info_Enum %273, %Type_Info_Enum* %32 | |
%276 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-9(i64 %272, %Type_Info_Enum* %32, %Context* noalias nonnull %__.context_ptr) | |
%277 = extractvalue {%..string, i8} %276, 0 | |
%278 = extractvalue {%..string, i8} %276, 1 | |
%279 = bitcast {%..string, i8}* %33 to %..rawptr | |
%280 = call %..rawptr @__mem_zero(%..rawptr %279, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %33 | |
%281 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %33, i64 0, i32 0 | |
store %..string %277, %..string* %281 | |
%282 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %33, i64 0, i32 1 | |
store i8 %278, i8* %282 | |
%283 = load {%..string, i8}, {%..string, i8}* %33, align 8 | |
ret {%..string, i8} %283 | |
typeswitch.next-23: | |
%284 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%285 = load %Type_Info*, %Type_Info** %284, align 8 | |
%286 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 55 | |
%287 = icmp eq %Type_Info* %285, %286 | |
br i1 %287, label %typeswitch.body-26, label %typeswitch.next-25 | |
typeswitch.body-24: | |
%288 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%289 = load %..rawptr, %..rawptr* %288, align 8 | |
%290 = bitcast %..rawptr %289 to i64* | |
%291 = load i64, i64* %290, align 8 | |
store i64 %291, i64* %34 | |
; ReturnStmt | |
%292 = load i64, i64* %34, align 8 | |
%293 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%294 = bitcast %Type_Info_Enum* %35 to %..rawptr | |
%295 = call %..rawptr @__mem_zero(%..rawptr %294, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %35 | |
store %Type_Info_Enum %293, %Type_Info_Enum* %35 | |
%296 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-10(i64 %292, %Type_Info_Enum* %35, %Context* noalias nonnull %__.context_ptr) | |
%297 = extractvalue {%..string, i8} %296, 0 | |
%298 = extractvalue {%..string, i8} %296, 1 | |
%299 = bitcast {%..string, i8}* %36 to %..rawptr | |
%300 = call %..rawptr @__mem_zero(%..rawptr %299, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %36 | |
%301 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %36, i64 0, i32 0 | |
store %..string %297, %..string* %301 | |
%302 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %36, i64 0, i32 1 | |
store i8 %298, i8* %302 | |
%303 = load {%..string, i8}, {%..string, i8}* %36, align 8 | |
ret {%..string, i8} %303 | |
typeswitch.next-25: | |
%304 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%305 = load %Type_Info*, %Type_Info** %304, align 8 | |
%306 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 73 | |
%307 = icmp eq %Type_Info* %305, %306 | |
br i1 %307, label %typeswitch.body-28, label %typeswitch.next-27 | |
typeswitch.body-26: | |
%308 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%309 = load %..rawptr, %..rawptr* %308, align 8 | |
%310 = bitcast %..rawptr %309 to i64* | |
%311 = load i64, i64* %310, align 8 | |
store i64 %311, i64* %37 | |
; ReturnStmt | |
%312 = load i64, i64* %37, align 8 | |
%313 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%314 = bitcast %Type_Info_Enum* %38 to %..rawptr | |
%315 = call %..rawptr @__mem_zero(%..rawptr %314, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %38 | |
store %Type_Info_Enum %313, %Type_Info_Enum* %38 | |
%316 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-11(i64 %312, %Type_Info_Enum* %38, %Context* noalias nonnull %__.context_ptr) | |
%317 = extractvalue {%..string, i8} %316, 0 | |
%318 = extractvalue {%..string, i8} %316, 1 | |
%319 = bitcast {%..string, i8}* %39 to %..rawptr | |
%320 = call %..rawptr @__mem_zero(%..rawptr %319, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %39 | |
%321 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %39, i64 0, i32 0 | |
store %..string %317, %..string* %321 | |
%322 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %39, i64 0, i32 1 | |
store i8 %318, i8* %322 | |
%323 = load {%..string, i8}, {%..string, i8}* %39, align 8 | |
ret {%..string, i8} %323 | |
typeswitch.next-27: | |
%324 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 1 | |
%325 = load %Type_Info*, %Type_Info** %324, align 8 | |
%326 = getelementptr inbounds [715 x %Type_Info], [715 x %Type_Info]* @__$type_info_data, i64 0, i32 74 | |
%327 = icmp eq %Type_Info* %325, %326 | |
br i1 %327, label %typeswitch.body-30, label %typeswitch.next-29 | |
typeswitch.body-28: | |
%328 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%329 = load %..rawptr, %..rawptr* %328, align 8 | |
%330 = bitcast %..rawptr %329 to float* | |
%331 = load float, float* %330, align 4 | |
store float %331, float* %40 | |
; ReturnStmt | |
%332 = load float, float* %40, align 4 | |
%333 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%334 = bitcast %Type_Info_Enum* %41 to %..rawptr | |
%335 = call %..rawptr @__mem_zero(%..rawptr %334, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %41 | |
store %Type_Info_Enum %333, %Type_Info_Enum* %41 | |
%336 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-12(float %332, %Type_Info_Enum* %41, %Context* noalias nonnull %__.context_ptr) | |
%337 = extractvalue {%..string, i8} %336, 0 | |
%338 = extractvalue {%..string, i8} %336, 1 | |
%339 = bitcast {%..string, i8}* %42 to %..rawptr | |
%340 = call %..rawptr @__mem_zero(%..rawptr %339, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %42 | |
%341 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %42, i64 0, i32 0 | |
store %..string %337, %..string* %341 | |
%342 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %42, i64 0, i32 1 | |
store i8 %338, i8* %342 | |
%343 = load {%..string, i8}, {%..string, i8}* %42, align 8 | |
ret {%..string, i8} %343 | |
typeswitch.next-29: | |
; ReturnStmt | |
%344 = bitcast {%..string, i8}* %48 to %..rawptr | |
%345 = call %..rawptr @__mem_zero(%..rawptr %344, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %48 | |
%346 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %48, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %346 | |
%347 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %48, i64 0, i32 1 | |
store i8 0, i8* %347 | |
%348 = load {%..string, i8}, {%..string, i8}* %48, align 8 | |
ret {%..string, i8} %348 | |
typeswitch.body-30: | |
%349 = getelementptr inbounds %..any, %..any* %2, i64 0, i32 0 | |
%350 = load %..rawptr, %..rawptr* %349, align 8 | |
%351 = bitcast %..rawptr %350 to double* | |
%352 = load double, double* %351, align 8 | |
store double %352, double* %43 | |
; ReturnStmt | |
%353 = load double, double* %43, align 8 | |
%354 = load %Type_Info_Enum, %Type_Info_Enum* %1, align 8 | |
%355 = bitcast %Type_Info_Enum* %44 to %..rawptr | |
%356 = call %..rawptr @__mem_zero(%..rawptr %355, i64 48) | |
store %Type_Info_Enum zeroinitializer, %Type_Info_Enum* %44 | |
store %Type_Info_Enum %354, %Type_Info_Enum* %44 | |
%357 = call {%..string, i8} @fmt-11.enum_value_to_string.get_str-13(double %353, %Type_Info_Enum* %44, %Context* noalias nonnull %__.context_ptr) | |
%358 = extractvalue {%..string, i8} %357, 0 | |
%359 = extractvalue {%..string, i8} %357, 1 | |
%360 = bitcast {%..string, i8}* %45 to %..rawptr | |
%361 = call %..rawptr @__mem_zero(%..rawptr %360, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %45 | |
%362 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %45, i64 0, i32 0 | |
store %..string %358, %..string* %362 | |
%363 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %45, i64 0, i32 1 | |
store i8 %359, i8* %363 | |
%364 = load {%..string, i8}, {%..string, i8}* %45, align 8 | |
ret {%..string, i8} %364 | |
} | |
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-0(i32 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
%1 = alloca %Type_Info_Enum_Value, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i32, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca {i32, i8}, align 16 | |
%8 = alloca {%..string, i8}, align 16 | |
%9 = alloca {%..string, i8}, align 16 | |
%10 = alloca %Type_Info_Enum_Value, align 16 | |
%11 = alloca i64, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca i32, align 16 | |
%15 = alloca i8, align 16 | |
%16 = alloca {i32, i8}, align 16 | |
%17 = alloca {%..string, i8}, align 16 | |
%18 = alloca {%..string, i8}, align 16 | |
store i32 %i, i32* %0 | |
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8 | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0 | |
%21 = load %Type_Info*, %Type_Info** %20, align 8 | |
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr) | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.else-10 | |
if.then-1: | |
; RangeStmt | |
; val | |
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1 | |
; idx | |
%26 = bitcast i64* %2 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
; SelectorExpr | |
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8 | |
%30 = bitcast i64* %3 to %..rawptr | |
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1 | |
store i64 %32, i64* %3 | |
%33 = bitcast i64* %4 to %..rawptr | |
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 -1, i64* %4 | |
br label %for.index.loop-2 | |
for.index.loop-2: | |
%35 = load i64, i64* %4, align 8 | |
%36 = add i64 %35, 1 | |
store i64 %36, i64* %4 | |
%37 = load i64, i64* %3, align 8 | |
%38 = icmp slt i64 %36, %37 | |
br i1 %38, label %for.index.body-3, label %for.index.done-9 | |
for.index.body-3: | |
%39 = load i64, i64* %4, align 8 | |
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0 | |
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39 | |
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8 | |
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1 | |
store i64 %39, i64* %2 | |
; IfStmt | |
; v | |
; ok | |
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8 | |
; cast - union_cast | |
%44 = bitcast {i32, i8}* %7 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 8) | |
store {i32, i8} zeroinitializer, {i32, i8}* %7 | |
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr | |
%47 = load i8, i8* %46, align 1 | |
%48 = icmp eq i8 %47, 1 | |
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5 | |
union_cast.ok-4: | |
%49 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 0 | |
%50 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 1 | |
%51 = bitcast %Type_Info_Enum_Value* %1 to i32* | |
%52 = load i32, i32* %51, align 4 | |
store i32 %52, i32* %49 | |
store i8 1, i8* %50 | |
br label %union_cast.end-5 | |
union_cast.end-5: | |
%53 = load {i32, i8}, {i32, i8}* %7, align 4 | |
%54 = extractvalue {i32, i8} %53, 0 | |
%55 = extractvalue {i32, i8} %53, 1 | |
store i32 %54, i32* %5 | |
store i8 %55, i8* %6 | |
%56 = load i8, i8* %6, align 1 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %cmp.and-6, label %if.done-8 | |
cmp.and-6: | |
%58 = load i32, i32* %5, align 4 | |
%59 = load i32, i32* %0, align 4 | |
%60 = icmp eq i32 %58, %59 | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8 | |
%65 = extractvalue {%..string*, i64} %64, 0 | |
%66 = load i64, i64* %2, align 8 | |
%67 = extractvalue {%..string*, i64} %64, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1bf, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67) | |
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66 | |
%69 = load %..string, %..string* %68, align 8 | |
%70 = bitcast {%..string, i8}* %8 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %8 | |
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0 | |
store %..string %69, %..string* %72 | |
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1 | |
store i8 1, i8* %73 | |
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8 | |
ret {%..string, i8} %74 | |
if.done-8: | |
br label %for.index.loop-2 | |
for.index.done-9: | |
br label %if.done-21 | |
if.else-10: | |
; IfStmt | |
; SelectorExpr | |
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8 | |
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1 | |
%78 = icmp eq i64 %77, 0 | |
%79 = zext i1 %78 to i8 | |
%80 = trunc i8 %79 to i1 | |
br i1 %80, label %if.then-11, label %if.else-12 | |
if.then-11: | |
; ReturnStmt | |
%81 = bitcast {%..string, i8}* %9 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %9 | |
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %83 | |
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1 | |
store i8 1, i8* %84 | |
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8 | |
ret {%..string, i8} %85 | |
if.else-12: | |
; RangeStmt | |
; val | |
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr | |
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10 | |
; idx | |
%88 = bitcast i64* %11 to %..rawptr | |
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8) | |
store i64 zeroinitializer, i64* %11 | |
; SelectorExpr | |
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8 | |
%92 = bitcast i64* %12 to %..rawptr | |
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8) | |
store i64 zeroinitializer, i64* %12 | |
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1 | |
store i64 %94, i64* %12 | |
%95 = bitcast i64* %13 to %..rawptr | |
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8) | |
store i64 zeroinitializer, i64* %13 | |
store i64 -1, i64* %13 | |
br label %for.index.loop-13 | |
for.index.loop-13: | |
%97 = load i64, i64* %13, align 8 | |
%98 = add i64 %97, 1 | |
store i64 %98, i64* %13 | |
%99 = load i64, i64* %12, align 8 | |
%100 = icmp slt i64 %98, %99 | |
br i1 %100, label %for.index.body-14, label %for.index.done-20 | |
for.index.body-14: | |
%101 = load i64, i64* %13, align 8 | |
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0 | |
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101 | |
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8 | |
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10 | |
store i64 %101, i64* %11 | |
; IfStmt | |
; v | |
; ok | |
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8 | |
; cast - union_cast | |
%106 = bitcast {i32, i8}* %16 to %..rawptr | |
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 8) | |
store {i32, i8} zeroinitializer, {i32, i8}* %16 | |
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr | |
%109 = load i8, i8* %108, align 1 | |
%110 = icmp eq i8 %109, 1 | |
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16 | |
union_cast.ok-15: | |
%111 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 0 | |
%112 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 1 | |
%113 = bitcast %Type_Info_Enum_Value* %10 to i32* | |
%114 = load i32, i32* %113, align 4 | |
store i32 %114, i32* %111 | |
store i8 1, i8* %112 | |
br label %union_cast.end-16 | |
union_cast.end-16: | |
%115 = load {i32, i8}, {i32, i8}* %16, align 4 | |
%116 = extractvalue {i32, i8} %115, 0 | |
%117 = extractvalue {i32, i8} %115, 1 | |
store i32 %116, i32* %14 | |
store i8 %117, i8* %15 | |
%118 = load i8, i8* %15, align 1 | |
%119 = trunc i8 %118 to i1 | |
br i1 %119, label %cmp.and-17, label %if.done-19 | |
cmp.and-17: | |
%120 = load i32, i32* %14, align 4 | |
%121 = load i32, i32* %0, align 4 | |
%122 = icmp eq i32 %120, %121 | |
%123 = zext i1 %122 to i8 | |
%124 = trunc i8 %123 to i1 | |
br i1 %124, label %if.then-18, label %if.done-19 | |
if.then-18: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8 | |
%127 = extractvalue {%..string*, i64} %126, 0 | |
%128 = load i64, i64* %11, align 8 | |
%129 = extractvalue {%..string*, i64} %126, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c0, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129) | |
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128 | |
%131 = load %..string, %..string* %130, align 8 | |
%132 = bitcast {%..string, i8}* %17 to %..rawptr | |
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %17 | |
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0 | |
store %..string %131, %..string* %134 | |
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1 | |
store i8 1, i8* %135 | |
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8 | |
ret {%..string, i8} %136 | |
if.done-19: | |
br label %for.index.loop-13 | |
for.index.done-20: | |
br label %if.done-21 | |
if.done-21: | |
; ReturnStmt | |
%137 = bitcast {%..string, i8}* %18 to %..rawptr | |
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %18 | |
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %139 | |
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1 | |
store i8 0, i8* %140 | |
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8 | |
ret {%..string, i8} %141 | |
} | |
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-1(i8 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i8, align 16 | |
%1 = alloca %Type_Info_Enum_Value, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i8, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca {i8, i8}, align 16 | |
%8 = alloca {%..string, i8}, align 16 | |
%9 = alloca {%..string, i8}, align 16 | |
%10 = alloca %Type_Info_Enum_Value, align 16 | |
%11 = alloca i64, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca i8, align 16 | |
%15 = alloca i8, align 16 | |
%16 = alloca {i8, i8}, align 16 | |
%17 = alloca {%..string, i8}, align 16 | |
%18 = alloca {%..string, i8}, align 16 | |
store i8 %i, i8* %0 | |
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8 | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0 | |
%21 = load %Type_Info*, %Type_Info** %20, align 8 | |
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr) | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.else-10 | |
if.then-1: | |
; RangeStmt | |
; val | |
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1 | |
; idx | |
%26 = bitcast i64* %2 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
; SelectorExpr | |
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8 | |
%30 = bitcast i64* %3 to %..rawptr | |
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1 | |
store i64 %32, i64* %3 | |
%33 = bitcast i64* %4 to %..rawptr | |
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 -1, i64* %4 | |
br label %for.index.loop-2 | |
for.index.loop-2: | |
%35 = load i64, i64* %4, align 8 | |
%36 = add i64 %35, 1 | |
store i64 %36, i64* %4 | |
%37 = load i64, i64* %3, align 8 | |
%38 = icmp slt i64 %36, %37 | |
br i1 %38, label %for.index.body-3, label %for.index.done-9 | |
for.index.body-3: | |
%39 = load i64, i64* %4, align 8 | |
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0 | |
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39 | |
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8 | |
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1 | |
store i64 %39, i64* %2 | |
; IfStmt | |
; v | |
; ok | |
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8 | |
; cast - union_cast | |
%44 = bitcast {i8, i8}* %7 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 2) | |
store {i8, i8} zeroinitializer, {i8, i8}* %7 | |
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr | |
%47 = load i8, i8* %46, align 1 | |
%48 = icmp eq i8 %47, 2 | |
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5 | |
union_cast.ok-4: | |
%49 = getelementptr inbounds {i8, i8}, {i8, i8}* %7, i64 0, i32 0 | |
%50 = getelementptr inbounds {i8, i8}, {i8, i8}* %7, i64 0, i32 1 | |
%51 = bitcast %Type_Info_Enum_Value* %1 to i8* | |
%52 = load i8, i8* %51, align 1 | |
store i8 %52, i8* %49 | |
store i8 1, i8* %50 | |
br label %union_cast.end-5 | |
union_cast.end-5: | |
%53 = load {i8, i8}, {i8, i8}* %7, align 1 | |
%54 = extractvalue {i8, i8} %53, 0 | |
%55 = extractvalue {i8, i8} %53, 1 | |
store i8 %54, i8* %5 | |
store i8 %55, i8* %6 | |
%56 = load i8, i8* %6, align 1 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %cmp.and-6, label %if.done-8 | |
cmp.and-6: | |
%58 = load i8, i8* %5, align 1 | |
%59 = load i8, i8* %0, align 1 | |
%60 = icmp eq i8 %58, %59 | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8 | |
%65 = extractvalue {%..string*, i64} %64, 0 | |
%66 = load i64, i64* %2, align 8 | |
%67 = extractvalue {%..string*, i64} %64, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c1, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67) | |
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66 | |
%69 = load %..string, %..string* %68, align 8 | |
%70 = bitcast {%..string, i8}* %8 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %8 | |
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0 | |
store %..string %69, %..string* %72 | |
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1 | |
store i8 1, i8* %73 | |
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8 | |
ret {%..string, i8} %74 | |
if.done-8: | |
br label %for.index.loop-2 | |
for.index.done-9: | |
br label %if.done-21 | |
if.else-10: | |
; IfStmt | |
; SelectorExpr | |
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8 | |
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1 | |
%78 = icmp eq i64 %77, 0 | |
%79 = zext i1 %78 to i8 | |
%80 = trunc i8 %79 to i1 | |
br i1 %80, label %if.then-11, label %if.else-12 | |
if.then-11: | |
; ReturnStmt | |
%81 = bitcast {%..string, i8}* %9 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %9 | |
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %83 | |
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1 | |
store i8 1, i8* %84 | |
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8 | |
ret {%..string, i8} %85 | |
if.else-12: | |
; RangeStmt | |
; val | |
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr | |
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10 | |
; idx | |
%88 = bitcast i64* %11 to %..rawptr | |
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8) | |
store i64 zeroinitializer, i64* %11 | |
; SelectorExpr | |
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8 | |
%92 = bitcast i64* %12 to %..rawptr | |
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8) | |
store i64 zeroinitializer, i64* %12 | |
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1 | |
store i64 %94, i64* %12 | |
%95 = bitcast i64* %13 to %..rawptr | |
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8) | |
store i64 zeroinitializer, i64* %13 | |
store i64 -1, i64* %13 | |
br label %for.index.loop-13 | |
for.index.loop-13: | |
%97 = load i64, i64* %13, align 8 | |
%98 = add i64 %97, 1 | |
store i64 %98, i64* %13 | |
%99 = load i64, i64* %12, align 8 | |
%100 = icmp slt i64 %98, %99 | |
br i1 %100, label %for.index.body-14, label %for.index.done-20 | |
for.index.body-14: | |
%101 = load i64, i64* %13, align 8 | |
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0 | |
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101 | |
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8 | |
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10 | |
store i64 %101, i64* %11 | |
; IfStmt | |
; v | |
; ok | |
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8 | |
; cast - union_cast | |
%106 = bitcast {i8, i8}* %16 to %..rawptr | |
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 2) | |
store {i8, i8} zeroinitializer, {i8, i8}* %16 | |
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr | |
%109 = load i8, i8* %108, align 1 | |
%110 = icmp eq i8 %109, 2 | |
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16 | |
union_cast.ok-15: | |
%111 = getelementptr inbounds {i8, i8}, {i8, i8}* %16, i64 0, i32 0 | |
%112 = getelementptr inbounds {i8, i8}, {i8, i8}* %16, i64 0, i32 1 | |
%113 = bitcast %Type_Info_Enum_Value* %10 to i8* | |
%114 = load i8, i8* %113, align 1 | |
store i8 %114, i8* %111 | |
store i8 1, i8* %112 | |
br label %union_cast.end-16 | |
union_cast.end-16: | |
%115 = load {i8, i8}, {i8, i8}* %16, align 1 | |
%116 = extractvalue {i8, i8} %115, 0 | |
%117 = extractvalue {i8, i8} %115, 1 | |
store i8 %116, i8* %14 | |
store i8 %117, i8* %15 | |
%118 = load i8, i8* %15, align 1 | |
%119 = trunc i8 %118 to i1 | |
br i1 %119, label %cmp.and-17, label %if.done-19 | |
cmp.and-17: | |
%120 = load i8, i8* %14, align 1 | |
%121 = load i8, i8* %0, align 1 | |
%122 = icmp eq i8 %120, %121 | |
%123 = zext i1 %122 to i8 | |
%124 = trunc i8 %123 to i1 | |
br i1 %124, label %if.then-18, label %if.done-19 | |
if.then-18: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8 | |
%127 = extractvalue {%..string*, i64} %126, 0 | |
%128 = load i64, i64* %11, align 8 | |
%129 = extractvalue {%..string*, i64} %126, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c2, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129) | |
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128 | |
%131 = load %..string, %..string* %130, align 8 | |
%132 = bitcast {%..string, i8}* %17 to %..rawptr | |
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %17 | |
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0 | |
store %..string %131, %..string* %134 | |
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1 | |
store i8 1, i8* %135 | |
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8 | |
ret {%..string, i8} %136 | |
if.done-19: | |
br label %for.index.loop-13 | |
for.index.done-20: | |
br label %if.done-21 | |
if.done-21: | |
; ReturnStmt | |
%137 = bitcast {%..string, i8}* %18 to %..rawptr | |
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %18 | |
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %139 | |
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1 | |
store i8 0, i8* %140 | |
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8 | |
ret {%..string, i8} %141 | |
} | |
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-2(i16 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i16, align 16 | |
%1 = alloca %Type_Info_Enum_Value, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i16, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca {i16, i8}, align 16 | |
%8 = alloca {%..string, i8}, align 16 | |
%9 = alloca {%..string, i8}, align 16 | |
%10 = alloca %Type_Info_Enum_Value, align 16 | |
%11 = alloca i64, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca i16, align 16 | |
%15 = alloca i8, align 16 | |
%16 = alloca {i16, i8}, align 16 | |
%17 = alloca {%..string, i8}, align 16 | |
%18 = alloca {%..string, i8}, align 16 | |
store i16 %i, i16* %0 | |
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8 | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0 | |
%21 = load %Type_Info*, %Type_Info** %20, align 8 | |
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr) | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.else-10 | |
if.then-1: | |
; RangeStmt | |
; val | |
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1 | |
; idx | |
%26 = bitcast i64* %2 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
; SelectorExpr | |
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8 | |
%30 = bitcast i64* %3 to %..rawptr | |
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1 | |
store i64 %32, i64* %3 | |
%33 = bitcast i64* %4 to %..rawptr | |
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 -1, i64* %4 | |
br label %for.index.loop-2 | |
for.index.loop-2: | |
%35 = load i64, i64* %4, align 8 | |
%36 = add i64 %35, 1 | |
store i64 %36, i64* %4 | |
%37 = load i64, i64* %3, align 8 | |
%38 = icmp slt i64 %36, %37 | |
br i1 %38, label %for.index.body-3, label %for.index.done-9 | |
for.index.body-3: | |
%39 = load i64, i64* %4, align 8 | |
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0 | |
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39 | |
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8 | |
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1 | |
store i64 %39, i64* %2 | |
; IfStmt | |
; v | |
; ok | |
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8 | |
; cast - union_cast | |
%44 = bitcast {i16, i8}* %7 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 4) | |
store {i16, i8} zeroinitializer, {i16, i8}* %7 | |
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr | |
%47 = load i8, i8* %46, align 1 | |
%48 = icmp eq i8 %47, 3 | |
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5 | |
union_cast.ok-4: | |
%49 = getelementptr inbounds {i16, i8}, {i16, i8}* %7, i64 0, i32 0 | |
%50 = getelementptr inbounds {i16, i8}, {i16, i8}* %7, i64 0, i32 1 | |
%51 = bitcast %Type_Info_Enum_Value* %1 to i16* | |
%52 = load i16, i16* %51, align 2 | |
store i16 %52, i16* %49 | |
store i8 1, i8* %50 | |
br label %union_cast.end-5 | |
union_cast.end-5: | |
%53 = load {i16, i8}, {i16, i8}* %7, align 2 | |
%54 = extractvalue {i16, i8} %53, 0 | |
%55 = extractvalue {i16, i8} %53, 1 | |
store i16 %54, i16* %5 | |
store i8 %55, i8* %6 | |
%56 = load i8, i8* %6, align 1 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %cmp.and-6, label %if.done-8 | |
cmp.and-6: | |
%58 = load i16, i16* %5, align 2 | |
%59 = load i16, i16* %0, align 2 | |
%60 = icmp eq i16 %58, %59 | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8 | |
%65 = extractvalue {%..string*, i64} %64, 0 | |
%66 = load i64, i64* %2, align 8 | |
%67 = extractvalue {%..string*, i64} %64, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c3, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67) | |
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66 | |
%69 = load %..string, %..string* %68, align 8 | |
%70 = bitcast {%..string, i8}* %8 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %8 | |
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0 | |
store %..string %69, %..string* %72 | |
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1 | |
store i8 1, i8* %73 | |
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8 | |
ret {%..string, i8} %74 | |
if.done-8: | |
br label %for.index.loop-2 | |
for.index.done-9: | |
br label %if.done-21 | |
if.else-10: | |
; IfStmt | |
; SelectorExpr | |
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8 | |
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1 | |
%78 = icmp eq i64 %77, 0 | |
%79 = zext i1 %78 to i8 | |
%80 = trunc i8 %79 to i1 | |
br i1 %80, label %if.then-11, label %if.else-12 | |
if.then-11: | |
; ReturnStmt | |
%81 = bitcast {%..string, i8}* %9 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %9 | |
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %83 | |
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1 | |
store i8 1, i8* %84 | |
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8 | |
ret {%..string, i8} %85 | |
if.else-12: | |
; RangeStmt | |
; val | |
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr | |
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10 | |
; idx | |
%88 = bitcast i64* %11 to %..rawptr | |
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8) | |
store i64 zeroinitializer, i64* %11 | |
; SelectorExpr | |
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8 | |
%92 = bitcast i64* %12 to %..rawptr | |
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8) | |
store i64 zeroinitializer, i64* %12 | |
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1 | |
store i64 %94, i64* %12 | |
%95 = bitcast i64* %13 to %..rawptr | |
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8) | |
store i64 zeroinitializer, i64* %13 | |
store i64 -1, i64* %13 | |
br label %for.index.loop-13 | |
for.index.loop-13: | |
%97 = load i64, i64* %13, align 8 | |
%98 = add i64 %97, 1 | |
store i64 %98, i64* %13 | |
%99 = load i64, i64* %12, align 8 | |
%100 = icmp slt i64 %98, %99 | |
br i1 %100, label %for.index.body-14, label %for.index.done-20 | |
for.index.body-14: | |
%101 = load i64, i64* %13, align 8 | |
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0 | |
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101 | |
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8 | |
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10 | |
store i64 %101, i64* %11 | |
; IfStmt | |
; v | |
; ok | |
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8 | |
; cast - union_cast | |
%106 = bitcast {i16, i8}* %16 to %..rawptr | |
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 4) | |
store {i16, i8} zeroinitializer, {i16, i8}* %16 | |
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr | |
%109 = load i8, i8* %108, align 1 | |
%110 = icmp eq i8 %109, 3 | |
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16 | |
union_cast.ok-15: | |
%111 = getelementptr inbounds {i16, i8}, {i16, i8}* %16, i64 0, i32 0 | |
%112 = getelementptr inbounds {i16, i8}, {i16, i8}* %16, i64 0, i32 1 | |
%113 = bitcast %Type_Info_Enum_Value* %10 to i16* | |
%114 = load i16, i16* %113, align 2 | |
store i16 %114, i16* %111 | |
store i8 1, i8* %112 | |
br label %union_cast.end-16 | |
union_cast.end-16: | |
%115 = load {i16, i8}, {i16, i8}* %16, align 2 | |
%116 = extractvalue {i16, i8} %115, 0 | |
%117 = extractvalue {i16, i8} %115, 1 | |
store i16 %116, i16* %14 | |
store i8 %117, i8* %15 | |
%118 = load i8, i8* %15, align 1 | |
%119 = trunc i8 %118 to i1 | |
br i1 %119, label %cmp.and-17, label %if.done-19 | |
cmp.and-17: | |
%120 = load i16, i16* %14, align 2 | |
%121 = load i16, i16* %0, align 2 | |
%122 = icmp eq i16 %120, %121 | |
%123 = zext i1 %122 to i8 | |
%124 = trunc i8 %123 to i1 | |
br i1 %124, label %if.then-18, label %if.done-19 | |
if.then-18: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8 | |
%127 = extractvalue {%..string*, i64} %126, 0 | |
%128 = load i64, i64* %11, align 8 | |
%129 = extractvalue {%..string*, i64} %126, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c4, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129) | |
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128 | |
%131 = load %..string, %..string* %130, align 8 | |
%132 = bitcast {%..string, i8}* %17 to %..rawptr | |
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %17 | |
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0 | |
store %..string %131, %..string* %134 | |
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1 | |
store i8 1, i8* %135 | |
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8 | |
ret {%..string, i8} %136 | |
if.done-19: | |
br label %for.index.loop-13 | |
for.index.done-20: | |
br label %if.done-21 | |
if.done-21: | |
; ReturnStmt | |
%137 = bitcast {%..string, i8}* %18 to %..rawptr | |
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %18 | |
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %139 | |
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1 | |
store i8 0, i8* %140 | |
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8 | |
ret {%..string, i8} %141 | |
} | |
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-3(i32 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i32, align 16 | |
%1 = alloca %Type_Info_Enum_Value, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i32, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca {i32, i8}, align 16 | |
%8 = alloca {%..string, i8}, align 16 | |
%9 = alloca {%..string, i8}, align 16 | |
%10 = alloca %Type_Info_Enum_Value, align 16 | |
%11 = alloca i64, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca i32, align 16 | |
%15 = alloca i8, align 16 | |
%16 = alloca {i32, i8}, align 16 | |
%17 = alloca {%..string, i8}, align 16 | |
%18 = alloca {%..string, i8}, align 16 | |
store i32 %i, i32* %0 | |
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8 | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0 | |
%21 = load %Type_Info*, %Type_Info** %20, align 8 | |
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr) | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.else-10 | |
if.then-1: | |
; RangeStmt | |
; val | |
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1 | |
; idx | |
%26 = bitcast i64* %2 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
; SelectorExpr | |
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8 | |
%30 = bitcast i64* %3 to %..rawptr | |
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1 | |
store i64 %32, i64* %3 | |
%33 = bitcast i64* %4 to %..rawptr | |
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 -1, i64* %4 | |
br label %for.index.loop-2 | |
for.index.loop-2: | |
%35 = load i64, i64* %4, align 8 | |
%36 = add i64 %35, 1 | |
store i64 %36, i64* %4 | |
%37 = load i64, i64* %3, align 8 | |
%38 = icmp slt i64 %36, %37 | |
br i1 %38, label %for.index.body-3, label %for.index.done-9 | |
for.index.body-3: | |
%39 = load i64, i64* %4, align 8 | |
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0 | |
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39 | |
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8 | |
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1 | |
store i64 %39, i64* %2 | |
; IfStmt | |
; v | |
; ok | |
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8 | |
; cast - union_cast | |
%44 = bitcast {i32, i8}* %7 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 8) | |
store {i32, i8} zeroinitializer, {i32, i8}* %7 | |
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr | |
%47 = load i8, i8* %46, align 1 | |
%48 = icmp eq i8 %47, 4 | |
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5 | |
union_cast.ok-4: | |
%49 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 0 | |
%50 = getelementptr inbounds {i32, i8}, {i32, i8}* %7, i64 0, i32 1 | |
%51 = bitcast %Type_Info_Enum_Value* %1 to i32* | |
%52 = load i32, i32* %51, align 4 | |
store i32 %52, i32* %49 | |
store i8 1, i8* %50 | |
br label %union_cast.end-5 | |
union_cast.end-5: | |
%53 = load {i32, i8}, {i32, i8}* %7, align 4 | |
%54 = extractvalue {i32, i8} %53, 0 | |
%55 = extractvalue {i32, i8} %53, 1 | |
store i32 %54, i32* %5 | |
store i8 %55, i8* %6 | |
%56 = load i8, i8* %6, align 1 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %cmp.and-6, label %if.done-8 | |
cmp.and-6: | |
%58 = load i32, i32* %5, align 4 | |
%59 = load i32, i32* %0, align 4 | |
%60 = icmp eq i32 %58, %59 | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8 | |
%65 = extractvalue {%..string*, i64} %64, 0 | |
%66 = load i64, i64* %2, align 8 | |
%67 = extractvalue {%..string*, i64} %64, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c5, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67) | |
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66 | |
%69 = load %..string, %..string* %68, align 8 | |
%70 = bitcast {%..string, i8}* %8 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %8 | |
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0 | |
store %..string %69, %..string* %72 | |
%73 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 1 | |
store i8 1, i8* %73 | |
%74 = load {%..string, i8}, {%..string, i8}* %8, align 8 | |
ret {%..string, i8} %74 | |
if.done-8: | |
br label %for.index.loop-2 | |
for.index.done-9: | |
br label %if.done-21 | |
if.else-10: | |
; IfStmt | |
; SelectorExpr | |
%75 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%76 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %75, align 8 | |
%77 = extractvalue {%Type_Info_Enum_Value*, i64} %76, 1 | |
%78 = icmp eq i64 %77, 0 | |
%79 = zext i1 %78 to i8 | |
%80 = trunc i8 %79 to i1 | |
br i1 %80, label %if.then-11, label %if.else-12 | |
if.then-11: | |
; ReturnStmt | |
%81 = bitcast {%..string, i8}* %9 to %..rawptr | |
%82 = call %..rawptr @__mem_zero(%..rawptr %81, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %9 | |
%83 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %83 | |
%84 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %9, i64 0, i32 1 | |
store i8 1, i8* %84 | |
%85 = load {%..string, i8}, {%..string, i8}* %9, align 8 | |
ret {%..string, i8} %85 | |
if.else-12: | |
; RangeStmt | |
; val | |
%86 = bitcast %Type_Info_Enum_Value* %10 to %..rawptr | |
%87 = call %..rawptr @__mem_zero(%..rawptr %86, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %10 | |
; idx | |
%88 = bitcast i64* %11 to %..rawptr | |
%89 = call %..rawptr @__mem_zero(%..rawptr %88, i64 8) | |
store i64 zeroinitializer, i64* %11 | |
; SelectorExpr | |
%90 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%91 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %90, align 8 | |
%92 = bitcast i64* %12 to %..rawptr | |
%93 = call %..rawptr @__mem_zero(%..rawptr %92, i64 8) | |
store i64 zeroinitializer, i64* %12 | |
%94 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 1 | |
store i64 %94, i64* %12 | |
%95 = bitcast i64* %13 to %..rawptr | |
%96 = call %..rawptr @__mem_zero(%..rawptr %95, i64 8) | |
store i64 zeroinitializer, i64* %13 | |
store i64 -1, i64* %13 | |
br label %for.index.loop-13 | |
for.index.loop-13: | |
%97 = load i64, i64* %13, align 8 | |
%98 = add i64 %97, 1 | |
store i64 %98, i64* %13 | |
%99 = load i64, i64* %12, align 8 | |
%100 = icmp slt i64 %98, %99 | |
br i1 %100, label %for.index.body-14, label %for.index.done-20 | |
for.index.body-14: | |
%101 = load i64, i64* %13, align 8 | |
%102 = extractvalue {%Type_Info_Enum_Value*, i64} %91, 0 | |
%103 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %102, i64 %101 | |
%104 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %103, align 8 | |
store %Type_Info_Enum_Value %104, %Type_Info_Enum_Value* %10 | |
store i64 %101, i64* %11 | |
; IfStmt | |
; v | |
; ok | |
%105 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, align 8 | |
; cast - union_cast | |
%106 = bitcast {i32, i8}* %16 to %..rawptr | |
%107 = call %..rawptr @__mem_zero(%..rawptr %106, i64 8) | |
store {i32, i8} zeroinitializer, {i32, i8}* %16 | |
%108 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %10, i64 0, i32 2 ; UnionTagPtr | |
%109 = load i8, i8* %108, align 1 | |
%110 = icmp eq i8 %109, 4 | |
br i1 %110, label %union_cast.ok-15, label %union_cast.end-16 | |
union_cast.ok-15: | |
%111 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 0 | |
%112 = getelementptr inbounds {i32, i8}, {i32, i8}* %16, i64 0, i32 1 | |
%113 = bitcast %Type_Info_Enum_Value* %10 to i32* | |
%114 = load i32, i32* %113, align 4 | |
store i32 %114, i32* %111 | |
store i8 1, i8* %112 | |
br label %union_cast.end-16 | |
union_cast.end-16: | |
%115 = load {i32, i8}, {i32, i8}* %16, align 4 | |
%116 = extractvalue {i32, i8} %115, 0 | |
%117 = extractvalue {i32, i8} %115, 1 | |
store i32 %116, i32* %14 | |
store i8 %117, i8* %15 | |
%118 = load i8, i8* %15, align 1 | |
%119 = trunc i8 %118 to i1 | |
br i1 %119, label %cmp.and-17, label %if.done-19 | |
cmp.and-17: | |
%120 = load i32, i32* %14, align 4 | |
%121 = load i32, i32* %0, align 4 | |
%122 = icmp eq i32 %120, %121 | |
%123 = zext i1 %122 to i8 | |
%124 = trunc i8 %123 to i1 | |
br i1 %124, label %if.then-18, label %if.done-19 | |
if.then-18: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%125 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%126 = load {%..string*, i64}, {%..string*, i64}* %125, align 8 | |
%127 = extractvalue {%..string*, i64} %126, 0 | |
%128 = load i64, i64* %11, align 8 | |
%129 = extractvalue {%..string*, i64} %126, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c6, i64 0, i32 0), i64 46}, i64 634, i64 22, i64 %128, i64 %129) | |
%130 = getelementptr inbounds %..string, %..string* %127, i64 %128 | |
%131 = load %..string, %..string* %130, align 8 | |
%132 = bitcast {%..string, i8}* %17 to %..rawptr | |
%133 = call %..rawptr @__mem_zero(%..rawptr %132, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %17 | |
%134 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 0 | |
store %..string %131, %..string* %134 | |
%135 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %17, i64 0, i32 1 | |
store i8 1, i8* %135 | |
%136 = load {%..string, i8}, {%..string, i8}* %17, align 8 | |
ret {%..string, i8} %136 | |
if.done-19: | |
br label %for.index.loop-13 | |
for.index.done-20: | |
br label %if.done-21 | |
if.done-21: | |
; ReturnStmt | |
%137 = bitcast {%..string, i8}* %18 to %..rawptr | |
%138 = call %..rawptr @__mem_zero(%..rawptr %137, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %18 | |
%139 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 0 | |
store %..string zeroinitializer, %..string* %139 | |
%140 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %18, i64 0, i32 1 | |
store i8 0, i8* %140 | |
%141 = load {%..string, i8}, {%..string, i8}* %18, align 8 | |
ret {%..string, i8} %141 | |
} | |
define {%..string, i8} @fmt-11.enum_value_to_string.get_str-4(i64 %i, %Type_Info_Enum* %e, %Context* noalias nonnull %__.context_ptr) #0 { | |
decls-0: | |
%0 = alloca i64, align 16 | |
%1 = alloca %Type_Info_Enum_Value, align 16 | |
%2 = alloca i64, align 16 | |
%3 = alloca i64, align 16 | |
%4 = alloca i64, align 16 | |
%5 = alloca i64, align 16 | |
%6 = alloca i8, align 16 | |
%7 = alloca {i64, i8}, align 16 | |
%8 = alloca {%..string, i8}, align 16 | |
%9 = alloca {%..string, i8}, align 16 | |
%10 = alloca %Type_Info_Enum_Value, align 16 | |
%11 = alloca i64, align 16 | |
%12 = alloca i64, align 16 | |
%13 = alloca i64, align 16 | |
%14 = alloca i64, align 16 | |
%15 = alloca i8, align 16 | |
%16 = alloca {i64, i8}, align 16 | |
%17 = alloca {%..string, i8}, align 16 | |
%18 = alloca {%..string, i8}, align 16 | |
store i64 %i, i64* %0 | |
%19 = load %Type_Info_Enum, %Type_Info_Enum* %e, align 8 | |
; IfStmt | |
; SelectorExpr | |
; SelectorExpr | |
%20 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 0 | |
%21 = load %Type_Info*, %Type_Info** %20, align 8 | |
%22 = call i8 @types-41.is_string(%Type_Info* %21, %Context* noalias nonnull %__.context_ptr) | |
%23 = trunc i8 %22 to i1 | |
br i1 %23, label %if.then-1, label %if.else-10 | |
if.then-1: | |
; RangeStmt | |
; val | |
%24 = bitcast %Type_Info_Enum_Value* %1 to %..rawptr | |
%25 = call %..rawptr @__mem_zero(%..rawptr %24, i64 16) | |
store %Type_Info_Enum_Value zeroinitializer, %Type_Info_Enum_Value* %1 | |
; idx | |
%26 = bitcast i64* %2 to %..rawptr | |
%27 = call %..rawptr @__mem_zero(%..rawptr %26, i64 8) | |
store i64 zeroinitializer, i64* %2 | |
; SelectorExpr | |
%28 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 2 | |
%29 = load {%Type_Info_Enum_Value*, i64}, {%Type_Info_Enum_Value*, i64}* %28, align 8 | |
%30 = bitcast i64* %3 to %..rawptr | |
%31 = call %..rawptr @__mem_zero(%..rawptr %30, i64 8) | |
store i64 zeroinitializer, i64* %3 | |
%32 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 1 | |
store i64 %32, i64* %3 | |
%33 = bitcast i64* %4 to %..rawptr | |
%34 = call %..rawptr @__mem_zero(%..rawptr %33, i64 8) | |
store i64 zeroinitializer, i64* %4 | |
store i64 -1, i64* %4 | |
br label %for.index.loop-2 | |
for.index.loop-2: | |
%35 = load i64, i64* %4, align 8 | |
%36 = add i64 %35, 1 | |
store i64 %36, i64* %4 | |
%37 = load i64, i64* %3, align 8 | |
%38 = icmp slt i64 %36, %37 | |
br i1 %38, label %for.index.body-3, label %for.index.done-9 | |
for.index.body-3: | |
%39 = load i64, i64* %4, align 8 | |
%40 = extractvalue {%Type_Info_Enum_Value*, i64} %29, 0 | |
%41 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %40, i64 %39 | |
%42 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %41, align 8 | |
store %Type_Info_Enum_Value %42, %Type_Info_Enum_Value* %1 | |
store i64 %39, i64* %2 | |
; IfStmt | |
; v | |
; ok | |
%43 = load %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, align 8 | |
; cast - union_cast | |
%44 = bitcast {i64, i8}* %7 to %..rawptr | |
%45 = call %..rawptr @__mem_zero(%..rawptr %44, i64 16) | |
store {i64, i8} zeroinitializer, {i64, i8}* %7 | |
%46 = getelementptr inbounds %Type_Info_Enum_Value, %Type_Info_Enum_Value* %1, i64 0, i32 2 ; UnionTagPtr | |
%47 = load i8, i8* %46, align 1 | |
%48 = icmp eq i8 %47, 5 | |
br i1 %48, label %union_cast.ok-4, label %union_cast.end-5 | |
union_cast.ok-4: | |
%49 = getelementptr inbounds {i64, i8}, {i64, i8}* %7, i64 0, i32 0 | |
%50 = getelementptr inbounds {i64, i8}, {i64, i8}* %7, i64 0, i32 1 | |
%51 = bitcast %Type_Info_Enum_Value* %1 to i64* | |
%52 = load i64, i64* %51, align 8 | |
store i64 %52, i64* %49 | |
store i8 1, i8* %50 | |
br label %union_cast.end-5 | |
union_cast.end-5: | |
%53 = load {i64, i8}, {i64, i8}* %7, align 8 | |
%54 = extractvalue {i64, i8} %53, 0 | |
%55 = extractvalue {i64, i8} %53, 1 | |
store i64 %54, i64* %5 | |
store i8 %55, i8* %6 | |
%56 = load i8, i8* %6, align 1 | |
%57 = trunc i8 %56 to i1 | |
br i1 %57, label %cmp.and-6, label %if.done-8 | |
cmp.and-6: | |
%58 = load i64, i64* %5, align 8 | |
%59 = load i64, i64* %0, align 8 | |
%60 = icmp eq i64 %58, %59 | |
%61 = zext i1 %60 to i8 | |
%62 = trunc i8 %61 to i1 | |
br i1 %62, label %if.then-7, label %if.done-8 | |
if.then-7: | |
; ReturnStmt | |
; IndexExpr | |
; SelectorExpr | |
%63 = getelementptr inbounds %Type_Info_Enum, %Type_Info_Enum* %e, i64 0, i32 1 | |
%64 = load {%..string*, i64}, {%..string*, i64}* %63, align 8 | |
%65 = extractvalue {%..string*, i64} %64, 0 | |
%66 = load i64, i64* %2, align 8 | |
%67 = extractvalue {%..string*, i64} %64, 1 | |
call void @__bounds_check_error(%..string {i8* getelementptr inbounds ([47 x i8], [47 x i8]* @__str$1c7, i64 0, i32 0), i64 46}, i64 626, i64 22, i64 %66, i64 %67) | |
%68 = getelementptr inbounds %..string, %..string* %65, i64 %66 | |
%69 = load %..string, %..string* %68, align 8 | |
%70 = bitcast {%..string, i8}* %8 to %..rawptr | |
%71 = call %..rawptr @__mem_zero(%..rawptr %70, i64 24) | |
store {%..string, i8} zeroinitializer, {%..string, i8}* %8 | |
%72 = getelementptr inbounds {%..string, i8}, {%..string, i8}* %8, i64 0, i32 0 | |
store %..string %69, %..s |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment