C++ llvm无法迭代[3 x i8]

C++ llvm无法迭代[3 x i8],c++,llvm,C++,Llvm,我试图“解析”LLVM IR的一部分。更确切地说,从 @.str = private unnamed_addr constant [3 x i8] c"DS\00", section "llvm.metadata" 我想得到“DS”。它是整个字节码中唯一一个我可以得到它的地方。我有: ... Value *VV = cast<Value>(LD100->getOperand(1)->getOperand(0)); errs()<<"\n VV "<&

我试图“解析”LLVM IR的一部分。更确切地说,从

@.str = private unnamed_addr constant [3 x i8] c"DS\00", section "llvm.metadata"
我想得到“DS”。它是整个字节码中唯一一个我可以得到它的地方。我有:

...
Value *VV = cast<Value>(LD100->getOperand(1)->getOperand(0));
errs()<<"\n VV  "<<*(VV)<<"\n";
RESULT : VV  @.str = private unnamed_addr constant [3 x i8] c"DS\00", section "llvm.metadata"

if(VV->getValueID() == Value::GlobalVariableVal){
    GlobalVariable* FD = cast<GlobalVariable>(VV);
    Value *VVV = cast<Value>(FD->getOperand(0));
    errs()<<"\n VVV  "<<*(VVV)<<"\n";
    RESULT :  VVV  [3 x i8] c"DS\00"

    if(VVV->getValueID() == Value::ConstantDataArrayVal){
        ConstantArray *caa = (ConstantArray *)VVV;
        errs()<<"\n "<<(caa->getNumOperands())<<"\n";
        errs()<<"\n "<<*(caa->getType())<<"\n";
        RESULT :  0
                  [3 x i8]
    }
。。。
Value*VV=cast(LD100->getOperand(1)->getOperand(0));

errs()通过将caa转换为
ConstantDataArray
,然后使用
getAsString()
来解决这个问题,它精确地给出了“DS”