[LLVMdev] Different signatures or smart casting?

Ksenia Dolgorukova der.spiegel.sieht.mich at gmail.com
Fri Apr 10 06:03:18 PDT 2015


Hello!
I linked two bitcode files like described below using LTO and find
they are linked fine instead of making an error.
----------
1.bc
----------
...
define i32 @main(i32 %argc, i8** %argv) #0 {
entry:
...
%call = call i32 @_Z1aj(i64 2)
...
}
declare i32 @_Z1aj(i64) #1
...

----------
2.bc
----------
...
define i32 @_Z1aj(i32 %b) #0 {
entry:
...
}
...

----------

In the first file function "_Z1aj" is declared as having i64 argument,
whereas in the second file the function "_Z1aj" is described as having
i32 argument!

Are function signatures different?
How does LLVM cast them?
Could it be a bug?

-- 
Best regards, Ksenia



More information about the llvm-dev mailing list