feat(ir2mcode): 添加IR到机器码转换功能并修复函数命名
添加了完整的scc_ir2mcode实现,将MIR指令转换为机器码, 同时修复了头文件中的函数命名错误(scc_mir2sccf改为scc_ir2sccf)。 BREAKING CHANGE: 函数名从scc_mir2sccf更改为scc_ir2sccf fix(vec): 修复向量循环和内存释放问题 修改了scc_vec_foreach宏使用+= 1避免潜在的编译器警告, 并添加了空指针检查以防止重复释放内存导致的崩溃。 refactor(hashtable): 优化哈希表接口设计 将scc_hashtable_get参数改为const类型,提供更好的只读访问安全性。 test: 添加break/continue和goto语句测试用例 新增18_break_continue.c和19_goto.c测试用例, 并对齐expect.toml文件格式以便于维护。
This commit is contained in:
@@ -89,7 +89,7 @@ typedef size_t usize;
|
||||
#define scc_vec_size(vec) ((vec).size)
|
||||
#define scc_vec_cap(vec) ((vec).cap)
|
||||
#define scc_vec_foreach(vec, idx) \
|
||||
for (usize idx = 0; idx < scc_vec_size(vec); ++idx)
|
||||
for (usize idx = 0; idx < scc_vec_size(vec); idx += 1)
|
||||
|
||||
/**
|
||||
* @def scc_vec_push(vec, value)
|
||||
@@ -146,6 +146,8 @@ typedef size_t usize;
|
||||
*/
|
||||
#define scc_vec_free(vec) \
|
||||
do { \
|
||||
if ((vec).data == nullptr) \
|
||||
break; \
|
||||
__scc_vec_free((vec).data); \
|
||||
(vec).data = nullptr; \
|
||||
(vec).size = (vec).cap = 0; \
|
||||
|
||||
Reference in New Issue
Block a user