[cfe-commits] r101450 - in /cfe/trunk: lib/Frontend/InitPreprocessor.cpp test/Preprocessor/init.c
Chris Lattner
clattner at apple.com
Fri Apr 16 11:12:37 PDT 2010
On Apr 15, 2010, at 11:31 PM, Douglas Gregor wrote:
> Author: dgregor
> Date: Fri Apr 16 01:31:05 2010
> New Revision: 101450
>
> URL: http://llvm.org/viewvc/llvm-project?rev=101450&view=rev
> Log:
> Only predefine the macro _GNU_SOURCE in C++ mode when we're on a
> platform that typically uses glibc. Fixes a Boost.Thread compilation
> failure.
Hey Doug,
Should this be sunk into the Targets.cpp file? It seems very similar to __i386__ and such. Switching on triple seems weird.
-Chris
>
> Modified:
> cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> cfe/trunk/test/Preprocessor/init.c
>
> Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=101450&r1=101449&r2=101450&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Fri Apr 16 01:31:05 2010
> @@ -294,8 +294,30 @@
> // C++ translation unit.
> Builder.defineMacro("__cplusplus", "199711L");
> Builder.defineMacro("__private_extern__", "extern");
> - // Ugly hack to work with GNU libstdc++.
> - Builder.defineMacro("_GNU_SOURCE");
> +
> + // Define _GNU_SOURCE on platforms where we expect to use glibc.
> + switch (TI.getTriple().getOS()) {
> + case llvm::Triple::Cygwin:
> + case llvm::Triple::MinGW64:
> + case llvm::Triple::MinGW32:
> + case llvm::Triple::Linux:
> + case llvm::Triple::Solaris:
> + case llvm::Triple::AuroraUX:
> + Builder.defineMacro("_GNU_SOURCE");
> + break;
> +
> + case llvm::Triple::Darwin:
> + case llvm::Triple::DragonFly:
> + case llvm::Triple::FreeBSD:
> + case llvm::Triple::UnknownOS:
> + case llvm::Triple::Lv2:
> + case llvm::Triple::NetBSD:
> + case llvm::Triple::OpenBSD:
> + case llvm::Triple::Psp:
> + case llvm::Triple::Win32:
> + case llvm::Triple::Haiku:
> + break;
> + }
> }
>
> if (LangOpts.Microsoft) {
>
> Modified: cfe/trunk/test/Preprocessor/init.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/init.c?rev=101450&r1=101449&r2=101450&view=diff
> ==============================================================================
> --- cfe/trunk/test/Preprocessor/init.c (original)
> +++ cfe/trunk/test/Preprocessor/init.c Fri Apr 16 01:31:05 2010
> @@ -11,7 +11,6 @@
> //
> // RUN: %clang_cc1 -x c++ -std=c++0x -E -dM < /dev/null | FileCheck -check-prefix CXX0X %s
> //
> -// CXX0X:#define _GNU_SOURCE 1
> // CXX0X:#define __DEPRECATED 1
> // CXX0X:#define __GNUG__
> // CXX0X:#define __GXX_EXPERIMENTAL_CXX0X__ 1
> @@ -22,7 +21,6 @@
> //
> // RUN: %clang_cc1 -x c++ -std=c++98 -E -dM < /dev/null | FileCheck -check-prefix CXX98 %s
> //
> -// CXX98:#define _GNU_SOURCE 1
> // CXX98:#define __DEPRECATED 1
> // CXX98:#define __GNUG__
> // CXX98:#define __GXX_WEAK__ 1
> @@ -58,7 +56,6 @@
> //
> // RUN: %clang_cc1 -x c++ -std=gnu++98 -E -dM < /dev/null | FileCheck -check-prefix GXX98 %s
> //
> -// GXX98:#define _GNU_SOURCE 1
> // GXX98:#define __DEPRECATED 1
> // GXX98:#define __GNUG__
> // GXX98:#define __GXX_WEAK__ 1
> @@ -1028,3 +1025,6 @@
> // X86_64:#define __x86_64 1
> // X86_64:#define __x86_64__ 1
> //
> +// RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -E -dM < /dev/null | FileCheck -check-prefix GNUSOURCE %s
> +// GNUSOURCE:#define _GNU_SOURCE 1
> +//
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list