diff options
Diffstat (limited to 'lib/Frontend/InitPreprocessor.cpp')
| -rw-r--r-- | lib/Frontend/InitPreprocessor.cpp | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 3550ac25159b7..dfc46f47cce32 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -133,6 +133,7 @@ static void DefineFloatMacros(MacroBuilder &Builder, StringRef Prefix,                       "4.94065645841246544176568792868221e-324",                       "6.47517511943802511092443895822764655e-4966");    int Digits = PickFP(Sem, 6, 15, 18, 31, 33); +  int DecimalDigits = PickFP(Sem, 9, 17, 21, 33, 36);    Epsilon = PickFP(Sem, "1.19209290e-7", "2.2204460492503131e-16",                     "1.08420217248550443401e-19",                     "4.94065645841246544176568792868221e-324", @@ -159,6 +160,7 @@ static void DefineFloatMacros(MacroBuilder &Builder, StringRef Prefix,    Builder.defineMacro(DefPrefix + "DENORM_MIN__", Twine(DenormMin)+Ext);    Builder.defineMacro(DefPrefix + "HAS_DENORM__");    Builder.defineMacro(DefPrefix + "DIG__", Twine(Digits)); +  Builder.defineMacro(DefPrefix + "DECIMAL_DIG__", Twine(DecimalDigits));    Builder.defineMacro(DefPrefix + "EPSILON__", Twine(Epsilon)+Ext);    Builder.defineMacro(DefPrefix + "HAS_INFINITY__");    Builder.defineMacro(DefPrefix + "HAS_QUIET_NAN__"); @@ -451,6 +453,8 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,    }    if (LangOpts.SizedDeallocation)      Builder.defineMacro("__cpp_sized_deallocation", "201309"); +  if (LangOpts.ConceptsTS) +    Builder.defineMacro("__cpp_experimental_concepts", "1");  }  static void InitializePredefinedMacros(const TargetInfo &TI, @@ -705,6 +709,10 @@ static void InitializePredefinedMacros(const TargetInfo &TI,    Builder.defineMacro("__POINTER_WIDTH__",                        Twine((int)TI.getPointerWidth(0))); +  // Define __BIGGEST_ALIGNMENT__ to be compatible with gcc. +  Builder.defineMacro("__BIGGEST_ALIGNMENT__", +                      Twine(TI.getSuitableAlign() / TI.getCharWidth()) ); +    if (!LangOpts.CharIsSigned)      Builder.defineMacro("__CHAR_UNSIGNED__"); @@ -784,7 +792,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,      Builder.defineMacro("__FINITE_MATH_ONLY__", "0");    if (!LangOpts.MSVCCompat) { -    if (LangOpts.GNUInline) +    if (LangOpts.GNUInline || LangOpts.CPlusPlus)        Builder.defineMacro("__GNUC_GNU_INLINE__");      else        Builder.defineMacro("__GNUC_STDC_INLINE__"); @@ -831,8 +839,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,    // Macros to control C99 numerics and <float.h>    Builder.defineMacro("__FLT_EVAL_METHOD__", Twine(TI.getFloatEvalMethod()));    Builder.defineMacro("__FLT_RADIX__", "2"); -  int Dig = PickFP(&TI.getLongDoubleFormat(), -1/*FIXME*/, 17, 21, 33, 36); -  Builder.defineMacro("__DECIMAL_DIG__", Twine(Dig)); +  Builder.defineMacro("__DECIMAL_DIG__", "__LDBL_DECIMAL_DIG__");    if (LangOpts.getStackProtector() == LangOptions::SSPOn)      Builder.defineMacro("__SSP__"); | 
