[libcxx] r177297 - Removed raw references to __APPLE__; now just check to see if it is defined.
Marshall Clow
mclow.lists at gmail.com
Mon Mar 18 15:40:30 PDT 2013
On Mar 18, 2013, at 3:30 PM, David Blaikie <dblaikie at gmail.com> wrote:
> On Mon, Mar 18, 2013 at 10:45 AM, Marshall Clow <mclow at qualcomm.com> wrote:
>> Author: marshall
>> Date: Mon Mar 18 12:45:34 2013
>> New Revision: 177297
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=177297&view=rev
>> Log:
>> Removed raw references to __APPLE__; now just check to see if it is defined.
>>
>> Modified:
>> libcxx/trunk/include/__locale
>> libcxx/trunk/include/iterator
>> libcxx/trunk/include/locale
>> libcxx/trunk/src/chrono.cpp
>> libcxx/trunk/src/exception.cpp
>> libcxx/trunk/src/new.cpp
>> libcxx/trunk/src/stdexcept.cpp
>> libcxx/trunk/src/typeinfo.cpp
> Strangely enough, this seems to have broken the Linux self hosting build as follows:
>
> src/projects/libcxx/src/typeinfo.cpp:17:28: error: __has_include must
> be used within a preprocessing directive
> #elif defined(LIBCXXRT) || __has_include(<cxxabi.h>)
> ^
> src/projects/libcxx/src/typeinfo.cpp:17:28: error: invalid token at
> start of a preprocessor expression
> <scratch space>:18:1: note: expanded from here
> 0
> ^
> 2 errors generated.
>
> Experimenting a bit this compiles without error:
> #if FOO
> #elif __has_include(<foo>)
> #endif
>
> But if you change the #if to #ifdef, it fails with the same error as
> above... probably a Clang bug, I assume.
Testing outside of libc++ shows:
#ifdef FOO
#define BAR 1
#elif __has_include(<foo>)
#define BAR 2
#endif
int main()
{
return 0;
}
fails to compile, but:
#if FOO
#define BAR 1
#elif __has_include(<foo>)
#define BAR 2
#endif
int main()
{
return 0;
}
succeeds.
-- Marshall
-- Marshall
Marshall Clow Idio Software <mailto:mclow.lists at gmail.com>
A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait).
-- Yu Suzuki
More information about the cfe-commits
mailing list