前文 方舟编译器学习笔记20 对比了MAPLE IR和LLVM IR的整体结构,通过对比二者可知,二者都有module这个概念,而且其内涵也是一致的,都是对应着一个compilation unit。在module之下都是一些全局的声明和函数声明,这部分是一个module的主要内容。除了这些之外,一个IR文件(通常就对应着一个module)还往往会带着一些module层面的信息。
MAPLE IR的module层面的信息在MapleIRDesign.md中有专门的一栏“Module Declaration”,里面包含了module层面包含的所有信息,具体如下:
LLVM IR中Module层面的信息并没有单独拿出来做一类,而是在文档LLVM Language Reference Manual 中的High Level Structure里混在一起介绍的,所以我根据自己的经验选了一些:
1、Source Filename
source_filename = "/path/to/source.c"
2、Target Triple
target triple = "x86_64-apple-macosx10.7.0"