1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

More const eval progress

This commit is contained in:
Brian Fiete 2020-12-19 14:19:33 -08:00
parent a3ea79cd62
commit 9b80c26d0a
26 changed files with 1673 additions and 460 deletions

View file

@ -118,6 +118,7 @@ enum BfConstType
BfConstType_GEP32_2,
BfConstType_ExtractValue,
BfConstType_PtrToInt,
BfConstType_IntToPtr,
BfConstType_TypeOf,
BfConstType_AggZero,
BfConstType_Array,
@ -282,6 +283,7 @@ enum BfIRCmd : uint8
BfIRCmd_Func_SetLinkage,
BfIRCmd_ConstEval_GetBfType,
BfIRCmd_ConstEval_GetReflectType,
BfIRCmd_ConstEval_DynamicCastCheck,
BfIRCmd_ConstEval_GetVirtualFunc,
BfIRCmd_ConstEval_GetInterfaceFunc,
@ -831,6 +833,13 @@ struct BfConstantPtrToInt
BfTypeCode mToTypeCode;
};
struct BfConstantIntToPtr
{
BfConstType mConstType;
int mTarget;
BfIRType mToType;
};
struct BfConstantGEP32_2
{
BfConstType mConstType;
@ -1230,9 +1239,10 @@ public:
void Func_SetLinkage(BfIRFunction func, BfIRLinkageType linkage);
BfIRValue ConstEval_GetBfType(int typeId, BfIRType resultType);
BfIRValue ConstEval_GetReflectType(int typeId, BfIRType resultType);
BfIRValue ConstEval_DynamicCastCheck(BfIRValue value, int typeId, BfIRType resultType);
BfIRValue ConstEval_GetVirtualFunc(BfIRValue value, int virtualTableId, BfIRType resultType);
BfIRValue ConstEval_GetInterfaceFunc(BfIRValue value, int typeId, int virtualTableId, BfIRType resultType);
BfIRValue ConstEval_GetInterfaceFunc(BfIRValue value, int typeId, int methodIdx, BfIRType resultType);
void SaveDebugLocation();
void RestoreDebugLocation();