[LLVMdev] How to cast Value* to ConstantDataArray*

Richard Catlin richard.m.catlin at gmail.com
Thu Apr 25 11:38:17 PDT 2013


cast<ConstantDataArray>(v) does work. The problem turned out to be my input
data. Thanks for your help.


On Sat, Apr 20, 2013 at 5:23 PM, Richard Catlin
<richard.m.catlin at gmail.com>wrote:

> 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/20130425/08f85855/attachment.html>


More information about the llvm-dev mailing list