From e4345d25401eb7231e2295a4ee2192d9403fdbb4 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 15 Jul 2019 17:47:22 +0000 Subject: [PATCH] Update __VERSION__ to remove the hardcoded 4.2.1 version Summary: Just like in https://reviews.llvm.org/D56803 for -dumpversion Reviewers: rnk Reviewed By: rnk Subscribers: dexonsmith, lebedev.ri, hubert.reinterpretcast, xbolva00, fedor.sergeev, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D63048 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@366091 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/LanguageExtensions.rst | 2 ++ docs/ReleaseNotes.rst | 6 ++++++ lib/Frontend/InitPreprocessor.cpp | 7 +++---- test/Preprocessor/init.c | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/LanguageExtensions.rst b/docs/LanguageExtensions.rst index 266309c6ce..44fa2b2ec0 100644 --- a/docs/LanguageExtensions.rst +++ b/docs/LanguageExtensions.rst @@ -324,6 +324,8 @@ option for a warning and returns true if that is a valid warning option. ... #endif +.. _languageextensions-builtin-macros: + Builtin Macros ============== diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index f89447fc96..dadcc77f48 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -56,6 +56,12 @@ Improvements to Clang's diagnostics Non-comprehensive list of changes in this release ------------------------------------------------- +- The ``__VERSION__`` macro has been updated. + Previously this macro contained the string '4.2.1 Compatible' to achieve + compatibility with GCC 4.2.1, but that should no longer be necessary. + However, to retrieve Clang's version, please favor the one of the macro + defined in :ref:`clang namespaced version macros `. + - ... diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 1741ba5e52..11ebab9454 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -604,10 +604,9 @@ static void InitializePredefinedMacros(const TargetInfo &TI, // Support for #pragma redefine_extname (Sun compatibility) Builder.defineMacro("__PRAGMA_REDEFINE_EXTNAME", "1"); - // As sad as it is, enough software depends on the __VERSION__ for version - // checks that it is necessary to report 4.2.1 (the base GCC version we claim - // compatibility with) first. - Builder.defineMacro("__VERSION__", "\"4.2.1 Compatible " + + // Previously this macro was set to a string aiming to achieve compatibility + // with GCC 4.2.1. Now, just return the full Clang version + Builder.defineMacro("__VERSION__", "\"" + Twine(getClangFullCPPVersion()) + "\""); // Initialize language-specific preprocessor defines. diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 8df3b4bd2c..fce85e05f6 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -8169,7 +8169,7 @@ // SPARC:#define __UINT_LEAST8_MAX__ 255 // SPARC:#define __UINT_LEAST8_TYPE__ unsigned char // SPARC:#define __USER_LABEL_PREFIX__ -// SPARC:#define __VERSION__ "4.2.1 Compatible{{.*}} +// SPARC:#define __VERSION__ "Clang{{.*}} // SPARC:#define __WCHAR_MAX__ 2147483647 // SPARC:#define __WCHAR_TYPE__ int // SPARC:#define __WCHAR_WIDTH__ 32 @@ -9041,7 +9041,7 @@ // X86_64-CLOUDABI:#define __UINT_LEAST8_MAX__ 255 // X86_64-CLOUDABI:#define __UINT_LEAST8_TYPE__ unsigned char // X86_64-CLOUDABI:#define __USER_LABEL_PREFIX__ -// X86_64-CLOUDABI:#define __VERSION__ "4.2.1 Compatible{{.*}} +// X86_64-CLOUDABI:#define __VERSION__ "Clang{{.*}} // X86_64-CLOUDABI:#define __WCHAR_MAX__ 2147483647 // X86_64-CLOUDABI:#define __WCHAR_TYPE__ int // X86_64-CLOUDABI:#define __WCHAR_WIDTH__ 32 -- 2.40.0