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

C++ llvn类型中类名后面的数字是多少?,c++,llvm,clang++,C++,Llvm,Clang++,我在LLVM pass by getFunctionType中获得了函数类型,当我打印它们时,函数类型包含如下内容:%class.xalanc_1_8::ReusableArenaBlock.10232* 前一部分是类名class.xalanc_1_8::ReusableArenaBlock,那么数字呢。其中一些包含多个数字。我想知道数字的用法。通常解析源代码语言的前端需要创建具有唯一名称的LLVM类型。大多数前端使用源代码中的类型名和其他字符串来构造IR类型的名称,但有时不能保证其唯一性。附加

我在LLVM pass by getFunctionType中获得了函数类型,当我打印它们时,函数类型包含如下内容:%class.xalanc_1_8::ReusableArenaBlock.10232*


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

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

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


这不是避免冲突的唯一方法。我自己的代码从源代码中添加行号,但在某些情况下,行号不适用于类型。

谢谢。我得到了它。还有一个问题:这是否意味着LLVM中使用C++语言中的同一类的类声明被视为不同类型,因为LLVM使用SSA?因此,C++可以将它们看作是同一类,但是LLVM不直接分析而不进行进一步的分析,不,它们是相同的,因为CLAN总是为同一类生成相同的名称。要使它正确工作是很挑剔的,但clang成功了。