llvn类型中class名字后面的数字是多少?

What is the number after the class name in llvn type?

我通过 getFunctionType() 获得了 LLVM 中的函数类型,当我打印它们时,函数类型包含如下内容:(%"class.xalanc_1_8::ReusableArenaBlock.10232"*).

前半部分是class名字class.xalanc_1_8::ReusableArenaBlock,那数字呢。其中一些包含多个数字。我想知道这些数字的用法。

前端(通常解析源代码语言)需要创建具有唯一名称的 LLVM 类型。大多数前端使用源代码中的类型名称和其他字符串来构造 IR 类型的名称,但有时这不是(保证是)唯一的。附加一个数字是实现唯一性的正常方法。

事实上,如果您创建某些类型或许多其他东西,添加一个数字是 LLVM 本身所做的,除了您请求的名称已被占用之外没有错误。

这不是避免冲突的唯一方法。在某些情况下,我自己的代码会添加源代码中的行号(不过类型除外)。