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