[llvm-commits] [PATCH] Suppress "user-defined return type in extern C" warning under Clang

Matt Johnson johnso87 at illinois.edu
Tue Feb 14 13:13:18 PST 2012



On 02/14/2012 02:56 PM, Aaron Ballman wrote:
> On Tue, Feb 14, 2012 at 2:50 PM, Matt Johnson<johnso87 at illinois.edu>  wrote:
>> On 02/14/2012 02:42 PM, Aaron Ballman wrote:
>>> On Tue, Feb 14, 2012 at 2:28 PM, David Blaikie<dblaikie at gmail.com>    wrote:
>>>> [+aaron who added this warning&    was already looking into the fix for
>>>> LLVM]
>>>>
>>>>
>>>> Perhaps you've got the right fix - but at least Aaron won't keep
>>>> working on it redundantly. It looks reasonable to me.
>>> The patch looks like it will work the same for clang as it does for
>>> MSVC, which is good.  But I'm a bit concerned as to why we have an
>>> extern "C" function that returns a type that can't be represented in
>>> C.  Is that the problem we should be solving instead?
>> My understanding is that we're declaring these functions as 'extern "C"' not
>> to actually call them from C code, but just to avoid mangling.  The VS2010
>> docs (http://msdn.microsoft.com/en-us/library/1e02627y.aspx) state that if
>> the definition and all calls are *actually* C++ code, doing this is legal.
>>   I'm far from an authority on the matter, but it sounds reasonable.
> That certainly is true, and is reasonable.  :-)  I'm just trying to
> figure out the "why" part of it.  Why do we not want mangled names in
> this situation?  If it makes sense, which I'm betting it does, then
> your fix is great.  If we want non-mangled names for some sort of
> interoperability, then I think we may want to do something other than
> suppress the warning.
I'm guessing it's just to make it reasonable to export some common 
functions to interpreted applications without depending on libffi or 
requiring DynamicLibrary::SearchForAddressOfSymbol() to implement 
mangling or depend on libsupc++, libc++abi, or similar (for no obvious 
benefit other than whatever intrinsic ugliness of 'extern "C"'.  lle_X 
seems like a reasonable prefix which doesn't conflict with _Z or other 
mangling prefixes I'm aware of.
>
> ~Aaron



More information about the llvm-commits mailing list