From 1195c897f987ff51caaba13831c9dd4de2964ad7 Mon Sep 17 00:00:00 2001 From: Kyle Lin Date: Sat, 26 Jul 2025 20:48:57 +0800 Subject: [PATCH] Improve IR dumping information This patch adds naming to various member when dumping IR, e.g. function names to basic block clusters, basic block pseudo names to each basic blocks. Also, fixed phase 2 IR dumping not printing out the name of functions. --- src/arm-codegen.c | 5 ++--- src/riscv-codegen.c | 1 + src/ssa.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/arm-codegen.c b/src/arm-codegen.c index 39d3e0b5..0ddcd0e9 100644 --- a/src/arm-codegen.c +++ b/src/arm-codegen.c @@ -147,11 +147,10 @@ void cfg_flatten(void) elf_offset += 24; for (func = FUNC_LIST.head; func; func = func->next) { - ph2_ir_t *flatten_ir; - /* reserve stack */ - flatten_ir = add_ph2_ir(OP_define); + ph2_ir_t *flatten_ir = add_ph2_ir(OP_define); flatten_ir->src0 = func->stack_size; + strncpy(flatten_ir->func_name, func->return_def.var_name, MAX_VAR_LEN); for (basic_block_t *bb = func->bbs; bb; bb = bb->rpo_next) { bb->elf_offset = elf_offset; diff --git a/src/riscv-codegen.c b/src/riscv-codegen.c index 27df288b..9b5b7f68 100644 --- a/src/riscv-codegen.c +++ b/src/riscv-codegen.c @@ -124,6 +124,7 @@ void cfg_flatten(void) /* reserve stack */ ph2_ir_t *flatten_ir = add_ph2_ir(OP_define); flatten_ir->src0 = func->stack_size; + strncpy(flatten_ir->func_name, func->return_def.var_name, MAX_VAR_LEN); for (basic_block_t *bb = func->bbs; bb; bb = bb->rpo_next) { bb->elf_offset = elf_offset; diff --git a/src/ssa.c b/src/ssa.c index fa7b74fe..69790468 100644 --- a/src/ssa.c +++ b/src/ssa.c @@ -991,7 +991,7 @@ void bb_dump(FILE *fd, func_t *func, basic_block_t *bb) printf("Warning: normal BB with condition\n"); fprintf(fd, "subgraph cluster_%p {\n", bb); - fprintf(fd, "label=\"BasicBlock %p\"\n", bb); + fprintf(fd, "label=\"BasicBlock %p (%s)\"\n", bb, bb->bb_label_name); insn_t *insn = bb->insn_list.head; if (!insn) @@ -1170,7 +1170,7 @@ void dump_cfg(char name[]) for (func_t *func = FUNC_LIST.head; func; func = func->next) { func->visited++; fprintf(fd, "subgraph cluster_%p {\n", func); - fprintf(fd, "label=\"%p\"\n", func); + fprintf(fd, "label=\"%p (%s)\"\n", func, func->return_def.var_name); bb_dump(fd, func, func->bbs); fprintf(fd, "}\n"); }