feat(cbuild): 更新项目配置以支持HIR中间表示
- 统一包名格式化,添加空格对齐 - 将依赖项从ir和lir重命名为hir,移除lir注释 - 为ast2ir模块添加正确的包名称"scc_ast2ir" - 更新依赖引用路径指向新的HIR库结构 - 移除注释掉的ir2mcode和sccf2target依赖项 refactor(ast2ir): 迁移到HIR中间表示替换IR表示 - 更新头文件包含,使用hir_builder.h替代ir_builder.h - 修改上下文结构体,将scc_ir_builder_t替换为scc_hir_builder_t - 更新函数签名,将参数类型从scc_ir_*转换为scc_hir_* - 调整返回值类型,将scc_ir_value_ref_t和scc_ir_type_ref_t 分别替换为scc_hir_value_ref_t和scc_hir_type_ref_t - 重新排列头文件包含顺序以满足依赖关系
This commit is contained in:
62
src/main.c
62
src/main.c
@@ -4,11 +4,11 @@
|
||||
#include <scc_pproc.h>
|
||||
|
||||
#include <ast_dump.h>
|
||||
#include <ir_dump.h>
|
||||
#include <hir_dump.h>
|
||||
#include <scc_ast2ir.h>
|
||||
|
||||
#include <scc_ir2lir.h>
|
||||
#include <scc_lir_dump.h>
|
||||
// #include <scc_ir2lir.h>
|
||||
// #include <scc_lir_dump.h>
|
||||
// #include <scc_ir2mcode.h>
|
||||
// #include <sccf2pe.h>
|
||||
|
||||
@@ -85,7 +85,7 @@ int main(int argc, const char **argv, const char **envp) {
|
||||
.output_file = nullptr,
|
||||
.entry_point_symbol = nullptr,
|
||||
.emit_ast = false,
|
||||
.emit_ir = false,
|
||||
.emit_hir = false,
|
||||
.target_description = "x86_64-pc-windows-msvc",
|
||||
};
|
||||
scc_vec_init(config.include_paths);
|
||||
@@ -217,23 +217,23 @@ sstream_drop:
|
||||
|
||||
scc_ast2ir_ctx_t ast2ir_ctx;
|
||||
#include <target/scc_abi_win_x64_pc.h>
|
||||
scc_ir_cprog_t cprog;
|
||||
scc_ir_cprog_init(&cprog);
|
||||
scc_hir_cprog_t cprog;
|
||||
scc_hir_cprog_init(&cprog);
|
||||
scc_ast2ir_ctx_init(&ast2ir_ctx, &scc_ast_abi_impl, &cprog);
|
||||
scc_ast2ir_translation_unit(&ast2ir_ctx, translation_unit);
|
||||
scc_ast2ir_ctx_drop(&ast2ir_ctx);
|
||||
|
||||
if (config.emit_ir) {
|
||||
scc_ir_dump_ctx_t ir_dump_ctx;
|
||||
if (config.emit_hir) {
|
||||
scc_hir_dump_t ir_dump_ctx;
|
||||
scc_tree_dump_t tree_dump;
|
||||
if (fp == nullptr) {
|
||||
scc_tree_dump_init(&tree_dump, true);
|
||||
} else {
|
||||
scc_tree_dump_init(&tree_dump, false);
|
||||
}
|
||||
scc_ir_dump_ctx_init(&ir_dump_ctx, &tree_dump, &cprog);
|
||||
scc_hir_dump_ctx_init(&ir_dump_ctx, &tree_dump, &cprog);
|
||||
// scc_ir_dump_cprog(&ir_dump_ctx);
|
||||
scc_ir_dump_cprog_linear(&ir_dump_ctx);
|
||||
scc_hir_dump_cprog_linear(&ir_dump_ctx);
|
||||
|
||||
scc_tree_dump_flush(&tree_dump, tree_dump_output,
|
||||
fp == nullptr ? scc_stdout : fp);
|
||||
@@ -241,28 +241,28 @@ sstream_drop:
|
||||
return 0;
|
||||
}
|
||||
|
||||
scc_lir_builder_t lir_builder;
|
||||
scc_lir_module_t lir_module;
|
||||
scc_lir_module_init(&lir_module);
|
||||
scc_lir_builder_init(&lir_builder, &lir_module);
|
||||
scc_ir2lir(&lir_builder, &cprog);
|
||||
if (config.emit_lir) {
|
||||
scc_lir_dump_ctx_t lir_dump_ctx;
|
||||
scc_tree_dump_t tree_dump;
|
||||
if (fp == nullptr) {
|
||||
scc_tree_dump_init(&tree_dump, true);
|
||||
} else {
|
||||
scc_tree_dump_init(&tree_dump, false);
|
||||
}
|
||||
scc_lir_dump_init(&lir_dump_ctx, &tree_dump);
|
||||
// scc_ir_dump_cprog(&ir_dump_ctx);
|
||||
scc_lir_dump_module(&lir_dump_ctx, &lir_module);
|
||||
// scc_lir_builder_t lir_builder;
|
||||
// scc_lir_module_t lir_module;
|
||||
// scc_lir_module_init(&lir_module);
|
||||
// scc_lir_builder_init(&lir_builder, &lir_module);
|
||||
// scc_ir2lir(&lir_builder, &cprog);
|
||||
// if (config.emit_lir) {
|
||||
// scc_lir_dump_ctx_t lir_dump_ctx;
|
||||
// scc_tree_dump_t tree_dump;
|
||||
// if (fp == nullptr) {
|
||||
// scc_tree_dump_init(&tree_dump, true);
|
||||
// } else {
|
||||
// scc_tree_dump_init(&tree_dump, false);
|
||||
// }
|
||||
// scc_lir_dump_init(&lir_dump_ctx, &tree_dump);
|
||||
// // scc_ir_dump_cprog(&ir_dump_ctx);
|
||||
// scc_lir_dump_module(&lir_dump_ctx, &lir_module);
|
||||
|
||||
scc_tree_dump_flush(&tree_dump, tree_dump_output,
|
||||
fp == nullptr ? scc_stdout : fp);
|
||||
scc_tree_dump_drop(&tree_dump);
|
||||
return 0;
|
||||
}
|
||||
// scc_tree_dump_flush(&tree_dump, tree_dump_output,
|
||||
// fp == nullptr ? scc_stdout : fp);
|
||||
// scc_tree_dump_drop(&tree_dump);
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// scc_ir2mcode_ctx_t ir2mcode_ctx;
|
||||
// sccf_builder_t sccf_builder;
|
||||
|
||||
Reference in New Issue
Block a user