[LLVMdev] How to cast Value* to ConstantDataArray*

Richard Catlin richard.m.catlin at gmail.com
Sat Apr 20 17:23:46 PDT 2013


ConstantDataArray * cda = cast<ConstantDataArray>(v);
throws this error: Assertion failed: (isa<X>(Val) && "cast<Ty>() argument
of incompatible type!"), function cast, file
/Users/rcatlin1/lldb/llvm/include/llvm/Support/Casting.h, line 208

Thanks for the help.
Richard Catlin



On Sat, Apr 20, 2013 at 3:37 PM, Sean Silva <silvas at purdue.edu> wrote:

>
>
>
> On Sat, Apr 20, 2013 at 5:15 PM, Richard Catlin <
> richard.m.catlin at gmail.com> wrote:
>
>> I extended the LLVM Kaleidoscope example to support Strings. I added a
>> StringExprAST, which has the virtual Codegen method impl as follows:
>>
>> Value *StringExprAST::Codegen() {
>>   StringRef r(Val);
>>   return ConstantDataArray::getString(getGlobalContext(), r, false);
>> }
>>
>> I am trying to concatenate Strings and have a ConcatExprAST with its
>> Codegen method. Upon trying to access the data in the ConstantDataArray, I
>> need to cast the Value* back to a ConstantDataArray* in order to use the
>> getAsString() method.
>>
>> I tried:
>>
>> ConstantDataArray * cda = cast<ConstantDataArray>(v);
>>
>> where v is a Value*.  It does not work.
>>
> *How* does it not work? You need to give us more information. Also make
> sure that you have read <
> http://llvm.org/docs/ProgrammersManual.html#the-isa-cast-and-dyn-cast-templates
> >.
>
> -- Sean Silva
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130420/e92e662a/attachment.html>


More information about the llvm-dev mailing list