LLVM CODE GEN FAILED FOR PROCEDURE: src.render_target_end
define internal void @src.render_target_end(%src.Render_Target* %0, %sdl2.Window* %1, i32 %2, i32 %3, i8* noalias nocapture nonnull
%__.context_ptr) {
decls:
%4 = alloca %src.Render_Target*, align 8
%5 = alloca %sdl2.Window*, align 8
%10 = alloca i64, align 8
%11 = alloca i64, align 8
%12 = alloca %src.Render_Group, align 8
%13 = alloca { %src.Render_Group*, i64, i64, %runtime.Allocator }*, align 8
%14 = alloca i64, align 8
%15 = alloca { <2 x float>, <2 x float> }, align 8
%16 = alloca i64, align 8
%17 = alloca %src.Render_Vertex*, align 8
%18 = alloca [16 x float], align 32
%19 = alloca [16 x float], align 32
br label %entry
entry: ; preds = %decls
store %src.Render_Target* %0, %src.Render_Target** %4, align 8
store %sdl2.Window* %1, %sdl2.Window** %5, align 8
store i32 %2, i32* %6, align 4
store i32 %3, i32* %7, align 4
%20 = bitcast i8* %__.context_ptr to %runtime.Context*
%21 = load %sdl2.Window*, %sdl2.Window** %5, align 8
%22 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%23 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %22, i32 0, i32 18
%24 = load i8*, i8** %23, align 8
%26 = load i32, i32* %6, align 4
%27 = load i32, i32* %7, align 4
%28 = load i32, i32* %6, align 4
%29 = load i32, i32* %7, align 4
call void @odin_gl.ClearColor(float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00)
%30 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%31 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %30, i32 0, i32 9
%32 = load i32, i32* %31, align 4
%33 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%34 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %33, i32 0, i32 10
%35 = load i32, i32* %34, align 4
%36 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%37 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %36, i32 0, i32 11
%38 = load i32, i32* %37, align 4
%39 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%40 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %39, i32 0, i32 12
%41 = load i32, i32* %40, align 4
%42 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%43 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %42, i32 0, i32 13
%44 = load i32, i32* %43, align 4
%45 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%46 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %45, i32 0, i32 14
%47 = load i32, i32* %46, align 4
store i32 36, i32* %8, align 4
%48 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%49 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %48, i32 0, i32 9
%50 = load i32, i32* %49, align 4
%51 = load i32, i32* %8, align 4
%52 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%53 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %52, i32 0, i32 10
%54 = load i32, i32* %53, align 4
%55 = load i32, i32* %8, align 4
%56 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%57 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %56, i32 0, i32 11
%58 = load i32, i32* %57, align 4
%59 = load i32, i32* %8, align 4
%60 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%61 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %60, i32 0, i32 12
%62 = load i32, i32* %61, align 4
%63 = load i32, i32* %8, align 4
%64 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%65 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %64, i32 0, i32 13
%66 = load i32, i32* %65, align 4
%67 = load i32, i32* %8, align 4
%68 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%69 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %68, i32 0, i32 14
%70 = load i32, i32* %69, align 4
%71 = load i32, i32* %8, align 4
%72 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%73 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %72, i32 0, i32 16
%74 = load i8, i8* %73, align 1
br i1 %75, label %if.then, label %if.done
if.then: ; preds = %entry
%76 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%77 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %76, i32 0, i32 15
%78 = getelementptr [4 x
%src.Render_Texture], [4 x
%src.Render_Texture]* %77, i64 0, i64 0
%79 = bitcast %runtime.Context* %20 to i8*
%80 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%81 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %80, i32 0, i32 16
store i8 0, i8* %81, align 1
br label %if.done
if.done: ; preds = %if.then, %entry
%82 = load { i64*, i64 }, { i64*, i64 }* getelementptr (%runtime.Type_Info_Enum, %runtime.Type_Info_Enum* bitcast ({ [15 x
i64], i64 }* getelementptr inbounds ([264 x
%runtime.Type_Info], [264 x
%runtime.Type_Info]* @"__$type_info_data", i64 0, i64 211, i32 5) to %runtime.Type_Info_Enum*), i64 0, i32 2), align 8
%83 = load i64*, i64** getelementptr (%runtime.Type_Info_Enum, %runtime.Type_Info_Enum* bitcast ({ [15 x
i64], i64 }* getelementptr inbounds ([264 x
%runtime.Type_Info], [264 x
%runtime.Type_Info]* @"__$type_info_data", i64 0, i64 211, i32 5) to %runtime.Type_Info_Enum*), i64 0, i32 2, i32 0), align 8
store i64 0, i64* %10, align 8
br label %for.enum.loop
for.enum.loop: ; preds = %for.enum.body, %if.done
%84 = load i64, i64* %10, align 8
%85 = icmp slt
i64 %84, 4
br i1 %85, label %for.enum.body, label %for.enum.done
for.enum.body: ; preds = %for.enum.loop
%87 = load i64, i64* %10, align 8
store i64 %88, i64* %10, align 8
%89 = load i64, i64* %86, align 8
store i64 %89, i64* %11, align 8
%90 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%91 = load i64, i64* %11, align 8
%92 = bitcast %runtime.Context* %20 to i8*
br label %for.enum.loop
for.enum.done: ; preds = %for.enum.loop
%93 = bitcast %src.Render_Group* %12 to i8*
%94 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%95 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %94, i32 0, i32 0
store { %src.Render_Group*, i64, i64, %runtime.Allocator }* %95, { %src.Render_Group*, i64, i64, %runtime.Allocator }** %13, align 8
%96 = load { %src.Render_Group*, i64, i64, %runtime.Allocator }*, { %src.Render_Group*, i64, i64, %runtime.Allocator }** %13, align 8
%97 = getelementptr inbounds { %src.Render_Group*, i64, i64, %runtime.Allocator }, { %src.Render_Group*, i64, i64, %runtime.Allocator }* %96, i32 0, i32 1
store i64 -1, i64* %14, align 8
br label %for.index.loop
for.index.loop: ; preds = %if.done2, %for.enum.done
%98 = load i64, i64* %14, align 8
store i64 %99, i64* %14, align 8
%100 = load i64, i64* %97, align 8
%101 = icmp slt
i64 %99, %100
br i1 %101, label %for.index.body, label %for.index.done
for.index.body: ; preds = %for.index.loop
%102 = load i64, i64* %14, align 8
%103 = getelementptr inbounds { %src.Render_Group*, i64, i64, %runtime.Allocator }, { %src.Render_Group*, i64, i64, %runtime.Allocator }* %96, i32 0, i32 0
%104 = load %src.Render_Group*, %src.Render_Group** %103, align 8
%105 = getelementptr %src.Render_Group, %src.Render_Group* %104, i64 %102
%106 = load %src.Render_Group, %src.Render_Group* %105, align 8
%107 = load i32, i32* %7, align 4
%108 = getelementptr inbounds %src.Render_Group, %src.Render_Group* %105, i32 0, i32 0
%109 = load %src.Rect, %src.Rect* %108, align 4
%110 = bitcast { <2 x float>, <2 x float> }* %15 to %src.Rect*
store %src.Rect %109, %src.Rect* %110, align 4
%111 = load { <2 x float>, <2 x float> }, { <2 x float>, <2 x float> }* %15, align 8
%112 = bitcast %runtime.Context* %20 to i8*
%113 = getelementptr inbounds %src.Render_Group, %src.Render_Group* %105, i32 0, i32 2
%114 = load i64, i64* %113, align 8
%115 = getelementptr inbounds %src.Render_Group, %src.Render_Group* %105, i32 0, i32 1
%116 = load i64, i64* %115, align 8
%117 = sub i64 %114, %116
store i64 %117, i64* %16, align 8
%118 = load i64, i64* %16, align 8
%119 = icmp ne
i64 %118, 0
%120 = zext i1 %119 to i8
%121 = trunc i8 %120 to i1
br i1 %121, label %if.then1, label %if.done2
if.then1: ; preds = %for.index.body
%122 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%123 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %122, i32 0, i32 1
%124 = load { %src.Render_Vertex*, i64 }, { %src.Render_Vertex*, i64 }* %123, align 8
%125 = bitcast { %src.Render_Vertex*, i64 }* %123 to { i64, i64 }*
%128 = getelementptr inbounds %src.Render_Group, %src.Render_Group* %105, i32 0, i32 1
%129 = load i64, i64* %128, align 8
%130 = getelementptr %src.Render_Vertex*, %src.Render_Vertex* %127, i64 %129
store %src.Render_Vertex** %130, %src.Render_Vertex** %17, align 8
%131 = load i64, i64* %16, align 8
%133 = load %src.Render_Vertex*, %src.Render_Vertex** %17, align 8
%134 = bitcast %src.Render_Vertex* %133 to i8*
%135 = load i32, i32* %6, align 4
%136 = sitofp i32 %135 to float
%137 = load i32, i32* %7, align 4
%138 = sitofp i32 %137 to float
%139 = bitcast [16 x
float]* %19 to i8*
call void @math_linalg_glsl.mat4Ortho3d([16 x
float]* sret %19, float 0.000000e+00, float %136, float %138, float 0.000000e+00, float -1.000000e+00, float 1.000000e+00)
%140 = load [16 x float], [16 x float]* %19, align 4
store [16 x float] %140, [16 x float]* %18, align 4
%141 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%142 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %141, i32 0, i32 6
%143 = load i32, i32* %142, align 4
%144 = getelementptr [16 x
float], [16 x
float]* %18, i64 0, i64 0
%145 = bitcast float* %144 to [4 x float]*
%146 = getelementptr [4 x
float], [4 x
float]* %145, i64 0, i64 0
%147 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%148 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %147, i32 0, i32 7
%149 = load i32, i32* %148, align 4
%150 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%151 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %150, i32 0, i32 8
%152 = getelementptr [4 x
i8], [4 x
i8]* %151, i64 0, i64 0
%153 = load i8, i8* %152, align 1
%154 = uitofp i8 %153 to float
%155 = fdiv float %154, 2.550000e+02
%156 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%157 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %156, i32 0, i32 8
%158 = getelementptr [4 x
i8], [4 x
i8]* %157, i64 0, i64 1
%159 = load i8, i8* %158, align 1
%160 = uitofp i8 %159 to float
%161 = fdiv float %160, 2.550000e+02
%162 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%163 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %162, i32 0, i32 8
%164 = getelementptr [4 x
i8], [4 x
i8]* %163, i64 0, i64 2
%165 = load i8, i8* %164, align 1
%166 = uitofp i8 %165 to float
%167 = fdiv float %166, 2.550000e+02
%168 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%169 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %168, i32 0, i32 8
%170 = getelementptr [4 x
i8], [4 x
i8]* %169, i64 0, i64 3
%171 = load i8, i8* %170, align 1
%172 = uitofp i8 %171 to float
%173 = fdiv float %172, 2.550000e+02
%174 = load i64, i64* %16, align 8
br label %if.done2
if.done2: ; preds = %if.then1, %for.index.body
br label %for.index.loop
for.index.done: ; preds = %for.index.loop
%176 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%177 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %176, i32 0, i32 9
%178 = load i32, i32* %177, align 4
%179 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%180 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %179, i32 0, i32 10
%181 = load i32, i32* %180, align 4
%182 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%183 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %182, i32 0, i32 11
%184 = load i32, i32* %183, align 4
%185 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%186 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %185, i32 0, i32 12
%187 = load i32, i32* %186, align 4
%188 = load %src.Render_Target*, %src.Render_Target** %4, align 8
%189 = getelementptr inbounds %src.Render_Target, %src.Render_Target* %188, i32 0, i32 14
%190 = load i32, i32* %189, align 4
%191 = load %sdl2.Window*, %sdl2.Window** %5, align 8
ret void
}
Stored value type does not match pointer operand type!
store %src.Render_Vertex** %130, %src.Render_Vertex** %17, align 8
%src.Render_Vertex*make: ***