前面忘了后面忘了 (@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 ...