[LLVMdev] How to place call(s) to functions found in other llvm modules ???
Mian M. Hamayun
mian-muhammad.hamayun at imag.fr
Thu Sep 1 06:04:49 PDT 2011
Hi Eli,
Yes, you were right. I was doing something like this ... (which doesn't
work :()
Function* gcd = inMod.getFunction("gcd"); // Get gcd function from the
input module
...
Function *F_GCD = Function::Create(FT, Function::ExternalLinkage,
"gcd", mod); // Add a prototype of the gcd function
...
Value *gcd_val = builder.CreateCall(gcd, args.begin(), args.end(),
"tmp"); // Add a call to the gcd function.
In fact we don't need to getFunction from the other module.
Just adding a prototype and calling this prototype is sufficient.
Like this ... (this works :))
Function *F_GCD = Function::Create(FT, Function::ExternalLinkage,
"gcd", mod); // Add a prototype of the gcd function
...
Value *gcd_val = builder.CreateCall(F_GCD, args.begin(), args.end(),
"tmp"); // Add a call to the gcd function.
Thanks for you help,
Have a Nice Day !!!
Hamayun
On 08/31/2011 08:11 PM, Eli Friedman wrote:
> On Wed, Aug 31, 2011 at 10:54 AM, Mian M. Hamayun
> <mian-muhammad.hamayun at imag.fr> wrote:
>> Hi,
>>
>> I tried this as well, using the following line to add function declaration
>> to the caller module.
>>
>> Function::Create(FT, Function::ExternalLinkage, "gcd", mod);
>>
>> Where "FT" is the same as before. And the output produced by the
>> PrintModulePass becomes:
>>
>> ; ModuleID = 'GCDMain'
>>
>> declare i32 @gcd(i32, i32)
>>
>> define i32 @main() {
>> EntryBlock:
>> %tmp = call i32 @gcd(i32 30, i32 50)
>> ret i32 %tmp
>> }
>>
>> But it still fails to WriteBitcodeToFile, and produces the same error as
>> before.
>
> If you're still getting the "Referencing function in another module"
> error, the call isn't referring to a declaration in the same module.
>
> -Eli
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3781 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110901/25a2f2cc/attachment.bin>
More information about the llvm-dev
mailing list