parent
612d3c1ad5
commit
f081aa999b
@ -1,789 +0,0 @@
|
||||
; ModuleID = 'ravi_module_ravif1'
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-pc-windows-msvc-elf"
|
||||
|
||||
%0 = type { %struct.TValue*, i32*, i64 }
|
||||
%struct.lua_State = type { %struct.GCObject*, i8, i8, i8, %struct.TValue*, %struct.global_State*, %struct.CallInfo*, i32*, %struct.TValue*, %struct.TValue*, %struct.UpVal*, %struct.GCObject*, %struct.lua_State*, %struct.lua_longjmp*, %struct.CallInfo, i8* (%struct.lua_State*, %struct.lua_Debug*)*, i64, i32, i32, i32, i16, i16, i8, i8 }
|
||||
%struct.global_State = type opaque
|
||||
%struct.TValue = type { %union.Value, i32 }
|
||||
%union.Value = type { double }
|
||||
%struct.UpVal = type { %struct.TValue*, i64, %struct.TValue }
|
||||
%struct.GCObject = type { %struct.GCObject*, i8, i8 }
|
||||
%struct.lua_longjmp = type opaque
|
||||
%struct.CallInfo = type { %struct.TValue*, %struct.TValue*, %struct.CallInfo*, %struct.CallInfo*, %0, i64, i16, i8, i8 }
|
||||
%struct.lua_Debug = type opaque
|
||||
%struct.LClosure = type { %struct.GCObject*, i8, i8, i8, %struct.GCObject*, %struct.Proto*, [1 x %struct.UpVal*] }
|
||||
%struct.Proto = type { %struct.GCObject*, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %struct.TValue*, i32*, %struct.Proto**, i32*, %struct.LocVar*, %struct.Upvaldesc*, %struct.LClosure*, %struct.TString*, %struct.GCObject*, %struct.RaviJITProto }
|
||||
%struct.LocVar = type { %struct.TString*, i32, i32, i32 }
|
||||
%struct.Upvaldesc = type { %struct.TString*, i32, i8, i8 }
|
||||
%struct.TString = type { %struct.GCObject*, i8, i8, i8, i8, i32, i64 }
|
||||
%struct.RaviJITProto = type { i8, i8, i16, i8*, i32 (%struct.lua_State*)* }
|
||||
%struct.Table = type { %struct.GCObject*, i8, i8, i8, i8, i32, %struct.TValue*, %struct.Node*, %struct.Node*, %struct.Table*, %struct.GCObject*, %struct.RaviArray }
|
||||
%struct.Node = type { %struct.TValue, %struct.TKey }
|
||||
%struct.TKey = type { %union.Value, i32, i32 }
|
||||
%struct.RaviArray = type { i8*, i32, i32, i8, i8 }
|
||||
|
||||
@0 = private unnamed_addr constant [17 x i8] c"integer expected\00"
|
||||
|
||||
define i32 @ravif1(%struct.lua_State* %L) {
|
||||
entry:
|
||||
%nb = alloca double
|
||||
%nc = alloca double
|
||||
%ilimit52 = alloca i64
|
||||
%iidx53 = alloca i64
|
||||
%ilimit = alloca i64
|
||||
%iidx = alloca i64
|
||||
%i = alloca i64
|
||||
%L_ci = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 6
|
||||
%0 = load %struct.CallInfo** %L_ci, !tbaa !0
|
||||
%base = getelementptr inbounds %struct.CallInfo* %0, i32 0, i32 4, i32 0
|
||||
%1 = bitcast %struct.CallInfo* %0 to %struct.LClosure***
|
||||
%2 = load %struct.LClosure*** %1, !tbaa !7
|
||||
%3 = load %struct.LClosure** %2, !tbaa !8
|
||||
%Proto = getelementptr inbounds %struct.LClosure* %3, i32 0, i32 5
|
||||
%4 = load %struct.Proto** %Proto, !tbaa !9
|
||||
%k = getelementptr inbounds %struct.Proto* %4, i32 0, i32 14
|
||||
%5 = load %struct.TValue** %k, !tbaa !11
|
||||
%6 = load %struct.TValue** %base, !tbaa !14
|
||||
%value.tt.ptr = getelementptr inbounds %struct.TValue* %6, i32 0, i32 1
|
||||
%value.tt = load i32* %value.tt.ptr, !tbaa !15
|
||||
%is.not.integer = icmp ne i32 %value.tt, 19
|
||||
br i1 %is.not.integer, label %if.not.integer, label %done
|
||||
|
||||
if.not.integer: ; preds = %entry
|
||||
%7 = call i32 @luaV_tointeger_(%struct.TValue* %6, i64* %i)
|
||||
%int.conversion.failed = icmp eq i32 %7, 0
|
||||
br i1 %int.conversion.failed, label %if.conversion.failed, label %conversion.ok
|
||||
|
||||
if.conversion.failed: ; preds = %if.not.integer
|
||||
call void (%struct.lua_State*, i8*, ...)* @luaG_runerror(%struct.lua_State* %L, i8* getelementptr inbounds ([17 x i8]* @0, i32 0, i32 0))
|
||||
br label %conversion.ok
|
||||
|
||||
conversion.ok: ; preds = %if.conversion.failed, %if.not.integer
|
||||
%8 = load i64* %i, !tbaa !17
|
||||
%9 = bitcast %struct.TValue* %6 to i64*
|
||||
store i64 %8, i64* %9, !tbaa !18
|
||||
%dest.tt = getelementptr inbounds %struct.TValue* %6, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt, !tbaa !15
|
||||
br label %done
|
||||
|
||||
done: ; preds = %conversion.ok, %entry
|
||||
%sunkaddr = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr100 = add i64 %sunkaddr, 32
|
||||
%sunkaddr101 = inttoptr i64 %sunkaddr100 to %struct.TValue**
|
||||
%10 = load %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%11 = getelementptr inbounds %struct.TValue* %10, i32 1
|
||||
%upvals = getelementptr inbounds %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%12 = load %struct.UpVal** %upvals, !tbaa !8
|
||||
%v102 = bitcast %struct.UpVal* %12 to %struct.TValue**
|
||||
%13 = load %struct.TValue** %v102, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %13, %struct.TValue* %5, %struct.TValue* %11)
|
||||
%14 = load %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%15 = getelementptr inbounds %struct.TValue* %14, i32 2
|
||||
%16 = getelementptr inbounds %struct.TValue* %5, i32 1
|
||||
%srcvalue103 = bitcast %struct.TValue* %16 to double*
|
||||
%destvalue104 = bitcast %struct.TValue* %15 to double*
|
||||
%17 = load double* %srcvalue103, !tbaa !18
|
||||
store double %17, double* %destvalue104, !tbaa !18
|
||||
%srctype = getelementptr inbounds %struct.TValue* %16, i32 0, i32 1
|
||||
%desttype = getelementptr inbounds %struct.TValue* %15, i32 0, i32 1
|
||||
%18 = load i32* %srctype, !tbaa !15
|
||||
store i32 %18, i32* %desttype, !tbaa !15
|
||||
%19 = load %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%20 = getelementptr inbounds %struct.TValue* %19, i32 3
|
||||
%srcvalue1105 = bitcast %struct.TValue* %19 to double*
|
||||
%destvalue2106 = bitcast %struct.TValue* %20 to double*
|
||||
%21 = load double* %srcvalue1105, !tbaa !18
|
||||
store double %21, double* %destvalue2106, !tbaa !18
|
||||
%srctype3 = getelementptr inbounds %struct.TValue* %19, i32 0, i32 1
|
||||
%desttype4 = getelementptr inbounds %struct.TValue* %20, i32 0, i32 1
|
||||
%22 = load i32* %srctype3, !tbaa !15
|
||||
store i32 %22, i32* %desttype4, !tbaa !15
|
||||
%23 = load %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%24 = getelementptr inbounds %struct.TValue* %23, i32 4
|
||||
%L.top = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %24, %struct.TValue** %L.top, !tbaa !21
|
||||
%25 = getelementptr inbounds %struct.TValue* %23, i32 1
|
||||
%26 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %25, i32 0)
|
||||
%27 = icmp eq i32 %26, 0
|
||||
br i1 %27, label %if.lua.function, label %if.not.lua.function
|
||||
|
||||
if.lua.function: ; preds = %done
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done
|
||||
|
||||
if.not.lua.function: ; preds = %done
|
||||
%28 = icmp eq i32 %26, 1
|
||||
br i1 %28, label %if.C.function, label %op_call.done
|
||||
|
||||
if.C.function: ; preds = %if.not.lua.function
|
||||
%ci_top = getelementptr inbounds %struct.CallInfo* %0, i32 0, i32 1
|
||||
%29 = load %struct.TValue** %ci_top, !tbaa !23
|
||||
%L_top = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %29, %struct.TValue** %L_top, !tbaa !21
|
||||
br label %op_call.done
|
||||
|
||||
op_call.done: ; preds = %if.C.function, %if.not.lua.function, %if.lua.function
|
||||
%sunkaddr107 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr108 = add i64 %sunkaddr107, 32
|
||||
%sunkaddr109 = inttoptr i64 %sunkaddr108 to %struct.TValue**
|
||||
%30 = load %struct.TValue** %sunkaddr109, !tbaa !14
|
||||
%31 = getelementptr inbounds %struct.TValue* %30, i32 1
|
||||
%32 = getelementptr inbounds %struct.TValue* %5, i32 2
|
||||
%upvals5 = getelementptr inbounds %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%33 = load %struct.UpVal** %upvals5, !tbaa !8
|
||||
%v6110 = bitcast %struct.UpVal* %33 to %struct.TValue**
|
||||
%34 = load %struct.TValue** %v6110, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %34, %struct.TValue* %32, %struct.TValue* %31)
|
||||
%35 = load %struct.TValue** %sunkaddr109, !tbaa !14
|
||||
%36 = getelementptr inbounds %struct.TValue* %35, i32 1
|
||||
%37 = getelementptr inbounds %struct.TValue* %35, i32 1
|
||||
%38 = getelementptr inbounds %struct.TValue* %5, i32 3
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %37, %struct.TValue* %38, %struct.TValue* %36)
|
||||
%39 = load %struct.TValue** %sunkaddr109, !tbaa !14
|
||||
%40 = getelementptr inbounds %struct.TValue* %39, i32 2
|
||||
%L.top7 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %40, %struct.TValue** %L.top7, !tbaa !21
|
||||
%41 = getelementptr inbounds %struct.TValue* %39, i32 1
|
||||
%42 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %41, i32 1)
|
||||
%43 = icmp eq i32 %42, 0
|
||||
br i1 %43, label %if.lua.function8, label %if.not.lua.function9
|
||||
|
||||
if.lua.function8: ; preds = %op_call.done
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done13
|
||||
|
||||
if.not.lua.function9: ; preds = %op_call.done
|
||||
%44 = icmp eq i32 %42, 1
|
||||
br i1 %44, label %if.C.function10, label %op_call.done13
|
||||
|
||||
if.C.function10: ; preds = %if.not.lua.function9
|
||||
%ci_top11 = getelementptr inbounds %struct.CallInfo* %0, i32 0, i32 1
|
||||
%45 = load %struct.TValue** %ci_top11, !tbaa !23
|
||||
%L_top12 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %45, %struct.TValue** %L_top12, !tbaa !21
|
||||
br label %op_call.done13
|
||||
|
||||
op_call.done13: ; preds = %if.C.function10, %if.not.lua.function9, %if.lua.function8
|
||||
%sunkaddr111 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr112 = add i64 %sunkaddr111, 32
|
||||
%sunkaddr113 = inttoptr i64 %sunkaddr112 to %struct.TValue**
|
||||
%46 = load %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%47 = getelementptr inbounds %struct.TValue* %46, i32 2
|
||||
%upvals14 = getelementptr inbounds %struct.LClosure* %3, i32 0, i32 6, i32 1
|
||||
%48 = load %struct.UpVal** %upvals14, !tbaa !8
|
||||
%v15114 = bitcast %struct.UpVal* %48 to %struct.TValue**
|
||||
%49 = load %struct.TValue** %v15114, !tbaa !19
|
||||
%srcvalue16115 = bitcast %struct.TValue* %49 to double*
|
||||
%destvalue17116 = bitcast %struct.TValue* %47 to double*
|
||||
%50 = load double* %srcvalue16115, !tbaa !18
|
||||
store double %50, double* %destvalue17116, !tbaa !18
|
||||
%srctype18 = getelementptr inbounds %struct.TValue* %49, i32 0, i32 1
|
||||
%desttype19 = getelementptr inbounds %struct.TValue* %47, i32 0, i32 1
|
||||
%51 = load i32* %srctype18, !tbaa !15
|
||||
store i32 %51, i32* %desttype19, !tbaa !15
|
||||
%52 = load %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%53 = getelementptr inbounds %struct.TValue* %52, i32 3
|
||||
%srcvalue20117 = bitcast %struct.TValue* %52 to double*
|
||||
%destvalue21118 = bitcast %struct.TValue* %53 to double*
|
||||
%54 = load double* %srcvalue20117, !tbaa !18
|
||||
store double %54, double* %destvalue21118, !tbaa !18
|
||||
%srctype22 = getelementptr inbounds %struct.TValue* %52, i32 0, i32 1
|
||||
%desttype23 = getelementptr inbounds %struct.TValue* %53, i32 0, i32 1
|
||||
%55 = load i32* %srctype22, !tbaa !15
|
||||
store i32 %55, i32* %desttype23, !tbaa !15
|
||||
%56 = load %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%57 = getelementptr inbounds %struct.TValue* %56, i32 4
|
||||
%srcvalue24119 = bitcast %struct.TValue* %56 to double*
|
||||
%destvalue25120 = bitcast %struct.TValue* %57 to double*
|
||||
%58 = load double* %srcvalue24119, !tbaa !18
|
||||
store double %58, double* %destvalue25120, !tbaa !18
|
||||
%srctype26 = getelementptr inbounds %struct.TValue* %56, i32 0, i32 1
|
||||
%desttype27 = getelementptr inbounds %struct.TValue* %57, i32 0, i32 1
|
||||
%59 = load i32* %srctype26, !tbaa !15
|
||||
store i32 %59, i32* %desttype27, !tbaa !15
|
||||
%60 = load %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%61 = getelementptr inbounds %struct.TValue* %60, i32 5
|
||||
%L.top28 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %61, %struct.TValue** %L.top28, !tbaa !21
|
||||
%62 = getelementptr inbounds %struct.TValue* %60, i32 2
|
||||
%63 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %62, i32 1)
|
||||
%64 = icmp eq i32 %63, 0
|
||||
br i1 %64, label %if.lua.function29, label %if.not.lua.function30
|
||||
|
||||
if.lua.function29: ; preds = %op_call.done13
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done34
|
||||
|
||||
if.not.lua.function30: ; preds = %op_call.done13
|
||||
%65 = icmp eq i32 %63, 1
|
||||
br i1 %65, label %if.C.function31, label %op_call.done34
|
||||
|
||||
if.C.function31: ; preds = %if.not.lua.function30
|
||||
%ci_top32 = getelementptr inbounds %struct.CallInfo* %0, i32 0, i32 1
|
||||
%66 = load %struct.TValue** %ci_top32, !tbaa !23
|
||||
%L_top33 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %66, %struct.TValue** %L_top33, !tbaa !21
|
||||
br label %op_call.done34
|
||||
|
||||
op_call.done34: ; preds = %if.C.function31, %if.not.lua.function30, %if.lua.function29
|
||||
%sunkaddr121 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr122 = add i64 %sunkaddr121, 32
|
||||
%sunkaddr123 = inttoptr i64 %sunkaddr122 to %struct.TValue**
|
||||
%67 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%68 = getelementptr inbounds %struct.TValue* %67, i32 3
|
||||
%69 = bitcast %struct.TValue* %67 to i64*
|
||||
%70 = load i64* %69, !tbaa !18
|
||||
%71 = sitofp i64 %70 to double
|
||||
%72 = fdiv double 1.000000e+00, %71
|
||||
%73 = bitcast %struct.TValue* %68 to double*
|
||||
store double %72, double* %73, !tbaa !18
|
||||
%dest.tt35 = getelementptr inbounds %struct.TValue* %68, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt35, !tbaa !15
|
||||
%74 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%75 = getelementptr inbounds %struct.TValue* %74, i32 3
|
||||
%76 = getelementptr inbounds %struct.TValue* %74, i32 3
|
||||
%77 = bitcast %struct.TValue* %76 to double*
|
||||
%78 = load double* %77, !tbaa !18
|
||||
%79 = bitcast %struct.TValue* %74 to i64*
|
||||
%80 = load i64* %79, !tbaa !18
|
||||
%81 = sitofp i64 %80 to double
|
||||
%82 = fdiv double %78, %81
|
||||
%83 = bitcast %struct.TValue* %75 to double*
|
||||
store double %82, double* %83, !tbaa !18
|
||||
%dest.tt36 = getelementptr inbounds %struct.TValue* %75, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt36, !tbaa !15
|
||||
call void @raviV_op_loadnil(%struct.CallInfo* %0, i32 4, i32 0)
|
||||
%84 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%85 = getelementptr inbounds %struct.TValue* %84, i32 4
|
||||
%86 = bitcast %struct.TValue* %85 to i64*
|
||||
store i64 0, i64* %86, !tbaa !18
|
||||
%dest.tt37 = getelementptr inbounds %struct.TValue* %85, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt37, !tbaa !15
|
||||
%87 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%88 = getelementptr inbounds %struct.TValue* %87, i32 5
|
||||
%89 = bitcast %struct.TValue* %88 to i64*
|
||||
store i64 1, i64* %89, !tbaa !18
|
||||
%dest.tt38 = getelementptr inbounds %struct.TValue* %88, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt38, !tbaa !15
|
||||
%90 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%91 = getelementptr inbounds %struct.TValue* %90, i32 6
|
||||
%srcvalue39124 = bitcast %struct.TValue* %90 to double*
|
||||
%destvalue40125 = bitcast %struct.TValue* %91 to double*
|
||||
%92 = load double* %srcvalue39124, !tbaa !18
|
||||
store double %92, double* %destvalue40125, !tbaa !18
|
||||
%srctype41 = getelementptr inbounds %struct.TValue* %90, i32 0, i32 1
|
||||
%desttype42 = getelementptr inbounds %struct.TValue* %91, i32 0, i32 1
|
||||
%93 = load i32* %srctype41, !tbaa !15
|
||||
store i32 %93, i32* %desttype42, !tbaa !15
|
||||
%94 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%95 = getelementptr inbounds %struct.TValue* %94, i32 7
|
||||
%96 = bitcast %struct.TValue* %95 to i64*
|
||||
store i64 1, i64* %96, !tbaa !18
|
||||
%dest.tt43 = getelementptr inbounds %struct.TValue* %95, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt43, !tbaa !15
|
||||
%97 = load %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%98 = getelementptr inbounds %struct.TValue* %97, i32 5
|
||||
%99 = getelementptr inbounds %struct.TValue* %97, i32 6
|
||||
%100 = bitcast %struct.TValue* %99 to i64*
|
||||
%101 = load i64* %100, !tbaa !18
|
||||
%102 = bitcast %struct.TValue* %98 to i64*
|
||||
%103 = load i64* %102, !tbaa !18
|
||||
%initv-pstep.i = sub nsw i64 %103, 1
|
||||
store i64 %initv-pstep.i, i64* %iidx, !tbaa !17
|
||||
store i64 %101, i64* %ilimit, !tbaa !17
|
||||
br label %forloop35_
|
||||
|
||||
forbody21_: ; preds = %forloop35_
|
||||
%sunkaddr137 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr138 = add i64 %sunkaddr137, 32
|
||||
%sunkaddr139 = inttoptr i64 %sunkaddr138 to %struct.TValue**
|
||||
%104 = load %struct.TValue** %sunkaddr139, !tbaa !14
|
||||
%105 = getelementptr inbounds %struct.TValue* %104, i32 8
|
||||
%106 = load i64* %iidx, !tbaa !17
|
||||
%107 = bitcast %struct.TValue* %105 to i64*
|
||||
store i64 %106, i64* %107, !tbaa !18
|
||||
%dest.tt65 = getelementptr inbounds %struct.TValue* %105, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt65, !tbaa !15
|
||||
%sunkaddr126 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr127 = add i64 %sunkaddr126, 32
|
||||
%sunkaddr128 = inttoptr i64 %sunkaddr127 to %struct.TValue**
|
||||
%108 = load %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%109 = getelementptr inbounds %struct.TValue* %108, i32 9
|
||||
%110 = getelementptr inbounds %struct.TValue* %108, i32 8
|
||||
%111 = bitcast %struct.TValue* %110 to i64*
|
||||
%112 = load i64* %111, !tbaa !18
|
||||
%113 = sub nsw i64 %112, 1
|
||||
%114 = bitcast %struct.TValue* %109 to i64*
|
||||
store i64 %113, i64* %114, !tbaa !18
|
||||
%dest.tt44 = getelementptr inbounds %struct.TValue* %109, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt44, !tbaa !15
|
||||
%115 = load %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%116 = getelementptr inbounds %struct.TValue* %115, i32 4
|
||||
%117 = getelementptr inbounds %struct.TValue* %115, i32 9
|
||||
%118 = bitcast %struct.TValue* %117 to i64*
|
||||
%119 = load i64* %118, !tbaa !18
|
||||
%120 = bitcast %struct.TValue* %115 to i64*
|
||||
%121 = load i64* %120, !tbaa !18
|
||||
%122 = mul nsw i64 %119, %121
|
||||
%123 = bitcast %struct.TValue* %116 to i64*
|
||||
store i64 %122, i64* %123, !tbaa !18
|
||||
%dest.tt45 = getelementptr inbounds %struct.TValue* %116, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt45, !tbaa !15
|
||||
%124 = load %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%125 = getelementptr inbounds %struct.TValue* %124, i32 9
|
||||
%126 = bitcast %struct.TValue* %125 to i64*
|
||||
store i64 1, i64* %126, !tbaa !18
|
||||
%dest.tt46 = getelementptr inbounds %struct.TValue* %125, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt46, !tbaa !15
|
||||
%127 = load %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%128 = getelementptr inbounds %struct.TValue* %127, i32 10
|
||||
%srcvalue47129 = bitcast %struct.TValue* %127 to double*
|
||||
%destvalue48130 = bitcast %struct.TValue* %128 to double*
|
||||
%129 = load double* %srcvalue47129, !tbaa !18
|
||||
store double %129, double* %destvalue48130, !tbaa !18
|
||||
%srctype49 = getelementptr inbounds %struct.TValue* %127, i32 0, i32 1
|
||||
%desttype50 = getelementptr inbounds %struct.TValue* %128, i32 0, i32 1
|
||||
%130 = load i32* %srctype49, !tbaa !15
|
||||
store i32 %130, i32* %desttype50, !tbaa !15
|
||||
%131 = load %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%132 = getelementptr inbounds %struct.TValue* %131, i32 11
|
||||
%133 = bitcast %struct.TValue* %132 to i64*
|
||||
store i64 1, i64* %133, !tbaa !18
|
||||
%dest.tt51 = getelementptr inbounds %struct.TValue* %132, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt51, !tbaa !15
|
||||
%134 = load %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%135 = getelementptr inbounds %struct.TValue* %134, i32 9
|
||||
%136 = getelementptr inbounds %struct.TValue* %134, i32 10
|
||||
%137 = bitcast %struct.TValue* %136 to i64*
|
||||
%138 = load i64* %137, !tbaa !18
|
||||
%139 = bitcast %struct.TValue* %135 to i64*
|
||||
%140 = load i64* %139, !tbaa !18
|
||||
%initv-pstep.i54 = sub nsw i64 %140, 1
|
||||
store i64 %initv-pstep.i54, i64* %iidx53, !tbaa !17
|
||||
store i64 %138, i64* %ilimit52, !tbaa !17
|
||||
br label %forloop34_
|
||||
|
||||
forbody27_: ; preds = %forloop34_
|
||||
%sunkaddr134 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr135 = add i64 %sunkaddr134, 32
|
||||
%sunkaddr136 = inttoptr i64 %sunkaddr135 to %struct.TValue**
|
||||
%141 = load %struct.TValue** %sunkaddr136, !tbaa !14
|
||||
%142 = getelementptr inbounds %struct.TValue* %141, i32 12
|
||||
%143 = load i64* %iidx53, !tbaa !17
|
||||
%144 = bitcast %struct.TValue* %142 to i64*
|
||||
store i64 %143, i64* %144, !tbaa !18
|
||||
%dest.tt61 = getelementptr inbounds %struct.TValue* %142, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt61, !tbaa !15
|
||||
%sunkaddr131 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr132 = add i64 %sunkaddr131, 32
|
||||
%sunkaddr133 = inttoptr i64 %sunkaddr132 to %struct.TValue**
|
||||
%145 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%146 = getelementptr inbounds %struct.TValue* %145, i32 13
|
||||
%147 = getelementptr inbounds %struct.TValue* %145, i32 4
|
||||
%148 = bitcast %struct.TValue* %147 to i64*
|
||||
%149 = load i64* %148, !tbaa !18
|
||||
%150 = getelementptr inbounds %struct.TValue* %145, i32 12
|
||||
%151 = bitcast %struct.TValue* %150 to i64*
|
||||
%152 = load i64* %151, !tbaa !18
|
||||
%153 = add nsw i64 %149, %152
|
||||
%154 = bitcast %struct.TValue* %146 to i64*
|
||||
store i64 %153, i64* %154, !tbaa !18
|
||||
%dest.tt55 = getelementptr inbounds %struct.TValue* %146, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt55, !tbaa !15
|
||||
%155 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%156 = getelementptr inbounds %struct.TValue* %155, i32 14
|
||||
%157 = getelementptr inbounds %struct.TValue* %155, i32 8
|
||||
%158 = bitcast %struct.TValue* %157 to i64*
|
||||
%159 = load i64* %158, !tbaa !18
|
||||
%160 = getelementptr inbounds %struct.TValue* %155, i32 12
|
||||
%161 = bitcast %struct.TValue* %160 to i64*
|
||||
%162 = load i64* %161, !tbaa !18
|
||||
%163 = sub nsw i64 %159, %162
|
||||
%164 = bitcast %struct.TValue* %156 to i64*
|
||||
store i64 %163, i64* %164, !tbaa !18
|
||||
%dest.tt56 = getelementptr inbounds %struct.TValue* %156, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt56, !tbaa !15
|
||||
%165 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%166 = getelementptr inbounds %struct.TValue* %165, i32 14
|
||||
%167 = getelementptr inbounds %struct.TValue* %165, i32 3
|
||||
%168 = bitcast %struct.TValue* %167 to double*
|
||||
%169 = load double* %168, !tbaa !18
|
||||
%170 = getelementptr inbounds %struct.TValue* %165, i32 14
|
||||
%171 = bitcast %struct.TValue* %170 to i64*
|
||||
%172 = load i64* %171, !tbaa !18
|
||||
%173 = sitofp i64 %172 to double
|
||||
%174 = fmul double %169, %173
|
||||
%175 = bitcast %struct.TValue* %166 to double*
|
||||
store double %174, double* %175, !tbaa !18
|
||||
%dest.tt57 = getelementptr inbounds %struct.TValue* %166, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt57, !tbaa !15
|
||||
%176 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%177 = getelementptr inbounds %struct.TValue* %176, i32 15
|
||||
%178 = getelementptr inbounds %struct.TValue* %176, i32 8
|
||||
%179 = bitcast %struct.TValue* %178 to i64*
|
||||
%180 = load i64* %179, !tbaa !18
|
||||
%181 = getelementptr inbounds %struct.TValue* %176, i32 12
|
||||
%182 = bitcast %struct.TValue* %181 to i64*
|
||||
%183 = load i64* %182, !tbaa !18
|
||||
%184 = add nsw i64 %180, %183
|
||||
%185 = bitcast %struct.TValue* %177 to i64*
|
||||
store i64 %184, i64* %185, !tbaa !18
|
||||
%dest.tt58 = getelementptr inbounds %struct.TValue* %177, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt58, !tbaa !15
|
||||
%186 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%187 = getelementptr inbounds %struct.TValue* %186, i32 15
|
||||
%188 = getelementptr inbounds %struct.TValue* %186, i32 15
|
||||
%189 = bitcast %struct.TValue* %188 to i64*
|
||||
%190 = load i64* %189, !tbaa !18
|
||||
%191 = sub nsw i64 %190, 2
|
||||
%192 = bitcast %struct.TValue* %187 to i64*
|
||||
store i64 %191, i64* %192, !tbaa !18
|
||||
%dest.tt59 = getelementptr inbounds %struct.TValue* %187, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt59, !tbaa !15
|
||||
%193 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%194 = getelementptr inbounds %struct.TValue* %193, i32 14
|
||||
%195 = getelementptr inbounds %struct.TValue* %193, i32 14
|
||||
%196 = bitcast %struct.TValue* %195 to double*
|
||||
%197 = load double* %196, !tbaa !18
|
||||
%198 = getelementptr inbounds %struct.TValue* %193, i32 15
|
||||
%199 = bitcast %struct.TValue* %198 to i64*
|
||||
%200 = load i64* %199, !tbaa !18
|
||||
%201 = sitofp i64 %200 to double
|
||||
%202 = fmul double %197, %201
|
||||
%203 = bitcast %struct.TValue* %194 to double*
|
||||
store double %202, double* %203, !tbaa !18
|
||||
%dest.tt60 = getelementptr inbounds %struct.TValue* %194, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt60, !tbaa !15
|
||||
%204 = load %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%205 = getelementptr inbounds %struct.TValue* %204, i32 2
|
||||
%206 = getelementptr inbounds %struct.TValue* %204, i32 13
|
||||
%207 = getelementptr inbounds %struct.TValue* %204, i32 14
|
||||
call void @luaV_settable(%struct.lua_State* %L, %struct.TValue* %205, %struct.TValue* %206, %struct.TValue* %207)
|
||||
br label %forloop34_
|
||||
|
||||
forloop34_: ; preds = %forbody27_, %forbody21_
|
||||
%208 = load i64* %iidx53, !tbaa !17
|
||||
%next.idx = add nsw i64 1, %208
|
||||
store i64 %next.idx, i64* %iidx53, !tbaa !17
|
||||
%209 = load i64* %ilimit52, !tbaa !17
|
||||
%idx.gt.limit = icmp sgt i64 %next.idx, %209
|
||||
br i1 %idx.gt.limit, label %forloop35_, label %forbody27_
|
||||
|
||||
forloop35_: ; preds = %forloop34_, %op_call.done34
|
||||
%210 = load i64* %iidx, !tbaa !17
|
||||
%next.idx62 = add nsw i64 1, %210
|
||||
store i64 %next.idx62, i64* %iidx, !tbaa !17
|
||||
%211 = load i64* %ilimit, !tbaa !17
|
||||
%idx.gt.limit63 = icmp sgt i64 %next.idx62, %211
|
||||
br i1 %idx.gt.limit63, label %exit_iforloop66, label %forbody21_
|
||||
|
||||
exit_iforloop66: ; preds = %forloop35_
|
||||
%sunkaddr140 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr141 = add i64 %sunkaddr140, 32
|
||||
%sunkaddr142 = inttoptr i64 %sunkaddr141 to %struct.TValue**
|
||||
%212 = load %struct.TValue** %sunkaddr142, !tbaa !14
|
||||
%213 = getelementptr inbounds %struct.TValue* %212, i32 5
|
||||
%214 = getelementptr inbounds %struct.TValue* %5, i32 2
|
||||
%upvals67 = getelementptr inbounds %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%215 = load %struct.UpVal** %upvals67, !tbaa !8
|
||||
%v68143 = bitcast %struct.UpVal* %215 to %struct.TValue**
|
||||
%216 = load %struct.TValue** %v68143, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %216, %struct.TValue* %214, %struct.TValue* %213)
|
||||
%217 = load %struct.TValue** %sunkaddr142, !tbaa !14
|
||||
%218 = getelementptr inbounds %struct.TValue* %217, i32 5
|
||||
%219 = getelementptr inbounds %struct.TValue* %217, i32 5
|
||||
%220 = getelementptr inbounds %struct.TValue* %5, i32 3
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %219, %struct.TValue* %220, %struct.TValue* %218)
|
||||
%221 = load %struct.TValue** %sunkaddr142, !tbaa !14
|
||||
%222 = getelementptr inbounds %struct.TValue* %221, i32 6
|
||||
%L.top69 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %222, %struct.TValue** %L.top69, !tbaa !21
|
||||
%223 = getelementptr inbounds %struct.TValue* %221, i32 5
|
||||
%224 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %223, i32 1)
|
||||
%225 = icmp eq i32 %224, 0
|
||||
br i1 %225, label %if.lua.function70, label %if.not.lua.function71
|
||||
|
||||
if.lua.function70: ; preds = %exit_iforloop66
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done75
|
||||
|
||||
if.not.lua.function71: ; preds = %exit_iforloop66
|
||||
%226 = icmp eq i32 %224, 1
|
||||
br i1 %226, label %if.C.function72, label %op_call.done75
|
||||
|
||||
if.C.function72: ; preds = %if.not.lua.function71
|
||||
%ci_top73 = getelementptr inbounds %struct.CallInfo* %0, i32 0, i32 1
|
||||
%227 = load %struct.TValue** %ci_top73, !tbaa !23
|
||||
%L_top74 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %227, %struct.TValue** %L_top74, !tbaa !21
|
||||
br label %op_call.done75
|
||||
|
||||
op_call.done75: ; preds = %if.C.function72, %if.not.lua.function71, %if.lua.function70
|
||||
%sunkaddr144 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr145 = add i64 %sunkaddr144, 32
|
||||
%sunkaddr146 = inttoptr i64 %sunkaddr145 to %struct.TValue**
|
||||
%228 = load %struct.TValue** %sunkaddr146, !tbaa !14
|
||||
%229 = getelementptr inbounds %struct.TValue* %228, i32 6
|
||||
%upvals76 = getelementptr inbounds %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%230 = load %struct.UpVal** %upvals76, !tbaa !8
|
||||
%v77147 = bitcast %struct.UpVal* %230 to %struct.TValue**
|
||||
%231 = load %struct.TValue** %v77147, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %231, %struct.TValue* %5, %struct.TValue* %229)
|
||||
%232 = load %struct.TValue** %sunkaddr146, !tbaa !14
|
||||
%233 = getelementptr inbounds %struct.TValue* %232, i32 7
|
||||
%234 = getelementptr inbounds %struct.TValue* %5, i32 7
|
||||
%srcvalue78148 = bitcast %struct.TValue* %234 to double*
|
||||
%destvalue79149 = bitcast %struct.TValue* %233 to double*
|
||||
%235 = load double* %srcvalue78148, !tbaa !18
|
||||
store double %235, double* %destvalue79149, !tbaa !18
|
||||
%srctype80 = getelementptr inbounds %struct.TValue* %234, i32 0, i32 1
|
||||
%desttype81 = getelementptr inbounds %struct.TValue* %233, i32 0, i32 1
|
||||
%236 = load i32* %srctype80, !tbaa !15
|
||||
store i32 %236, i32* %desttype81, !tbaa !15
|
||||
%237 = load %struct.TValue** %sunkaddr146, !tbaa !14
|
||||
%238 = getelementptr inbounds %struct.TValue* %237, i32 8
|
||||
%239 = getelementptr inbounds %struct.TValue* %237, i32 5
|
||||
%240 = getelementptr inbounds %struct.TValue* %237, i32 1
|
||||
%value.tt.ptr82 = getelementptr inbounds %struct.TValue* %239, i32 0, i32 1
|
||||
%value.tt83 = load i32* %value.tt.ptr82, !tbaa !15
|
||||
%value.tt.ptr84 = getelementptr inbounds %struct.TValue* %240, i32 0, i32 1
|
||||
%value.tt85 = load i32* %value.tt.ptr84, !tbaa !15
|
||||
%rb.is.integer = icmp eq i32 %value.tt83, 19
|
||||
%rc.is.integer = icmp eq i32 %value.tt85, 19
|
||||
%241 = and i1 %rb.is.integer, %rc.is.integer
|
||||
br i1 %241, label %if.integer, label %if.not.integer87
|
||||
|
||||
if.integer: ; preds = %op_call.done75
|
||||
%242 = bitcast %struct.TValue* %239 to i64*
|
||||
%243 = load i64* %242, !tbaa !18
|
||||
%244 = bitcast %struct.TValue* %240 to i64*
|
||||
%245 = load i64* %244, !tbaa !18
|
||||
%246 = sub nsw i64 %243, %245
|
||||
%247 = bitcast %struct.TValue* %238 to i64*
|
||||
store i64 %246, i64* %247, !tbaa !18
|
||||
%dest.tt86 = getelementptr inbounds %struct.TValue* %238, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt86, !tbaa !15
|
||||
br label %done89
|
||||
|
||||
if.not.integer87: ; preds = %op_call.done75
|
||||
%rb.is.float = icmp eq i32 %value.tt83, 3
|
||||
br i1 %rb.is.float, label %load.rb, label %convert.rb
|
||||
|
||||
convert.rb: ; preds = %if.not.integer87
|
||||
%248 = call i32 @luaV_tonumber_(%struct.TValue* %239, double* %nb)
|
||||
%rb.float.ok = icmp eq i32 %248, 1
|
||||
br i1 %rb.float.ok, label %test.rc, label %try_meta
|
||||
|
||||
load.rb: ; preds = %if.not.integer87
|
||||
%249 = bitcast %struct.TValue* %239 to double*
|
||||
%250 = load double* %249, !tbaa !18
|
||||
store double %250, double* %nb, !tbaa !17
|
||||
br label %test.rc
|
||||
|
||||
test.rc: ; preds = %load.rb, %convert.rb
|
||||
%rc.is.float = icmp eq i32 %value.tt85, 3
|
||||
br i1 %rc.is.float, label %load.rc, label %convert.rc
|
||||
|
||||
convert.rc: ; preds = %test.rc
|
||||
%251 = call i32 @luaV_tonumber_(%struct.TValue* %240, double* %nc)
|
||||
%rc.float.ok = icmp eq i32 %251, 1
|
||||
br i1 %rc.float.ok, label %float.op, label %try_meta
|
||||
|
||||
load.rc: ; preds = %test.rc
|
||||
%252 = bitcast %struct.TValue* %240 to double*
|
||||
%253 = load double* %252, !tbaa !18
|
||||
store double %253, double* %nc, !tbaa !17
|
||||
br label %float.op
|
||||
|
||||
float.op: ; preds = %load.rc, %convert.rc
|
||||
%254 = load double* %nb, !tbaa !17
|
||||
%255 = load double* %nc, !tbaa !17
|
||||
%256 = fsub double %254, %255
|
||||
%257 = bitcast %struct.TValue* %238 to double*
|
||||
store double %256, double* %257, !tbaa !18
|
||||
%dest.tt88 = getelementptr inbounds %struct.TValue* %238, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt88, !tbaa !15
|
||||
br label %done89
|
||||
|
||||
try_meta: ; preds = %convert.rc, %convert.rb
|
||||
call void @luaT_trybinTM(%struct.lua_State* %L, %struct.TValue* %239, %struct.TValue* %240, %struct.TValue* %238, i32 7)
|
||||
br label %done89
|
||||
|
||||
done89: ; preds = %try_meta, %float.op, %if.integer
|
||||
%sunkaddr150 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr151 = add i64 %sunkaddr150, 32
|
||||
%sunkaddr152 = inttoptr i64 %sunkaddr151 to %struct.TValue**
|
||||
%258 = load %struct.TValue** %sunkaddr152, !tbaa !14
|
||||
%259 = getelementptr inbounds %struct.TValue* %258, i32 9
|
||||
%L.top90 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %259, %struct.TValue** %L.top90, !tbaa !21
|
||||
%260 = getelementptr inbounds %struct.TValue* %258, i32 6
|
||||
%261 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %260, i32 0)
|
||||
%262 = icmp eq i32 %261, 0
|
||||
br i1 %262, label %if.lua.function91, label %if.not.lua.function92
|
||||
|
||||
if.lua.function91: ; preds = %done89
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done96
|
||||
|
||||
if.not.lua.function92: ; preds = %done89
|
||||
%263 = icmp eq i32 %261, 1
|
||||
br i1 %263, label %if.C.function93, label %op_call.done96
|
||||
|
||||
if.C.function93: ; preds = %if.not.lua.function92
|
||||
%ci_top94 = getelementptr inbounds %struct.CallInfo* %0, i32 0, i32 1
|
||||
%264 = load %struct.TValue** %ci_top94, !tbaa !23
|
||||
%L_top95 = getelementptr inbounds %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %264, %struct.TValue** %L_top95, !tbaa !21
|
||||
br label %op_call.done96
|
||||
|
||||
op_call.done96: ; preds = %if.C.function93, %if.not.lua.function92, %if.lua.function91
|
||||
%sunkaddr153 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr154 = add i64 %sunkaddr153, 32
|
||||
%sunkaddr155 = inttoptr i64 %sunkaddr154 to %struct.TValue**
|
||||
%265 = load %struct.TValue** %sunkaddr155, !tbaa !14
|
||||
%266 = getelementptr inbounds %struct.TValue* %265, i32 2
|
||||
%sizep = getelementptr inbounds %struct.Proto* %4, i32 0, i32 10
|
||||
%267 = load i32* %sizep, !tbaa !24
|
||||
%268 = icmp sgt i32 %267, 0
|
||||
br i1 %268, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %op_call.done96
|
||||
call void @luaF_close(%struct.lua_State* %L, %struct.TValue* %265)
|
||||
br label %if.else
|
||||
|
||||
if.else: ; preds = %if.then, %op_call.done96
|
||||
%269 = call i32 @luaD_poscall(%struct.lua_State* %L, %struct.TValue* %266, i32 1)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaT_trybinTM(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaD_call(%struct.lua_State*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_poscall(%struct.lua_State*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_precall(%struct.lua_State*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaF_close(%struct.lua_State*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: noreturn nounwind
|
||||
declare void @luaG_runerror(%struct.lua_State*, i8*, ...) #1
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_equalobj(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_lessthan(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_lessequal(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_forlimit(%struct.TValue*, i64*, i64, i32*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_tonumber_(%struct.TValue*, double*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_tointeger_(%struct.TValue*, i64*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_execute(%struct.lua_State*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_settable(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_gettable(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_loadnil(%struct.CallInfo*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayint(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayfloat(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newtable(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_setlist(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @luaV_mod(%struct.lua_State*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @luaV_div(%struct.lua_State*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_objlen(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaC_upvalbarrier_(%struct.lua_State*, %struct.UpVal*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_concat(%struct.lua_State*, %struct.CallInfo*, i32, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_closure(%struct.lua_State*, %struct.CallInfo*, %struct.LClosure*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_vararg(%struct.lua_State*, %struct.CallInfo*, %struct.LClosure*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviH_set_int(%struct.lua_State*, %struct.Table*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviH_set_float(%struct.lua_State*, %struct.Table*, i64, double) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_shl(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_shr(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
declare i32 @printf(i8*, ...)
|
||||
|
||||
declare double @fmod(double, double)
|
||||
|
||||
declare double @pow(double, double)
|
||||
|
||||
declare double @floor(double)
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
attributes #1 = { noreturn nounwind }
|
||||
|
||||
!0 = !{!"CallInfo", !1, i64 0, !1, i64 4, !1, i64 8, !1, i64 12, !4, i64 16, !5, i64 32, !6, i64 40, !2, i64 42, !2, i64 43}
|
||||
!1 = !{!"any pointer", !2, i64 0}
|
||||
!2 = !{!"omnipotent char", !3, i64 0}
|
||||
!3 = !{!"Simple C / C++ TBAA"}
|
||||
!4 = !{!"CallInfo_l", !1, i64 0, !1, i64 4, !5, i64 8}
|
||||
!5 = !{!"long long", !2, i64 0}
|
||||
!6 = !{!"short", !2, i64 0}
|
||||
!7 = !{!0, !1, i64 0}
|
||||
!8 = !{!1, !1, i64 0}
|
||||
!9 = !{!10, !1, i64 12}
|
||||
!10 = !{!"LClosure", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16}
|
||||
!11 = !{!12, !1, i64 44}
|
||||
!12 = !{!"Proto", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !2, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !1, i64 44, !1, i64 48, !1, i64 52, !1, i64 56, !1, i64 60, !1, i64 64, !1, i64 68, !1, i64 72, !1, i64 76, !2, i64 80}
|
||||
!13 = !{!"int", !2, i64 0}
|
||||
!14 = !{!0, !1, i64 16}
|
||||
!15 = !{!16, !13, i64 8}
|
||||
!16 = !{!"TValue", !5, i64 0, !13, i64 8}
|
||||
!17 = !{!5, !5, i64 0}
|
||||
!18 = !{!16, !5, i64 0}
|
||||
!19 = !{!20, !1, i64 0}
|
||||
!20 = !{!"UpVal", !1, i64 0, !5, i64 8, !16, i64 16}
|
||||
!21 = !{!22, !1, i64 8}
|
||||
!22 = !{!"lua_State", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !1, i64 32, !1, i64 36, !1, i64 40, !1, i64 44, !0, i64 48, !1, i64 92, !5, i64 96, !13, i64 104, !13, i64 108, !13, i64 112, !6, i64 114, !6, i64 116, !2, i64 118, !2, i64 119}
|
||||
!23 = !{!0, !1, i64 4}
|
||||
!24 = !{!12, !13, i64 28}
|
@ -1,788 +0,0 @@
|
||||
; ModuleID = 'ravi_module_ravif1'
|
||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
%0 = type { %struct.TValue*, i32*, i64 }
|
||||
%struct.lua_State = type { %struct.GCObject*, i8, i8, i8, %struct.TValue*, %struct.global_State*, %struct.CallInfo*, i32*, %struct.TValue*, %struct.TValue*, %struct.UpVal*, %struct.GCObject*, %struct.lua_State*, %struct.lua_longjmp*, %struct.CallInfo, i8* (%struct.lua_State*, %struct.lua_Debug*)*, i64, i32, i32, i32, i16, i16, i8, i8 }
|
||||
%struct.global_State = type opaque
|
||||
%struct.TValue = type { %union.Value, i32 }
|
||||
%union.Value = type { double }
|
||||
%struct.UpVal = type { %struct.TValue*, i64, %struct.TValue }
|
||||
%struct.GCObject = type { %struct.GCObject*, i8, i8 }
|
||||
%struct.lua_longjmp = type opaque
|
||||
%struct.CallInfo = type { %struct.TValue*, %struct.TValue*, %struct.CallInfo*, %struct.CallInfo*, %0, i64, i16, i8, i8 }
|
||||
%struct.lua_Debug = type opaque
|
||||
%struct.LClosure = type { %struct.GCObject*, i8, i8, i8, %struct.GCObject*, %struct.Proto*, [1 x %struct.UpVal*] }
|
||||
%struct.Proto = type { %struct.GCObject*, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %struct.TValue*, i32*, %struct.Proto**, i32*, %struct.LocVar*, %struct.Upvaldesc*, %struct.LClosure*, %struct.TString*, %struct.GCObject*, %struct.RaviJITProto }
|
||||
%struct.LocVar = type { %struct.TString*, i32, i32, i32 }
|
||||
%struct.Upvaldesc = type { %struct.TString*, i32, i8, i8 }
|
||||
%struct.TString = type { %struct.GCObject*, i8, i8, i8, i8, i32, i64 }
|
||||
%struct.RaviJITProto = type { i8, i8, i16, i8*, i32 (%struct.lua_State*)* }
|
||||
%struct.Table = type { %struct.GCObject*, i8, i8, i8, i8, i32, %struct.TValue*, %struct.Node*, %struct.Node*, %struct.Table*, %struct.GCObject*, %struct.RaviArray }
|
||||
%struct.Node = type { %struct.TValue, %struct.TKey }
|
||||
%struct.TKey = type { %union.Value, i32, i32 }
|
||||
%struct.RaviArray = type { i8*, i32, i32, i8, i8 }
|
||||
|
||||
@0 = private unnamed_addr constant [17 x i8] c"integer expected\00"
|
||||
|
||||
define i32 @ravif1(%struct.lua_State* %L) {
|
||||
entry:
|
||||
%nb = alloca double
|
||||
%nc = alloca double
|
||||
%ilimit52 = alloca i64
|
||||
%iidx53 = alloca i64
|
||||
%ilimit = alloca i64
|
||||
%iidx = alloca i64
|
||||
%i = alloca i64
|
||||
%L_ci = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 6
|
||||
%0 = load %struct.CallInfo*, %struct.CallInfo** %L_ci, !tbaa !0
|
||||
%base = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 4, i32 0
|
||||
%1 = bitcast %struct.CallInfo* %0 to %struct.LClosure***
|
||||
%2 = load %struct.LClosure**, %struct.LClosure*** %1, !tbaa !7
|
||||
%3 = load %struct.LClosure*, %struct.LClosure** %2, !tbaa !8
|
||||
%Proto = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 5
|
||||
%4 = load %struct.Proto*, %struct.Proto** %Proto, !tbaa !9
|
||||
%k = getelementptr inbounds %struct.Proto, %struct.Proto* %4, i32 0, i32 14
|
||||
%5 = load %struct.TValue*, %struct.TValue** %k, !tbaa !11
|
||||
%6 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%value.tt.ptr = getelementptr inbounds %struct.TValue, %struct.TValue* %6, i32 0, i32 1
|
||||
%value.tt = load i32, i32* %value.tt.ptr, !tbaa !15
|
||||
%is.not.integer = icmp ne i32 %value.tt, 19
|
||||
br i1 %is.not.integer, label %if.not.integer, label %done
|
||||
|
||||
if.not.integer: ; preds = %entry
|
||||
%7 = call i32 @luaV_tointeger_(%struct.TValue* %6, i64* %i)
|
||||
%int.conversion.failed = icmp eq i32 %7, 0
|
||||
br i1 %int.conversion.failed, label %if.conversion.failed, label %conversion.ok
|
||||
|
||||
if.conversion.failed: ; preds = %if.not.integer
|
||||
call void (%struct.lua_State*, i8*, ...) @luaG_runerror(%struct.lua_State* %L, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @0, i32 0, i32 0))
|
||||
br label %conversion.ok
|
||||
|
||||
conversion.ok: ; preds = %if.conversion.failed, %if.not.integer
|
||||
%8 = load i64, i64* %i, !tbaa !17
|
||||
%9 = bitcast %struct.TValue* %6 to i64*
|
||||
store i64 %8, i64* %9, !tbaa !18
|
||||
%dest.tt = getelementptr inbounds %struct.TValue, %struct.TValue* %6, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt, !tbaa !15
|
||||
br label %done
|
||||
|
||||
done: ; preds = %conversion.ok, %entry
|
||||
%sunkaddr = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr100 = add i64 %sunkaddr, 32
|
||||
%sunkaddr101 = inttoptr i64 %sunkaddr100 to %struct.TValue**
|
||||
%10 = load %struct.TValue*, %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%11 = getelementptr inbounds %struct.TValue, %struct.TValue* %10, i32 1
|
||||
%upvals = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%12 = load %struct.UpVal*, %struct.UpVal** %upvals, !tbaa !8
|
||||
%v102 = bitcast %struct.UpVal* %12 to %struct.TValue**
|
||||
%13 = load %struct.TValue*, %struct.TValue** %v102, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %13, %struct.TValue* %5, %struct.TValue* %11)
|
||||
%14 = load %struct.TValue*, %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%15 = getelementptr inbounds %struct.TValue, %struct.TValue* %14, i32 2
|
||||
%16 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 1
|
||||
%srcvalue103 = bitcast %struct.TValue* %16 to double*
|
||||
%destvalue104 = bitcast %struct.TValue* %15 to double*
|
||||
%17 = load double, double* %srcvalue103, !tbaa !18
|
||||
store double %17, double* %destvalue104, !tbaa !18
|
||||
%srctype = getelementptr inbounds %struct.TValue, %struct.TValue* %16, i32 0, i32 1
|
||||
%desttype = getelementptr inbounds %struct.TValue, %struct.TValue* %15, i32 0, i32 1
|
||||
%18 = load i32, i32* %srctype, !tbaa !15
|
||||
store i32 %18, i32* %desttype, !tbaa !15
|
||||
%19 = load %struct.TValue*, %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%20 = getelementptr inbounds %struct.TValue, %struct.TValue* %19, i32 3
|
||||
%srcvalue1105 = bitcast %struct.TValue* %19 to double*
|
||||
%destvalue2106 = bitcast %struct.TValue* %20 to double*
|
||||
%21 = load double, double* %srcvalue1105, !tbaa !18
|
||||
store double %21, double* %destvalue2106, !tbaa !18
|
||||
%srctype3 = getelementptr inbounds %struct.TValue, %struct.TValue* %19, i32 0, i32 1
|
||||
%desttype4 = getelementptr inbounds %struct.TValue, %struct.TValue* %20, i32 0, i32 1
|
||||
%22 = load i32, i32* %srctype3, !tbaa !15
|
||||
store i32 %22, i32* %desttype4, !tbaa !15
|
||||
%23 = load %struct.TValue*, %struct.TValue** %sunkaddr101, !tbaa !14
|
||||
%24 = getelementptr inbounds %struct.TValue, %struct.TValue* %23, i32 4
|
||||
%L.top = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %24, %struct.TValue** %L.top, !tbaa !21
|
||||
%25 = getelementptr inbounds %struct.TValue, %struct.TValue* %23, i32 1
|
||||
%26 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %25, i32 0)
|
||||
%27 = icmp eq i32 %26, 0
|
||||
br i1 %27, label %if.lua.function, label %if.not.lua.function
|
||||
|
||||
if.lua.function: ; preds = %done
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done
|
||||
|
||||
if.not.lua.function: ; preds = %done
|
||||
%28 = icmp eq i32 %26, 1
|
||||
br i1 %28, label %if.C.function, label %op_call.done
|
||||
|
||||
if.C.function: ; preds = %if.not.lua.function
|
||||
%ci_top = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%29 = load %struct.TValue*, %struct.TValue** %ci_top, !tbaa !23
|
||||
%L_top = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %29, %struct.TValue** %L_top, !tbaa !21
|
||||
br label %op_call.done
|
||||
|
||||
op_call.done: ; preds = %if.C.function, %if.not.lua.function, %if.lua.function
|
||||
%sunkaddr107 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr108 = add i64 %sunkaddr107, 32
|
||||
%sunkaddr109 = inttoptr i64 %sunkaddr108 to %struct.TValue**
|
||||
%30 = load %struct.TValue*, %struct.TValue** %sunkaddr109, !tbaa !14
|
||||
%31 = getelementptr inbounds %struct.TValue, %struct.TValue* %30, i32 1
|
||||
%32 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 2
|
||||
%upvals5 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%33 = load %struct.UpVal*, %struct.UpVal** %upvals5, !tbaa !8
|
||||
%v6110 = bitcast %struct.UpVal* %33 to %struct.TValue**
|
||||
%34 = load %struct.TValue*, %struct.TValue** %v6110, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %34, %struct.TValue* %32, %struct.TValue* %31)
|
||||
%35 = load %struct.TValue*, %struct.TValue** %sunkaddr109, !tbaa !14
|
||||
%36 = getelementptr inbounds %struct.TValue, %struct.TValue* %35, i32 1
|
||||
%37 = getelementptr inbounds %struct.TValue, %struct.TValue* %35, i32 1
|
||||
%38 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 3
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %37, %struct.TValue* %38, %struct.TValue* %36)
|
||||
%39 = load %struct.TValue*, %struct.TValue** %sunkaddr109, !tbaa !14
|
||||
%40 = getelementptr inbounds %struct.TValue, %struct.TValue* %39, i32 2
|
||||
%L.top7 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %40, %struct.TValue** %L.top7, !tbaa !21
|
||||
%41 = getelementptr inbounds %struct.TValue, %struct.TValue* %39, i32 1
|
||||
%42 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %41, i32 1)
|
||||
%43 = icmp eq i32 %42, 0
|
||||
br i1 %43, label %if.lua.function8, label %if.not.lua.function.9
|
||||
|
||||
if.lua.function8: ; preds = %op_call.done
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.13
|
||||
|
||||
if.not.lua.function.9: ; preds = %op_call.done
|
||||
%44 = icmp eq i32 %42, 1
|
||||
br i1 %44, label %if.C.function10, label %op_call.done.13
|
||||
|
||||
if.C.function10: ; preds = %if.not.lua.function.9
|
||||
%ci_top11 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%45 = load %struct.TValue*, %struct.TValue** %ci_top11, !tbaa !23
|
||||
%L_top12 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %45, %struct.TValue** %L_top12, !tbaa !21
|
||||
br label %op_call.done.13
|
||||
|
||||
op_call.done.13: ; preds = %if.C.function10, %if.not.lua.function.9, %if.lua.function8
|
||||
%sunkaddr111 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr112 = add i64 %sunkaddr111, 32
|
||||
%sunkaddr113 = inttoptr i64 %sunkaddr112 to %struct.TValue**
|
||||
%46 = load %struct.TValue*, %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%47 = getelementptr inbounds %struct.TValue, %struct.TValue* %46, i32 2
|
||||
%upvals14 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 1
|
||||
%48 = load %struct.UpVal*, %struct.UpVal** %upvals14, !tbaa !8
|
||||
%v15114 = bitcast %struct.UpVal* %48 to %struct.TValue**
|
||||
%49 = load %struct.TValue*, %struct.TValue** %v15114, !tbaa !19
|
||||
%srcvalue16115 = bitcast %struct.TValue* %49 to double*
|
||||
%destvalue17116 = bitcast %struct.TValue* %47 to double*
|
||||
%50 = load double, double* %srcvalue16115, !tbaa !18
|
||||
store double %50, double* %destvalue17116, !tbaa !18
|
||||
%srctype18 = getelementptr inbounds %struct.TValue, %struct.TValue* %49, i32 0, i32 1
|
||||
%desttype19 = getelementptr inbounds %struct.TValue, %struct.TValue* %47, i32 0, i32 1
|
||||
%51 = load i32, i32* %srctype18, !tbaa !15
|
||||
store i32 %51, i32* %desttype19, !tbaa !15
|
||||
%52 = load %struct.TValue*, %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%53 = getelementptr inbounds %struct.TValue, %struct.TValue* %52, i32 3
|
||||
%srcvalue20117 = bitcast %struct.TValue* %52 to double*
|
||||
%destvalue21118 = bitcast %struct.TValue* %53 to double*
|
||||
%54 = load double, double* %srcvalue20117, !tbaa !18
|
||||
store double %54, double* %destvalue21118, !tbaa !18
|
||||
%srctype22 = getelementptr inbounds %struct.TValue, %struct.TValue* %52, i32 0, i32 1
|
||||
%desttype23 = getelementptr inbounds %struct.TValue, %struct.TValue* %53, i32 0, i32 1
|
||||
%55 = load i32, i32* %srctype22, !tbaa !15
|
||||
store i32 %55, i32* %desttype23, !tbaa !15
|
||||
%56 = load %struct.TValue*, %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%57 = getelementptr inbounds %struct.TValue, %struct.TValue* %56, i32 4
|
||||
%srcvalue24119 = bitcast %struct.TValue* %56 to double*
|
||||
%destvalue25120 = bitcast %struct.TValue* %57 to double*
|
||||
%58 = load double, double* %srcvalue24119, !tbaa !18
|
||||
store double %58, double* %destvalue25120, !tbaa !18
|
||||
%srctype26 = getelementptr inbounds %struct.TValue, %struct.TValue* %56, i32 0, i32 1
|
||||
%desttype27 = getelementptr inbounds %struct.TValue, %struct.TValue* %57, i32 0, i32 1
|
||||
%59 = load i32, i32* %srctype26, !tbaa !15
|
||||
store i32 %59, i32* %desttype27, !tbaa !15
|
||||
%60 = load %struct.TValue*, %struct.TValue** %sunkaddr113, !tbaa !14
|
||||
%61 = getelementptr inbounds %struct.TValue, %struct.TValue* %60, i32 5
|
||||
%L.top28 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %61, %struct.TValue** %L.top28, !tbaa !21
|
||||
%62 = getelementptr inbounds %struct.TValue, %struct.TValue* %60, i32 2
|
||||
%63 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %62, i32 1)
|
||||
%64 = icmp eq i32 %63, 0
|
||||
br i1 %64, label %if.lua.function29, label %if.not.lua.function.30
|
||||
|
||||
if.lua.function29: ; preds = %op_call.done.13
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.34
|
||||
|
||||
if.not.lua.function.30: ; preds = %op_call.done.13
|
||||
%65 = icmp eq i32 %63, 1
|
||||
br i1 %65, label %if.C.function31, label %op_call.done.34
|
||||
|
||||
if.C.function31: ; preds = %if.not.lua.function.30
|
||||
%ci_top32 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%66 = load %struct.TValue*, %struct.TValue** %ci_top32, !tbaa !23
|
||||
%L_top33 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %66, %struct.TValue** %L_top33, !tbaa !21
|
||||
br label %op_call.done.34
|
||||
|
||||
op_call.done.34: ; preds = %if.C.function31, %if.not.lua.function.30, %if.lua.function29
|
||||
%sunkaddr121 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr122 = add i64 %sunkaddr121, 32
|
||||
%sunkaddr123 = inttoptr i64 %sunkaddr122 to %struct.TValue**
|
||||
%67 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%68 = getelementptr inbounds %struct.TValue, %struct.TValue* %67, i32 3
|
||||
%69 = bitcast %struct.TValue* %67 to i64*
|
||||
%70 = load i64, i64* %69, !tbaa !18
|
||||
%71 = sitofp i64 %70 to double
|
||||
%72 = fdiv double 1.000000e+00, %71
|
||||
%73 = bitcast %struct.TValue* %68 to double*
|
||||
store double %72, double* %73, !tbaa !18
|
||||
%dest.tt35 = getelementptr inbounds %struct.TValue, %struct.TValue* %68, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt35, !tbaa !15
|
||||
%74 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%75 = getelementptr inbounds %struct.TValue, %struct.TValue* %74, i32 3
|
||||
%76 = getelementptr inbounds %struct.TValue, %struct.TValue* %74, i32 3
|
||||
%77 = bitcast %struct.TValue* %76 to double*
|
||||
%78 = load double, double* %77, !tbaa !18
|
||||
%79 = bitcast %struct.TValue* %74 to i64*
|
||||
%80 = load i64, i64* %79, !tbaa !18
|
||||
%81 = sitofp i64 %80 to double
|
||||
%82 = fdiv double %78, %81
|
||||
%83 = bitcast %struct.TValue* %75 to double*
|
||||
store double %82, double* %83, !tbaa !18
|
||||
%dest.tt36 = getelementptr inbounds %struct.TValue, %struct.TValue* %75, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt36, !tbaa !15
|
||||
call void @raviV_op_loadnil(%struct.CallInfo* %0, i32 4, i32 0)
|
||||
%84 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%85 = getelementptr inbounds %struct.TValue, %struct.TValue* %84, i32 4
|
||||
%86 = bitcast %struct.TValue* %85 to i64*
|
||||
store i64 0, i64* %86, !tbaa !18
|
||||
%dest.tt37 = getelementptr inbounds %struct.TValue, %struct.TValue* %85, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt37, !tbaa !15
|
||||
%87 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%88 = getelementptr inbounds %struct.TValue, %struct.TValue* %87, i32 5
|
||||
%89 = bitcast %struct.TValue* %88 to i64*
|
||||
store i64 1, i64* %89, !tbaa !18
|
||||
%dest.tt38 = getelementptr inbounds %struct.TValue, %struct.TValue* %88, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt38, !tbaa !15
|
||||
%90 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%91 = getelementptr inbounds %struct.TValue, %struct.TValue* %90, i32 6
|
||||
%srcvalue39124 = bitcast %struct.TValue* %90 to double*
|
||||
%destvalue40125 = bitcast %struct.TValue* %91 to double*
|
||||
%92 = load double, double* %srcvalue39124, !tbaa !18
|
||||
store double %92, double* %destvalue40125, !tbaa !18
|
||||
%srctype41 = getelementptr inbounds %struct.TValue, %struct.TValue* %90, i32 0, i32 1
|
||||
%desttype42 = getelementptr inbounds %struct.TValue, %struct.TValue* %91, i32 0, i32 1
|
||||
%93 = load i32, i32* %srctype41, !tbaa !15
|
||||
store i32 %93, i32* %desttype42, !tbaa !15
|
||||
%94 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%95 = getelementptr inbounds %struct.TValue, %struct.TValue* %94, i32 7
|
||||
%96 = bitcast %struct.TValue* %95 to i64*
|
||||
store i64 1, i64* %96, !tbaa !18
|
||||
%dest.tt43 = getelementptr inbounds %struct.TValue, %struct.TValue* %95, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt43, !tbaa !15
|
||||
%97 = load %struct.TValue*, %struct.TValue** %sunkaddr123, !tbaa !14
|
||||
%98 = getelementptr inbounds %struct.TValue, %struct.TValue* %97, i32 5
|
||||
%99 = getelementptr inbounds %struct.TValue, %struct.TValue* %97, i32 6
|
||||
%100 = bitcast %struct.TValue* %99 to i64*
|
||||
%101 = load i64, i64* %100, !tbaa !18
|
||||
%102 = bitcast %struct.TValue* %98 to i64*
|
||||
%103 = load i64, i64* %102, !tbaa !18
|
||||
%initv-pstep.i = sub nsw i64 %103, 1
|
||||
store i64 %initv-pstep.i, i64* %iidx, !tbaa !17
|
||||
store i64 %101, i64* %ilimit, !tbaa !17
|
||||
br label %forloop35_
|
||||
|
||||
forbody21_: ; preds = %forloop35_
|
||||
%sunkaddr137 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr138 = add i64 %sunkaddr137, 32
|
||||
%sunkaddr139 = inttoptr i64 %sunkaddr138 to %struct.TValue**
|
||||
%104 = load %struct.TValue*, %struct.TValue** %sunkaddr139, !tbaa !14
|
||||
%105 = getelementptr inbounds %struct.TValue, %struct.TValue* %104, i32 8
|
||||
%106 = load i64, i64* %iidx, !tbaa !17
|
||||
%107 = bitcast %struct.TValue* %105 to i64*
|
||||
store i64 %106, i64* %107, !tbaa !18
|
||||
%dest.tt65 = getelementptr inbounds %struct.TValue, %struct.TValue* %105, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt65, !tbaa !15
|
||||
%sunkaddr126 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr127 = add i64 %sunkaddr126, 32
|
||||
%sunkaddr128 = inttoptr i64 %sunkaddr127 to %struct.TValue**
|
||||
%108 = load %struct.TValue*, %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%109 = getelementptr inbounds %struct.TValue, %struct.TValue* %108, i32 9
|
||||
%110 = getelementptr inbounds %struct.TValue, %struct.TValue* %108, i32 8
|
||||
%111 = bitcast %struct.TValue* %110 to i64*
|
||||
%112 = load i64, i64* %111, !tbaa !18
|
||||
%113 = sub nsw i64 %112, 1
|
||||
%114 = bitcast %struct.TValue* %109 to i64*
|
||||
store i64 %113, i64* %114, !tbaa !18
|
||||
%dest.tt44 = getelementptr inbounds %struct.TValue, %struct.TValue* %109, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt44, !tbaa !15
|
||||
%115 = load %struct.TValue*, %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%116 = getelementptr inbounds %struct.TValue, %struct.TValue* %115, i32 4
|
||||
%117 = getelementptr inbounds %struct.TValue, %struct.TValue* %115, i32 9
|
||||
%118 = bitcast %struct.TValue* %117 to i64*
|
||||
%119 = load i64, i64* %118, !tbaa !18
|
||||
%120 = bitcast %struct.TValue* %115 to i64*
|
||||
%121 = load i64, i64* %120, !tbaa !18
|
||||
%122 = mul nsw i64 %119, %121
|
||||
%123 = bitcast %struct.TValue* %116 to i64*
|
||||
store i64 %122, i64* %123, !tbaa !18
|
||||
%dest.tt45 = getelementptr inbounds %struct.TValue, %struct.TValue* %116, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt45, !tbaa !15
|
||||
%124 = load %struct.TValue*, %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%125 = getelementptr inbounds %struct.TValue, %struct.TValue* %124, i32 9
|
||||
%126 = bitcast %struct.TValue* %125 to i64*
|
||||
store i64 1, i64* %126, !tbaa !18
|
||||
%dest.tt46 = getelementptr inbounds %struct.TValue, %struct.TValue* %125, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt46, !tbaa !15
|
||||
%127 = load %struct.TValue*, %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%128 = getelementptr inbounds %struct.TValue, %struct.TValue* %127, i32 10
|
||||
%srcvalue47129 = bitcast %struct.TValue* %127 to double*
|
||||
%destvalue48130 = bitcast %struct.TValue* %128 to double*
|
||||
%129 = load double, double* %srcvalue47129, !tbaa !18
|
||||
store double %129, double* %destvalue48130, !tbaa !18
|
||||
%srctype49 = getelementptr inbounds %struct.TValue, %struct.TValue* %127, i32 0, i32 1
|
||||
%desttype50 = getelementptr inbounds %struct.TValue, %struct.TValue* %128, i32 0, i32 1
|
||||
%130 = load i32, i32* %srctype49, !tbaa !15
|
||||
store i32 %130, i32* %desttype50, !tbaa !15
|
||||
%131 = load %struct.TValue*, %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%132 = getelementptr inbounds %struct.TValue, %struct.TValue* %131, i32 11
|
||||
%133 = bitcast %struct.TValue* %132 to i64*
|
||||
store i64 1, i64* %133, !tbaa !18
|
||||
%dest.tt51 = getelementptr inbounds %struct.TValue, %struct.TValue* %132, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt51, !tbaa !15
|
||||
%134 = load %struct.TValue*, %struct.TValue** %sunkaddr128, !tbaa !14
|
||||
%135 = getelementptr inbounds %struct.TValue, %struct.TValue* %134, i32 9
|
||||
%136 = getelementptr inbounds %struct.TValue, %struct.TValue* %134, i32 10
|
||||
%137 = bitcast %struct.TValue* %136 to i64*
|
||||
%138 = load i64, i64* %137, !tbaa !18
|
||||
%139 = bitcast %struct.TValue* %135 to i64*
|
||||
%140 = load i64, i64* %139, !tbaa !18
|
||||
%initv-pstep.i54 = sub nsw i64 %140, 1
|
||||
store i64 %initv-pstep.i54, i64* %iidx53, !tbaa !17
|
||||
store i64 %138, i64* %ilimit52, !tbaa !17
|
||||
br label %forloop34_
|
||||
|
||||
forbody27_: ; preds = %forloop34_
|
||||
%sunkaddr134 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr135 = add i64 %sunkaddr134, 32
|
||||
%sunkaddr136 = inttoptr i64 %sunkaddr135 to %struct.TValue**
|
||||
%141 = load %struct.TValue*, %struct.TValue** %sunkaddr136, !tbaa !14
|
||||
%142 = getelementptr inbounds %struct.TValue, %struct.TValue* %141, i32 12
|
||||
%143 = load i64, i64* %iidx53, !tbaa !17
|
||||
%144 = bitcast %struct.TValue* %142 to i64*
|
||||
store i64 %143, i64* %144, !tbaa !18
|
||||
%dest.tt61 = getelementptr inbounds %struct.TValue, %struct.TValue* %142, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt61, !tbaa !15
|
||||
%sunkaddr131 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr132 = add i64 %sunkaddr131, 32
|
||||
%sunkaddr133 = inttoptr i64 %sunkaddr132 to %struct.TValue**
|
||||
%145 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%146 = getelementptr inbounds %struct.TValue, %struct.TValue* %145, i32 13
|
||||
%147 = getelementptr inbounds %struct.TValue, %struct.TValue* %145, i32 4
|
||||
%148 = bitcast %struct.TValue* %147 to i64*
|
||||
%149 = load i64, i64* %148, !tbaa !18
|
||||
%150 = getelementptr inbounds %struct.TValue, %struct.TValue* %145, i32 12
|
||||
%151 = bitcast %struct.TValue* %150 to i64*
|
||||
%152 = load i64, i64* %151, !tbaa !18
|
||||
%153 = add nsw i64 %149, %152
|
||||
%154 = bitcast %struct.TValue* %146 to i64*
|
||||
store i64 %153, i64* %154, !tbaa !18
|
||||
%dest.tt55 = getelementptr inbounds %struct.TValue, %struct.TValue* %146, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt55, !tbaa !15
|
||||
%155 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%156 = getelementptr inbounds %struct.TValue, %struct.TValue* %155, i32 14
|
||||
%157 = getelementptr inbounds %struct.TValue, %struct.TValue* %155, i32 8
|
||||
%158 = bitcast %struct.TValue* %157 to i64*
|
||||
%159 = load i64, i64* %158, !tbaa !18
|
||||
%160 = getelementptr inbounds %struct.TValue, %struct.TValue* %155, i32 12
|
||||
%161 = bitcast %struct.TValue* %160 to i64*
|
||||
%162 = load i64, i64* %161, !tbaa !18
|
||||
%163 = sub nsw i64 %159, %162
|
||||
%164 = bitcast %struct.TValue* %156 to i64*
|
||||
store i64 %163, i64* %164, !tbaa !18
|
||||
%dest.tt56 = getelementptr inbounds %struct.TValue, %struct.TValue* %156, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt56, !tbaa !15
|
||||
%165 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%166 = getelementptr inbounds %struct.TValue, %struct.TValue* %165, i32 14
|
||||
%167 = getelementptr inbounds %struct.TValue, %struct.TValue* %165, i32 3
|
||||
%168 = bitcast %struct.TValue* %167 to double*
|
||||
%169 = load double, double* %168, !tbaa !18
|
||||
%170 = getelementptr inbounds %struct.TValue, %struct.TValue* %165, i32 14
|
||||
%171 = bitcast %struct.TValue* %170 to i64*
|
||||
%172 = load i64, i64* %171, !tbaa !18
|
||||
%173 = sitofp i64 %172 to double
|
||||
%174 = fmul double %169, %173
|
||||
%175 = bitcast %struct.TValue* %166 to double*
|
||||
store double %174, double* %175, !tbaa !18
|
||||
%dest.tt57 = getelementptr inbounds %struct.TValue, %struct.TValue* %166, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt57, !tbaa !15
|
||||
%176 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%177 = getelementptr inbounds %struct.TValue, %struct.TValue* %176, i32 15
|
||||
%178 = getelementptr inbounds %struct.TValue, %struct.TValue* %176, i32 8
|
||||
%179 = bitcast %struct.TValue* %178 to i64*
|
||||
%180 = load i64, i64* %179, !tbaa !18
|
||||
%181 = getelementptr inbounds %struct.TValue, %struct.TValue* %176, i32 12
|
||||
%182 = bitcast %struct.TValue* %181 to i64*
|
||||
%183 = load i64, i64* %182, !tbaa !18
|
||||
%184 = add nsw i64 %180, %183
|
||||
%185 = bitcast %struct.TValue* %177 to i64*
|
||||
store i64 %184, i64* %185, !tbaa !18
|
||||
%dest.tt58 = getelementptr inbounds %struct.TValue, %struct.TValue* %177, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt58, !tbaa !15
|
||||
%186 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%187 = getelementptr inbounds %struct.TValue, %struct.TValue* %186, i32 15
|
||||
%188 = getelementptr inbounds %struct.TValue, %struct.TValue* %186, i32 15
|
||||
%189 = bitcast %struct.TValue* %188 to i64*
|
||||
%190 = load i64, i64* %189, !tbaa !18
|
||||
%191 = sub nsw i64 %190, 2
|
||||
%192 = bitcast %struct.TValue* %187 to i64*
|
||||
store i64 %191, i64* %192, !tbaa !18
|
||||
%dest.tt59 = getelementptr inbounds %struct.TValue, %struct.TValue* %187, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt59, !tbaa !15
|
||||
%193 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%194 = getelementptr inbounds %struct.TValue, %struct.TValue* %193, i32 14
|
||||
%195 = getelementptr inbounds %struct.TValue, %struct.TValue* %193, i32 14
|
||||
%196 = bitcast %struct.TValue* %195 to double*
|
||||
%197 = load double, double* %196, !tbaa !18
|
||||
%198 = getelementptr inbounds %struct.TValue, %struct.TValue* %193, i32 15
|
||||
%199 = bitcast %struct.TValue* %198 to i64*
|
||||
%200 = load i64, i64* %199, !tbaa !18
|
||||
%201 = sitofp i64 %200 to double
|
||||
%202 = fmul double %197, %201
|
||||
%203 = bitcast %struct.TValue* %194 to double*
|
||||
store double %202, double* %203, !tbaa !18
|
||||
%dest.tt60 = getelementptr inbounds %struct.TValue, %struct.TValue* %194, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt60, !tbaa !15
|
||||
%204 = load %struct.TValue*, %struct.TValue** %sunkaddr133, !tbaa !14
|
||||
%205 = getelementptr inbounds %struct.TValue, %struct.TValue* %204, i32 2
|
||||
%206 = getelementptr inbounds %struct.TValue, %struct.TValue* %204, i32 13
|
||||
%207 = getelementptr inbounds %struct.TValue, %struct.TValue* %204, i32 14
|
||||
call void @luaV_settable(%struct.lua_State* %L, %struct.TValue* %205, %struct.TValue* %206, %struct.TValue* %207)
|
||||
br label %forloop34_
|
||||
|
||||
forloop34_: ; preds = %forbody27_, %forbody21_
|
||||
%208 = load i64, i64* %iidx53, !tbaa !17
|
||||
%next.idx = add nsw i64 1, %208
|
||||
store i64 %next.idx, i64* %iidx53, !tbaa !17
|
||||
%209 = load i64, i64* %ilimit52, !tbaa !17
|
||||
%idx.gt.limit = icmp sgt i64 %next.idx, %209
|
||||
br i1 %idx.gt.limit, label %forloop35_, label %forbody27_
|
||||
|
||||
forloop35_: ; preds = %forloop34_, %op_call.done.34
|
||||
%210 = load i64, i64* %iidx, !tbaa !17
|
||||
%next.idx62 = add nsw i64 1, %210
|
||||
store i64 %next.idx62, i64* %iidx, !tbaa !17
|
||||
%211 = load i64, i64* %ilimit, !tbaa !17
|
||||
%idx.gt.limit63 = icmp sgt i64 %next.idx62, %211
|
||||
br i1 %idx.gt.limit63, label %exit_iforloop.66, label %forbody21_
|
||||
|
||||
exit_iforloop.66: ; preds = %forloop35_
|
||||
%sunkaddr140 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr141 = add i64 %sunkaddr140, 32
|
||||
%sunkaddr142 = inttoptr i64 %sunkaddr141 to %struct.TValue**
|
||||
%212 = load %struct.TValue*, %struct.TValue** %sunkaddr142, !tbaa !14
|
||||
%213 = getelementptr inbounds %struct.TValue, %struct.TValue* %212, i32 5
|
||||
%214 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 2
|
||||
%upvals67 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%215 = load %struct.UpVal*, %struct.UpVal** %upvals67, !tbaa !8
|
||||
%v68143 = bitcast %struct.UpVal* %215 to %struct.TValue**
|
||||
%216 = load %struct.TValue*, %struct.TValue** %v68143, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %216, %struct.TValue* %214, %struct.TValue* %213)
|
||||
%217 = load %struct.TValue*, %struct.TValue** %sunkaddr142, !tbaa !14
|
||||
%218 = getelementptr inbounds %struct.TValue, %struct.TValue* %217, i32 5
|
||||
%219 = getelementptr inbounds %struct.TValue, %struct.TValue* %217, i32 5
|
||||
%220 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 3
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %219, %struct.TValue* %220, %struct.TValue* %218)
|
||||
%221 = load %struct.TValue*, %struct.TValue** %sunkaddr142, !tbaa !14
|
||||
%222 = getelementptr inbounds %struct.TValue, %struct.TValue* %221, i32 6
|
||||
%L.top69 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %222, %struct.TValue** %L.top69, !tbaa !21
|
||||
%223 = getelementptr inbounds %struct.TValue, %struct.TValue* %221, i32 5
|
||||
%224 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %223, i32 1)
|
||||
%225 = icmp eq i32 %224, 0
|
||||
br i1 %225, label %if.lua.function70, label %if.not.lua.function.71
|
||||
|
||||
if.lua.function70: ; preds = %exit_iforloop.66
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.75
|
||||
|
||||
if.not.lua.function.71: ; preds = %exit_iforloop.66
|
||||
%226 = icmp eq i32 %224, 1
|
||||
br i1 %226, label %if.C.function72, label %op_call.done.75
|
||||
|
||||
if.C.function72: ; preds = %if.not.lua.function.71
|
||||
%ci_top73 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%227 = load %struct.TValue*, %struct.TValue** %ci_top73, !tbaa !23
|
||||
%L_top74 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %227, %struct.TValue** %L_top74, !tbaa !21
|
||||
br label %op_call.done.75
|
||||
|
||||
op_call.done.75: ; preds = %if.C.function72, %if.not.lua.function.71, %if.lua.function70
|
||||
%sunkaddr144 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr145 = add i64 %sunkaddr144, 32
|
||||
%sunkaddr146 = inttoptr i64 %sunkaddr145 to %struct.TValue**
|
||||
%228 = load %struct.TValue*, %struct.TValue** %sunkaddr146, !tbaa !14
|
||||
%229 = getelementptr inbounds %struct.TValue, %struct.TValue* %228, i32 6
|
||||
%upvals76 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%230 = load %struct.UpVal*, %struct.UpVal** %upvals76, !tbaa !8
|
||||
%v77147 = bitcast %struct.UpVal* %230 to %struct.TValue**
|
||||
%231 = load %struct.TValue*, %struct.TValue** %v77147, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %231, %struct.TValue* %5, %struct.TValue* %229)
|
||||
%232 = load %struct.TValue*, %struct.TValue** %sunkaddr146, !tbaa !14
|
||||
%233 = getelementptr inbounds %struct.TValue, %struct.TValue* %232, i32 7
|
||||
%234 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 7
|
||||
%srcvalue78148 = bitcast %struct.TValue* %234 to double*
|
||||
%destvalue79149 = bitcast %struct.TValue* %233 to double*
|
||||
%235 = load double, double* %srcvalue78148, !tbaa !18
|
||||
store double %235, double* %destvalue79149, !tbaa !18
|
||||
%srctype80 = getelementptr inbounds %struct.TValue, %struct.TValue* %234, i32 0, i32 1
|
||||
%desttype81 = getelementptr inbounds %struct.TValue, %struct.TValue* %233, i32 0, i32 1
|
||||
%236 = load i32, i32* %srctype80, !tbaa !15
|
||||
store i32 %236, i32* %desttype81, !tbaa !15
|
||||
%237 = load %struct.TValue*, %struct.TValue** %sunkaddr146, !tbaa !14
|
||||
%238 = getelementptr inbounds %struct.TValue, %struct.TValue* %237, i32 8
|
||||
%239 = getelementptr inbounds %struct.TValue, %struct.TValue* %237, i32 5
|
||||
%240 = getelementptr inbounds %struct.TValue, %struct.TValue* %237, i32 1
|
||||
%value.tt.ptr82 = getelementptr inbounds %struct.TValue, %struct.TValue* %239, i32 0, i32 1
|
||||
%value.tt83 = load i32, i32* %value.tt.ptr82, !tbaa !15
|
||||
%value.tt.ptr84 = getelementptr inbounds %struct.TValue, %struct.TValue* %240, i32 0, i32 1
|
||||
%value.tt85 = load i32, i32* %value.tt.ptr84, !tbaa !15
|
||||
%rb.is.integer = icmp eq i32 %value.tt83, 19
|
||||
%rc.is.integer = icmp eq i32 %value.tt85, 19
|
||||
%241 = and i1 %rb.is.integer, %rc.is.integer
|
||||
br i1 %241, label %if.integer, label %if.not.integer.87
|
||||
|
||||
if.integer: ; preds = %op_call.done.75
|
||||
%242 = bitcast %struct.TValue* %239 to i64*
|
||||
%243 = load i64, i64* %242, !tbaa !18
|
||||
%244 = bitcast %struct.TValue* %240 to i64*
|
||||
%245 = load i64, i64* %244, !tbaa !18
|
||||
%246 = sub nsw i64 %243, %245
|
||||
%247 = bitcast %struct.TValue* %238 to i64*
|
||||
store i64 %246, i64* %247, !tbaa !18
|
||||
%dest.tt86 = getelementptr inbounds %struct.TValue, %struct.TValue* %238, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt86, !tbaa !15
|
||||
br label %done.89
|
||||
|
||||
if.not.integer.87: ; preds = %op_call.done.75
|
||||
%rb.is.float = icmp eq i32 %value.tt83, 3
|
||||
br i1 %rb.is.float, label %load.rb, label %convert.rb
|
||||
|
||||
convert.rb: ; preds = %if.not.integer.87
|
||||
%248 = call i32 @luaV_tonumber_(%struct.TValue* %239, double* %nb)
|
||||
%rb.float.ok = icmp eq i32 %248, 1
|
||||
br i1 %rb.float.ok, label %test.rc, label %try_meta
|
||||
|
||||
load.rb: ; preds = %if.not.integer.87
|
||||
%249 = bitcast %struct.TValue* %239 to double*
|
||||
%250 = load double, double* %249, !tbaa !18
|
||||
store double %250, double* %nb, !tbaa !17
|
||||
br label %test.rc
|
||||
|
||||
test.rc: ; preds = %load.rb, %convert.rb
|
||||
%rc.is.float = icmp eq i32 %value.tt85, 3
|
||||
br i1 %rc.is.float, label %load.rc, label %convert.rc
|
||||
|
||||
convert.rc: ; preds = %test.rc
|
||||
%251 = call i32 @luaV_tonumber_(%struct.TValue* %240, double* %nc)
|
||||
%rc.float.ok = icmp eq i32 %251, 1
|
||||
br i1 %rc.float.ok, label %float.op, label %try_meta
|
||||
|
||||
load.rc: ; preds = %test.rc
|
||||
%252 = bitcast %struct.TValue* %240 to double*
|
||||
%253 = load double, double* %252, !tbaa !18
|
||||
store double %253, double* %nc, !tbaa !17
|
||||
br label %float.op
|
||||
|
||||
float.op: ; preds = %load.rc, %convert.rc
|
||||
%254 = load double, double* %nb, !tbaa !17
|
||||
%255 = load double, double* %nc, !tbaa !17
|
||||
%256 = fsub double %254, %255
|
||||
%257 = bitcast %struct.TValue* %238 to double*
|
||||
store double %256, double* %257, !tbaa !18
|
||||
%dest.tt88 = getelementptr inbounds %struct.TValue, %struct.TValue* %238, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt88, !tbaa !15
|
||||
br label %done.89
|
||||
|
||||
try_meta: ; preds = %convert.rc, %convert.rb
|
||||
call void @luaT_trybinTM(%struct.lua_State* %L, %struct.TValue* %239, %struct.TValue* %240, %struct.TValue* %238, i32 7)
|
||||
br label %done.89
|
||||
|
||||
done.89: ; preds = %try_meta, %float.op, %if.integer
|
||||
%sunkaddr150 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr151 = add i64 %sunkaddr150, 32
|
||||
%sunkaddr152 = inttoptr i64 %sunkaddr151 to %struct.TValue**
|
||||
%258 = load %struct.TValue*, %struct.TValue** %sunkaddr152, !tbaa !14
|
||||
%259 = getelementptr inbounds %struct.TValue, %struct.TValue* %258, i32 9
|
||||
%L.top90 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %259, %struct.TValue** %L.top90, !tbaa !21
|
||||
%260 = getelementptr inbounds %struct.TValue, %struct.TValue* %258, i32 6
|
||||
%261 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %260, i32 0)
|
||||
%262 = icmp eq i32 %261, 0
|
||||
br i1 %262, label %if.lua.function91, label %if.not.lua.function.92
|
||||
|
||||
if.lua.function91: ; preds = %done.89
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.96
|
||||
|
||||
if.not.lua.function.92: ; preds = %done.89
|
||||
%263 = icmp eq i32 %261, 1
|
||||
br i1 %263, label %if.C.function93, label %op_call.done.96
|
||||
|
||||
if.C.function93: ; preds = %if.not.lua.function.92
|
||||
%ci_top94 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%264 = load %struct.TValue*, %struct.TValue** %ci_top94, !tbaa !23
|
||||
%L_top95 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %264, %struct.TValue** %L_top95, !tbaa !21
|
||||
br label %op_call.done.96
|
||||
|
||||
op_call.done.96: ; preds = %if.C.function93, %if.not.lua.function.92, %if.lua.function91
|
||||
%sunkaddr153 = ptrtoint %struct.CallInfo* %0 to i64
|
||||
%sunkaddr154 = add i64 %sunkaddr153, 32
|
||||
%sunkaddr155 = inttoptr i64 %sunkaddr154 to %struct.TValue**
|
||||
%265 = load %struct.TValue*, %struct.TValue** %sunkaddr155, !tbaa !14
|
||||
%266 = getelementptr inbounds %struct.TValue, %struct.TValue* %265, i32 2
|
||||
%sizep = getelementptr inbounds %struct.Proto, %struct.Proto* %4, i32 0, i32 10
|
||||
%267 = load i32, i32* %sizep, !tbaa !24
|
||||
%268 = icmp sgt i32 %267, 0
|
||||
br i1 %268, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %op_call.done.96
|
||||
call void @luaF_close(%struct.lua_State* %L, %struct.TValue* %265)
|
||||
br label %if.else
|
||||
|
||||
if.else: ; preds = %if.then, %op_call.done.96
|
||||
%269 = call i32 @luaD_poscall(%struct.lua_State* %L, %struct.TValue* %266, i32 1)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaT_trybinTM(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaD_call(%struct.lua_State*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_poscall(%struct.lua_State*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_precall(%struct.lua_State*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaF_close(%struct.lua_State*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: noreturn nounwind
|
||||
declare void @luaG_runerror(%struct.lua_State*, i8*, ...) #1
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_equalobj(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_lessthan(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_lessequal(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_forlimit(%struct.TValue*, i64*, i64, i32*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_tonumber_(%struct.TValue*, double*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_tointeger_(%struct.TValue*, i64*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_execute(%struct.lua_State*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_settable(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_gettable(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_loadnil(%struct.CallInfo*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayint(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayfloat(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newtable(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_setlist(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @luaV_mod(%struct.lua_State*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @luaV_div(%struct.lua_State*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_objlen(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaC_upvalbarrier_(%struct.lua_State*, %struct.UpVal*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_concat(%struct.lua_State*, %struct.CallInfo*, i32, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_closure(%struct.lua_State*, %struct.CallInfo*, %struct.LClosure*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_vararg(%struct.lua_State*, %struct.CallInfo*, %struct.LClosure*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviH_set_int(%struct.lua_State*, %struct.Table*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviH_set_float(%struct.lua_State*, %struct.Table*, i64, double) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_shl(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_shr(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
declare i32 @printf(i8*, ...)
|
||||
|
||||
declare double @fmod(double, double)
|
||||
|
||||
declare double @pow(double, double)
|
||||
|
||||
declare double @floor(double)
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
attributes #1 = { noreturn nounwind }
|
||||
|
||||
!0 = !{!"CallInfo", !1, i64 0, !1, i64 4, !1, i64 8, !1, i64 12, !4, i64 16, !5, i64 32, !6, i64 40, !2, i64 42, !2, i64 43}
|
||||
!1 = !{!"any pointer", !2, i64 0}
|
||||
!2 = !{!"omnipotent char", !3, i64 0}
|
||||
!3 = !{!"Simple C / C++ TBAA"}
|
||||
!4 = !{!"CallInfo_l", !1, i64 0, !1, i64 4, !5, i64 8}
|
||||
!5 = !{!"long long", !2, i64 0}
|
||||
!6 = !{!"short", !2, i64 0}
|
||||
!7 = !{!0, !1, i64 0}
|
||||
!8 = !{!1, !1, i64 0}
|
||||
!9 = !{!10, !1, i64 12}
|
||||
!10 = !{!"LClosure", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16}
|
||||
!11 = !{!12, !1, i64 44}
|
||||
!12 = !{!"Proto", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !2, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !1, i64 44, !1, i64 48, !1, i64 52, !1, i64 56, !1, i64 60, !1, i64 64, !1, i64 68, !1, i64 72, !1, i64 76, !2, i64 80}
|
||||
!13 = !{!"int", !2, i64 0}
|
||||
!14 = !{!0, !1, i64 16}
|
||||
!15 = !{!16, !13, i64 8}
|
||||
!16 = !{!"TValue", !5, i64 0, !13, i64 8}
|
||||
!17 = !{!5, !5, i64 0}
|
||||
!18 = !{!16, !5, i64 0}
|
||||
!19 = !{!20, !1, i64 0}
|
||||
!20 = !{!"UpVal", !1, i64 0, !5, i64 8, !16, i64 16}
|
||||
!21 = !{!22, !1, i64 8}
|
||||
!22 = !{!"lua_State", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !1, i64 32, !1, i64 36, !1, i64 40, !1, i64 44, !0, i64 48, !1, i64 92, !5, i64 96, !13, i64 104, !13, i64 108, !13, i64 112, !6, i64 114, !6, i64 116, !2, i64 118, !2, i64 119}
|
||||
!23 = !{!0, !1, i64 4}
|
||||
!24 = !{!12, !13, i64 28}
|
@ -1,775 +0,0 @@
|
||||
; ModuleID = 'ravi_module_ravif1'
|
||||
|
||||
%0 = type { %struct.TValue*, i32*, i64 }
|
||||
%struct.lua_State = type { %struct.GCObject*, i8, i8, i8, %struct.TValue*, %struct.global_State*, %struct.CallInfo*, i32*, %struct.TValue*, %struct.TValue*, %struct.UpVal*, %struct.GCObject*, %struct.lua_State*, %struct.lua_longjmp*, %struct.CallInfo, i8* (%struct.lua_State*, %struct.lua_Debug*)*, i64, i32, i32, i32, i16, i16, i8, i8 }
|
||||
%struct.global_State = type opaque
|
||||
%struct.TValue = type { %union.Value, i32 }
|
||||
%union.Value = type { double }
|
||||
%struct.UpVal = type { %struct.TValue*, i64, %struct.TValue }
|
||||
%struct.GCObject = type { %struct.GCObject*, i8, i8 }
|
||||
%struct.lua_longjmp = type opaque
|
||||
%struct.CallInfo = type { %struct.TValue*, %struct.TValue*, %struct.CallInfo*, %struct.CallInfo*, %0, i64, i16, i8, i8 }
|
||||
%struct.lua_Debug = type opaque
|
||||
%struct.LClosure = type { %struct.GCObject*, i8, i8, i8, %struct.GCObject*, %struct.Proto*, [1 x %struct.UpVal*] }
|
||||
%struct.Proto = type { %struct.GCObject*, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %struct.TValue*, i32*, %struct.Proto**, i32*, %struct.LocVar*, %struct.Upvaldesc*, %struct.LClosure*, %struct.TString*, %struct.GCObject*, %struct.RaviJITProto }
|
||||
%struct.LocVar = type { %struct.TString*, i32, i32, i32 }
|
||||
%struct.Upvaldesc = type { %struct.TString*, i32, i8, i8 }
|
||||
%struct.TString = type { %struct.GCObject*, i8, i8, i8, i8, i32, i64 }
|
||||
%struct.RaviJITProto = type { i8, i8, i16, i8*, i32 (%struct.lua_State*)* }
|
||||
%struct.Table = type { %struct.GCObject*, i8, i8, i8, i8, i32, %struct.TValue*, %struct.Node*, %struct.Node*, %struct.Table*, %struct.GCObject*, %struct.RaviArray }
|
||||
%struct.Node = type { %struct.TValue, %struct.TKey }
|
||||
%struct.TKey = type { %union.Value, i32, i32 }
|
||||
%struct.RaviArray = type { i8*, i32, i32, i8, i8 }
|
||||
|
||||
@0 = private unnamed_addr constant [17 x i8] c"integer expected\00"
|
||||
|
||||
define i32 @ravif1(%struct.lua_State* %L) {
|
||||
entry:
|
||||
%nb = alloca double
|
||||
%nc = alloca double
|
||||
%ilimit52 = alloca i64
|
||||
%iidx53 = alloca i64
|
||||
%ilimit = alloca i64
|
||||
%iidx = alloca i64
|
||||
%i = alloca i64
|
||||
%L_ci = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 6
|
||||
%0 = load %struct.CallInfo*, %struct.CallInfo** %L_ci, !tbaa !0
|
||||
%base = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 4, i32 0
|
||||
%1 = bitcast %struct.CallInfo* %0 to %struct.LClosure***
|
||||
%2 = load %struct.LClosure**, %struct.LClosure*** %1, !tbaa !7
|
||||
%3 = load %struct.LClosure*, %struct.LClosure** %2, !tbaa !8
|
||||
%Proto = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 5
|
||||
%4 = load %struct.Proto*, %struct.Proto** %Proto, !tbaa !9
|
||||
%k = getelementptr inbounds %struct.Proto, %struct.Proto* %4, i32 0, i32 14
|
||||
%5 = load %struct.TValue*, %struct.TValue** %k, !tbaa !11
|
||||
%6 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%value.tt.ptr = getelementptr inbounds %struct.TValue, %struct.TValue* %6, i32 0, i32 1
|
||||
%value.tt = load i32, i32* %value.tt.ptr, !tbaa !15
|
||||
%is.not.integer = icmp ne i32 %value.tt, 19
|
||||
br i1 %is.not.integer, label %if.not.integer, label %done
|
||||
|
||||
if.not.integer: ; preds = %entry
|
||||
%7 = call i32 @luaV_tointeger_(%struct.TValue* %6, i64* %i)
|
||||
%int.conversion.failed = icmp eq i32 %7, 0
|
||||
br i1 %int.conversion.failed, label %if.conversion.failed, label %conversion.ok
|
||||
|
||||
if.conversion.failed: ; preds = %if.not.integer
|
||||
call void (%struct.lua_State*, i8*, ...) @luaG_runerror(%struct.lua_State* %L, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @0, i32 0, i32 0))
|
||||
br label %conversion.ok
|
||||
|
||||
conversion.ok: ; preds = %if.conversion.failed, %if.not.integer
|
||||
%8 = load i64, i64* %i, !tbaa !17
|
||||
%9 = bitcast %struct.TValue* %6 to i64*
|
||||
store i64 %8, i64* %9, !tbaa !18
|
||||
%dest.tt = getelementptr inbounds %struct.TValue, %struct.TValue* %6, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt, !tbaa !15
|
||||
br label %done
|
||||
|
||||
done: ; preds = %conversion.ok, %entry
|
||||
%10 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%11 = getelementptr inbounds %struct.TValue, %struct.TValue* %10, i32 1
|
||||
%upvals = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%12 = load %struct.UpVal*, %struct.UpVal** %upvals, !tbaa !8
|
||||
%v = getelementptr inbounds %struct.UpVal, %struct.UpVal* %12, i32 0, i32 0
|
||||
%13 = load %struct.TValue*, %struct.TValue** %v, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %13, %struct.TValue* %5, %struct.TValue* %11)
|
||||
%14 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%15 = getelementptr inbounds %struct.TValue, %struct.TValue* %14, i32 2
|
||||
%16 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 1
|
||||
%srcvalue = getelementptr inbounds %struct.TValue, %struct.TValue* %16, i32 0, i32 0, i32 0
|
||||
%destvalue = getelementptr inbounds %struct.TValue, %struct.TValue* %15, i32 0, i32 0, i32 0
|
||||
%17 = load double, double* %srcvalue, !tbaa !18
|
||||
store double %17, double* %destvalue, !tbaa !18
|
||||
%srctype = getelementptr inbounds %struct.TValue, %struct.TValue* %16, i32 0, i32 1
|
||||
%desttype = getelementptr inbounds %struct.TValue, %struct.TValue* %15, i32 0, i32 1
|
||||
%18 = load i32, i32* %srctype, !tbaa !15
|
||||
store i32 %18, i32* %desttype, !tbaa !15
|
||||
%19 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%20 = getelementptr inbounds %struct.TValue, %struct.TValue* %19, i32 3
|
||||
%srcvalue1 = getelementptr inbounds %struct.TValue, %struct.TValue* %19, i32 0, i32 0, i32 0
|
||||
%destvalue2 = getelementptr inbounds %struct.TValue, %struct.TValue* %20, i32 0, i32 0, i32 0
|
||||
%21 = load double, double* %srcvalue1, !tbaa !18
|
||||
store double %21, double* %destvalue2, !tbaa !18
|
||||
%srctype3 = getelementptr inbounds %struct.TValue, %struct.TValue* %19, i32 0, i32 1
|
||||
%desttype4 = getelementptr inbounds %struct.TValue, %struct.TValue* %20, i32 0, i32 1
|
||||
%22 = load i32, i32* %srctype3, !tbaa !15
|
||||
store i32 %22, i32* %desttype4, !tbaa !15
|
||||
%23 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%24 = getelementptr inbounds %struct.TValue, %struct.TValue* %23, i32 4
|
||||
%L.top = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %24, %struct.TValue** %L.top, !tbaa !21
|
||||
%25 = getelementptr inbounds %struct.TValue, %struct.TValue* %23, i32 1
|
||||
%26 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %25, i32 0)
|
||||
%27 = icmp eq i32 %26, 0
|
||||
br i1 %27, label %if.lua.function, label %if.not.lua.function
|
||||
|
||||
if.lua.function: ; preds = %done
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done
|
||||
|
||||
if.not.lua.function: ; preds = %done
|
||||
%28 = icmp eq i32 %26, 1
|
||||
br i1 %28, label %if.C.function, label %op_call.done
|
||||
|
||||
if.C.function: ; preds = %if.not.lua.function
|
||||
%ci_top = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%29 = load %struct.TValue*, %struct.TValue** %ci_top, !tbaa !23
|
||||
%L_top = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %29, %struct.TValue** %L_top, !tbaa !21
|
||||
br label %op_call.done
|
||||
|
||||
op_call.done: ; preds = %if.C.function, %if.not.lua.function, %if.lua.function
|
||||
%30 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%31 = getelementptr inbounds %struct.TValue, %struct.TValue* %30, i32 1
|
||||
%32 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 2
|
||||
%upvals5 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%33 = load %struct.UpVal*, %struct.UpVal** %upvals5, !tbaa !8
|
||||
%v6 = getelementptr inbounds %struct.UpVal, %struct.UpVal* %33, i32 0, i32 0
|
||||
%34 = load %struct.TValue*, %struct.TValue** %v6, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %34, %struct.TValue* %32, %struct.TValue* %31)
|
||||
%35 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%36 = getelementptr inbounds %struct.TValue, %struct.TValue* %35, i32 1
|
||||
%37 = getelementptr inbounds %struct.TValue, %struct.TValue* %35, i32 1
|
||||
%38 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 3
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %37, %struct.TValue* %38, %struct.TValue* %36)
|
||||
%39 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%40 = getelementptr inbounds %struct.TValue, %struct.TValue* %39, i32 2
|
||||
%L.top7 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %40, %struct.TValue** %L.top7, !tbaa !21
|
||||
%41 = getelementptr inbounds %struct.TValue, %struct.TValue* %39, i32 1
|
||||
%42 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %41, i32 1)
|
||||
%43 = icmp eq i32 %42, 0
|
||||
br i1 %43, label %if.lua.function8, label %if.not.lua.function.9
|
||||
|
||||
if.lua.function8: ; preds = %op_call.done
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.13
|
||||
|
||||
if.not.lua.function.9: ; preds = %op_call.done
|
||||
%44 = icmp eq i32 %42, 1
|
||||
br i1 %44, label %if.C.function10, label %op_call.done.13
|
||||
|
||||
if.C.function10: ; preds = %if.not.lua.function.9
|
||||
%ci_top11 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%45 = load %struct.TValue*, %struct.TValue** %ci_top11, !tbaa !23
|
||||
%L_top12 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %45, %struct.TValue** %L_top12, !tbaa !21
|
||||
br label %op_call.done.13
|
||||
|
||||
op_call.done.13: ; preds = %if.C.function10, %if.not.lua.function.9, %if.lua.function8
|
||||
%46 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%47 = getelementptr inbounds %struct.TValue, %struct.TValue* %46, i32 2
|
||||
%upvals14 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 1
|
||||
%48 = load %struct.UpVal*, %struct.UpVal** %upvals14, !tbaa !8
|
||||
%v15 = getelementptr inbounds %struct.UpVal, %struct.UpVal* %48, i32 0, i32 0
|
||||
%49 = load %struct.TValue*, %struct.TValue** %v15, !tbaa !19
|
||||
%srcvalue16 = getelementptr inbounds %struct.TValue, %struct.TValue* %49, i32 0, i32 0, i32 0
|
||||
%destvalue17 = getelementptr inbounds %struct.TValue, %struct.TValue* %47, i32 0, i32 0, i32 0
|
||||
%50 = load double, double* %srcvalue16, !tbaa !18
|
||||
store double %50, double* %destvalue17, !tbaa !18
|
||||
%srctype18 = getelementptr inbounds %struct.TValue, %struct.TValue* %49, i32 0, i32 1
|
||||
%desttype19 = getelementptr inbounds %struct.TValue, %struct.TValue* %47, i32 0, i32 1
|
||||
%51 = load i32, i32* %srctype18, !tbaa !15
|
||||
store i32 %51, i32* %desttype19, !tbaa !15
|
||||
%52 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%53 = getelementptr inbounds %struct.TValue, %struct.TValue* %52, i32 3
|
||||
%srcvalue20 = getelementptr inbounds %struct.TValue, %struct.TValue* %52, i32 0, i32 0, i32 0
|
||||
%destvalue21 = getelementptr inbounds %struct.TValue, %struct.TValue* %53, i32 0, i32 0, i32 0
|
||||
%54 = load double, double* %srcvalue20, !tbaa !18
|
||||
store double %54, double* %destvalue21, !tbaa !18
|
||||
%srctype22 = getelementptr inbounds %struct.TValue, %struct.TValue* %52, i32 0, i32 1
|
||||
%desttype23 = getelementptr inbounds %struct.TValue, %struct.TValue* %53, i32 0, i32 1
|
||||
%55 = load i32, i32* %srctype22, !tbaa !15
|
||||
store i32 %55, i32* %desttype23, !tbaa !15
|
||||
%56 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%57 = getelementptr inbounds %struct.TValue, %struct.TValue* %56, i32 4
|
||||
%srcvalue24 = getelementptr inbounds %struct.TValue, %struct.TValue* %56, i32 0, i32 0, i32 0
|
||||
%destvalue25 = getelementptr inbounds %struct.TValue, %struct.TValue* %57, i32 0, i32 0, i32 0
|
||||
%58 = load double, double* %srcvalue24, !tbaa !18
|
||||
store double %58, double* %destvalue25, !tbaa !18
|
||||
%srctype26 = getelementptr inbounds %struct.TValue, %struct.TValue* %56, i32 0, i32 1
|
||||
%desttype27 = getelementptr inbounds %struct.TValue, %struct.TValue* %57, i32 0, i32 1
|
||||
%59 = load i32, i32* %srctype26, !tbaa !15
|
||||
store i32 %59, i32* %desttype27, !tbaa !15
|
||||
%60 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%61 = getelementptr inbounds %struct.TValue, %struct.TValue* %60, i32 5
|
||||
%L.top28 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %61, %struct.TValue** %L.top28, !tbaa !21
|
||||
%62 = getelementptr inbounds %struct.TValue, %struct.TValue* %60, i32 2
|
||||
%63 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %62, i32 1)
|
||||
%64 = icmp eq i32 %63, 0
|
||||
br i1 %64, label %if.lua.function29, label %if.not.lua.function.30
|
||||
|
||||
if.lua.function29: ; preds = %op_call.done.13
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.34
|
||||
|
||||
if.not.lua.function.30: ; preds = %op_call.done.13
|
||||
%65 = icmp eq i32 %63, 1
|
||||
br i1 %65, label %if.C.function31, label %op_call.done.34
|
||||
|
||||
if.C.function31: ; preds = %if.not.lua.function.30
|
||||
%ci_top32 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%66 = load %struct.TValue*, %struct.TValue** %ci_top32, !tbaa !23
|
||||
%L_top33 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %66, %struct.TValue** %L_top33, !tbaa !21
|
||||
br label %op_call.done.34
|
||||
|
||||
op_call.done.34: ; preds = %if.C.function31, %if.not.lua.function.30, %if.lua.function29
|
||||
%67 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%68 = getelementptr inbounds %struct.TValue, %struct.TValue* %67, i32 3
|
||||
%69 = bitcast %struct.TValue* %67 to i64*
|
||||
%70 = load i64, i64* %69, !tbaa !18
|
||||
%71 = sitofp i64 %70 to double
|
||||
%72 = fdiv double 1.000000e+00, %71
|
||||
%73 = bitcast %struct.TValue* %68 to double*
|
||||
store double %72, double* %73, !tbaa !18
|
||||
%dest.tt35 = getelementptr inbounds %struct.TValue, %struct.TValue* %68, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt35, !tbaa !15
|
||||
%74 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%75 = getelementptr inbounds %struct.TValue, %struct.TValue* %74, i32 3
|
||||
%76 = getelementptr inbounds %struct.TValue, %struct.TValue* %74, i32 3
|
||||
%77 = bitcast %struct.TValue* %76 to double*
|
||||
%78 = load double, double* %77, !tbaa !18
|
||||
%79 = bitcast %struct.TValue* %74 to i64*
|
||||
%80 = load i64, i64* %79, !tbaa !18
|
||||
%81 = sitofp i64 %80 to double
|
||||
%82 = fdiv double %78, %81
|
||||
%83 = bitcast %struct.TValue* %75 to double*
|
||||
store double %82, double* %83, !tbaa !18
|
||||
%dest.tt36 = getelementptr inbounds %struct.TValue, %struct.TValue* %75, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt36, !tbaa !15
|
||||
call void @raviV_op_loadnil(%struct.CallInfo* %0, i32 4, i32 0)
|
||||
%84 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%85 = getelementptr inbounds %struct.TValue, %struct.TValue* %84, i32 4
|
||||
%86 = bitcast %struct.TValue* %85 to i64*
|
||||
store i64 0, i64* %86, !tbaa !18
|
||||
%dest.tt37 = getelementptr inbounds %struct.TValue, %struct.TValue* %85, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt37, !tbaa !15
|
||||
%87 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%88 = getelementptr inbounds %struct.TValue, %struct.TValue* %87, i32 5
|
||||
%89 = bitcast %struct.TValue* %88 to i64*
|
||||
store i64 1, i64* %89, !tbaa !18
|
||||
%dest.tt38 = getelementptr inbounds %struct.TValue, %struct.TValue* %88, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt38, !tbaa !15
|
||||
%90 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%91 = getelementptr inbounds %struct.TValue, %struct.TValue* %90, i32 6
|
||||
%srcvalue39 = getelementptr inbounds %struct.TValue, %struct.TValue* %90, i32 0, i32 0, i32 0
|
||||
%destvalue40 = getelementptr inbounds %struct.TValue, %struct.TValue* %91, i32 0, i32 0, i32 0
|
||||
%92 = load double, double* %srcvalue39, !tbaa !18
|
||||
store double %92, double* %destvalue40, !tbaa !18
|
||||
%srctype41 = getelementptr inbounds %struct.TValue, %struct.TValue* %90, i32 0, i32 1
|
||||
%desttype42 = getelementptr inbounds %struct.TValue, %struct.TValue* %91, i32 0, i32 1
|
||||
%93 = load i32, i32* %srctype41, !tbaa !15
|
||||
store i32 %93, i32* %desttype42, !tbaa !15
|
||||
%94 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%95 = getelementptr inbounds %struct.TValue, %struct.TValue* %94, i32 7
|
||||
%96 = bitcast %struct.TValue* %95 to i64*
|
||||
store i64 1, i64* %96, !tbaa !18
|
||||
%dest.tt43 = getelementptr inbounds %struct.TValue, %struct.TValue* %95, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt43, !tbaa !15
|
||||
%97 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%98 = getelementptr inbounds %struct.TValue, %struct.TValue* %97, i32 5
|
||||
%99 = getelementptr inbounds %struct.TValue, %struct.TValue* %97, i32 6
|
||||
%100 = bitcast %struct.TValue* %99 to i64*
|
||||
%101 = load i64, i64* %100, !tbaa !18
|
||||
%102 = bitcast %struct.TValue* %98 to i64*
|
||||
%103 = load i64, i64* %102, !tbaa !18
|
||||
%initv-pstep.i = sub nsw i64 %103, 1
|
||||
store i64 %initv-pstep.i, i64* %iidx, !tbaa !17
|
||||
store i64 %101, i64* %ilimit, !tbaa !17
|
||||
br label %forloop35_
|
||||
|
||||
forbody21_: ; preds = %updatei.64
|
||||
%104 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%105 = getelementptr inbounds %struct.TValue, %struct.TValue* %104, i32 9
|
||||
%106 = getelementptr inbounds %struct.TValue, %struct.TValue* %104, i32 8
|
||||
%107 = bitcast %struct.TValue* %106 to i64*
|
||||
%108 = load i64, i64* %107, !tbaa !18
|
||||
%109 = sub nsw i64 %108, 1
|
||||
%110 = bitcast %struct.TValue* %105 to i64*
|
||||
store i64 %109, i64* %110, !tbaa !18
|
||||
%dest.tt44 = getelementptr inbounds %struct.TValue, %struct.TValue* %105, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt44, !tbaa !15
|
||||
%111 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%112 = getelementptr inbounds %struct.TValue, %struct.TValue* %111, i32 4
|
||||
%113 = getelementptr inbounds %struct.TValue, %struct.TValue* %111, i32 9
|
||||
%114 = bitcast %struct.TValue* %113 to i64*
|
||||
%115 = load i64, i64* %114, !tbaa !18
|
||||
%116 = bitcast %struct.TValue* %111 to i64*
|
||||
%117 = load i64, i64* %116, !tbaa !18
|
||||
%118 = mul nsw i64 %115, %117
|
||||
%119 = bitcast %struct.TValue* %112 to i64*
|
||||
store i64 %118, i64* %119, !tbaa !18
|
||||
%dest.tt45 = getelementptr inbounds %struct.TValue, %struct.TValue* %112, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt45, !tbaa !15
|
||||
%120 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%121 = getelementptr inbounds %struct.TValue, %struct.TValue* %120, i32 9
|
||||
%122 = bitcast %struct.TValue* %121 to i64*
|
||||
store i64 1, i64* %122, !tbaa !18
|
||||
%dest.tt46 = getelementptr inbounds %struct.TValue, %struct.TValue* %121, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt46, !tbaa !15
|
||||
%123 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%124 = getelementptr inbounds %struct.TValue, %struct.TValue* %123, i32 10
|
||||
%srcvalue47 = getelementptr inbounds %struct.TValue, %struct.TValue* %123, i32 0, i32 0, i32 0
|
||||
%destvalue48 = getelementptr inbounds %struct.TValue, %struct.TValue* %124, i32 0, i32 0, i32 0
|
||||
%125 = load double, double* %srcvalue47, !tbaa !18
|
||||
store double %125, double* %destvalue48, !tbaa !18
|
||||
%srctype49 = getelementptr inbounds %struct.TValue, %struct.TValue* %123, i32 0, i32 1
|
||||
%desttype50 = getelementptr inbounds %struct.TValue, %struct.TValue* %124, i32 0, i32 1
|
||||
%126 = load i32, i32* %srctype49, !tbaa !15
|
||||
store i32 %126, i32* %desttype50, !tbaa !15
|
||||
%127 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%128 = getelementptr inbounds %struct.TValue, %struct.TValue* %127, i32 11
|
||||
%129 = bitcast %struct.TValue* %128 to i64*
|
||||
store i64 1, i64* %129, !tbaa !18
|
||||
%dest.tt51 = getelementptr inbounds %struct.TValue, %struct.TValue* %128, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt51, !tbaa !15
|
||||
%130 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%131 = getelementptr inbounds %struct.TValue, %struct.TValue* %130, i32 9
|
||||
%132 = getelementptr inbounds %struct.TValue, %struct.TValue* %130, i32 10
|
||||
%133 = bitcast %struct.TValue* %132 to i64*
|
||||
%134 = load i64, i64* %133, !tbaa !18
|
||||
%135 = bitcast %struct.TValue* %131 to i64*
|
||||
%136 = load i64, i64* %135, !tbaa !18
|
||||
%initv-pstep.i54 = sub nsw i64 %136, 1
|
||||
store i64 %initv-pstep.i54, i64* %iidx53, !tbaa !17
|
||||
store i64 %134, i64* %ilimit52, !tbaa !17
|
||||
br label %forloop34_
|
||||
|
||||
forbody27_: ; preds = %updatei
|
||||
%137 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%138 = getelementptr inbounds %struct.TValue, %struct.TValue* %137, i32 13
|
||||
%139 = getelementptr inbounds %struct.TValue, %struct.TValue* %137, i32 4
|
||||
%140 = bitcast %struct.TValue* %139 to i64*
|
||||
%141 = load i64, i64* %140, !tbaa !18
|
||||
%142 = getelementptr inbounds %struct.TValue, %struct.TValue* %137, i32 12
|
||||
%143 = bitcast %struct.TValue* %142 to i64*
|
||||
%144 = load i64, i64* %143, !tbaa !18
|
||||
%145 = add nsw i64 %141, %144
|
||||
%146 = bitcast %struct.TValue* %138 to i64*
|
||||
store i64 %145, i64* %146, !tbaa !18
|
||||
%dest.tt55 = getelementptr inbounds %struct.TValue, %struct.TValue* %138, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt55, !tbaa !15
|
||||
%147 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%148 = getelementptr inbounds %struct.TValue, %struct.TValue* %147, i32 14
|
||||
%149 = getelementptr inbounds %struct.TValue, %struct.TValue* %147, i32 8
|
||||
%150 = bitcast %struct.TValue* %149 to i64*
|
||||
%151 = load i64, i64* %150, !tbaa !18
|
||||
%152 = getelementptr inbounds %struct.TValue, %struct.TValue* %147, i32 12
|
||||
%153 = bitcast %struct.TValue* %152 to i64*
|
||||
%154 = load i64, i64* %153, !tbaa !18
|
||||
%155 = sub nsw i64 %151, %154
|
||||
%156 = bitcast %struct.TValue* %148 to i64*
|
||||
store i64 %155, i64* %156, !tbaa !18
|
||||
%dest.tt56 = getelementptr inbounds %struct.TValue, %struct.TValue* %148, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt56, !tbaa !15
|
||||
%157 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%158 = getelementptr inbounds %struct.TValue, %struct.TValue* %157, i32 14
|
||||
%159 = getelementptr inbounds %struct.TValue, %struct.TValue* %157, i32 3
|
||||
%160 = bitcast %struct.TValue* %159 to double*
|
||||
%161 = load double, double* %160, !tbaa !18
|
||||
%162 = getelementptr inbounds %struct.TValue, %struct.TValue* %157, i32 14
|
||||
%163 = bitcast %struct.TValue* %162 to i64*
|
||||
%164 = load i64, i64* %163, !tbaa !18
|
||||
%165 = sitofp i64 %164 to double
|
||||
%166 = fmul double %161, %165
|
||||
%167 = bitcast %struct.TValue* %158 to double*
|
||||
store double %166, double* %167, !tbaa !18
|
||||
%dest.tt57 = getelementptr inbounds %struct.TValue, %struct.TValue* %158, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt57, !tbaa !15
|
||||
%168 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%169 = getelementptr inbounds %struct.TValue, %struct.TValue* %168, i32 15
|
||||
%170 = getelementptr inbounds %struct.TValue, %struct.TValue* %168, i32 8
|
||||
%171 = bitcast %struct.TValue* %170 to i64*
|
||||
%172 = load i64, i64* %171, !tbaa !18
|
||||
%173 = getelementptr inbounds %struct.TValue, %struct.TValue* %168, i32 12
|
||||
%174 = bitcast %struct.TValue* %173 to i64*
|
||||
%175 = load i64, i64* %174, !tbaa !18
|
||||
%176 = add nsw i64 %172, %175
|
||||
%177 = bitcast %struct.TValue* %169 to i64*
|
||||
store i64 %176, i64* %177, !tbaa !18
|
||||
%dest.tt58 = getelementptr inbounds %struct.TValue, %struct.TValue* %169, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt58, !tbaa !15
|
||||
%178 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%179 = getelementptr inbounds %struct.TValue, %struct.TValue* %178, i32 15
|
||||
%180 = getelementptr inbounds %struct.TValue, %struct.TValue* %178, i32 15
|
||||
%181 = bitcast %struct.TValue* %180 to i64*
|
||||
%182 = load i64, i64* %181, !tbaa !18
|
||||
%183 = sub nsw i64 %182, 2
|
||||
%184 = bitcast %struct.TValue* %179 to i64*
|
||||
store i64 %183, i64* %184, !tbaa !18
|
||||
%dest.tt59 = getelementptr inbounds %struct.TValue, %struct.TValue* %179, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt59, !tbaa !15
|
||||
%185 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%186 = getelementptr inbounds %struct.TValue, %struct.TValue* %185, i32 14
|
||||
%187 = getelementptr inbounds %struct.TValue, %struct.TValue* %185, i32 14
|
||||
%188 = bitcast %struct.TValue* %187 to double*
|
||||
%189 = load double, double* %188, !tbaa !18
|
||||
%190 = getelementptr inbounds %struct.TValue, %struct.TValue* %185, i32 15
|
||||
%191 = bitcast %struct.TValue* %190 to i64*
|
||||
%192 = load i64, i64* %191, !tbaa !18
|
||||
%193 = sitofp i64 %192 to double
|
||||
%194 = fmul double %189, %193
|
||||
%195 = bitcast %struct.TValue* %186 to double*
|
||||
store double %194, double* %195, !tbaa !18
|
||||
%dest.tt60 = getelementptr inbounds %struct.TValue, %struct.TValue* %186, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt60, !tbaa !15
|
||||
%196 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%197 = getelementptr inbounds %struct.TValue, %struct.TValue* %196, i32 2
|
||||
%198 = getelementptr inbounds %struct.TValue, %struct.TValue* %196, i32 13
|
||||
%199 = getelementptr inbounds %struct.TValue, %struct.TValue* %196, i32 14
|
||||
call void @luaV_settable(%struct.lua_State* %L, %struct.TValue* %197, %struct.TValue* %198, %struct.TValue* %199)
|
||||
br label %forloop34_
|
||||
|
||||
forloop34_: ; preds = %forbody27_, %forbody21_
|
||||
%200 = load i64, i64* %iidx53, !tbaa !17
|
||||
%next.idx = add nsw i64 1, %200
|
||||
store i64 %next.idx, i64* %iidx53, !tbaa !17
|
||||
%201 = load i64, i64* %ilimit52, !tbaa !17
|
||||
%idx.gt.limit = icmp sgt i64 %next.idx, %201
|
||||
br i1 %idx.gt.limit, label %exit_iforloop, label %updatei
|
||||
|
||||
updatei: ; preds = %forloop34_
|
||||
%202 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%203 = getelementptr inbounds %struct.TValue, %struct.TValue* %202, i32 12
|
||||
%204 = load i64, i64* %iidx53, !tbaa !17
|
||||
%205 = bitcast %struct.TValue* %203 to i64*
|
||||
store i64 %204, i64* %205, !tbaa !18
|
||||
%dest.tt61 = getelementptr inbounds %struct.TValue, %struct.TValue* %203, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt61, !tbaa !15
|
||||
br label %forbody27_
|
||||
|
||||
exit_iforloop: ; preds = %forloop34_
|
||||
br label %forloop35_
|
||||
|
||||
forloop35_: ; preds = %exit_iforloop, %op_call.done.34
|
||||
%206 = load i64, i64* %iidx, !tbaa !17
|
||||
%next.idx62 = add nsw i64 1, %206
|
||||
store i64 %next.idx62, i64* %iidx, !tbaa !17
|
||||
%207 = load i64, i64* %ilimit, !tbaa !17
|
||||
%idx.gt.limit63 = icmp sgt i64 %next.idx62, %207
|
||||
br i1 %idx.gt.limit63, label %exit_iforloop.66, label %updatei.64
|
||||
|
||||
updatei.64: ; preds = %forloop35_
|
||||
%208 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%209 = getelementptr inbounds %struct.TValue, %struct.TValue* %208, i32 8
|
||||
%210 = load i64, i64* %iidx, !tbaa !17
|
||||
%211 = bitcast %struct.TValue* %209 to i64*
|
||||
store i64 %210, i64* %211, !tbaa !18
|
||||
%dest.tt65 = getelementptr inbounds %struct.TValue, %struct.TValue* %209, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt65, !tbaa !15
|
||||
br label %forbody21_
|
||||
|
||||
exit_iforloop.66: ; preds = %forloop35_
|
||||
%212 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%213 = getelementptr inbounds %struct.TValue, %struct.TValue* %212, i32 5
|
||||
%214 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 2
|
||||
%upvals67 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%215 = load %struct.UpVal*, %struct.UpVal** %upvals67, !tbaa !8
|
||||
%v68 = getelementptr inbounds %struct.UpVal, %struct.UpVal* %215, i32 0, i32 0
|
||||
%216 = load %struct.TValue*, %struct.TValue** %v68, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %216, %struct.TValue* %214, %struct.TValue* %213)
|
||||
%217 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%218 = getelementptr inbounds %struct.TValue, %struct.TValue* %217, i32 5
|
||||
%219 = getelementptr inbounds %struct.TValue, %struct.TValue* %217, i32 5
|
||||
%220 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 3
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %219, %struct.TValue* %220, %struct.TValue* %218)
|
||||
%221 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%222 = getelementptr inbounds %struct.TValue, %struct.TValue* %221, i32 6
|
||||
%L.top69 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %222, %struct.TValue** %L.top69, !tbaa !21
|
||||
%223 = getelementptr inbounds %struct.TValue, %struct.TValue* %221, i32 5
|
||||
%224 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %223, i32 1)
|
||||
%225 = icmp eq i32 %224, 0
|
||||
br i1 %225, label %if.lua.function70, label %if.not.lua.function.71
|
||||
|
||||
if.lua.function70: ; preds = %exit_iforloop.66
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.75
|
||||
|
||||
if.not.lua.function.71: ; preds = %exit_iforloop.66
|
||||
%226 = icmp eq i32 %224, 1
|
||||
br i1 %226, label %if.C.function72, label %op_call.done.75
|
||||
|
||||
if.C.function72: ; preds = %if.not.lua.function.71
|
||||
%ci_top73 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%227 = load %struct.TValue*, %struct.TValue** %ci_top73, !tbaa !23
|
||||
%L_top74 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %227, %struct.TValue** %L_top74, !tbaa !21
|
||||
br label %op_call.done.75
|
||||
|
||||
op_call.done.75: ; preds = %if.C.function72, %if.not.lua.function.71, %if.lua.function70
|
||||
%228 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%229 = getelementptr inbounds %struct.TValue, %struct.TValue* %228, i32 6
|
||||
%upvals76 = getelementptr inbounds %struct.LClosure, %struct.LClosure* %3, i32 0, i32 6, i32 0
|
||||
%230 = load %struct.UpVal*, %struct.UpVal** %upvals76, !tbaa !8
|
||||
%v77 = getelementptr inbounds %struct.UpVal, %struct.UpVal* %230, i32 0, i32 0
|
||||
%231 = load %struct.TValue*, %struct.TValue** %v77, !tbaa !19
|
||||
call void @luaV_gettable(%struct.lua_State* %L, %struct.TValue* %231, %struct.TValue* %5, %struct.TValue* %229)
|
||||
%232 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%233 = getelementptr inbounds %struct.TValue, %struct.TValue* %232, i32 7
|
||||
%234 = getelementptr inbounds %struct.TValue, %struct.TValue* %5, i32 7
|
||||
%srcvalue78 = getelementptr inbounds %struct.TValue, %struct.TValue* %234, i32 0, i32 0, i32 0
|
||||
%destvalue79 = getelementptr inbounds %struct.TValue, %struct.TValue* %233, i32 0, i32 0, i32 0
|
||||
%235 = load double, double* %srcvalue78, !tbaa !18
|
||||
store double %235, double* %destvalue79, !tbaa !18
|
||||
%srctype80 = getelementptr inbounds %struct.TValue, %struct.TValue* %234, i32 0, i32 1
|
||||
%desttype81 = getelementptr inbounds %struct.TValue, %struct.TValue* %233, i32 0, i32 1
|
||||
%236 = load i32, i32* %srctype80, !tbaa !15
|
||||
store i32 %236, i32* %desttype81, !tbaa !15
|
||||
%237 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%238 = getelementptr inbounds %struct.TValue, %struct.TValue* %237, i32 8
|
||||
%239 = getelementptr inbounds %struct.TValue, %struct.TValue* %237, i32 5
|
||||
%240 = getelementptr inbounds %struct.TValue, %struct.TValue* %237, i32 1
|
||||
%value.tt.ptr82 = getelementptr inbounds %struct.TValue, %struct.TValue* %239, i32 0, i32 1
|
||||
%value.tt83 = load i32, i32* %value.tt.ptr82, !tbaa !15
|
||||
%value.tt.ptr84 = getelementptr inbounds %struct.TValue, %struct.TValue* %240, i32 0, i32 1
|
||||
%value.tt85 = load i32, i32* %value.tt.ptr84, !tbaa !15
|
||||
%rb.is.integer = icmp eq i32 %value.tt83, 19
|
||||
%rc.is.integer = icmp eq i32 %value.tt85, 19
|
||||
%241 = and i1 %rb.is.integer, %rc.is.integer
|
||||
br i1 %241, label %if.integer, label %if.not.integer.87
|
||||
|
||||
if.integer: ; preds = %op_call.done.75
|
||||
%242 = bitcast %struct.TValue* %239 to i64*
|
||||
%243 = load i64, i64* %242, !tbaa !18
|
||||
%244 = bitcast %struct.TValue* %240 to i64*
|
||||
%245 = load i64, i64* %244, !tbaa !18
|
||||
%246 = sub nsw i64 %243, %245
|
||||
%247 = bitcast %struct.TValue* %238 to i64*
|
||||
store i64 %246, i64* %247, !tbaa !18
|
||||
%dest.tt86 = getelementptr inbounds %struct.TValue, %struct.TValue* %238, i32 0, i32 1
|
||||
store i32 19, i32* %dest.tt86, !tbaa !15
|
||||
br label %done.89
|
||||
|
||||
if.not.integer.87: ; preds = %op_call.done.75
|
||||
%rb.is.float = icmp eq i32 %value.tt83, 3
|
||||
br i1 %rb.is.float, label %load.rb, label %convert.rb
|
||||
|
||||
convert.rb: ; preds = %if.not.integer.87
|
||||
%248 = call i32 @luaV_tonumber_(%struct.TValue* %239, double* %nb)
|
||||
%rb.float.ok = icmp eq i32 %248, 1
|
||||
br i1 %rb.float.ok, label %test.rc, label %try_meta
|
||||
|
||||
load.rb: ; preds = %if.not.integer.87
|
||||
%249 = bitcast %struct.TValue* %239 to double*
|
||||
%250 = load double, double* %249, !tbaa !18
|
||||
store double %250, double* %nb, !tbaa !17
|
||||
br label %test.rc
|
||||
|
||||
test.rc: ; preds = %load.rb, %convert.rb
|
||||
%rc.is.float = icmp eq i32 %value.tt85, 3
|
||||
br i1 %rc.is.float, label %load.rc, label %convert.rc
|
||||
|
||||
convert.rc: ; preds = %test.rc
|
||||
%251 = call i32 @luaV_tonumber_(%struct.TValue* %240, double* %nc)
|
||||
%rc.float.ok = icmp eq i32 %251, 1
|
||||
br i1 %rc.float.ok, label %float.op, label %try_meta
|
||||
|
||||
load.rc: ; preds = %test.rc
|
||||
%252 = bitcast %struct.TValue* %240 to double*
|
||||
%253 = load double, double* %252, !tbaa !18
|
||||
store double %253, double* %nc, !tbaa !17
|
||||
br label %float.op
|
||||
|
||||
float.op: ; preds = %load.rc, %convert.rc
|
||||
%254 = load double, double* %nb, !tbaa !17
|
||||
%255 = load double, double* %nc, !tbaa !17
|
||||
%256 = fsub double %254, %255
|
||||
%257 = bitcast %struct.TValue* %238 to double*
|
||||
store double %256, double* %257, !tbaa !18
|
||||
%dest.tt88 = getelementptr inbounds %struct.TValue, %struct.TValue* %238, i32 0, i32 1
|
||||
store i32 3, i32* %dest.tt88, !tbaa !15
|
||||
br label %done.89
|
||||
|
||||
try_meta: ; preds = %convert.rc, %convert.rb
|
||||
call void @luaT_trybinTM(%struct.lua_State* %L, %struct.TValue* %239, %struct.TValue* %240, %struct.TValue* %238, i32 7)
|
||||
br label %done.89
|
||||
|
||||
done.89: ; preds = %try_meta, %float.op, %if.integer
|
||||
%258 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%259 = getelementptr inbounds %struct.TValue, %struct.TValue* %258, i32 9
|
||||
%L.top90 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %259, %struct.TValue** %L.top90, !tbaa !21
|
||||
%260 = getelementptr inbounds %struct.TValue, %struct.TValue* %258, i32 6
|
||||
%261 = call i32 @luaD_precall(%struct.lua_State* %L, %struct.TValue* %260, i32 0)
|
||||
%262 = icmp eq i32 %261, 0
|
||||
br i1 %262, label %if.lua.function91, label %if.not.lua.function.92
|
||||
|
||||
if.lua.function91: ; preds = %done.89
|
||||
call void @luaV_execute(%struct.lua_State* %L)
|
||||
br label %op_call.done.96
|
||||
|
||||
if.not.lua.function.92: ; preds = %done.89
|
||||
%263 = icmp eq i32 %261, 1
|
||||
br i1 %263, label %if.C.function93, label %op_call.done.96
|
||||
|
||||
if.C.function93: ; preds = %if.not.lua.function.92
|
||||
%ci_top94 = getelementptr inbounds %struct.CallInfo, %struct.CallInfo* %0, i32 0, i32 1
|
||||
%264 = load %struct.TValue*, %struct.TValue** %ci_top94, !tbaa !23
|
||||
%L_top95 = getelementptr inbounds %struct.lua_State, %struct.lua_State* %L, i32 0, i32 4
|
||||
store %struct.TValue* %264, %struct.TValue** %L_top95, !tbaa !21
|
||||
br label %op_call.done.96
|
||||
|
||||
op_call.done.96: ; preds = %if.C.function93, %if.not.lua.function.92, %if.lua.function91
|
||||
%265 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%266 = getelementptr inbounds %struct.TValue, %struct.TValue* %265, i32 2
|
||||
%sizep = getelementptr inbounds %struct.Proto, %struct.Proto* %4, i32 0, i32 10
|
||||
%267 = load i32, i32* %sizep, !tbaa !24
|
||||
%268 = icmp sgt i32 %267, 0
|
||||
br i1 %268, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %op_call.done.96
|
||||
call void @luaF_close(%struct.lua_State* %L, %struct.TValue* %265)
|
||||
br label %if.else
|
||||
|
||||
if.else: ; preds = %if.then, %op_call.done.96
|
||||
%269 = call i32 @luaD_poscall(%struct.lua_State* %L, %struct.TValue* %266, i32 1)
|
||||
ret i32 1
|
||||
|
||||
return: ; No predecessors!
|
||||
%270 = load %struct.TValue*, %struct.TValue** %base, !tbaa !14
|
||||
%sizep97 = getelementptr inbounds %struct.Proto, %struct.Proto* %4, i32 0, i32 10
|
||||
%271 = load i32, i32* %sizep97, !tbaa !24
|
||||
%272 = icmp sgt i32 %271, 0
|
||||
br i1 %272, label %if.then98, label %if.else.99
|
||||
|
||||
if.then98: ; preds = %return
|
||||
call void @luaF_close(%struct.lua_State* %L, %struct.TValue* %270)
|
||||
br label %if.else.99
|
||||
|
||||
if.else.99: ; preds = %if.then98, %return
|
||||
%273 = call i32 @luaD_poscall(%struct.lua_State* %L, %struct.TValue* %270, i32 0)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaT_trybinTM(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaD_call(%struct.lua_State*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_poscall(%struct.lua_State*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_precall(%struct.lua_State*, %struct.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaF_close(%struct.lua_State*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: noreturn nounwind
|
||||
declare void @luaG_runerror(%struct.lua_State*, i8*, ...) #1
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_equalobj(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_lessthan(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_lessequal(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_forlimit(%struct.TValue*, i64*, i64, i32*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_tonumber_(%struct.TValue*, double*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaV_tointeger_(%struct.TValue*, i64*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_execute(%struct.lua_State*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_settable(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_gettable(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_loadnil(%struct.CallInfo*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayint(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayfloat(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newtable(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_setlist(%struct.lua_State*, %struct.CallInfo*, %struct.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @luaV_mod(%struct.lua_State*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @luaV_div(%struct.lua_State*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_objlen(%struct.lua_State*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaC_upvalbarrier_(%struct.lua_State*, %struct.UpVal*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_concat(%struct.lua_State*, %struct.CallInfo*, i32, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_closure(%struct.lua_State*, %struct.CallInfo*, %struct.LClosure*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_vararg(%struct.lua_State*, %struct.CallInfo*, %struct.LClosure*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviH_set_int(%struct.lua_State*, %struct.Table*, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviH_set_float(%struct.lua_State*, %struct.Table*, i64, double) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_shl(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_shr(%struct.lua_State*, %struct.TValue*, %struct.TValue*, %struct.TValue*) #0
|
||||
|
||||
declare i32 @printf(i8*, ...)
|
||||
|
||||
declare double @fmod(double, double)
|
||||
|
||||
declare double @pow(double, double)
|
||||
|
||||
declare double @floor(double)
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
attributes #1 = { noreturn nounwind }
|
||||
|
||||
!0 = !{!"CallInfo", !1, i64 0, !1, i64 4, !1, i64 8, !1, i64 12, !4, i64 16, !5, i64 32, !6, i64 40, !2, i64 42, !2, i64 43}
|
||||
!1 = !{!"any pointer", !2, i64 0}
|
||||
!2 = !{!"omnipotent char", !3, i64 0}
|
||||
!3 = !{!"Simple C / C++ TBAA"}
|
||||
!4 = !{!"CallInfo_l", !1, i64 0, !1, i64 4, !5, i64 8}
|
||||
!5 = !{!"long long", !2, i64 0}
|
||||
!6 = !{!"short", !2, i64 0}
|
||||
!7 = !{!0, !1, i64 0}
|
||||
!8 = !{!1, !1, i64 0}
|
||||
!9 = !{!10, !1, i64 12}
|
||||
!10 = !{!"LClosure", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16}
|
||||
!11 = !{!12, !1, i64 44}
|
||||
!12 = !{!"Proto", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !2, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !1, i64 44, !1, i64 48, !1, i64 52, !1, i64 56, !1, i64 60, !1, i64 64, !1, i64 68, !1, i64 72, !1, i64 76, !2, i64 80}
|
||||
!13 = !{!"int", !2, i64 0}
|
||||
!14 = !{!0, !1, i64 16}
|
||||
!15 = !{!16, !13, i64 8}
|
||||
!16 = !{!"TValue", !5, i64 0, !13, i64 8}
|
||||
!17 = !{!5, !5, i64 0}
|
||||
!18 = !{!16, !5, i64 0}
|
||||
!19 = !{!20, !1, i64 0}
|
||||
!20 = !{!"UpVal", !1, i64 0, !5, i64 8, !16, i64 16}
|
||||
!21 = !{!22, !1, i64 8}
|
||||
!22 = !{!"lua_State", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !1, i64 32, !1, i64 36, !1, i64 40, !1, i64 44, !0, i64 48, !1, i64 92, !5, i64 96, !13, i64 104, !13, i64 108, !13, i64 112, !6, i64 114, !6, i64 116, !2, i64 118, !2, i64 119}
|
||||
!23 = !{!0, !1, i64 4}
|
||||
!24 = !{!12, !13, i64 28}
|
@ -1,22 +0,0 @@
|
||||
function x(t) return t; end
|
||||
function f()
|
||||
local tt: integer[] = {1}
|
||||
local ss: number[] = { 55.5 }
|
||||
tt = x(tt)
|
||||
ss = x(ss)
|
||||
end
|
||||
assert(ravi.compile(x))
|
||||
assert(ravi.compile(f))
|
||||
ravi.dumpllvm(x)
|
||||
ravi.dumpllvm(f)
|
||||
assert(pcall(f))
|
||||
function f()
|
||||
local tt: integer[] = {1}
|
||||
tt = x({})
|
||||
end
|
||||
ravi.dumplua(f)
|
||||
assert(ravi.compile(f))
|
||||
ravi.dumpllvm(f)
|
||||
-- Following causes a misaligned stack exception
|
||||
assert(not pcall(f))
|
||||
print("test OK")
|
@ -1,75 +0,0 @@
|
||||
; ModuleID = 'ravi_module_ravif2'
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-pc-windows-msvc-elf"
|
||||
|
||||
%0 = type { %ravi.TValue*, i32*, i64 }
|
||||
%ravi.lua_State = type { %ravi.GCObject*, i8, i8, i8, %ravi.TValue*, %ravi.global_State*, %ravi.CallInfo*, i32*, %ravi.TValue*, %ravi.TValue*, %ravi.UpVal*, %ravi.GCObject*, %ravi.lua_State*, %ravi.lua_longjmp*, %ravi.CallInfo, i8* (%ravi.lua_State*, %ravi.lua_Debug*)*, i64, i32, i32, i32, i16, i16, i8, i8 }
|
||||
%ravi.global_State = type opaque
|
||||
%ravi.TValue = type { %ravi.Value, i32 }
|
||||
%ravi.Value = type { double }
|
||||
%ravi.UpVal = type { %ravi.TValue*, i64, %ravi.TValue }
|
||||
%ravi.GCObject = type { %ravi.GCObject*, i8, i8 }
|
||||
%ravi.lua_longjmp = type opaque
|
||||
%ravi.CallInfo = type { %ravi.TValue*, %ravi.TValue*, %ravi.CallInfo*, %ravi.CallInfo*, %0, i64, i16, i8, i8 }
|
||||
%ravi.lua_Debug = type opaque
|
||||
%ravi.LClosure = type { %ravi.GCObject*, i8, i8, i8, %ravi.GCObject*, %ravi.Proto*, [1 x %ravi.UpVal*] }
|
||||
%ravi.Proto = type { %ravi.GCObject*, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %ravi.TValue*, i32*, %ravi.Proto**, i32*, %ravi.LocVar*, %ravi.Upvaldesc*, %ravi.LClosure*, %ravi.TString*, %ravi.GCObject*, %ravi.RaviJITProto }
|
||||
%ravi.LocVar = type { %ravi.TString*, i32, i32, i32 }
|
||||
%ravi.Upvaldesc = type { %ravi.TString*, i32, i8, i8 }
|
||||
%ravi.TString = type { %ravi.GCObject*, i8, i8, i8, i32, i64, %ravi.TString* }
|
||||
%ravi.RaviJITProto = type { i8, i8, i16, i8*, i32 (%ravi.lua_State*)* }
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @ravif2(%ravi.lua_State* %L) #0 {
|
||||
entry:
|
||||
%L_ci = getelementptr inbounds %ravi.lua_State* %L, i64 0, i32 6
|
||||
%0 = load %ravi.CallInfo** %L_ci, align 8, !tbaa !0
|
||||
%base = getelementptr inbounds %ravi.CallInfo* %0, i64 0, i32 4, i32 0
|
||||
%1 = bitcast %ravi.CallInfo* %0 to %ravi.LClosure***
|
||||
%2 = load %ravi.LClosure*** %1, align 8, !tbaa !7
|
||||
%3 = load %ravi.LClosure** %2, align 8, !tbaa !8
|
||||
%Proto = getelementptr inbounds %ravi.LClosure* %3, i64 0, i32 5
|
||||
%4 = load %ravi.Proto** %Proto, align 8, !tbaa !9
|
||||
%5 = load %ravi.TValue** %base, align 8, !tbaa !11
|
||||
%6 = getelementptr inbounds %ravi.TValue* %5, i64 1
|
||||
%L.top = getelementptr inbounds %ravi.lua_State* %L, i64 0, i32 4
|
||||
store %ravi.TValue* %6, %ravi.TValue** %L.top, align 8, !tbaa !12
|
||||
%sizep = getelementptr inbounds %ravi.Proto* %4, i64 0, i32 10
|
||||
%7 = load i32* %sizep, align 4, !tbaa !15
|
||||
%8 = icmp sgt i32 %7, 0
|
||||
br i1 %8, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %entry
|
||||
tail call void @luaF_close(%ravi.lua_State* %L, %ravi.TValue* %5)
|
||||
br label %if.else
|
||||
|
||||
if.else: ; preds = %if.then, %entry
|
||||
%9 = tail call i32 @luaD_poscall(%ravi.lua_State* %L, %ravi.TValue* %5)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_poscall(%ravi.lua_State*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaF_close(%ravi.lua_State*, %ravi.TValue*) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
|
||||
!0 = !{!"CallInfo", !1, i64 0, !1, i64 4, !1, i64 8, !1, i64 12, !4, i64 16, !5, i64 32, !6, i64 40, !2, i64 42, !2, i64 43}
|
||||
!1 = !{!"any pointer", !2, i64 0}
|
||||
!2 = !{!"omnipotent char", !3, i64 0}
|
||||
!3 = !{!"Simple C / C++ TBAA"}
|
||||
!4 = !{!"CallInfo_l", !1, i64 0, !1, i64 4, !5, i64 8}
|
||||
!5 = !{!"long long", !2, i64 0}
|
||||
!6 = !{!"short", !2, i64 0}
|
||||
!7 = !{!0, !1, i64 0}
|
||||
!8 = !{!1, !1, i64 0}
|
||||
!9 = !{!10, !1, i64 12}
|
||||
!10 = !{!"LClosure", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16}
|
||||
!11 = !{!0, !1, i64 16}
|
||||
!12 = !{!13, !1, i64 8}
|
||||
!13 = !{!"lua_State", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !1, i64 32, !1, i64 36, !1, i64 40, !1, i64 44, !0, i64 48, !1, i64 92, !5, i64 96, !14, i64 104, !14, i64 108, !14, i64 112, !6, i64 114, !6, i64 116, !2, i64 118, !2, i64 119}
|
||||
!14 = !{!"int", !2, i64 0}
|
||||
!15 = !{!16, !14, i64 28}
|
||||
!16 = !{!"Proto", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !2, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !1, i64 44, !1, i64 48, !1, i64 52, !1, i64 56, !1, i64 60, !1, i64 64, !1, i64 68, !1, i64 72, !1, i64 76, !2, i64 80}
|
@ -1,286 +0,0 @@
|
||||
; ModuleID = 'ravi_module_ravif3'
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-pc-windows-msvc-elf"
|
||||
|
||||
%0 = type { %ravi.TValue*, i32*, i64 }
|
||||
%ravi.lua_State = type { %ravi.GCObject*, i8, i8, i8, %ravi.TValue*, %ravi.global_State*, %ravi.CallInfo*, i32*, %ravi.TValue*, %ravi.TValue*, %ravi.UpVal*, %ravi.GCObject*, %ravi.lua_State*, %ravi.lua_longjmp*, %ravi.CallInfo, i8* (%ravi.lua_State*, %ravi.lua_Debug*)*, i64, i32, i32, i32, i16, i16, i8, i8 }
|
||||
%ravi.global_State = type opaque
|
||||
%ravi.TValue = type { %ravi.Value, i32 }
|
||||
%ravi.Value = type { double }
|
||||
%ravi.UpVal = type { %ravi.TValue*, i64, %ravi.TValue }
|
||||
%ravi.GCObject = type { %ravi.GCObject*, i8, i8 }
|
||||
%ravi.lua_longjmp = type opaque
|
||||
%ravi.CallInfo = type { %ravi.TValue*, %ravi.TValue*, %ravi.CallInfo*, %ravi.CallInfo*, %0, i64, i16, i8, i8 }
|
||||
%ravi.lua_Debug = type opaque
|
||||
%ravi.LClosure = type { %ravi.GCObject*, i8, i8, i8, %ravi.GCObject*, %ravi.Proto*, [1 x %ravi.UpVal*] }
|
||||
%ravi.Proto = type { %ravi.GCObject*, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %ravi.TValue*, i32*, %ravi.Proto**, i32*, %ravi.LocVar*, %ravi.Upvaldesc*, %ravi.LClosure*, %ravi.TString*, %ravi.GCObject*, %ravi.RaviJITProto }
|
||||
%ravi.LocVar = type { %ravi.TString*, i32, i32, i32 }
|
||||
%ravi.Upvaldesc = type { %ravi.TString*, i32, i8, i8 }
|
||||
%ravi.TString = type { %ravi.GCObject*, i8, i8, i8, i32, i64, %ravi.TString* }
|
||||
%ravi.RaviJITProto = type { i8, i8, i16, i8*, i32 (%ravi.lua_State*)* }
|
||||
%ravi.Table = type { %ravi.GCObject*, i8, i8, i8, i8, i32, %ravi.TValue*, %ravi.Node*, %ravi.Node*, %ravi.Table*, %ravi.GCObject*, %ravi.RaviArray }
|
||||
%ravi.Node = type { %ravi.TValue, %ravi.TKey }
|
||||
%ravi.TKey = type { %ravi.Value, i32, i32 }
|
||||
%ravi.RaviArray = type { i8*, i32, i32, i32 }
|
||||
|
||||
@0 = private unnamed_addr constant [19 x i8] c"integer[] expected\00"
|
||||
@1 = private unnamed_addr constant [18 x i8] c"number[] expected\00"
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @ravif3(%ravi.lua_State* %L) #0 {
|
||||
entry:
|
||||
%L_ci = getelementptr inbounds %ravi.lua_State* %L, i64 0, i32 6
|
||||
%0 = load %ravi.CallInfo** %L_ci, align 8, !tbaa !0
|
||||
%base = getelementptr inbounds %ravi.CallInfo* %0, i64 0, i32 4, i32 0
|
||||
%1 = bitcast %ravi.CallInfo* %0 to %ravi.LClosure***
|
||||
%2 = load %ravi.LClosure*** %1, align 8, !tbaa !7
|
||||
%3 = load %ravi.LClosure** %2, align 8, !tbaa !8
|
||||
%Proto = getelementptr inbounds %ravi.LClosure* %3, i64 0, i32 5
|
||||
%4 = load %ravi.Proto** %Proto, align 8, !tbaa !9
|
||||
%k = getelementptr inbounds %ravi.Proto* %4, i64 0, i32 14
|
||||
%5 = load %ravi.TValue** %k, align 8, !tbaa !11
|
||||
%6 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
tail call void @raviV_op_newarrayint(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %6)
|
||||
%7 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%srcvalue40 = bitcast %ravi.TValue* %5 to double*
|
||||
%destvalue = getelementptr inbounds %ravi.TValue* %7, i64 1, i32 0, i32 0
|
||||
%8 = load double* %srcvalue40, align 8, !tbaa !15
|
||||
store double %8, double* %destvalue, align 8, !tbaa !15
|
||||
%srctype = getelementptr inbounds %ravi.TValue* %5, i64 0, i32 1
|
||||
%desttype = getelementptr inbounds %ravi.TValue* %7, i64 1, i32 1
|
||||
%9 = load i32* %srctype, align 4, !tbaa !17
|
||||
store i32 %9, i32* %desttype, align 4, !tbaa !17
|
||||
tail call void @raviV_op_setlist(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %7, i32 1, i32 1)
|
||||
%10 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%11 = getelementptr inbounds %ravi.TValue* %10, i64 1
|
||||
tail call void @raviV_op_newarrayfloat(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %11)
|
||||
%12 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%srcvalue1 = getelementptr inbounds %ravi.TValue* %5, i64 1, i32 0, i32 0
|
||||
%destvalue2 = getelementptr inbounds %ravi.TValue* %12, i64 2, i32 0, i32 0
|
||||
%13 = load double* %srcvalue1, align 8, !tbaa !15
|
||||
store double %13, double* %destvalue2, align 8, !tbaa !15
|
||||
%srctype3 = getelementptr inbounds %ravi.TValue* %5, i64 1, i32 1
|
||||
%desttype4 = getelementptr inbounds %ravi.TValue* %12, i64 2, i32 1
|
||||
%14 = load i32* %srctype3, align 4, !tbaa !17
|
||||
store i32 %14, i32* %desttype4, align 4, !tbaa !17
|
||||
%15 = getelementptr inbounds %ravi.TValue* %12, i64 1
|
||||
tail call void @raviV_op_setlist(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %15, i32 1, i32 1)
|
||||
%16 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%17 = getelementptr inbounds %ravi.TValue* %16, i64 2
|
||||
%18 = getelementptr inbounds %ravi.TValue* %5, i64 2
|
||||
%upvals = getelementptr inbounds %ravi.LClosure* %3, i64 0, i32 6, i64 0
|
||||
%19 = load %ravi.UpVal** %upvals, align 8, !tbaa !8
|
||||
%v41 = bitcast %ravi.UpVal* %19 to %ravi.TValue**
|
||||
%20 = load %ravi.TValue** %v41, align 8, !tbaa !18
|
||||
tail call void @luaV_gettable(%ravi.lua_State* %L, %ravi.TValue* %20, %ravi.TValue* %18, %ravi.TValue* %17)
|
||||
%21 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%srcvalue542 = bitcast %ravi.TValue* %21 to double*
|
||||
%destvalue6 = getelementptr inbounds %ravi.TValue* %21, i64 3, i32 0, i32 0
|
||||
%22 = load double* %srcvalue542, align 8, !tbaa !15
|
||||
store double %22, double* %destvalue6, align 8, !tbaa !15
|
||||
%srctype7 = getelementptr inbounds %ravi.TValue* %21, i64 0, i32 1
|
||||
%desttype8 = getelementptr inbounds %ravi.TValue* %21, i64 3, i32 1
|
||||
%23 = load i32* %srctype7, align 4, !tbaa !17
|
||||
store i32 %23, i32* %desttype8, align 4, !tbaa !17
|
||||
%24 = getelementptr inbounds %ravi.TValue* %21, i64 4
|
||||
%L.top = getelementptr inbounds %ravi.lua_State* %L, i64 0, i32 4
|
||||
store %ravi.TValue* %24, %ravi.TValue** %L.top, align 8, !tbaa !20
|
||||
%25 = getelementptr inbounds %ravi.TValue* %21, i64 2
|
||||
%26 = tail call i32 @luaD_precall(%ravi.lua_State* %L, %ravi.TValue* %25, i32 1)
|
||||
switch i32 %26, label %op_call.done [
|
||||
i32 0, label %if.lua.function
|
||||
i32 1, label %if.C.function
|
||||
]
|
||||
|
||||
if.lua.function: ; preds = %entry
|
||||
tail call void @luaV_execute(%ravi.lua_State* %L)
|
||||
br label %op_call.done
|
||||
|
||||
if.C.function: ; preds = %entry
|
||||
%ci_top = getelementptr inbounds %ravi.CallInfo* %0, i64 0, i32 1
|
||||
%27 = load %ravi.TValue** %ci_top, align 8, !tbaa !22
|
||||
%sunkaddr = ptrtoint %ravi.lua_State* %L to i64
|
||||
%sunkaddr43 = add i64 %sunkaddr, 16
|
||||
%sunkaddr44 = inttoptr i64 %sunkaddr43 to %ravi.TValue**
|
||||
store %ravi.TValue* %27, %ravi.TValue** %sunkaddr44, align 8, !tbaa !20
|
||||
br label %op_call.done
|
||||
|
||||
op_call.done: ; preds = %entry, %if.C.function, %if.lua.function
|
||||
%sunkaddr45 = ptrtoint %ravi.CallInfo* %0 to i64
|
||||
%sunkaddr46 = add i64 %sunkaddr45, 32
|
||||
%sunkaddr47 = inttoptr i64 %sunkaddr46 to %ravi.TValue**
|
||||
%28 = load %ravi.TValue** %sunkaddr47, align 8, !tbaa !14
|
||||
%29 = getelementptr inbounds %ravi.TValue* %28, i64 2
|
||||
%value.tt.ptr = getelementptr inbounds %ravi.TValue* %28, i64 2, i32 1
|
||||
%value.tt = load i32* %value.tt.ptr, align 4, !tbaa !17
|
||||
%is.not.table = icmp eq i32 %value.tt, 69
|
||||
br i1 %is.not.table, label %test.if.array, label %if.not.table
|
||||
|
||||
if.not.table: ; preds = %op_call.done, %test.if.array
|
||||
tail call void @luaG_runerror(%ravi.lua_State* %L, i8* getelementptr inbounds ([19 x i8]* @0, i64 0, i64 0))
|
||||
unreachable
|
||||
|
||||
test.if.array: ; preds = %op_call.done
|
||||
%30 = bitcast %ravi.TValue* %29 to %ravi.Table**
|
||||
%31 = load %ravi.Table** %30, align 8, !tbaa !23
|
||||
%raviarray.type_ptr = getelementptr inbounds %ravi.Table* %31, i64 0, i32 11, i32 1
|
||||
%raviarray.type = load i32* %raviarray.type_ptr, align 4, !tbaa !24
|
||||
%is.array.type = icmp eq i32 %raviarray.type, 3
|
||||
br i1 %is.array.type, label %done, label %if.not.table
|
||||
|
||||
done: ; preds = %test.if.array
|
||||
%32 = ptrtoint %ravi.Table* %31 to i64
|
||||
%33 = bitcast %ravi.TValue* %28 to i64*
|
||||
store i64 %32, i64* %33, align 8, !tbaa !15
|
||||
%desttype12 = getelementptr inbounds %ravi.TValue* %28, i64 0, i32 1
|
||||
store i32 69, i32* %desttype12, align 4, !tbaa !17
|
||||
%sunkaddr48 = ptrtoint %ravi.LClosure* %3 to i64
|
||||
%sunkaddr49 = add i64 %sunkaddr48, 32
|
||||
%sunkaddr50 = inttoptr i64 %sunkaddr49 to %ravi.UpVal**
|
||||
%34 = load %ravi.UpVal** %sunkaddr50, align 8, !tbaa !8
|
||||
%v1451 = bitcast %ravi.UpVal* %34 to %ravi.TValue**
|
||||
%35 = load %ravi.TValue** %v1451, align 8, !tbaa !18
|
||||
tail call void @luaV_gettable(%ravi.lua_State* %L, %ravi.TValue* %35, %ravi.TValue* %18, %ravi.TValue* %29)
|
||||
%sunkaddr52 = ptrtoint %ravi.CallInfo* %0 to i64
|
||||
%sunkaddr53 = add i64 %sunkaddr52, 32
|
||||
%sunkaddr54 = inttoptr i64 %sunkaddr53 to %ravi.TValue**
|
||||
%36 = load %ravi.TValue** %sunkaddr54, align 8, !tbaa !14
|
||||
%srcvalue15 = getelementptr inbounds %ravi.TValue* %36, i64 1, i32 0, i32 0
|
||||
%destvalue16 = getelementptr inbounds %ravi.TValue* %36, i64 3, i32 0, i32 0
|
||||
%37 = load double* %srcvalue15, align 8, !tbaa !15
|
||||
store double %37, double* %destvalue16, align 8, !tbaa !15
|
||||
%srctype17 = getelementptr inbounds %ravi.TValue* %36, i64 1, i32 1
|
||||
%desttype18 = getelementptr inbounds %ravi.TValue* %36, i64 3, i32 1
|
||||
%38 = load i32* %srctype17, align 4, !tbaa !17
|
||||
store i32 %38, i32* %desttype18, align 4, !tbaa !17
|
||||
%39 = getelementptr inbounds %ravi.TValue* %36, i64 4
|
||||
%sunkaddr55 = ptrtoint %ravi.lua_State* %L to i64
|
||||
%sunkaddr56 = add i64 %sunkaddr55, 16
|
||||
%sunkaddr57 = inttoptr i64 %sunkaddr56 to %ravi.TValue**
|
||||
store %ravi.TValue* %39, %ravi.TValue** %sunkaddr57, align 8, !tbaa !20
|
||||
%40 = getelementptr inbounds %ravi.TValue* %36, i64 2
|
||||
%41 = tail call i32 @luaD_precall(%ravi.lua_State* %L, %ravi.TValue* %40, i32 1)
|
||||
switch i32 %41, label %op_call.done25 [
|
||||
i32 0, label %if.lua.function20
|
||||
i32 1, label %if.C.function22
|
||||
]
|
||||
|
||||
if.lua.function20: ; preds = %done
|
||||
tail call void @luaV_execute(%ravi.lua_State* %L)
|
||||
br label %op_call.done25
|
||||
|
||||
if.C.function22: ; preds = %done
|
||||
%ci_top23 = getelementptr inbounds %ravi.CallInfo* %0, i64 0, i32 1
|
||||
%42 = load %ravi.TValue** %ci_top23, align 8, !tbaa !22
|
||||
%sunkaddr58 = ptrtoint %ravi.lua_State* %L to i64
|
||||
%sunkaddr59 = add i64 %sunkaddr58, 16
|
||||
%sunkaddr60 = inttoptr i64 %sunkaddr59 to %ravi.TValue**
|
||||
store %ravi.TValue* %42, %ravi.TValue** %sunkaddr60, align 8, !tbaa !20
|
||||
br label %op_call.done25
|
||||
|
||||
op_call.done25: ; preds = %done, %if.C.function22, %if.lua.function20
|
||||
%sunkaddr61 = ptrtoint %ravi.CallInfo* %0 to i64
|
||||
%sunkaddr62 = add i64 %sunkaddr61, 32
|
||||
%sunkaddr63 = inttoptr i64 %sunkaddr62 to %ravi.TValue**
|
||||
%43 = load %ravi.TValue** %sunkaddr63, align 8, !tbaa !14
|
||||
%value.tt.ptr26 = getelementptr inbounds %ravi.TValue* %43, i64 2, i32 1
|
||||
%value.tt27 = load i32* %value.tt.ptr26, align 4, !tbaa !17
|
||||
%is.not.table28 = icmp eq i32 %value.tt27, 69
|
||||
br i1 %is.not.table28, label %test.if.array30, label %if.not.table29
|
||||
|
||||
if.not.table29: ; preds = %op_call.done25, %test.if.array30
|
||||
tail call void @luaG_runerror(%ravi.lua_State* %L, i8* getelementptr inbounds ([18 x i8]* @1, i64 0, i64 0))
|
||||
unreachable
|
||||
|
||||
test.if.array30: ; preds = %op_call.done25
|
||||
%44 = getelementptr inbounds %ravi.TValue* %43, i64 2
|
||||
%45 = bitcast %ravi.TValue* %44 to %ravi.Table**
|
||||
%46 = load %ravi.Table** %45, align 8, !tbaa !23
|
||||
%raviarray.type_ptr31 = getelementptr inbounds %ravi.Table* %46, i64 0, i32 11, i32 1
|
||||
%raviarray.type32 = load i32* %raviarray.type_ptr31, align 4, !tbaa !24
|
||||
%is.array.type33 = icmp eq i32 %raviarray.type32, 4
|
||||
br i1 %is.array.type33, label %done34, label %if.not.table29
|
||||
|
||||
done34: ; preds = %test.if.array30
|
||||
%47 = ptrtoint %ravi.Table* %46 to i64
|
||||
%destvalue36 = getelementptr inbounds %ravi.TValue* %43, i64 1, i32 0, i32 0
|
||||
%48 = bitcast double* %destvalue36 to i64*
|
||||
store i64 %47, i64* %48, align 8, !tbaa !15
|
||||
%desttype38 = getelementptr inbounds %ravi.TValue* %43, i64 1, i32 1
|
||||
store i32 69, i32* %desttype38, align 4, !tbaa !17
|
||||
%sunkaddr64 = ptrtoint %ravi.lua_State* %L to i64
|
||||
%sunkaddr65 = add i64 %sunkaddr64, 16
|
||||
%sunkaddr66 = inttoptr i64 %sunkaddr65 to %ravi.TValue**
|
||||
store %ravi.TValue* %43, %ravi.TValue** %sunkaddr66, align 8, !tbaa !20
|
||||
%sizep = getelementptr inbounds %ravi.Proto* %4, i64 0, i32 10
|
||||
%49 = load i32* %sizep, align 4, !tbaa !27
|
||||
%50 = icmp sgt i32 %49, 0
|
||||
br i1 %50, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %done34
|
||||
tail call void @luaF_close(%ravi.lua_State* %L, %ravi.TValue* %43)
|
||||
br label %if.else
|
||||
|
||||
if.else: ; preds = %if.then, %done34
|
||||
%51 = tail call i32 @luaD_poscall(%ravi.lua_State* %L, %ravi.TValue* %43)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_poscall(%ravi.lua_State*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_precall(%ravi.lua_State*, %ravi.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaF_close(%ravi.lua_State*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: noreturn nounwind
|
||||
declare void @luaG_runerror(%ravi.lua_State*, i8*) #1
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_execute(%ravi.lua_State*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_gettable(%ravi.lua_State*, %ravi.TValue*, %ravi.TValue*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayint(%ravi.lua_State*, %ravi.CallInfo*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayfloat(%ravi.lua_State*, %ravi.CallInfo*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_setlist(%ravi.lua_State*, %ravi.CallInfo*, %ravi.TValue*, i32, i32) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
attributes #1 = { noreturn nounwind }
|
||||
|
||||
!0 = !{!"CallInfo", !1, i64 0, !1, i64 4, !1, i64 8, !1, i64 12, !4, i64 16, !5, i64 32, !6, i64 40, !2, i64 42, !2, i64 43}
|
||||
!1 = !{!"any pointer", !2, i64 0}
|
||||
!2 = !{!"omnipotent char", !3, i64 0}
|
||||
!3 = !{!"Simple C / C++ TBAA"}
|
||||
!4 = !{!"CallInfo_l", !1, i64 0, !1, i64 4, !5, i64 8}
|
||||
!5 = !{!"long long", !2, i64 0}
|
||||
!6 = !{!"short", !2, i64 0}
|
||||
!7 = !{!0, !1, i64 0}
|
||||
!8 = !{!1, !1, i64 0}
|
||||
!9 = !{!10, !1, i64 12}
|
||||
!10 = !{!"LClosure", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16}
|
||||
!11 = !{!12, !1, i64 44}
|
||||
!12 = !{!"Proto", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !2, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !1, i64 44, !1, i64 48, !1, i64 52, !1, i64 56, !1, i64 60, !1, i64 64, !1, i64 68, !1, i64 72, !1, i64 76, !2, i64 80}
|
||||
!13 = !{!"int", !2, i64 0}
|
||||
!14 = !{!0, !1, i64 16}
|
||||
!15 = !{!16, !5, i64 0}
|
||||
!16 = !{!"TValue", !5, i64 0, !13, i64 8}
|
||||
!17 = !{!16, !13, i64 8}
|
||||
!18 = !{!19, !1, i64 0}
|
||||
!19 = !{!"UpVal", !1, i64 0, !5, i64 8, !16, i64 16}
|
||||
!20 = !{!21, !1, i64 8}
|
||||
!21 = !{!"lua_State", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !1, i64 32, !1, i64 36, !1, i64 40, !1, i64 44, !0, i64 48, !1, i64 92, !5, i64 96, !13, i64 104, !13, i64 108, !13, i64 112, !6, i64 114, !6, i64 116, !2, i64 118, !2, i64 119}
|
||||
!22 = !{!0, !1, i64 4}
|
||||
!23 = !{!16, !1, i64 0}
|
||||
!24 = !{!25, !2, i64 36}
|
||||
!25 = !{!"Table", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !13, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !26, i64 32}
|
||||
!26 = !{!"RaviArray", !1, i64 0, !2, i64 4, !13, i64 8, !13, i64 12}
|
||||
!27 = !{!12, !13, i64 28}
|
@ -1,192 +0,0 @@
|
||||
; ModuleID = 'ravi_module_ravif4'
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-pc-windows-msvc-elf"
|
||||
|
||||
%0 = type { %ravi.TValue*, i32*, i64 }
|
||||
%ravi.lua_State = type { %ravi.GCObject*, i8, i8, i8, %ravi.TValue*, %ravi.global_State*, %ravi.CallInfo*, i32*, %ravi.TValue*, %ravi.TValue*, %ravi.UpVal*, %ravi.GCObject*, %ravi.lua_State*, %ravi.lua_longjmp*, %ravi.CallInfo, i8* (%ravi.lua_State*, %ravi.lua_Debug*)*, i64, i32, i32, i32, i16, i16, i8, i8 }
|
||||
%ravi.global_State = type opaque
|
||||
%ravi.TValue = type { %ravi.Value, i32 }
|
||||
%ravi.Value = type { double }
|
||||
%ravi.UpVal = type { %ravi.TValue*, i64, %ravi.TValue }
|
||||
%ravi.GCObject = type { %ravi.GCObject*, i8, i8 }
|
||||
%ravi.lua_longjmp = type opaque
|
||||
%ravi.CallInfo = type { %ravi.TValue*, %ravi.TValue*, %ravi.CallInfo*, %ravi.CallInfo*, %0, i64, i16, i8, i8 }
|
||||
%ravi.lua_Debug = type opaque
|
||||
%ravi.LClosure = type { %ravi.GCObject*, i8, i8, i8, %ravi.GCObject*, %ravi.Proto*, [1 x %ravi.UpVal*] }
|
||||
%ravi.Proto = type { %ravi.GCObject*, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %ravi.TValue*, i32*, %ravi.Proto**, i32*, %ravi.LocVar*, %ravi.Upvaldesc*, %ravi.LClosure*, %ravi.TString*, %ravi.GCObject*, %ravi.RaviJITProto }
|
||||
%ravi.LocVar = type { %ravi.TString*, i32, i32, i32 }
|
||||
%ravi.Upvaldesc = type { %ravi.TString*, i32, i8, i8 }
|
||||
%ravi.TString = type { %ravi.GCObject*, i8, i8, i8, i32, i64, %ravi.TString* }
|
||||
%ravi.RaviJITProto = type { i8, i8, i16, i8*, i32 (%ravi.lua_State*)* }
|
||||
%ravi.Table = type { %ravi.GCObject*, i8, i8, i8, i8, i32, %ravi.TValue*, %ravi.Node*, %ravi.Node*, %ravi.Table*, %ravi.GCObject*, %ravi.RaviArray }
|
||||
%ravi.Node = type { %ravi.TValue, %ravi.TKey }
|
||||
%ravi.TKey = type { %ravi.Value, i32, i32 }
|
||||
%ravi.RaviArray = type { i8*, i32, i32, i32 }
|
||||
|
||||
@0 = private unnamed_addr constant [19 x i8] c"integer[] expected\00"
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @ravif4(%ravi.lua_State* %L) #0 {
|
||||
entry:
|
||||
%L_ci = getelementptr inbounds %ravi.lua_State* %L, i64 0, i32 6
|
||||
%0 = load %ravi.CallInfo** %L_ci, align 8, !tbaa !0
|
||||
%base = getelementptr inbounds %ravi.CallInfo* %0, i64 0, i32 4, i32 0
|
||||
%1 = bitcast %ravi.CallInfo* %0 to %ravi.LClosure***
|
||||
%2 = load %ravi.LClosure*** %1, align 8, !tbaa !7
|
||||
%3 = load %ravi.LClosure** %2, align 8, !tbaa !8
|
||||
%Proto = getelementptr inbounds %ravi.LClosure* %3, i64 0, i32 5
|
||||
%4 = load %ravi.Proto** %Proto, align 8, !tbaa !9
|
||||
%k = getelementptr inbounds %ravi.Proto* %4, i64 0, i32 14
|
||||
%5 = load %ravi.TValue** %k, align 8, !tbaa !11
|
||||
%6 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
tail call void @raviV_op_newarrayint(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %6)
|
||||
%7 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%srcvalue6 = bitcast %ravi.TValue* %5 to double*
|
||||
%destvalue = getelementptr inbounds %ravi.TValue* %7, i64 1, i32 0, i32 0
|
||||
%8 = load double* %srcvalue6, align 8, !tbaa !15
|
||||
store double %8, double* %destvalue, align 8, !tbaa !15
|
||||
%srctype = getelementptr inbounds %ravi.TValue* %5, i64 0, i32 1
|
||||
%desttype = getelementptr inbounds %ravi.TValue* %7, i64 1, i32 1
|
||||
%9 = load i32* %srctype, align 4, !tbaa !17
|
||||
store i32 %9, i32* %desttype, align 4, !tbaa !17
|
||||
tail call void @raviV_op_setlist(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %7, i32 1, i32 1)
|
||||
%10 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%11 = getelementptr inbounds %ravi.TValue* %10, i64 1
|
||||
%12 = getelementptr inbounds %ravi.TValue* %5, i64 1
|
||||
%upvals = getelementptr inbounds %ravi.LClosure* %3, i64 0, i32 6, i64 0
|
||||
%13 = load %ravi.UpVal** %upvals, align 8, !tbaa !8
|
||||
%v7 = bitcast %ravi.UpVal* %13 to %ravi.TValue**
|
||||
%14 = load %ravi.TValue** %v7, align 8, !tbaa !18
|
||||
tail call void @luaV_gettable(%ravi.lua_State* %L, %ravi.TValue* %14, %ravi.TValue* %12, %ravi.TValue* %11)
|
||||
%15 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%16 = getelementptr inbounds %ravi.TValue* %15, i64 2
|
||||
tail call void @raviV_op_newtable(%ravi.lua_State* %L, %ravi.CallInfo* %0, %ravi.TValue* %16, i32 0, i32 0)
|
||||
%17 = load %ravi.TValue** %base, align 8, !tbaa !14
|
||||
%18 = getelementptr inbounds %ravi.TValue* %17, i64 3
|
||||
%L.top = getelementptr inbounds %ravi.lua_State* %L, i64 0, i32 4
|
||||
store %ravi.TValue* %18, %ravi.TValue** %L.top, align 8, !tbaa !20
|
||||
%19 = getelementptr inbounds %ravi.TValue* %17, i64 1
|
||||
%20 = tail call i32 @luaD_precall(%ravi.lua_State* %L, %ravi.TValue* %19, i32 1)
|
||||
switch i32 %20, label %op_call.done [
|
||||
i32 0, label %if.lua.function
|
||||
i32 1, label %if.C.function
|
||||
]
|
||||
|
||||
if.lua.function: ; preds = %entry
|
||||
tail call void @luaV_execute(%ravi.lua_State* %L)
|
||||
br label %op_call.done
|
||||
|
||||
if.C.function: ; preds = %entry
|
||||
%ci_top = getelementptr inbounds %ravi.CallInfo* %0, i64 0, i32 1
|
||||
%21 = load %ravi.TValue** %ci_top, align 8, !tbaa !22
|
||||
%sunkaddr = ptrtoint %ravi.lua_State* %L to i64
|
||||
%sunkaddr8 = add i64 %sunkaddr, 16
|
||||
%sunkaddr9 = inttoptr i64 %sunkaddr8 to %ravi.TValue**
|
||||
store %ravi.TValue* %21, %ravi.TValue** %sunkaddr9, align 8, !tbaa !20
|
||||
br label %op_call.done
|
||||
|
||||
op_call.done: ; preds = %entry, %if.C.function, %if.lua.function
|
||||
%sunkaddr10 = ptrtoint %ravi.CallInfo* %0 to i64
|
||||
%sunkaddr11 = add i64 %sunkaddr10, 32
|
||||
%sunkaddr12 = inttoptr i64 %sunkaddr11 to %ravi.TValue**
|
||||
%22 = load %ravi.TValue** %sunkaddr12, align 8, !tbaa !14
|
||||
%value.tt.ptr = getelementptr inbounds %ravi.TValue* %22, i64 1, i32 1
|
||||
%value.tt = load i32* %value.tt.ptr, align 4, !tbaa !17
|
||||
%is.not.table = icmp eq i32 %value.tt, 69
|
||||
br i1 %is.not.table, label %test.if.array, label %if.not.table
|
||||
|
||||
if.not.table: ; preds = %op_call.done, %test.if.array
|
||||
tail call void @luaG_runerror(%ravi.lua_State* %L, i8* getelementptr inbounds ([19 x i8]* @0, i64 0, i64 0))
|
||||
unreachable
|
||||
|
||||
test.if.array: ; preds = %op_call.done
|
||||
%23 = getelementptr inbounds %ravi.TValue* %22, i64 1
|
||||
%24 = bitcast %ravi.TValue* %23 to %ravi.Table**
|
||||
%25 = load %ravi.Table** %24, align 8, !tbaa !23
|
||||
%raviarray.type_ptr = getelementptr inbounds %ravi.Table* %25, i64 0, i32 11, i32 1
|
||||
%raviarray.type = load i32* %raviarray.type_ptr, align 4, !tbaa !24
|
||||
%is.array.type = icmp eq i32 %raviarray.type, 3
|
||||
br i1 %is.array.type, label %done, label %if.not.table
|
||||
|
||||
done: ; preds = %test.if.array
|
||||
%26 = ptrtoint %ravi.Table* %25 to i64
|
||||
%27 = bitcast %ravi.TValue* %22 to i64*
|
||||
store i64 %26, i64* %27, align 8, !tbaa !15
|
||||
%desttype4 = getelementptr inbounds %ravi.TValue* %22, i64 0, i32 1
|
||||
store i32 69, i32* %desttype4, align 4, !tbaa !17
|
||||
%sunkaddr13 = ptrtoint %ravi.lua_State* %L to i64
|
||||
%sunkaddr14 = add i64 %sunkaddr13, 16
|
||||
%sunkaddr15 = inttoptr i64 %sunkaddr14 to %ravi.TValue**
|
||||
store %ravi.TValue* %22, %ravi.TValue** %sunkaddr15, align 8, !tbaa !20
|
||||
%sizep = getelementptr inbounds %ravi.Proto* %4, i64 0, i32 10
|
||||
%28 = load i32* %sizep, align 4, !tbaa !27
|
||||
%29 = icmp sgt i32 %28, 0
|
||||
br i1 %29, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %done
|
||||
tail call void @luaF_close(%ravi.lua_State* %L, %ravi.TValue* %22)
|
||||
br label %if.else
|
||||
|
||||
if.else: ; preds = %if.then, %done
|
||||
%30 = tail call i32 @luaD_poscall(%ravi.lua_State* %L, %ravi.TValue* %22)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_poscall(%ravi.lua_State*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @luaD_precall(%ravi.lua_State*, %ravi.TValue*, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaF_close(%ravi.lua_State*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: noreturn nounwind
|
||||
declare void @luaG_runerror(%ravi.lua_State*, i8*) #1
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_execute(%ravi.lua_State*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @luaV_gettable(%ravi.lua_State*, %ravi.TValue*, %ravi.TValue*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newarrayint(%ravi.lua_State*, %ravi.CallInfo*, %ravi.TValue*) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_newtable(%ravi.lua_State*, %ravi.CallInfo*, %ravi.TValue*, i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @raviV_op_setlist(%ravi.lua_State*, %ravi.CallInfo*, %ravi.TValue*, i32, i32) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
attributes #1 = { noreturn nounwind }
|
||||
|
||||
!0 = !{!"CallInfo", !1, i64 0, !1, i64 4, !1, i64 8, !1, i64 12, !4, i64 16, !5, i64 32, !6, i64 40, !2, i64 42, !2, i64 43}
|
||||
!1 = !{!"any pointer", !2, i64 0}
|
||||
!2 = !{!"omnipotent char", !3, i64 0}
|
||||
!3 = !{!"Simple C / C++ TBAA"}
|
||||
!4 = !{!"CallInfo_l", !1, i64 0, !1, i64 4, !5, i64 8}
|
||||
!5 = !{!"long long", !2, i64 0}
|
||||
!6 = !{!"short", !2, i64 0}
|
||||
!7 = !{!0, !1, i64 0}
|
||||
!8 = !{!1, !1, i64 0}
|
||||
!9 = !{!10, !1, i64 12}
|
||||
!10 = !{!"LClosure", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16}
|
||||
!11 = !{!12, !1, i64 44}
|
||||
!12 = !{!"Proto", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !2, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !1, i64 44, !1, i64 48, !1, i64 52, !1, i64 56, !1, i64 60, !1, i64 64, !1, i64 68, !1, i64 72, !1, i64 76, !2, i64 80}
|
||||
!13 = !{!"int", !2, i64 0}
|
||||
!14 = !{!0, !1, i64 16}
|
||||
!15 = !{!16, !5, i64 0}
|
||||
!16 = !{!"TValue", !5, i64 0, !13, i64 8}
|
||||
!17 = !{!16, !13, i64 8}
|
||||
!18 = !{!19, !1, i64 0}
|
||||
!19 = !{!"UpVal", !1, i64 0, !5, i64 8, !16, i64 16}
|
||||
!20 = !{!21, !1, i64 8}
|
||||
!21 = !{!"lua_State", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !1, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !1, i64 32, !1, i64 36, !1, i64 40, !1, i64 44, !0, i64 48, !1, i64 92, !5, i64 96, !13, i64 104, !13, i64 108, !13, i64 112, !6, i64 114, !6, i64 116, !2, i64 118, !2, i64 119}
|
||||
!22 = !{!0, !1, i64 4}
|
||||
!23 = !{!16, !1, i64 0}
|
||||
!24 = !{!25, !2, i64 36}
|
||||
!25 = !{!"Table", !1, i64 0, !2, i64 4, !2, i64 5, !2, i64 6, !2, i64 7, !13, i64 8, !1, i64 12, !1, i64 16, !1, i64 20, !1, i64 24, !1, i64 28, !26, i64 32}
|
||||
!26 = !{!"RaviArray", !1, i64 0, !2, i64 4, !13, i64 8, !13, i64 12}
|
||||
!27 = !{!12, !13, i64 28}
|
Loading…
Reference in new issue