From: Sylvestre Ledru Date: Sat, 13 Jul 2019 06:27:35 +0000 (+0000) Subject: This reverts commit 632a36bfcfc8273c1861f04ff6758d863c47c784. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4962d4e375833728b217952abe6662cc02b3382f;p=clang This reverts commit 632a36bfcfc8273c1861f04ff6758d863c47c784. Some targets such as Python 2.7.16 still use VERSION in their builds. Without VERSION defined, the source code has syntax errors. Reverting as it will probably break many other things. Noticed by Sterling Augustine git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365992 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/LanguageExtensions.rst b/docs/LanguageExtensions.rst index 61152a251b..ecbf04c3c8 100644 --- a/docs/LanguageExtensions.rst +++ b/docs/LanguageExtensions.rst @@ -324,8 +324,6 @@ 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 7185030a92..f0a35050dd 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -56,11 +56,6 @@ Improvements to Clang's diagnostics Non-comprehensive list of changes in this release ------------------------------------------------- -- The ``__VERSION__`` macro has been removed. - Previously this macro was set to a string aiming to achieve compatibility with - GCC 4.2.1, but that should no longer be necessary. To get Clang's version, - use the :ref:`clang namespaced version macros `. - - ... @@ -84,11 +79,6 @@ Modified Compiler Flags - ... -Removed Compiler Options ------------------------- - -- ... - New Pragmas in Clang -------------------- diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index 5fd12762b6..d6564582e7 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -136,6 +136,8 @@ std::string getClangToolFullVersion(StringRef ToolName) { } std::string getClangFullCPPVersion() { + // The version string we report in __VERSION__ is just a compacted version of + // the one we report on the command line. std::string buf; llvm::raw_string_ostream OS(buf); #ifdef CLANG_VENDOR diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index a02c266c09..1741ba5e52 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -604,6 +604,12 @@ 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 " + + Twine(getClangFullCPPVersion()) + "\""); + // Initialize language-specific preprocessor defines. // Standard conforming mode? diff --git a/test/Index/complete-exprs.c b/test/Index/complete-exprs.c index 50f5025f15..9beb16deef 100644 --- a/test/Index/complete-exprs.c +++ b/test/Index/complete-exprs.c @@ -27,6 +27,7 @@ void f5(float f) { // RUN: c-index-test -code-completion-at=%s:7:10 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s // RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:10 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s // CHECK-CC1: NotImplemented:{TypedText __PRETTY_FUNCTION__} (65) +// CHECK-CC1: macro definition:{TypedText __VERSION__} (70) // CHECK-CC1: FunctionDecl:{ResultType int}{TypedText f}{LeftParen (}{Placeholder int}{RightParen )} (12) (unavailable) // CHECK-CC1-NOT: NotImplemented:{TypedText float} (65) // CHECK-CC1: ParmDecl:{ResultType int}{TypedText j} (8) @@ -38,6 +39,7 @@ void f5(float f) { // RUN: c-index-test -code-completion-at=%s:7:18 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s // RUN: c-index-test -code-completion-at=%s:7:22 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s // RUN: c-index-test -code-completion-at=%s:7:2 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC2 %s +// CHECK-CC2: macro definition:{TypedText __VERSION__} (70) // CHECK-CC2: FunctionDecl:{ResultType int}{TypedText f}{LeftParen (}{Placeholder int}{RightParen )} (50) // CHECK-CC2: NotImplemented:{TypedText float} (50) // CHECK-CC2: ParmDecl:{ResultType int}{TypedText j} (34) diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 00a7c7b6ba..8df3b4bd2c 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -101,6 +101,7 @@ // COMMON:#define __ORDER_PDP_ENDIAN__ 3412 // COMMON:#define __STDC_HOSTED__ 1 // COMMON:#define __STDC__ 1 +// COMMON:#define __VERSION__ {{.*}} // COMMON:#define __clang__ 1 // COMMON:#define __clang_major__ {{[0-9]+}} // COMMON:#define __clang_minor__ {{[0-9]+}} @@ -8168,6 +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 __WCHAR_MAX__ 2147483647 // SPARC:#define __WCHAR_TYPE__ int // SPARC:#define __WCHAR_WIDTH__ 32 @@ -9039,6 +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 __WCHAR_MAX__ 2147483647 // X86_64-CLOUDABI:#define __WCHAR_TYPE__ int // X86_64-CLOUDABI:#define __WCHAR_WIDTH__ 32 @@ -10040,6 +10043,7 @@ // WEBASSEMBLY-NEXT:#define __UINT_LEAST8_MAX__ 255 // WEBASSEMBLY-NEXT:#define __UINT_LEAST8_TYPE__ unsigned char // WEBASSEMBLY-NEXT:#define __USER_LABEL_PREFIX__ +// WEBASSEMBLY-NEXT:#define __VERSION__ "{{.*}}" // WEBASSEMBLY-NEXT:#define __WCHAR_MAX__ 2147483647 // WEBASSEMBLY-NEXT:#define __WCHAR_TYPE__ int // WEBASSEMBLY-NOT:#define __WCHAR_UNSIGNED__ diff --git a/utils/builtin-defines.c b/utils/builtin-defines.c index 2936d631e6..9bbe5be250 100644 --- a/utils/builtin-defines.c +++ b/utils/builtin-defines.c @@ -49,6 +49,7 @@ RUN: done; #undef __INT8_TYPE__ #undef __SSP__ #undef __APPLE_CC__ +#undef __VERSION__ #undef __clang__ #undef __llvm__ #undef __nocona