首页 > 解决方案 > 如何检测 LLVM 中的 const 修饰符?

问题描述

我意识到 LLVM 中的常量与使用 c/c++ 的 const 修饰符的变量不同。

我有什么办法可以将 LLVM 中带有 const 修饰符的 C/C++ 变量与没有的 C/C++ 变量区分开来?(所有变量,包括全局变量)

标签: c++cllvm

解决方案


LLVM IR 并非旨在表示源类型系统,它是一种中间表示,包含对编译有用的类型信息,它类似于源类型,但不需要捕获所有方面。如果您想要类型系统,则必须查看调试信息,这些信息不需要存在,但如果存在,它至少旨在包含您想要的数据。

您可以开始查看DIType。请注意,此代码没有很好的文档记录。

不过,全局变量有一个方便的方法isConstant()


推荐阅读