[LLVMdev] copy value of a global's data field to another global
Alexander Poddey
alexander.poddey at gmx.net
Sun May 17 21:39:39 PDT 2015
getInitializer returns the complete initializer of the global.
My globals are complex nested structs, from which I want to extract e.g. one
double datafield.
Example:
>From a struct Stuct having double,array(3xint),float fields, I could extract
the second int value using the index sequence 0,1,1 with getGetElementPtr.
This gives me a constantPointer, but I would need to get a constInt...
Alex
David Blaikie wrote:
> On Sat, May 16, 2015 at 10:28 PM, Alexander Poddey
> <alexander.poddey at gmx.net
>> wrote:
>
>> Hi all,
>>
>> I can get access to the data stored in globals as follows:
>>
>> GlobalVariable* pGvarAct=_set_a_valid_global_;
>> const_ptr_indicesVec=_the_indexes_
>>
>> llvm::Constant* pConst;
>> pConst=ConstantExpr::getGetElementPtr(pGvarAct, const_ptr_indicesVec);
>>
>> and e.g. use this to repalece an argumrnt of an instruction like:
>>
>> I->setOperand(someArgumentIndex,pConst);
>>
>> However, getGetElementPtr returns a pointerType, which holds the actual
>> type
>> as sub_type.
>> This is a problem when I want to use the data from one global for the
>> initializer of another
>>
>> pGvar->setInitializer(__NeedsAFloatTy_here__); //not pointerTy
>>
>> So what I'm trying to do is copy some data-fields of one global to
>> another. I know the 'index-trace' used in getGetElementPtr, but I need
>> the actual type, not 'covered' by a pointerType.
>>
>
> Perhaps you want getInitializer on the other GlobalVariable?
>
>
>>
>>
>> Thank You!
>> Alexander
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
More information about the llvm-dev
mailing list