diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 749dd9b951b1fdb9aad1c2a0ddb3cd0e5a1d89d4..88be7732f519ab16bc800d51cfbfdf549b9abbb6 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -374,9 +374,11 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, else if (!LangOpts.GNUMode && LangOpts.Digraphs) Builder.defineMacro("__STDC_VERSION__", "199409L"); } else { - // FIXME: Use correct value for C++17. + // C++17 [cpp.predefined]p1: + // The name __cplusplus is defined to the value 201703L when compiling a + // C++ translation unit. if (LangOpts.CPlusPlus1z) - Builder.defineMacro("__cplusplus", "201406L"); + Builder.defineMacro("__cplusplus", "201703L"); // C++1y [cpp.predefined]p1: // The name __cplusplus is defined to the value 201402L when compiling a // C++ translation unit. diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index f9f3b26218936d9defc60fbc3af173ecb5ae8fc2..14d487559a40b6404ae0cc52f52dab4ffb9b19a4 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -15,7 +15,7 @@ // CXX1Z:#define __GXX_EXPERIMENTAL_CXX0X__ 1 // CXX1Z:#define __GXX_RTTI 1 // CXX1Z:#define __GXX_WEAK__ 1 -// CXX1Z:#define __cplusplus 201406L +// CXX1Z:#define __cplusplus 201703L // CXX1Z:#define __private_extern__ extern // // @@ -115,7 +115,7 @@ // // GXX1Z:#define __GNUG__ {{.*}} // GXX1Z:#define __GXX_WEAK__ 1 -// GXX1Z:#define __cplusplus 201406L +// GXX1Z:#define __cplusplus 201703L // GXX1Z:#define __private_extern__ extern // //