我擴展了LLVM Kaleidoscope示例以支持字符串。我添加了一個StringExprAST,它具有虛擬代碼生成方法IMPL如下:如何在LLVM中將值*轉換爲ConstantDataArray *
Value *StringExprAST::Codegen() {
StringRef r(Val);
return ConstantDataArray::getString(getGlobalContext(), r, false);
}
我試圖連接字符串,並與它的代碼生成方法ConcatExprAST。在嘗試訪問ConstantDataArray中的數據時,爲了使用getAsString()方法,我需要將Value *轉換回ConstantDataArray *。
我該怎麼做?
感謝您的任何幫助。
不是'cast(v)'工作嗎? –
Oak
2013-04-20 20:10:53
if(ConstantDataArray * cda = dyn_cast(v)){ StringRef r = cda-> getAsString(); –
2013-04-20 21:45:39
ConstantDataArray * cda = cast(v);拋出此錯誤:斷言失敗:(isa (Val)&&「cast ()argument of incompatible type!」),function cast,file /Users/rcatlin1/lldb/llvm/include/llvm/Support/Casting.h,第208行。 –
2013-04-20 22:03:50