diff --git a/libs/ir2mcode/src/ir2amd64.c b/libs/ir2mcode/src/ir2amd64.c index 3170708..79e5d43 100644 --- a/libs/ir2mcode/src/ir2amd64.c +++ b/libs/ir2mcode/src/ir2amd64.c @@ -156,6 +156,10 @@ static void parse_node(scc_ir2mcode_ctx_t *ctx, scc_ir_bblock_ref_t node_ref, LOG_ERROR("Unsupported node type: %d", node->tag); break; case SCC_IR_NODE_RET: ///< 函数返回 + if (node->data.ret.ret_val) { + scc_reg_loc_t *loc = parse_location(ctx, node->data.ret.ret_val); + load_value_to_reg(&ctx->mcode, loc, SCC_AMD64_RAX); + } scc_mcode_amd64_mov_r64_r64(&ctx->mcode, SCC_AMD64_RSP, SCC_AMD64_RBP); scc_mcode_amd64_pop_r64(&ctx->mcode, SCC_AMD64_RBP); scc_mcode_amd64_ret(&ctx->mcode); diff --git a/libs/target/pe/src/scc_pe_builder.c b/libs/target/pe/src/scc_pe_builder.c index d243954..4cfa7a2 100644 --- a/libs/target/pe/src/scc_pe_builder.c +++ b/libs/target/pe/src/scc_pe_builder.c @@ -1,5 +1,10 @@ #include +#ifdef LOG_INFO +#undef LOG_INFO +#endif +#define LOG_INFO(...) + #define reserve_align(offset, size) ((offset) + ((size) - 1)) & ~((size) - 1) void scc_pe_builder_init(scc_pe_builder_t *builder, bool is_64,