/* collected information */
size_t max_param_count;
-
- /* code generator */
- code_t *code;
} parser_t;
static ast_expression * const intrinsic_debug_typestring = (ast_expression*)0x1;
return old;
}
-static void generate_checksum(parser_t *parser)
+static void generate_checksum(parser_t *parser, ir_builder *ir)
{
uint16_t crc = 0xFFFF;
size_t i;
crc = progdefs_crc_both(crc, ";\n");
}
crc = progdefs_crc_both(crc, "} entvars_t;\n\n");
-
- parser->code->crc = crc;
+ ir->code->crc = crc;
}
parser_t *parser_create()
memset(parser, 0, sizeof(*parser));
- if (!(parser->code = code_init())) {
- mem_d(parser);
- return NULL;
- }
-
for (i = 0; i < operator_count; ++i) {
if (operators[i].id == opid1('=')) {
parser->assign_op = operators+i;
void parser_cleanup(parser_t *parser)
{
parser_remove_ast(parser);
- code_cleanup(parser->code);
-
mem_d(parser);
}
}
}
- generate_checksum(parser);
+ generate_checksum(parser, ir);
+
if (OPTS_OPTION_BOOL(OPTION_DUMP))
ir_builder_dump(ir, con_out);
for (i = 0; i < vec_size(parser->functions); ++i) {
if (OPTS_OPTION_BOOL(OPTION_DUMPFIN))
ir_builder_dump(ir, con_out);
- if (!ir_builder_generate(parser->code, ir, output)) {
+ if (!ir_builder_generate(ir, output)) {
con_out("*** failed to generate output file\n");
ir_builder_delete(ir);
return false;