-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
问题和可能的解决方案, 以及解决方案可能面临的问题
- 如何防止 bb 的 prebbs / sucbbs 被非法修改
- 只允许 terminator set_prebbs / sucbbs (friend?), 用户只能通过修改 terminator 指令修改 prebbs / sucbbs; 同时给 bb 添加
optional<Instruction *> terminator成员, 防止重复设置- 如果要在插入 terminator 后删除/替换这条指令该怎么办?
- a) 不允许删除 terminator, 只允许修改
- b) 提供专用的 terminator 删除/替换 接口
- 如果要在插入 terminator 后删除/替换这条指令该怎么办?
- 只允许 terminator set_prebbs / sucbbs (friend?), 用户只能通过修改 terminator 指令修改 prebbs / sucbbs; 同时给 bb 添加
-
set_operand设为纯虚, 使用虚函数接口防止 inst 的内部状态被破坏 (类型检查, bb 的 prebbs sucbbs 等)- 可以在
Instruction给出一个默认实现
- 可以在
- 是否要把 inst 修改 bb 成员的位置统一起来, 目前插入 ilist 在 bb 的 create_inst 而插入 pre_bbs / suc_bbs 在 inst 的构造函数
以上问题要考虑到未来的具体使用场景
翻译过程中待处理的部分
- 修改ast,提供常量初始化接口
- ast FuncDefGlobal param提供name参数
- ast中AssignStmt是否要将var_name和idxs修改为LValExpr
这两部分在翻译过程中有相当大的代码重合
Metadata
Metadata
Assignees
Labels
No labels