迭代模块中的所有结构

yah*_*ahe 2 c++ types type-systems llvm llvm-ir

我正在编写 ModulePass,我需要分析给定模块中定义的每个结构。

我知道在 ValueSymbolTable 中插入了带有名称的标识结构,但是我如何遍历所有其他结构(没有名称和文字结构标识)?

小智 6

正确的做法是:

#include "llvm/IR/TypeFinder.h"

llvm::TypeFinder StructTypes;
StructTypes.run(M, true);

for (auto *STy : StructTypes)
  STy->dump();
Run Code Online (Sandbox Code Playgroud)

您不应使用任何未发布标头的私有/不透明类型(如 LLVMContextImpl)。