]> granicus.if.org Git - clang/commitdiff
This reverts commit 632a36bfcfc8273c1861f04ff6758d863c47c784.
authorSylvestre Ledru <sylvestre@debian.org>
Sat, 13 Jul 2019 06:27:35 +0000 (06:27 +0000)
committerSylvestre Ledru <sylvestre@debian.org>
Sat, 13 Jul 2019 06:27:35 +0000 (06:27 +0000)
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

docs/LanguageExtensions.rst
docs/ReleaseNotes.rst
lib/Basic/Version.cpp
lib/Frontend/InitPreprocessor.cpp
test/Index/complete-exprs.c
test/Preprocessor/init.c
utils/builtin-defines.c

index 61152a251bdba4923934d70494b54917e19f81d4..ecbf04c3c822ac599c54894e10f6fbe5896bacee 100644 (file)
@@ -324,8 +324,6 @@ option for a warning and returns true if that is a valid warning option.
   ...
   #endif
 
-.. _languageextensions-builtin-macros:
-
 Builtin Macros
 ==============
 
index 7185030a92d7c03a2dfab14705ee87b800edf2f0..f0a35050dde0803c73dd4264d2fb4078c710c6a7 100644 (file)
@@ -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 <languageextensions-builtin-macros>`.
-
 - ...
 
 
@@ -84,11 +79,6 @@ Modified Compiler Flags
 
 - ...
 
-Removed Compiler Options
-------------------------
-
-- ...
-
 New Pragmas in Clang
 --------------------
 
index 5fd12762b68933770f906da2835db113b45095c3..d6564582e77268a00cee272e1f17e01cce12948d 100644 (file)
@@ -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
index a02c266c094a89f3f02a94466e2def098450f931..1741ba5e5203e65bf436e804519f103a45b3351e 100644 (file)
@@ -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?
index 50f5025f1512f5eb202a84d0729f4ba82d5b8ac4..9beb16deef99b7d187691e806b03c2101fbe5fd5 100644 (file)
@@ -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)
index 00a7c7b6bae95b1cc4f79ac50aa92873b2414cdf..8df3b4bd2ccf48c94a84164279ed1e3e85053782 100644 (file)
 // 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]+}}
 // 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
 // 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
 // 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__
index 2936d631e61a7b5c287d541bf4a6fef654bed2b2..9bbe5be2502697fd1e055e05c9fd1b5ff8cbf292 100644 (file)
@@ -49,6 +49,7 @@ RUN: done;
 #undef __INT8_TYPE__
 #undef __SSP__
 #undef __APPLE_CC__
+#undef __VERSION__
 #undef __clang__
 #undef __llvm__
 #undef __nocona