前面忘了后面忘了 (@wwwtom) 在 llvm Value/Use/User内存布局随笔 中发帖
本来是想写道个人博客里面的,但还没整好。
最近在手搓编译器(照着llvm抄)。
手搓了一套IR,当然也是SSA形式(继续抄llvm)。
所以就需要维护def-use/use-def链。
我的设计是这样子的:
enum ClassID{
BasicBlock,
Instruction,
...
};
struct Value{
char* name;
ClassID id;
Type* ty;
Use* use_list;
};
struct Use{
Value* user;
Use* next;
};
struct Instruction{
Value base;
Value* arr[];
};
以这段IR为例:
%add = add %a, %b
%mul = mul %add, %b ...