forked from OSchip/llvm-project
Use the standard values for the __cplusplus macro, even when in GNU mode. GCC
dropped its prior behavior of always defining __cplusplus to 1 in GNU mode in version 4.7. llvm-svn: 156113
This commit is contained in:
parent
d4cf35d775
commit
d106a98fe9
|
@ -288,20 +288,16 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
|
|||
else if (!LangOpts.GNUMode && LangOpts.Digraphs)
|
||||
Builder.defineMacro("__STDC_VERSION__", "199409L");
|
||||
} else {
|
||||
if (LangOpts.GNUMode)
|
||||
Builder.defineMacro("__cplusplus");
|
||||
else {
|
||||
// C++0x [cpp.predefined]p1:
|
||||
// The name_ _cplusplus is defined to the value 201103L when compiling a
|
||||
// C++ translation unit.
|
||||
if (LangOpts.CPlusPlus0x)
|
||||
Builder.defineMacro("__cplusplus", "201103L");
|
||||
// C++03 [cpp.predefined]p1:
|
||||
// The name_ _cplusplus is defined to the value 199711L when compiling a
|
||||
// C++ translation unit.
|
||||
else
|
||||
Builder.defineMacro("__cplusplus", "199711L");
|
||||
}
|
||||
// C++11 [cpp.predefined]p1:
|
||||
// The name __cplusplus is defined to the value 201103L when compiling a
|
||||
// C++ translation unit.
|
||||
if (LangOpts.CPlusPlus0x)
|
||||
Builder.defineMacro("__cplusplus", "201103L");
|
||||
// C++03 [cpp.predefined]p1:
|
||||
// The name __cplusplus is defined to the value 199711L when compiling a
|
||||
// C++ translation unit.
|
||||
else
|
||||
Builder.defineMacro("__cplusplus", "199711L");
|
||||
}
|
||||
|
||||
if (LangOpts.ObjC1)
|
||||
|
|
|
@ -62,12 +62,21 @@
|
|||
//
|
||||
// RUN: %clang_cc1 -ffreestanding -E -dM < /dev/null | FileCheck -check-prefix FREESTANDING %s
|
||||
// FREESTANDING:#define __STDC_HOSTED__ 0
|
||||
//
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -x c++ -std=gnu++11 -E -dM < /dev/null | FileCheck -check-prefix GXX11 %s
|
||||
//
|
||||
// GXX11:#define __GNUG__
|
||||
// GXX11:#define __GXX_WEAK__ 1
|
||||
// GXX11:#define __cplusplus 201103L
|
||||
// GXX11:#define __private_extern__ extern
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -x c++ -std=gnu++98 -E -dM < /dev/null | FileCheck -check-prefix GXX98 %s
|
||||
//
|
||||
// GXX98:#define __GNUG__
|
||||
// GXX98:#define __GXX_WEAK__ 1
|
||||
// GXX98:#define __cplusplus 1
|
||||
// GXX98:#define __cplusplus 199711L
|
||||
// GXX98:#define __private_extern__ extern
|
||||
//
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue