Bug 1262781 - Update to clang 3.8 final. r?froydnj draft
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 07 Apr 2016 15:28:24 +0900
changeset 349707 c238f26a56f29c4ab1e355441fa9c965e7fcb04a
parent 349706 3d858b368b60a69647ae0414cd737f4b2489333e
child 518173 d98f13c4134aa37d224e51534a464e9f053bd7ff
push id15166
push userbmo:mh+mozilla@glandium.org
push dateTue, 12 Apr 2016 04:31:02 +0000
reviewersfroydnj
bugs1262781, 1262735
milestone48.0a1
Bug 1262781 - Update to clang 3.8 final. r?froydnj Ideally, we'd use the tarballs from http://llvm.org/releases/download.html but I didn't feel like modifying the script more than I already did to make it work at all (bug 1262735). The new tarball for Linux was built on https://tools.taskcluster.net/task-inspector/#LCUn8aEgTBeRJ11a3qTlDQ/0 The new tarball for Mac was built on a loaner, after installing cmake and ninja, as well as building ld64 127.2 from source because the installed version would assert while building clang. The latter required manually adding some missing headers to /usr/include. TSAN was also disabled because it requires APIs that are not available on the OSX version on the build slaves (e.g. pthread_introspection_hook_install). Building clang also required using a mac clang from tooltool, the system one lacking support for atomics.
b2g/config/tooltool-manifests/macosx64/releng.manifest
b2g/dev/config/tooltool-manifests/macosx64/releng.manifest
browser/config/tooltool-manifests/linux32/clang.manifest
browser/config/tooltool-manifests/linux64/clang.manifest
browser/config/tooltool-manifests/linux64/clang.manifest.centos6
browser/config/tooltool-manifests/macosx64/clang.manifest
browser/config/tooltool-manifests/macosx64/cross-releng.manifest
browser/config/tooltool-manifests/macosx64/releng.manifest
build/build-clang/clang-static-analysis-linux64.json
build/build-clang/clang-static-analysis-macosx64.json
build/build-clang/disable-mac-tsan.patch
build/build-clang/return-empty-string-non-mangled.patch
--- a/b2g/config/tooltool-manifests/macosx64/releng.manifest
+++ b/b2g/config/tooltool-manifests/macosx64/releng.manifest
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 121389802,
-"digest": "2be6b42cfa1e92de4b49a57123f54043fec2d3cf8385276516dc6aaed99c88768ac4aebd7ce2e007ab074163523da29223436a4d1aef82f0f750f08f1b14cd71",
+"version": "clang 3.8.0",
+"size": 133060926,
+"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
 "algorithm": "sha512",
 "filename": "clang.tar.bz2",
 "unpack": true
 },
 {
 "size": 167175,
 "digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
 "algorithm": "sha512",
--- a/b2g/dev/config/tooltool-manifests/macosx64/releng.manifest
+++ b/b2g/dev/config/tooltool-manifests/macosx64/releng.manifest
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 121389802,
-"digest": "2be6b42cfa1e92de4b49a57123f54043fec2d3cf8385276516dc6aaed99c88768ac4aebd7ce2e007ab074163523da29223436a4d1aef82f0f750f08f1b14cd71",
+"version": "clang 3.8.0",
+"size": 133060926,
+"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
 "algorithm": "sha512",
 "filename": "clang.tar.bz2",
 "unpack": true
 },
 {
 "size": 167175,
 "digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
 "algorithm": "sha512",
--- a/browser/config/tooltool-manifests/linux32/clang.manifest
+++ b/browser/config/tooltool-manifests/linux32/clang.manifest
@@ -1,10 +1,10 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 106877168,
-"digest": "1c50c6348eaf429ed59bb603cff63bcc1f870f59216dd3c234db5b1156cfd351d5ee7b820ec31be4d2661eb4213b2e0030e2ba2782b42905d1ec19c7f8bd322a",
+"version": "clang 3.8.0, libgcc 4.8.5",
+"size": 118876936,
+"digest": "f021d7b23cbbcc4086514b4bf20c86c9f94dbe5b4e0f1ef3aaf2bea337430f7c0d0965c55fe8be0e944a46c3b1555b9245c7af8b8b141eac4b47deea977b4852",
 "algorithm": "sha512", 
 "filename": "clang.tar.xz",
 "unpack": true,
 }
 ]
--- a/browser/config/tooltool-manifests/linux64/clang.manifest
+++ b/browser/config/tooltool-manifests/linux64/clang.manifest
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 106877168,
-"digest": "1c50c6348eaf429ed59bb603cff63bcc1f870f59216dd3c234db5b1156cfd351d5ee7b820ec31be4d2661eb4213b2e0030e2ba2782b42905d1ec19c7f8bd322a",
+"version": "clang 3.8.0, libgcc 4.8.5",
+"size": 118876936,
+"digest": "f021d7b23cbbcc4086514b4bf20c86c9f94dbe5b4e0f1ef3aaf2bea337430f7c0d0965c55fe8be0e944a46c3b1555b9245c7af8b8b141eac4b47deea977b4852",
 "algorithm": "sha512",
 "filename": "clang.tar.xz",
 "unpack": true
 },
 {
 "size": 12072532,
 "digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
 "algorithm": "sha512",
--- a/browser/config/tooltool-manifests/linux64/clang.manifest.centos6
+++ b/browser/config/tooltool-manifests/linux64/clang.manifest.centos6
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 106877168,
-"digest": "1c50c6348eaf429ed59bb603cff63bcc1f870f59216dd3c234db5b1156cfd351d5ee7b820ec31be4d2661eb4213b2e0030e2ba2782b42905d1ec19c7f8bd322a",
+"version": "clang 3.8.0, libgcc 4.8.5",
+"size": 118876936,
+"digest": "f021d7b23cbbcc4086514b4bf20c86c9f94dbe5b4e0f1ef3aaf2bea337430f7c0d0965c55fe8be0e944a46c3b1555b9245c7af8b8b141eac4b47deea977b4852",
 "algorithm": "sha512",
 "filename": "clang.tar.xz",
 "unpack": true
 },
 {
 "size": 12072532,
 "digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
 "algorithm": "sha512",
--- a/browser/config/tooltool-manifests/macosx64/clang.manifest
+++ b/browser/config/tooltool-manifests/macosx64/clang.manifest
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 121389802,
-"digest": "2be6b42cfa1e92de4b49a57123f54043fec2d3cf8385276516dc6aaed99c88768ac4aebd7ce2e007ab074163523da29223436a4d1aef82f0f750f08f1b14cd71",
+"version": "clang 3.8.0",
+"size": 133060926,
+"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
 "algorithm": "sha512",
 "filename": "clang.tar.bz2",
 "unpack": true
 },
 {
 "size": 167175,
 "digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
 "algorithm": "sha512",
--- a/browser/config/tooltool-manifests/macosx64/cross-releng.manifest
+++ b/browser/config/tooltool-manifests/macosx64/cross-releng.manifest
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 106877168,
-"digest": "1c50c6348eaf429ed59bb603cff63bcc1f870f59216dd3c234db5b1156cfd351d5ee7b820ec31be4d2661eb4213b2e0030e2ba2782b42905d1ec19c7f8bd322a",
+"version": "clang 3.8.0, libgcc 4.8.5",
+"size": 118876936,
+"digest": "f021d7b23cbbcc4086514b4bf20c86c9f94dbe5b4e0f1ef3aaf2bea337430f7c0d0965c55fe8be0e944a46c3b1555b9245c7af8b8b141eac4b47deea977b4852",
 "algorithm": "sha512",
 "filename": "clang.tar.xz",
 "unpack": true
 },
 {
 "size": 3008804, 
 "visibility": "public", 
 "digest": "ba6937f14f3d8b26dcb2d39490dee6b0a8afb60f672f5debb71d7b62c1ec52103201b4b1a3d258f945567de531384b36ddb2ce4aa73dc63d72305b11c146847c", 
--- a/browser/config/tooltool-manifests/macosx64/releng.manifest
+++ b/browser/config/tooltool-manifests/macosx64/releng.manifest
@@ -1,13 +1,13 @@
 [
 {
-"version": "clang 3.8.0/r247539",
-"size": 121389802,
-"digest": "2be6b42cfa1e92de4b49a57123f54043fec2d3cf8385276516dc6aaed99c88768ac4aebd7ce2e007ab074163523da29223436a4d1aef82f0f750f08f1b14cd71",
+"version": "clang 3.8.0",
+"size": 133060926,
+"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
 "algorithm": "sha512",
 "filename": "clang.tar.bz2",
 "unpack": true
 },
 {
 "size": 93295855,
 "digest": "2b8fd0c1ba337a7035090c420305a7892e663ce6781569b100b36fa21cc26146e67f44a34c7715f0004f48bbe46c232bbbf2928c9d0595243d2584530770b504",
 "algorithm": "sha512",
--- a/build/build-clang/clang-static-analysis-linux64.json
+++ b/build/build-clang/clang-static-analysis-linux64.json
@@ -1,32 +1,29 @@
 {
-    "llvm_revision": "247539",
+    "llvm_revision": "262557",
     "stages": "3",
     "build_libcxx": false,
     "build_type": "Release",
     "assertions": false,
-    "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/trunk",
-    "clang_repo": "https://llvm.org/svn/llvm-project/cfe/trunk",
-    "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/trunk",
-    "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/trunk",
+    "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_380/final",
+    "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_380/final",
+    "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_380/final",
+    "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_380/final",
     "python_path": "/usr/bin/python2.7",
     "gcc_dir": "/home/worker/workspace/build/src/gcc",
     "cc": "/home/worker/workspace/build/src/gcc/bin/gcc",
     "cxx": "/home/worker/workspace/build/src/gcc/bin/g++",
     "patches": {
         "macosx64": [
           "llvm-debug-frame.patch",
-          "query-selector-visibility.patch",
           "return-empty-string-non-mangled.patch"
         ],
         "linux64": [
           "llvm-debug-frame.patch",
-          "query-selector-visibility.patch",
           "return-empty-string-non-mangled.patch"
         ],
         "linux32": [
           "llvm-debug-frame.patch",
-          "query-selector-visibility.patch",
           "return-empty-string-non-mangled.patch"
         ]
     }
 }
--- a/build/build-clang/clang-static-analysis-macosx64.json
+++ b/build/build-clang/clang-static-analysis-macosx64.json
@@ -1,31 +1,29 @@
 {
-    "llvm_revision": "247539",
+    "llvm_revision": "262557",
     "stages": "3",
     "build_libcxx": true,
     "build_type": "Release",
     "assertions": false,
-    "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/trunk",
-    "clang_repo": "https://llvm.org/svn/llvm-project/cfe/trunk",
-    "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/trunk",
-    "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/trunk",
+    "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_380/final",
+    "clang_repo": "https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_380/final",
+    "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_380/final",
+    "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_380/final",
     "python_path": "/usr/local/bin/python2.7",
-    "cc": "/usr/bin/clang",
-    "cxx": "/usr/bin/clang++",
+    "cc": "/Users/cltbld/clang/bin/clang",
+    "cxx": "/Users/cltbld/clang/bin/clang++",
     "patches": {
         "macosx64": [
+          "disable-mac-tsan.patch",
           "llvm-debug-frame.patch",
-          "query-selector-visibility.patch",
           "return-empty-string-non-mangled.patch"
         ],
         "linux64": [
           "llvm-debug-frame.patch",
-          "query-selector-visibility.patch",
           "return-empty-string-non-mangled.patch"
         ],
         "linux32": [
           "llvm-debug-frame.patch",
-          "query-selector-visibility.patch",
           "return-empty-string-non-mangled.patch"
         ]
     }
 }
new file mode 100644
--- /dev/null
+++ b/build/build-clang/disable-mac-tsan.patch
@@ -0,0 +1,11 @@
+--- a/compiler-rt/cmake/config-ix.cmake
++++ b/compiler-rt/cmake/config-ix.cmake
+@@ -617,7 +617,7 @@
+ endif()
+ 
+ if (COMPILER_RT_HAS_SANITIZER_COMMON AND TSAN_SUPPORTED_ARCH AND
+-    OS_NAME MATCHES "Darwin|Linux|FreeBSD")
++    OS_NAME MATCHES "Linux|FreeBSD")
+   set(COMPILER_RT_HAS_TSAN TRUE)
+ else()
+   set(COMPILER_RT_HAS_TSAN FALSE)
--- a/build/build-clang/return-empty-string-non-mangled.patch
+++ b/build/build-clang/return-empty-string-non-mangled.patch
@@ -1,21 +1,19 @@
-commit 009de5ea7a1913f0b4619cf514787bd52af38c28
 Author: Michael Wu <mwu@mozilla.com>
 Date:   Thu Sep 24 11:36:08 2015 -0400
 
     Return an empty string when a symbol isn't mangled
 
 diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
-index 9fa18d3..1253832 100644
 --- a/clang/tools/libclang/CIndex.cpp
 +++ b/clang/tools/libclang/CIndex.cpp
-@@ -3891,6 +3891,10 @@ CXString clang_Cursor_getMangling(CXCursor C) {
+@@ -3990,6 +3990,10 @@
    ASTContext &Ctx = ND->getASTContext();
    std::unique_ptr<MangleContext> MC(Ctx.createMangleContext());
  
 +  // Don't mangle if we don't need to.
 +  if (!MC->shouldMangleCXXName(ND))
 +    return cxstring::createEmpty();
 +
    std::string FrontendBuf;
    llvm::raw_string_ostream FrontendBufOS(FrontendBuf);
-   MC->mangleName(ND, FrontendBufOS);
+   if (MC->shouldMangleDeclName(ND)) {