ir_recorder.h (1056B)
1 #ifndef KIT_CG_IR_RECORDER_H 2 #define KIT_CG_IR_RECORDER_H 3 4 #include "cg/ir.h" 5 6 typedef struct CgIrRecorder CgIrRecorder; 7 8 typedef struct CgIrRecorderConfig { 9 void (*func_recorded)(void* user, CgIrFunc* func); 10 void (*finalize)(void* user, const CgIrModule* module); 11 void (*destroy)(void* user); 12 int (*local_static_data_begin)(void* user, const CGLocalStaticDataDesc* desc); 13 const char* (*data_label_addr_unsupported_msg)(void* user); 14 const char* (*tail_call_unrealizable_reason)(void* user, 15 const CGFuncDesc* caller, 16 const CGCallDesc* call); 17 int (*asm_is_reg_constraint)(void* user, const char* constraint); 18 void* user; 19 } CgIrRecorderConfig; 20 21 CgTarget* cg_ir_recorder_new(Compiler*, ObjBuilder*, const CgIrRecorderConfig*); 22 CgIrRecorder* cg_ir_recorder_from_target(CgTarget*); 23 void* cg_ir_recorder_user(const CgIrRecorder*); 24 const CgIrModule* cg_ir_recorder_module(const CgTarget*); 25 CgIrFunc* cg_ir_recorder_current_func(const CgTarget*); 26 27 #endif