llvm-获取指令的用户

llvm-获取指令的用户,llvm,llvm-clang,llvm-ir,llvm-gcc,llvm-c++-api,Llvm,Llvm Clang,Llvm Ir,Llvm Gcc,Llvm C++ Api,我试图获取alloca指令的用户(基本上获取变量的用户)。我正在使用以下代码执行此操作: virtual bool runOnModule(Module &M) { for(Module::iterator F= M.begin(), E = M.end(); F != E; ++F) // iterating over functions in a module { for (Function::iterator FI = F-&

我试图获取alloca指令的用户(基本上获取变量的用户)。我正在使用以下代码执行此操作:

virtual bool runOnModule(Module &M)
{
        for(Module::iterator F= M.begin(), E = M.end(); F != E; ++F) // iterating over functions in a module
        {
            for (Function::iterator FI = F->begin(), E = F->end(); FI != E; ++FI)    // iterating over BB in a function
            {
                for (BasicBlock::iterator I = FI->begin(), E = FI->end(); I != E; ++I) // iterating over instructions in the BB
                {
                    Value* v = cast<Value>(I);
                    v->user_begin ();
                }
            }
        }
        return false;
    }

有谁能告诉我为什么会发生这种情况,并为我在这里试图做的事情提出一个可能的解决方案(让用户使用一个变量)

我认为您可以直接使用user\u begin,而无需将指令转换为值。 就像:

I->user_begin()

可能是您使用的LLVM的旧版本没有这个API吗?正如@Alexenisov所写的那样。你们使用的是什么版本的LLVM?据我记忆所及,LLVM 3.4已经过时了。最近的版本是7.0
I->user_begin()