author | Stefan Teleman <stefan.teleman@oracle.com> |
Wed, 10 Feb 2016 11:54:12 -0800 | |
changeset 5434 | 9f55c805ce9d |
permissions | -rw-r--r-- |
5434
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
1 |
# The anonymous std::string temporary created by getClangFullRepositoryVersion |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
2 |
# goes out-of-scope in C++11 because COW std::string is not allowed. |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
3 |
# I.e. the std::string buffer of the anonymous temporary goes out of scope. |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
4 |
# Because of this, the buffer referenced by the underlying StringRef in |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
5 |
# llvm::Twine is invalid as soon as the std::string temporary expires. |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
6 |
# The tagged clang version string must be created as a data segment global |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
7 |
# constant via macro, just like all the other clang version macro identifiers. |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
8 |
# https://llvm.org/bugs/show_bug.cgi?id=24684 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
9 |
--- tools/clang/include/clang/Basic/Version.inc.in 2010-06-25 13:33:46.000000000 -0400 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
10 |
+++ tools/clang/include/clang/Basic/Version.inc.in 2015-07-05 14:20:27.771128865 -0400 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
11 |
@@ -4,3 +4,4 @@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
12 |
#if @CLANG_HAS_VERSION_PATCHLEVEL@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
13 |
#define CLANG_VERSION_PATCHLEVEL @CLANG_VERSION_PATCHLEVEL@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
14 |
#endif |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
15 |
+#define CLANG_VERSION_TAGGED_STRING @CLANG_VERSION_TAGGED_STRING@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
16 |
--- tools/clang/include/clang/Basic/Makefile 2014-03-31 09:14:44.000000000 -0400 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
17 |
+++ tools/clang/include/clang/Basic/Makefile 2015-07-05 14:19:58.972485543 -0400 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
18 |
@@ -16,8 +16,18 @@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
19 |
|
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
20 |
INPUT_TDS = $(wildcard $(PROJ_SRC_DIR)/Diagnostic*.td) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
21 |
|
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
22 |
+SVN_OR_RC := |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
23 |
+ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
24 |
# Compute the Clang version from the LLVM version, unless specified explicitly. |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
25 |
ifndef CLANG_VERSION |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
26 |
+ifeq ($(LLVMVersion), $(findstring svn, $(LLVMVersion)), svn) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
27 |
+ SVN_OR_RC := "svn" |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
28 |
+endif |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
29 |
+ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
30 |
+ifeq ($(LLVMVersion), $(findstring rc, $(LLVMVersion)), rc) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
31 |
+ SVN_OR_RC := "rc" |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
32 |
+endif |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
33 |
+ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
34 |
CLANG_VERSION := $(subst svn,,$(LLVMVersion)) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
35 |
CLANG_VERSION := $(subst rc,,$(CLANG_VERSION)) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
36 |
endif |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
37 |
@@ -26,6 +36,14 @@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
38 |
CLANG_VERSION_MAJOR := $(word 1,$(CLANG_VERSION_COMPONENTS)) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
39 |
CLANG_VERSION_MINOR := $(word 2,$(CLANG_VERSION_COMPONENTS)) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
40 |
CLANG_VERSION_PATCHLEVEL := $(word 3,$(CLANG_VERSION_COMPONENTS)) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
41 |
+CLANG_VERSION_TAGGED_STRING := |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
42 |
+ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
43 |
+ifeq ($(SVN_OR_RC),) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
44 |
+CLANG_VERSION_TAGGED_STRING := "\"\(tags/RELEASE_$(CLANG_VERSION_MAJOR)$(CLANG_VERSION_MINOR)$(CLANG_VERSION_PATCHLEVEL)/final\)\"" |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
45 |
+else |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
46 |
+CLANG_VERSION_TAGGED_STRING := "\"\(tags/RELEASE_$(CLANG_VERSION_MAJOR)$(CLANG_VERSION_MINOR)$(CLANG_VERSION_PATCHLEVEL)/$(SVN_OR_RC)\)\"" |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
47 |
+endif |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
48 |
+ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
49 |
ifeq ($(CLANG_VERSION_PATCHLEVEL),) |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
50 |
CLANG_HAS_VERSION_PATCHLEVEL := 0 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
51 |
else |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
52 |
@@ -67,4 +85,5 @@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
53 |
-e "s#@CLANG_VERSION_MINOR@#$(CLANG_VERSION_MINOR)#g" \ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
54 |
-e "s#@CLANG_VERSION_PATCHLEVEL@#$(CLANG_VERSION_PATCHLEVEL)#g" \ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
55 |
-e "s#@CLANG_HAS_VERSION_PATCHLEVEL@#$(CLANG_HAS_VERSION_PATCHLEVEL)#g" \ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
56 |
+ -e "s#@CLANG_VERSION_TAGGED_STRING@#$(CLANG_VERSION_TAGGED_STRING:' '='')#g" \ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
57 |
$< > $@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
58 |
--- tools/clang/lib/Frontend/InitPreprocessor.cpp 2015-04-27 04:12:42.000000000 -0400 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
59 |
+++ tools/clang/lib/Frontend/InitPreprocessor.cpp 2015-07-05 14:24:20.804334574 -0400 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
60 |
@@ -470,8 +470,7 @@ |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
61 |
Builder.defineMacro("__clang_patchlevel__", "0"); |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
62 |
#endif |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
63 |
Builder.defineMacro("__clang_version__", |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
64 |
- "\"" CLANG_VERSION_STRING " " |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
65 |
- + getClangFullRepositoryVersion() + "\""); |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
66 |
+ "\"" CLANG_VERSION_STRING " " CLANG_VERSION_TAGGED_STRING "\""); |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
67 |
#undef TOSTR |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
68 |
#undef TOSTR2 |
9f55c805ce9d
PSARC/2013/188 Clang/LLVM
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
69 |
if (!LangOpts.MSVCCompat) { |