[cfe-dev] Odd piece of Clang 2.1 behaviour

Dallman, John john.dallman at siemens.com
Wed Oct 12 04:08:00 PDT 2011


Jean-Daniel Dupas wrote:

> The problem is that I don't think Apple support new features in GCC.

This is entirely survivable. The software has to be portable across a
lot of platforms.

> Shouldn't be required, as this [-stdlib=libstdc++] is the default.

Making it explicit simply ensures it gets into documentation, and that
we don't get surprised when the default changes.

> /Developer/usr/bin/gcc --version
> i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc.
> build 5658) (LLVM build 2336.1.00)

llvm-gcc is the default gcc at Xcode 4.1, but that also has a non-LLVM
gcc at /Developer/usr/bin/gcc-4.2. The information I have is that isn't
present at Xcode 4.2.

thanks very much,

--
John Dallman

-----Original Message-----
From: Jean-Daniel Dupas [mailto:devlists at shadowlab.org]
Sent: 12 October 2011 11:57
To: Dallman, John
Cc: clang-dev Developers
Subject: Re: [cfe-dev] Odd piece of Clang 2.1 behaviour


Le 12 oct. 2011 à 12:04, Dallman, John a écrit :

> Eli Friedman wrote:
>>> It's a bug; IIRC, it's already fixed in clang trunk.
>
> Chris Lattner wrote:
>
>> For what it's worth, Xcode 4.2 includes a vastly updated version
>> of Clang (branded "Apple LLVM Compiler 3.0" instead of "2.1" by
>> the apple marketing people).  It recently came out of Beta.  I
>> recommend upgrading to it if you can.
>
> That's a bit interesting. The libraries I produce are a product in their own
> right, used in many different applications. It is going to be important that
> the Clang-built versions be usable for development on Mac OS X 10.6 as well
> as 10.7, and with GCC as well as Clang on 10.7.

The problem is that I don't think Apple support new features in GCC.
For what I know, ARC is a clang only feature for example (but it shouldn't be an issue if you're using only C and C++).
An other example is thread local storage (__thread keyword), which is available using clang on 10.7, but not using GCC.

> If you trust Clang, this is no problem for the libraries I build from C,
> and for the ones built from C++, it only requires using -stdlib=libstdc++.

Shouldn't be required, as this is the default.

> But I have customers who aren't switching to Clang immediately, because
> their code (which requires "permissive" with GCC) won't compile with Clang,
> until they do some extra work, and they are nervous about Clang. So staying
> on a Clang that definitely has a corresponding conventional GCC is going
> to be good for their peace of mind.
>
> And as best I know, Xcode 4.2 removes the conventional GCC, and only provides
> an LLVM-based GCC. Is that correct?

Yep. using the latest Xcode 4.2 version, I get:

/Developer/usr/bin/gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


-- Jean-Daniel








More information about the cfe-dev mailing list