Bug 1427808 - Remove the now-unused win64-clang-cl-st-an toolchain. r=froydnj
authorDavid Major <dmajor@mozilla.com>
Fri, 12 Oct 2018 07:15:00 -0400
changeset 499396 5855ac73f9d73828dc7e556dbd02fc30e7f5021f
parent 499395 28f93e22d7967f516870629a62e0daba5b529154
child 499397 60a3ffcd4f7e165de41b056737f4aaa40896d3af
push id1864
push userffxbld-merge
push dateMon, 03 Dec 2018 15:51:40 +0000
treeherdermozilla-release@f040763d99ad [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1427808
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1427808 - Remove the now-unused win64-clang-cl-st-an toolchain. r=froydnj
build/build-clang/clang-win64-st-an.json
build/build-clang/fflush-before-unlocking.patch
build/build-clang/r318309.patch
build/build-clang/r320462.patch
build/build-clang/r327876.patch
taskcluster/ci/toolchain/windows.yml
taskcluster/scripts/misc/build-clang64-st-an-windows.sh
deleted file mode 100644
--- a/build/build-clang/clang-win64-st-an.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "llvm_revision": "317840",
-    "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",
-    "lld_repo": "https://llvm.org/svn/llvm-project/lld/trunk",
-    "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/trunk",
-    "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/trunk",
-    "python_path": "c:/mozilla-build/python/python.exe",
-    "cc": "cl.exe",
-    "cxx": "cl.exe",
-    "ml": "ml64.exe",
-    "patches": [
-      "r318309.patch",
-      "r320462.patch",
-      "r327876.patch",
-      "loosen-msvc-detection.patch",
-      "aarch64-vastart-checking.patch",
-      "fflush-before-unlocking.patch"
-    ]
-}
deleted file mode 100644
--- a/build/build-clang/fflush-before-unlocking.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/compiler-rt/lib/profile/GCDAProfiling.c b/compiler-rt/lib/profile/GCDAProfiling.c
-index f0c05075a..11b1c4557 100644
---- a/compiler-rt/lib/profile/GCDAProfiling.c
-+++ b/compiler-rt/lib/profile/GCDAProfiling.c
-@@ -468,6 +468,7 @@ void llvm_gcda_end_file() {
-       unmap_file();
-     }
- 
-+    fflush(output_file);
-     flock(fd, LOCK_UN);
-     fclose(output_file);
-     output_file = NULL;
deleted file mode 100644
--- a/build/build-clang/r318309.patch
+++ /dev/null
@@ -1,279 +0,0 @@
-From a53ee5453ba652fc640467847415dd44c24fed02 Mon Sep 17 00:00:00 2001
-From: Hans Wennborg <hans@hanshq.net>
-Date: Wed, 15 Nov 2017 17:11:53 +0000
-Subject: [PATCH] BuiltinOperatorOverloadBuilder: Don't consider types that are
- unavailable on the target (PR35174)
-
-In the PR, Clang ended up in a situation where it tried to mangle the
-__float128 type, which isn't supported when targetingt MSVC, because
-Clang instantiated a variable template with that type when searching for
-a conversion to use in an arithmetic expression.
-
-Differential revision: https://reviews.llvm.org/D39579
-
-git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318309 91177308-0d34-0410-b5e6-96231b3b80d8
-
-diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
-index f4b8b4e34a8..fa6279800dc 100644
---- a/clang/lib/Sema/SemaOverload.cpp
-+++ b/clang/lib/Sema/SemaOverload.cpp
-@@ -7615,53 +7615,62 @@ class BuiltinOperatorOverloadBuilder {
-   SmallVectorImpl<BuiltinCandidateTypeSet> &CandidateTypes;
-   OverloadCandidateSet &CandidateSet;
- 
--  // Define some constants used to index and iterate over the arithemetic types
--  // provided via the getArithmeticType() method below.
--  // The "promoted arithmetic types" are the arithmetic
-+  static constexpr int ArithmeticTypesCap = 24;
-+  SmallVector<CanQualType, ArithmeticTypesCap> ArithmeticTypes;
-+
-+  // Define some indices used to iterate over the arithemetic types in
-+  // ArithmeticTypes.  The "promoted arithmetic types" are the arithmetic
-   // types are that preserved by promotion (C++ [over.built]p2).
--  static const unsigned FirstIntegralType = 4;
--  static const unsigned LastIntegralType = 21;
--  static const unsigned FirstPromotedIntegralType = 4,
--                        LastPromotedIntegralType = 12;
--  static const unsigned FirstPromotedArithmeticType = 0,
--                        LastPromotedArithmeticType = 12;
--  static const unsigned NumArithmeticTypes = 21;
--
--  /// \brief Get the canonical type for a given arithmetic type index.
--  CanQualType getArithmeticType(unsigned index) {
--    assert(index < NumArithmeticTypes);
--    static CanQualType ASTContext::* const
--      ArithmeticTypes[NumArithmeticTypes] = {
--      // Start of promoted types.
--      &ASTContext::FloatTy,
--      &ASTContext::DoubleTy,
--      &ASTContext::LongDoubleTy,
--      &ASTContext::Float128Ty,
--
--      // Start of integral types.
--      &ASTContext::IntTy,
--      &ASTContext::LongTy,
--      &ASTContext::LongLongTy,
--      &ASTContext::Int128Ty,
--      &ASTContext::UnsignedIntTy,
--      &ASTContext::UnsignedLongTy,
--      &ASTContext::UnsignedLongLongTy,
--      &ASTContext::UnsignedInt128Ty,
--      // End of promoted types.
--
--      &ASTContext::BoolTy,
--      &ASTContext::CharTy,
--      &ASTContext::WCharTy,
--      &ASTContext::Char16Ty,
--      &ASTContext::Char32Ty,
--      &ASTContext::SignedCharTy,
--      &ASTContext::ShortTy,
--      &ASTContext::UnsignedCharTy,
--      &ASTContext::UnsignedShortTy,
--      // End of integral types.
--      // FIXME: What about complex? What about half?
--    };
--    return S.Context.*ArithmeticTypes[index];
-+  unsigned FirstIntegralType,
-+           LastIntegralType;
-+  unsigned FirstPromotedIntegralType,
-+           LastPromotedIntegralType;
-+  unsigned FirstPromotedArithmeticType,
-+           LastPromotedArithmeticType;
-+  unsigned NumArithmeticTypes;
-+
-+  void InitArithmeticTypes() {
-+    // Start of promoted types.
-+    FirstPromotedArithmeticType = 0;
-+    ArithmeticTypes.push_back(S.Context.FloatTy);
-+    ArithmeticTypes.push_back(S.Context.DoubleTy);
-+    ArithmeticTypes.push_back(S.Context.LongDoubleTy);
-+    if (S.Context.getTargetInfo().hasFloat128Type())
-+      ArithmeticTypes.push_back(S.Context.Float128Ty);
-+
-+    // Start of integral types.
-+    FirstIntegralType = ArithmeticTypes.size();
-+    FirstPromotedIntegralType = ArithmeticTypes.size();
-+    ArithmeticTypes.push_back(S.Context.IntTy);
-+    ArithmeticTypes.push_back(S.Context.LongTy);
-+    ArithmeticTypes.push_back(S.Context.LongLongTy);
-+    if (S.Context.getTargetInfo().hasInt128Type())
-+      ArithmeticTypes.push_back(S.Context.Int128Ty);
-+    ArithmeticTypes.push_back(S.Context.UnsignedIntTy);
-+    ArithmeticTypes.push_back(S.Context.UnsignedLongTy);
-+    ArithmeticTypes.push_back(S.Context.UnsignedLongLongTy);
-+    if (S.Context.getTargetInfo().hasInt128Type())
-+      ArithmeticTypes.push_back(S.Context.UnsignedInt128Ty);
-+    LastPromotedIntegralType = ArithmeticTypes.size();
-+    LastPromotedArithmeticType = ArithmeticTypes.size();
-+    // End of promoted types.
-+
-+    ArithmeticTypes.push_back(S.Context.BoolTy);
-+    ArithmeticTypes.push_back(S.Context.CharTy);
-+    ArithmeticTypes.push_back(S.Context.WCharTy);
-+    ArithmeticTypes.push_back(S.Context.Char16Ty);
-+    ArithmeticTypes.push_back(S.Context.Char32Ty);
-+    ArithmeticTypes.push_back(S.Context.SignedCharTy);
-+    ArithmeticTypes.push_back(S.Context.ShortTy);
-+    ArithmeticTypes.push_back(S.Context.UnsignedCharTy);
-+    ArithmeticTypes.push_back(S.Context.UnsignedShortTy);
-+    LastIntegralType = ArithmeticTypes.size();
-+    NumArithmeticTypes = ArithmeticTypes.size();
-+    // End of integral types.
-+    // FIXME: What about complex? What about half?
-+
-+    assert(ArithmeticTypes.size() <= ArithmeticTypesCap &&
-+           "Enough inline storage for all arithmetic types.");
-   }
- 
-   /// \brief Helper method to factor out the common pattern of adding overloads
-@@ -7720,18 +7729,8 @@ class BuiltinOperatorOverloadBuilder {
-         HasArithmeticOrEnumeralCandidateType),
-       CandidateTypes(CandidateTypes),
-       CandidateSet(CandidateSet) {
--    // Validate some of our static helper constants in debug builds.
--    assert(getArithmeticType(FirstPromotedIntegralType) == S.Context.IntTy &&
--           "Invalid first promoted integral type");
--    assert(getArithmeticType(LastPromotedIntegralType - 1)
--             == S.Context.UnsignedInt128Ty &&
--           "Invalid last promoted integral type");
--    assert(getArithmeticType(FirstPromotedArithmeticType)
--             == S.Context.FloatTy &&
--           "Invalid first promoted arithmetic type");
--    assert(getArithmeticType(LastPromotedArithmeticType - 1)
--             == S.Context.UnsignedInt128Ty &&
--           "Invalid last promoted arithmetic type");
-+
-+    InitArithmeticTypes();
-   }
- 
-   // C++ [over.built]p3:
-@@ -7758,7 +7757,7 @@ class BuiltinOperatorOverloadBuilder {
-     for (unsigned Arith = (Op == OO_PlusPlus? 0 : 1);
-          Arith < NumArithmeticTypes; ++Arith) {
-       addPlusPlusMinusMinusStyleOverloads(
--        getArithmeticType(Arith),
-+        ArithmeticTypes[Arith],
-         VisibleTypeConversionsQuals.hasVolatile(),
-         VisibleTypeConversionsQuals.hasRestrict());
-     }
-@@ -7831,7 +7830,7 @@ class BuiltinOperatorOverloadBuilder {
- 
-     for (unsigned Arith = FirstPromotedArithmeticType;
-          Arith < LastPromotedArithmeticType; ++Arith) {
--      QualType ArithTy = getArithmeticType(Arith);
-+      QualType ArithTy = ArithmeticTypes[Arith];
-       S.AddBuiltinCandidate(&ArithTy, Args, CandidateSet);
-     }
- 
-@@ -7871,7 +7870,7 @@ class BuiltinOperatorOverloadBuilder {
- 
-     for (unsigned Int = FirstPromotedIntegralType;
-          Int < LastPromotedIntegralType; ++Int) {
--      QualType IntTy = getArithmeticType(Int);
-+      QualType IntTy = ArithmeticTypes[Int];
-       S.AddBuiltinCandidate(&IntTy, Args, CandidateSet);
-     }
- 
-@@ -8099,8 +8098,8 @@ class BuiltinOperatorOverloadBuilder {
-          Left < LastPromotedArithmeticType; ++Left) {
-       for (unsigned Right = FirstPromotedArithmeticType;
-            Right < LastPromotedArithmeticType; ++Right) {
--        QualType LandR[2] = { getArithmeticType(Left),
--                              getArithmeticType(Right) };
-+        QualType LandR[2] = { ArithmeticTypes[Left],
-+                              ArithmeticTypes[Right] };
-         S.AddBuiltinCandidate(LandR, Args, CandidateSet);
-       }
-     }
-@@ -8143,8 +8142,8 @@ class BuiltinOperatorOverloadBuilder {
-          Left < LastPromotedIntegralType; ++Left) {
-       for (unsigned Right = FirstPromotedIntegralType;
-            Right < LastPromotedIntegralType; ++Right) {
--        QualType LandR[2] = { getArithmeticType(Left),
--                              getArithmeticType(Right) };
-+        QualType LandR[2] = { ArithmeticTypes[Left],
-+                              ArithmeticTypes[Right] };
-         S.AddBuiltinCandidate(LandR, Args, CandidateSet);
-       }
-     }
-@@ -8324,18 +8323,18 @@ class BuiltinOperatorOverloadBuilder {
-       for (unsigned Right = FirstPromotedArithmeticType;
-            Right < LastPromotedArithmeticType; ++Right) {
-         QualType ParamTypes[2];
--        ParamTypes[1] = getArithmeticType(Right);
-+        ParamTypes[1] = ArithmeticTypes[Right];
- 
-         // Add this built-in operator as a candidate (VQ is empty).
-         ParamTypes[0] =
--          S.Context.getLValueReferenceType(getArithmeticType(Left));
-+          S.Context.getLValueReferenceType(ArithmeticTypes[Left]);
-         S.AddBuiltinCandidate(ParamTypes, Args, CandidateSet,
-                               /*IsAssigmentOperator=*/isEqualOp);
- 
-         // Add this built-in operator as a candidate (VQ is 'volatile').
-         if (VisibleTypeConversionsQuals.hasVolatile()) {
-           ParamTypes[0] =
--            S.Context.getVolatileType(getArithmeticType(Left));
-+            S.Context.getVolatileType(ArithmeticTypes[Left]);
-           ParamTypes[0] = S.Context.getLValueReferenceType(ParamTypes[0]);
-           S.AddBuiltinCandidate(ParamTypes, Args, CandidateSet,
-                                 /*IsAssigmentOperator=*/isEqualOp);
-@@ -8390,15 +8389,15 @@ class BuiltinOperatorOverloadBuilder {
-       for (unsigned Right = FirstPromotedIntegralType;
-            Right < LastPromotedIntegralType; ++Right) {
-         QualType ParamTypes[2];
--        ParamTypes[1] = getArithmeticType(Right);
-+        ParamTypes[1] = ArithmeticTypes[Right];
- 
-         // Add this built-in operator as a candidate (VQ is empty).
-         ParamTypes[0] =
--          S.Context.getLValueReferenceType(getArithmeticType(Left));
-+          S.Context.getLValueReferenceType(ArithmeticTypes[Left]);
-         S.AddBuiltinCandidate(ParamTypes, Args, CandidateSet);
-         if (VisibleTypeConversionsQuals.hasVolatile()) {
-           // Add this built-in operator as a candidate (VQ is 'volatile').
--          ParamTypes[0] = getArithmeticType(Left);
-+          ParamTypes[0] = ArithmeticTypes[Left];
-           ParamTypes[0] = S.Context.getVolatileType(ParamTypes[0]);
-           ParamTypes[0] = S.Context.getLValueReferenceType(ParamTypes[0]);
-           S.AddBuiltinCandidate(ParamTypes, Args, CandidateSet);
-diff --git a/test/SemaCXX/microsoft-vs-float128.cpp b/test/SemaCXX/microsoft-vs-float128.cpp
-new file mode 100644
-index 00000000000..d271e470032
---- /dev/null
-+++ b/test/SemaCXX/microsoft-vs-float128.cpp
-@@ -0,0 +1,34 @@
-+// RUN: %clang_cc1 -triple x86_64-linux-gnu -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 %s
-+// RUN: %clang_cc1 -triple i686-pc-win32 -fms-compatibility -fms-extensions -fsyntax-only -verify -std=c++11 -DMS %s
-+
-+template <bool> struct enable_if {};
-+template<> struct enable_if<true> { typedef void type; };
-+
-+template <typename, typename> struct is_same { static constexpr bool value = false; };
-+template <typename T> struct is_same<T, T> { static constexpr bool value = true; };
-+
-+
-+
-+
-+struct S {
-+  // The only numeric types S can be converted to is __int128 and __float128.
-+  template <typename T, typename = typename enable_if<
-+                            !((__is_integral(T) && sizeof(T) != 16) ||
-+                              is_same<T, float>::value ||
-+                              is_same<T, double>::value ||
-+                              is_same<T, long double>::value)>::type>
-+  operator T() { return T(); }
-+};
-+
-+void f() {
-+#ifdef MS
-+  // When targeting Win32, __float128 and __int128 do not exist, so the S
-+  // object cannot be converted to anything usable in the expression.
-+  // expected-error@+2{{invalid operands to binary expression ('S' and 'double')}}
-+#endif
-+  double d = S() + 1.0;
-+#ifndef MS
-+  // expected-error@-2{{use of overloaded operator '+' is ambiguous}}
-+  // expected-note@-3 36{{built-in candidate operator+}}
-+#endif
-+}
deleted file mode 100644
--- a/build/build-clang/r320462.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-https://reviews.llvm.org/D41089
-
-[COFF] Don't error out on undefined references to __enclave_config
-
-This is required for linking the CRT from MSVC 2017 15.5.
-
-diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
---- a/lld/COFF/Driver.cpp
-+++ b/lld/COFF/Driver.cpp
-@@ -1167,6 +1167,8 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
-   Symtab->addAbsolute(mangle("__guard_iat_table"), 0);
-   Symtab->addAbsolute(mangle("__guard_longjmp_count"), 0);
-   Symtab->addAbsolute(mangle("__guard_longjmp_table"), 0);
-+  // Needed for MSVC 2017 15.5 CRT.
-+  Symtab->addAbsolute(mangle("__enclave_config"), 0);
- 
-   // This code may add new undefined symbols to the link, which may enqueue more
-   // symbol resolution tasks, so we need to continue executing tasks until we
deleted file mode 100644
--- a/build/build-clang/r327876.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 522a892efc2ff22a2fd421b1ef4d9d9739d78b2e Mon Sep 17 00:00:00 2001
-From: Vitaly Buka <vitalybuka@google.com>
-Date: Mon, 19 Mar 2018 18:22:35 +0000
-Subject: [PATCH] Fix CMake/MSVC when compiler-rt and llvm are built separately
-
-Summary:
-For some reason CMake can't find the `append` macro if LLVM is built separately and imported via `LLVM_CONFIG_PATH`.
-
-Patch by Loo Rong Jie
-
-Reviewers: rnk, vitalybuka
-
-Reviewed By: rnk, vitalybuka
-
-Subscribers: dberris, mgorny, llvm-commits, #sanitizers
-
-Differential Revision: https://reviews.llvm.org/D43458
-
-git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@327876 91177308-0d34-0410-b5e6-96231b3b80d8
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
-index 4b953b212..a02ef9532 100644
---- a/compiler-rt/CMakeLists.txt
-+++ b/compiler-rt/CMakeLists.txt
-@@ -339,7 +339,7 @@ if (CMAKE_LINKER MATCHES "link.exe$")
-   # it, but CMake doesn't seem to have a way to set linker flags for
-   # individual static libraries, so we enable the suppression flag for
-   # the whole compiler-rt project.
--  append("/IGNORE:4221" CMAKE_STATIC_LINKER_FLAGS)
-+  set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221")
- endif()
- 
- add_subdirectory(include)
--- 
-2.18.0
-
--- a/taskcluster/ci/toolchain/windows.yml
+++ b/taskcluster/ci/toolchain/windows.yml
@@ -18,37 +18,16 @@ win64-clang-cl:
         using: toolchain-script
         script: build-clang64-windows.sh
         resources:
             - 'build/build-clang/build-clang.py'
             - 'build/build-clang/clang-win64.json'
             - 'taskcluster/scripts/misc/build-clang-windows-helper64.sh'
         toolchain-artifact: public/build/clang.tar.bz2
 
-win64-clang-cl-st-an:
-    description: "Clang-cl static analysis toolchain build"
-    treeherder:
-        kind: build
-        platform: toolchains/opt
-        symbol: TW64(clang-cl-st-an)
-        tier: 1
-    worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
-    worker:
-        max-run-time: 7200
-        env:
-            TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/build-clang-cl.manifest"
-    run:
-        using: toolchain-script
-        script: build-clang64-st-an-windows.sh
-        resources:
-            - 'build/build-clang/build-clang.py'
-            - 'build/build-clang/clang-win64-st-an.json'
-            - 'taskcluster/scripts/misc/build-clang-windows-helper64.sh'
-        toolchain-artifact: public/build/clang.tar.bz2
-
 win32-clang-tidy:
     description: "Clang-tidy toolchain build"
     index:
         product: static-analysis
         job-name: win32-clang-tidy
     treeherder:
         kind: build
         platform: toolchains/opt
deleted file mode 100755
--- a/taskcluster/scripts/misc/build-clang64-st-an-windows.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-source build/src/taskcluster/scripts/misc/build-clang-windows-helper64.sh clang-win64-st-an.json