我在LLVM中通过getFunctionType()获得了函数类型,当我打印它们时,函数类型包含类似以下内容:(%"class.xalanc_1_8::ReusableArenaBlock.10232"*)
。
[前一部分是类名class.xalanc_1_8::ReusableArenaBlock
,数字呢?其中一些包含多个数字。我想知道数字的用法。
前端(通常解析源代码语言)需要创建具有唯一名称的LLVM类型。大多数前端使用类型名称和源代码中的其他字符串来构造IR类型的名称,但有时(并非唯一)是唯一的。追加数字是获得唯一性的正常方法。
实际上,如果您创建某些类型或许多其他内容,则LLVM会自动添加数字,没有错误,只是您请求的名称已被使用。
这不是避免冲突的唯一方法。在某些情况下,我自己的代码会从源代码中添加行号(尽管不适用于类型)。