[LLVMdev] casting Constant * to value *?
Jonathan Roelofs
jonathan at codesourcery.com
Wed Mar 18 11:02:59 PDT 2015
Alex,
Seeing your questions go by on the list, ISTM that you are focusing a
lot on the CPPBackend, which tends to generate ugly code generators, and
isn't particularly the best example to be following unless you're really
stuck and the doxygen docs aren't helping... has anyone pointed you to
the Kaleidoscope tutorial? http://llvm.org/docs/tutorial/LangImpl3.html
Cheers,
Jon
On 3/18/15 11:35 AM, Alexander Poddey wrote:
> John, you are right.
> I 'browsed' the doxygen's inheritance diagram.
> Shouldn't I then be able to cast Constant * to Value*?
>
> Plugging the retrieved Constant* (from ConstantExpr::getGetElementPtr)
> into Instruction->setOperand compiles, but gives me an assertion failure at
> runtime.
> I have no access to the code at the moment. I will gather more information
> possibly tomorrow.
>
> Thanks
> Alex
>
>
>
>
> John Criswell wrote:
>
>> On 3/17/15 8:40 PM, Alexander Poddey wrote:
>>> Hi all,
>>>
>>> extracting datafields of globals, the API code ends up in a Constant *
>>>
>>>
>>> Constant* const_ptr_103 = ConstantExpr::getGetElementPtr(gvar_struct_foo,
>>> const_ptr_103_indices);
>>>
>>> it can be used to initialize e.g. a new instruction like:
>>>
>>> StoreInst* void_119 = new StoreInst(const_float_102, const_ptr_103,
>>> false, label_entry_113);
>>>
>>>
>>> But how about replacing the operand of an already existing instruction
>>> using a Constant *?
>>>
>>> Instruction->setOperand(1,__needs_a_value*_here__);
>>
>> If you look at the inheritance tree, you'll see that an llvm::Constant
>> is a subclass of llvm::Value. Therefore, you can use an llvm::Constant
>> anywhere in which an llvm::Value is needed.
>>
>> To look at the inheritance tree, look at the LLVM doxygen documentation.
>>
>> Regards,
>>
>> John Criswell
>>>
>>>
>>> Thx
>>> Alex
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
--
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded
More information about the llvm-dev
mailing list