[LLVMdev] How to create Global Variables using LLVM API?

subramanyam subbu.pur at gmail.com
Tue May 11 22:45:23 PDT 2010


Thanks. It works. 
Actually, the signature of the constructor given in the online documentation
is different from the actual source code.

Nick Lewycky wrote:
> 
> subramanyam wrote:
>>
>> I am new to LLVM API. and I am experimenting with it.
>> I want to create Global Variables in a module.
>> I am able to create local variables using IRBuilder class. I tried using
>> GlobalVariable class to create global variables.
>> but it doesn't work. my code looks like this:
>>
>> Module* mod = new Module("test", getGlobalContext());
>> Constant* c = mod->getOrInsertFunction("main",
>> IntegerType::get(getGlobalContext(), 32), NULL);
>> Function* main = cast<Function>  (c);
>> main->setCallingConv(CallingConv::C);
>> Twine s("foo");
>> StringRef s1("foo");
>> Constant *cons = ConstantArray::get(getGlobalContext(),s1, true);
>> GlobalVariable val(*mod, (Type*)
>> ArrayType::get(Type::getInt8Ty(getGlobalContext()), 4),
>> true,GlobalValue::ExternalLinkage, cons, s);
> 
> Firstly, don't cast to Type*. You need to #include "llvm/DerivedTypes.h" 
> instead. But that's not your bug.
> 
> Don't allocate GlobalVariable val on the stack. You need to 'new' it, 
> ala. 'GlobalVariable *val = new GlobalVariable(...);'
> 
> I haven't tried running your code, but give that a shot!
> 
> Nick
> 
> 
> 
>>
>>
>> Application stops running after reaching the last line. can somebody help
>> me
>> out here?
>>
>>
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 

-- 
View this message in context: http://old.nabble.com/How-to-create-Global-Variables-using-LLVM-API--tp28519938p28532205.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list