[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