[llvm-dev] A bug-report too difficult to make
Vladimir Vissoultchev via llvm-dev
llvm-dev at lists.llvm.org
Wed Jul 11 06:36:01 PDT 2018
Hi,
I think I missed the root cause of the problem the previous time. Consider your sample code with a small tweak:
extern "C" {
void LLVMInitializeInstCombine(int);
}
char *LLVMInitializeInstCombine(int) { return 0; }
This will bomb out with error C2556: 'char *LLVMInitializeInstCombine(int)': overloaded function differs only by return type from 'void LLVMInitializeInstCombine(int)' in MSVC
But when you "tweak" the same way LLVMInitializeInstCombine in InstructionCombining.cpp the LLVMInstCombine project compiles w/ no error.
So the root cause here seems to be that the .h file with the extern "C" declaration of LLVMInitializeInstCombine is not included in InstructionCombining.cpp source, so a mismatch between declaration vs definition is possible and is actually happening.
My previous fix works but probably including Initialization.h would be better altogether.
cheers,
</wqw>
From: George Burgess IV [mailto:george.burgess.iv at gmail.com]
Sent: Wednesday, July 11, 2018 1:56 AM
To: wqweto at gmail.com
Cc: llvm-dev <llvm-dev at lists.llvm.org>
Subject: Re: [llvm-dev] A bug-report too difficult to make
Hi,
It looks like there's an `extern "C"` declaration in the corresponding header file <https://github.com/llvm-mirror/llvm/blob/master/include/llvm-c/Initialization.h#L39> , which appears to be sufficient <https://godbolt.org/g/UCZ3qo> . All of my attempts to grep for `LLVMInitializeInstCombine` in my build directory are leaving me with unmangled symbols, though I can't say the same for `LLVMInitializeAggressiveInstCombiner`.
r336736 is an attempt to fix `LLVMInitializeAggressiveInstCombiner`. If I missed something, please let me know. (and if you're still seeing a problem with `LLVMInitializeInstCombine`, more details about your setup/etc. would be appreciated.) :)
Thanks,
George
On Tue, Jul 10, 2018 at 7:23 AM Vladimir Vissoultchev via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > wrote:
Hi all,
I just found out that there is an extern "C" missing on the LLVMInitializeInstCombine function definition somewhere around this line:
https://github.com/llvm-mirror/llvm/blob/master/lib/Transforms/InstCombine/InstructionCombining.cpp#L3365
As a result the function name gets mangled in the .lib file and is not accessible from LLVM C API.
cheers,
</wqw>
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180711/5cb7307a/attachment.html>
More information about the llvm-dev
mailing list