[LLVMdev] How to place call(s) to functions found in other llvm modules ???

Mian M. Hamayun mian-muhammad.hamayun at imag.fr
Wed Aug 31 10:54:04 PDT 2011


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.

I guess I might be missing some attribute, like "extern" in C ...

Any Comments?

Thanks again for your help,
Hamayun

On 08/31/2011 07:18 PM, Eli Friedman wrote:
> On Wed, Aug 31, 2011 at 10:00 AM, Mian M. Hamayun
> <mian-muhammad.hamayun at imag.fr>  wrote:
>> Hello Everyone,
>>
>> I am trying to create two modules in LLVM, where first module contains the
>> definition of a function, gcd in this example and another module contains a
>> call to this function.
>
> You can't reference a global in one module in another module.  Either
> stick with one module, or add a declaration of the function in the
> second module and call that.
>
> -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/20110831/88b5b64c/attachment.bin>


More information about the llvm-dev mailing list