Bug 1455782 - Remove c++14->c++11 patch. - r=kvark draft
authorJeff Gilbert <jgilbert@mozilla.com>
Fri, 20 Apr 2018 16:22:58 -0700
changeset 785977 5b217c6721cfd1fe61c24f45f084438aea254879
parent 785976 cb0b7d7c10d46d459265355e01b64d125d67b58e
push id107380
push userbmo:jgilbert@mozilla.com
push dateFri, 20 Apr 2018 23:24:15 +0000
reviewerskvark
bugs1455782
milestone61.0a1
Bug 1455782 - Remove c++14->c++11 patch. - r=kvark MozReview-Commit-ID: 5Y0ba4BXYFU
gfx/angle/checkout/out/gen/angle/id/commit.h
gfx/angle/checkout/src/compiler/translator/BaseTypes.h
gfx/angle/checkout/src/compiler/translator/ImmutableString.h
gfx/angle/checkout/src/compiler/translator/StaticType.h
gfx/angle/checkout/src/compiler/translator/Symbol.h
gfx/angle/checkout/src/compiler/translator/SymbolTable.cpp
gfx/angle/checkout/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
gfx/angle/cherries.log
gfx/angle/targets/angle_common/moz.build
gfx/angle/targets/angle_gpu_info_util/moz.build
gfx/angle/targets/angle_image_util/moz.build
gfx/angle/targets/libANGLE/moz.build
gfx/angle/targets/libEGL/moz.build
gfx/angle/targets/libGLESv2/moz.build
gfx/angle/targets/preprocessor/moz.build
gfx/angle/targets/translator/moz.build
--- a/gfx/angle/checkout/out/gen/angle/id/commit.h
+++ b/gfx/angle/checkout/out/gen/angle/id/commit.h
@@ -1,3 +1,3 @@
-#define ANGLE_COMMIT_HASH "27cef491162b"
+#define ANGLE_COMMIT_HASH "fcbca0e873c3"
 #define ANGLE_COMMIT_HASH_SIZE 12
-#define ANGLE_COMMIT_DATE "2018-03-14 13:28:50 -0700"
+#define ANGLE_COMMIT_DATE "2018-04-20 16:07:35 -0700"
--- a/gfx/angle/checkout/src/compiler/translator/BaseTypes.h
+++ b/gfx/angle/checkout/src/compiler/translator/BaseTypes.h
@@ -125,17 +125,17 @@ enum TBasicType
     EbtAddress,  // should be deprecated??
 
     EbtAtomicCounter,
 
     // end of list
     EbtLast
 };
 
-constexpr14 static const char *GetBasicMangledName(TBasicType t)
+constexpr const char *GetBasicMangledName(TBasicType t)
 {
     switch (t)
     {
         case EbtFloat:
             return "f";
         case EbtInt:
             return "i";
         case EbtUInt:
--- a/gfx/angle/checkout/src/compiler/translator/ImmutableString.h
+++ b/gfx/angle/checkout/src/compiler/translator/ImmutableString.h
@@ -15,45 +15,43 @@
 #include "common/string_utils.h"
 #include "compiler/translator/Common.h"
 
 namespace sh
 {
 
 namespace
 {
-
-constexpr14 size_t constStrlen(const char *str)
+constexpr size_t constStrlen(const char *str)
 {
     if (str == nullptr)
     {
         return 0u;
     }
     size_t len = 0u;
     while (*(str + len) != '\0')
     {
         ++len;
     }
     return len;
 }
-
 }
 
 class ImmutableString
 {
   public:
     // The data pointer passed in must be one of:
     //  1. nullptr (only valid with length 0).
     //  2. a null-terminated static char array like a string literal.
     //  3. a null-terminated pool allocated char array. This can't be c_str() of a local TString,
     //     since when a TString goes out of scope it clears its first character.
+    explicit constexpr ImmutableString(const char *data) : mData(data), mLength(constStrlen(data))
+    {
+    }
 
-    template<size_t N>
-    explicit constexpr ImmutableString(const char (&data)[N]) : mData(data), mLength(N-1) {}
-    explicit constexpr14 ImmutableString(const char *(&data)) : mData(data), mLength(constStrlen(data)) {}
     constexpr ImmutableString(const char *data, size_t length) : mData(data), mLength(length) {}
 
     ImmutableString(const std::string &str)
         : mData(AllocatePoolCharArray(str.c_str(), str.size())), mLength(str.size())
     {
     }
 
     constexpr ImmutableString(const ImmutableString &) = default;
@@ -68,41 +66,41 @@ class ImmutableString
     constexpr bool empty() const { return mLength == 0; }
     bool beginsWith(const char *prefix) const { return angle::BeginsWith(data(), prefix); }
     constexpr bool beginsWith(const ImmutableString &prefix) const
     {
         return mLength >= prefix.length() && memcmp(data(), prefix.data(), prefix.length()) == 0;
     }
     bool contains(const char *substr) const { return strstr(data(), substr) != nullptr; }
 
-    constexpr14 bool operator==(const ImmutableString &b) const
+    constexpr bool operator==(const ImmutableString &b) const
     {
         if (mLength != b.mLength)
         {
             return false;
         }
         return memcmp(data(), b.data(), mLength) == 0;
     }
-    constexpr14 bool operator!=(const ImmutableString &b) const { return !(*this == b); }
-    constexpr14 bool operator==(const char *b) const
+    constexpr bool operator!=(const ImmutableString &b) const { return !(*this == b); }
+    constexpr bool operator==(const char *b) const
     {
         if (b == nullptr)
         {
             return empty();
         }
         return strcmp(data(), b) == 0;
     }
-    constexpr14 bool operator!=(const char *b) const { return !(*this == b); }
+    constexpr bool operator!=(const char *b) const { return !(*this == b); }
     bool operator==(const std::string &b) const
     {
         return mLength == b.length() && memcmp(data(), b.c_str(), mLength) == 0;
     }
     bool operator!=(const std::string &b) const { return !(*this == b); }
 
-    constexpr14 bool operator<(const ImmutableString &b) const
+    constexpr bool operator<(const ImmutableString &b) const
     {
         if (mLength < b.mLength)
         {
             return true;
         }
         if (mLength > b.mLength)
         {
             return false;
@@ -111,17 +109,17 @@ class ImmutableString
     }
 
     template <size_t hashBytes>
     struct FowlerNollVoHash
     {
         static const size_t kFnvOffsetBasis;
         static const size_t kFnvPrime;
 
-        constexpr14 size_t operator()(const ImmutableString &a) const
+        constexpr size_t operator()(const ImmutableString &a) const
         {
             const char *data = a.data();
             size_t hash      = kFnvOffsetBasis;
             while ((*data) != '\0')
             {
                 hash = hash ^ (*data);
                 hash = hash * kFnvPrime;
                 ++data;
--- a/gfx/angle/checkout/src/compiler/translator/StaticType.h
+++ b/gfx/angle/checkout/src/compiler/translator/StaticType.h
@@ -33,21 +33,21 @@ static constexpr size_t kStaticMangledNa
 // This simple struct is needed so that a char array can be returned by value.
 struct StaticMangledName
 {
     // If this array is too small, the compiler will produce errors.
     char name[kStaticMangledNameMaxLength + 1] = {};
 };
 
 // Generates a mangled name for a TType given its parameters.
-static constexpr14 StaticMangledName BuildStaticMangledName(TBasicType basicType,
-                                                     TPrecision precision,
-                                                     TQualifier qualifier,
-                                                     unsigned char primarySize,
-                                                     unsigned char secondarySize)
+constexpr StaticMangledName BuildStaticMangledName(TBasicType basicType,
+                                                   TPrecision precision,
+                                                   TQualifier qualifier,
+                                                   unsigned char primarySize,
+                                                   unsigned char secondarySize)
 {
     StaticMangledName name = {};
     // When this function is executed constexpr (should be always),
     // name.name[at] is guaranteed by the compiler to never go out of bounds.
     size_t at = 0;
 
     bool isMatrix = primarySize > 1 && secondarySize > 1;
     bool isVector = primarySize > 1 && secondarySize == 1;
@@ -77,52 +77,71 @@ static constexpr14 StaticMangledName Bui
     }
 
     name.name[at++] = ';';
 
     name.name[at] = '\0';
     return name;
 }
 
+// This "variable" contains the mangled names for every constexpr-generated TType.
+// If kMangledNameInstance<B, P, Q, PS, SS> is used anywhere (specifally
+// in kInstance, below), this is where the appropriate type will be stored.
+template <TBasicType basicType,
+          TPrecision precision,
+          TQualifier qualifier,
+          unsigned char primarySize,
+          unsigned char secondarySize>
+static constexpr StaticMangledName kMangledNameInstance =
+    BuildStaticMangledName(basicType, precision, qualifier, primarySize, secondarySize);
+
+//
+// Generation and static allocation of TType values.
+//
+
+// This "variable" contains every constexpr-generated TType.
+// If kInstance<B, P, Q, PS, SS> is used anywhere (specifally
+// in Get, below), this is where the appropriate type will be stored.
+template <TBasicType basicType,
+          TPrecision precision,
+          TQualifier qualifier,
+          unsigned char primarySize,
+          unsigned char secondarySize>
+static constexpr TType kInstance =
+    TType(basicType,
+          precision,
+          qualifier,
+          primarySize,
+          secondarySize,
+          kMangledNameInstance<basicType, precision, qualifier, primarySize, secondarySize>.name);
+
 }  // namespace Helpers
 
 //
 // Fully-qualified type lookup.
 //
 
 template <TBasicType basicType,
           TPrecision precision,
           TQualifier qualifier,
           unsigned char primarySize,
           unsigned char secondarySize>
-constexpr14 const TType *Get()
+constexpr const TType *Get()
 {
     static_assert(1 <= primarySize && primarySize <= 4, "primarySize out of bounds");
     static_assert(1 <= secondarySize && secondarySize <= 4, "secondarySize out of bounds");
-
-    static constexpr14 const auto kMangledNameInstance =
-        Helpers::BuildStaticMangledName(basicType, precision, qualifier, primarySize, secondarySize);
-
-    static constexpr14 const TType kInstance =
-        TType(basicType,
-              precision,
-              qualifier,
-              primarySize,
-              secondarySize,
-              kMangledNameInstance.name);
-
-    return &kInstance;
+    return &Helpers::kInstance<basicType, precision, qualifier, primarySize, secondarySize>;
 }
 
 //
 // Overloads
 //
 
 template <TBasicType basicType, unsigned char primarySize = 1, unsigned char secondarySize = 1>
-constexpr14 const TType *GetBasic()
+constexpr const TType *GetBasic()
 {
     return Get<basicType, EbpUndefined, EvqGlobal, primarySize, secondarySize>();
 }
 
 template <TBasicType basicType,
           TQualifier qualifier,
           unsigned char primarySize   = 1,
           unsigned char secondarySize = 1>
@@ -136,17 +155,17 @@ const TType *GetQualified()
 namespace Helpers
 {
 
 // Helper which takes secondarySize statically but primarySize dynamically.
 template <TBasicType basicType,
           TPrecision precision,
           TQualifier qualifier,
           unsigned char secondarySize>
-constexpr14 const TType *GetForVecMatHelper(unsigned char primarySize)
+constexpr const TType *GetForVecMatHelper(unsigned char primarySize)
 {
     static_assert(basicType == EbtFloat || basicType == EbtInt || basicType == EbtUInt ||
                       basicType == EbtBool,
                   "unsupported basicType");
     switch (primarySize)
     {
         case 1:
             return Get<basicType, precision, qualifier, 1, secondarySize>();
@@ -162,17 +181,17 @@ constexpr14 const TType *GetForVecMatHel
     }
 }
 
 }  // namespace Helpers
 
 template <TBasicType basicType,
           TPrecision precision = EbpUndefined,
           TQualifier qualifier = EvqGlobal>
-constexpr14 const TType *GetForVecMat(unsigned char primarySize, unsigned char secondarySize = 1)
+constexpr const TType *GetForVecMat(unsigned char primarySize, unsigned char secondarySize = 1)
 {
     static_assert(basicType == EbtFloat || basicType == EbtInt || basicType == EbtUInt ||
                       basicType == EbtBool,
                   "unsupported basicType");
     switch (secondarySize)
     {
         case 1:
             return Helpers::GetForVecMatHelper<basicType, precision, qualifier, 1>(primarySize);
@@ -184,17 +203,17 @@ constexpr14 const TType *GetForVecMat(un
             return Helpers::GetForVecMatHelper<basicType, precision, qualifier, 4>(primarySize);
         default:
             UNREACHABLE();
             return GetBasic<EbtVoid>();
     }
 }
 
 template <TBasicType basicType, TPrecision precision = EbpUndefined>
-constexpr14 const TType *GetForVec(TQualifier qualifier, unsigned char size)
+constexpr const TType *GetForVec(TQualifier qualifier, unsigned char size)
 {
     switch (qualifier)
     {
         case EvqGlobal:
             return Helpers::GetForVecMatHelper<basicType, precision, EvqGlobal, 1>(size);
         case EvqOut:
             return Helpers::GetForVecMatHelper<basicType, precision, EvqOut, 1>(size);
         default:
--- a/gfx/angle/checkout/src/compiler/translator/Symbol.h
+++ b/gfx/angle/checkout/src/compiler/translator/Symbol.h
@@ -157,17 +157,17 @@ class TInterfaceBlock : public TSymbol, 
 };
 
 // Immutable version of TParameter.
 struct TConstParameter
 {
     POOL_ALLOCATOR_NEW_DELETE();
     TConstParameter() : name(""), type(nullptr) {}
     explicit TConstParameter(const ImmutableString &n) : name(n), type(nullptr) {}
-    constexpr14 explicit TConstParameter(const TType *t) : name(""), type(t) {}
+    constexpr explicit TConstParameter(const TType *t) : name(""), type(t) {}
     TConstParameter(const ImmutableString &n, const TType *t) : name(n), type(t) {}
 
     // Both constructor arguments must be const.
     TConstParameter(ImmutableString *n, TType *t)       = delete;
     TConstParameter(const ImmutableString *n, TType *t) = delete;
     TConstParameter(ImmutableString *n, const TType *t) = delete;
 
     const ImmutableString name;
--- a/gfx/angle/checkout/src/compiler/translator/SymbolTable.cpp
+++ b/gfx/angle/checkout/src/compiler/translator/SymbolTable.cpp
@@ -248,41 +248,41 @@ const TSymbol *TSymbolTable::findBuiltIn
 
         if (symbol)
             return symbol;
     }
 
     return nullptr;
 }
 
-constexpr14 bool IsGenType(const TType *type)
+constexpr bool IsGenType(const TType *type)
 {
     if (type)
     {
         TBasicType basicType = type->getBasicType();
         return basicType == EbtGenType || basicType == EbtGenIType || basicType == EbtGenUType ||
                basicType == EbtGenBType;
     }
 
     return false;
 }
 
-constexpr14 bool IsVecType(const TType *type)
+constexpr bool IsVecType(const TType *type)
 {
     if (type)
     {
         TBasicType basicType = type->getBasicType();
         return basicType == EbtVec || basicType == EbtIVec || basicType == EbtUVec ||
                basicType == EbtBVec;
     }
 
     return false;
 }
 
-constexpr14 const TType *SpecificType(const TType *type, int size)
+constexpr const TType *SpecificType(const TType *type, int size)
 {
     ASSERT(size >= 1 && size <= 4);
 
     if (!type)
     {
         return nullptr;
     }
 
@@ -302,17 +302,17 @@ constexpr14 const TType *SpecificType(co
         case EbtGenBType:
             return StaticType::GetForVec<EbtBool>(type->getQualifier(),
                                                            static_cast<unsigned char>(size));
         default:
             return type;
     }
 }
 
-constexpr14 const TType *VectorType(const TType *type, int size)
+constexpr const TType *VectorType(const TType *type, int size)
 {
     ASSERT(size >= 2 && size <= 4);
 
     if (!type)
     {
         return nullptr;
     }
 
--- a/gfx/angle/checkout/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
+++ b/gfx/angle/checkout/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
@@ -374,17 +374,18 @@ const gl::AttachmentList &FramebufferD3D
     }
 
     // When rendering with no render target on D3D, two bugs lead to incorrect behavior on Intel
     // drivers < 4815. The rendering samples always pass neglecting discard statements in pixel
     // shader. We add a dummy texture as render target in such case.
     if (mRenderer->getWorkarounds().addDummyTextureNoRenderTarget &&
         colorAttachmentsForRender.empty() && activeProgramOutputs.any())
     {
-        ASSERT(static_cast<size_t>(activeProgramOutputs.size()) <= 32);
+        static_assert(static_cast<size_t>(activeProgramOutputs.size()) <= 32,
+                      "Size of active program outputs should less or equal than 32.");
         const GLuint activeProgramLocation = static_cast<GLuint>(
             gl::ScanForward(static_cast<uint32_t>(activeProgramOutputs.bits())));
 
         if (mDummyAttachment.isAttached() &&
             (mDummyAttachment.getBinding() - GL_COLOR_ATTACHMENT0) == activeProgramLocation)
         {
             colorAttachmentsForRender.push_back(&mDummyAttachment);
         }
--- a/gfx/angle/cherries.log
+++ b/gfx/angle/cherries.log
@@ -1,61 +1,51 @@
-commit 27cef491162bfa5d5d69cf65758bd9b85033d339
+commit fcbca0e873c3222f13578a07294349c03ce44ab4
 Author: Dzmitry Malyshau <kvark@mozilla.com>
 Date:   Fri Mar 9 16:37:22 2018 -0500
 
     Update driver constants on program change. Comes with a new SamplerMetadataUpdateOnSetProgram test.
     
     This is a fix for a graphics problem we've been seeing for a while with WebRender+Angle on Nvidia/Windows. The sampler metadata doesn't get updated properly for some of the draw calls, since it's not invalidated on program change (this is what the CL is fixing). Extra entries get filled with garbage data because the constant buffer is updated with `MAP_WRITE_DISCARD`, and only those samplers are updated that the current program has. This may generally occur undetected, if not for our `textureSize` calls that appear to go the NV-specific Angle workaround path that ignores our `baseLevel = 0` and instead picks the one from the driver constants (which contains garbage), leading to either zeroes returned or even crashing the driver sometimes...
     
     BUG=angleproject:2399
     
     Change-Id: Ie2bef32184e2305c7255299933b899eb3fffb7ab
     Reviewed-on: https://chromium-review.googlesource.com/949412
     Reviewed-by: Jamie Madill <jmadill@chromium.org>
     Reviewed-by: Geoff Lang <geofflang@chromium.org>
     Commit-Queue: Geoff Lang <geofflang@chromium.org>
 
-commit 7edc21933ef15d10e5790e6bfb7f9fd62f13be58
+commit 17c34b476b3a941ee749165b6a360f8a3488960d
 Author: Frank Henigman <fjhenigman@chromium.org>
 Date:   Wed Feb 28 15:47:13 2018 -0500
 
     Add missing #include.
     
     Would not compile locally on Linux without adding #include <algorithm>.
     
     BUG=none
     
     Change-Id: I2f817faf681234c0e7eeeda0ad837e8285d9071a
     Reviewed-on: https://chromium-review.googlesource.com/941613
     Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
     Reviewed-by: Jamie Madill <jmadill@chromium.org>
     Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
     Reviewed-by: Luc Ferron <lucferron@chromium.org>
 
-commit 1f7cc32a8d49ff3880660f32e3a4aca7bbc1f4e8
+commit eb0da26df7dc6cd45ee17455633bdec2efbaf322
 Author: Jeff Gilbert <jgilbert@mozilla.com>
 Date:   Thu Mar 1 17:08:35 2018 -0800
 
     Fix R11F_G11F_B10F/RGB/FLOAT SKIP_PIXELS=1 uploads.
     
     Bug: angleproject:2385
     
     Change-Id: I555000f23314441084895e275824d2eb48ba7041
 
-commit bdc28a041ea0090438790756ff63d8944f57d4cc
-Author: Jeff Gilbert <jgilbert@mozilla.com>
-Date:   Wed Feb 28 17:46:39 2018 -0800
-
-    Support c++11 non-relaxed-constexpr with constexpr14.
-    
-    BUG=angleproject:2384
-    
-    Change-Id: I0448aef7184c9060db016dee512b5fec29960f46
-
 commit 7d510ab511cd502220f81507189a2861958e22fd
 Author: Jeff Gilbert <jgilbert@mozilla.com>
 Date:   Mon Feb 26 16:30:06 2018 -0800
 
     Move constructors may not be marked explicit.
     
     BUG=angleproject:2383
     
--- a/gfx/angle/targets/angle_common/moz.build
+++ b/gfx/angle/targets/angle_common/moz.build
@@ -32,17 +32,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/angle_gpu_info_util/moz.build
+++ b/gfx/angle/targets/angle_gpu_info_util/moz.build
@@ -32,17 +32,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/angle_image_util/moz.build
+++ b/gfx/angle/targets/angle_image_util/moz.build
@@ -31,17 +31,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/libANGLE/moz.build
+++ b/gfx/angle/targets/libANGLE/moz.build
@@ -37,17 +37,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/libEGL/moz.build
+++ b/gfx/angle/targets/libEGL/moz.build
@@ -34,17 +34,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/libGLESv2/moz.build
+++ b/gfx/angle/targets/libGLESv2/moz.build
@@ -38,17 +38,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/preprocessor/moz.build
+++ b/gfx/angle/targets/preprocessor/moz.build
@@ -31,17 +31,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',
--- a/gfx/angle/targets/translator/moz.build
+++ b/gfx/angle/targets/translator/moz.build
@@ -34,17 +34,16 @@ DEFINES['_CRT_SECURE_NO_DEPRECATE'] = Tr
 DEFINES['_HAS_EXCEPTIONS'] = '0'
 DEFINES['_SCL_SECURE_NO_DEPRECATE'] = True
 DEFINES['_SECURE_ATL'] = True
 DEFINES['_UNICODE'] = True
 #DEFINES['_USING_V110_SDK71_'] = True
 #DEFINES['_WIN32_WINNT'] = '0x0A00'
 #DEFINES['_WINDOWS'] = True
 #DEFINES['__STD_C'] = True
-#DEFINES['constexpr14'] = 'constexpr'
 
 LOCAL_INCLUDES += [
     '../../checkout/',
     '../../checkout/include/',
     '../../checkout/out/gen/',
     '../../checkout/out/gen/angle/',
     '../../checkout/src/',
     '../../checkout/src/common/third_party/base/',