Enable -Wextra-semi and -Wextra-semi-stmt.

This will prevent users from accidentally making semicolon errors in
the future.

Bug: chromium:926235
Change-Id: I79a6fa376fb1ad8f0fcf1b65b1f572a035d1f4e9
Reviewed-on: https://chromium-review.googlesource.com/c/1446493
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
diff --git a/src/common/debug.h b/src/common/debug.h
index 322b7fe..f4ad029 100644
--- a/src/common/debug.h
+++ b/src/common/debug.h
@@ -231,11 +231,11 @@
 #    if defined(_MSC_VER)
 #        define EVENT(message, ...)                                                      \
             gl::ScopedPerfEventHelper scopedPerfEventHelper##__LINE__("%s" message "\n", \
-                                                                      __FUNCTION__, __VA_ARGS__);
+                                                                      __FUNCTION__, __VA_ARGS__)
 #    else
 #        define EVENT(message, ...)                                                          \
             gl::ScopedPerfEventHelper scopedPerfEventHelper("%s" message "\n", __FUNCTION__, \
-                                                            ##__VA_ARGS__);
+                                                            ##__VA_ARGS__)
 #    endif  // _MSC_VER
 #else
 #    define EVENT(message, ...) (void(0))
@@ -346,4 +346,13 @@
 #    define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS
 #endif
 
+#if defined(__clang__)
+#    define ANGLE_DISABLE_EXTRA_SEMI_WARNING \
+        _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wextra-semi\"")
+#    define ANGLE_REENABLE_EXTRA_SEMI_WARNING _Pragma("clang diagnostic pop")
+#else
+#    define ANGLE_DISABLE_EXTRA_SEMI_WARNING
+#    define ANGLE_REENABLE_EXTRA_SEMI_WARNING
+#endif
+
 #endif  // COMMON_DEBUG_H_
diff --git a/src/compiler/preprocessor/Tokenizer.cpp b/src/compiler/preprocessor/Tokenizer.cpp
index 429026e..2ce67b7 100644
--- a/src/compiler/preprocessor/Tokenizer.cpp
+++ b/src/compiler/preprocessor/Tokenizer.cpp
@@ -700,6 +700,8 @@
 #if defined(__clang__)
 // Flex uses `/*FALLTHROUGH*/` instead of dedicated statements.
 #    pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+// Flex isn't semi-colon clean.
+#    pragma clang diagnostic ignored "-Wextra-semi-stmt"
 #endif
 
 // Workaround for flex using the register keyword, deprecated in C++11.
diff --git a/src/compiler/preprocessor/Tokenizer.l b/src/compiler/preprocessor/Tokenizer.l
index 3df7367..94db185 100644
--- a/src/compiler/preprocessor/Tokenizer.l
+++ b/src/compiler/preprocessor/Tokenizer.l
@@ -41,6 +41,8 @@
 #if defined(__clang__)
 // Flex uses `/*FALLTHROUGH*/` instead of dedicated statements.
 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+// Flex isn't semi-colon clean.
+#pragma clang diagnostic ignored "-Wextra-semi-stmt"
 #endif
 
 // Workaround for flex using the register keyword, deprecated in C++11.
diff --git a/src/compiler/translator/Common.h b/src/compiler/translator/Common.h
index 925bcfe..d0b8347 100644
--- a/src/compiler/translator/Common.h
+++ b/src/compiler/translator/Common.h
@@ -34,7 +34,7 @@
 //
 // Put POOL_ALLOCATOR_NEW_DELETE in base classes to make them use this scheme.
 //
-#define POOL_ALLOCATOR_NEW_DELETE()                                                  \
+#define POOL_ALLOCATOR_NEW_DELETE                                                    \
     void *operator new(size_t s) { return GetGlobalPoolAllocator()->allocate(s); }   \
     void *operator new(size_t, void *_Where) { return (_Where); }                    \
     void operator delete(void *) {}                                                  \
@@ -65,7 +65,7 @@
 class TVector : public std::vector<T, pool_allocator<T>>
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
 
     typedef typename std::vector<T, pool_allocator<T>>::size_type size_type;
     TVector() : std::vector<T, pool_allocator<T>>() {}
@@ -77,7 +77,7 @@
 class TUnorderedMap : public std::unordered_map<K, D, H, CMP, pool_allocator<std::pair<const K, D>>>
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     typedef pool_allocator<std::pair<const K, D>> tAllocator;
 
     TUnorderedMap() : std::unordered_map<K, D, H, CMP, tAllocator>() {}
@@ -93,7 +93,7 @@
 class TMap : public std::map<K, D, CMP, pool_allocator<std::pair<const K, D>>>
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     typedef pool_allocator<std::pair<const K, D>> tAllocator;
 
     TMap() : std::map<K, D, CMP, tAllocator>() {}
diff --git a/src/compiler/translator/Compiler.h b/src/compiler/translator/Compiler.h
index 86590b3..2227819 100644
--- a/src/compiler/translator/Compiler.h
+++ b/src/compiler/translator/Compiler.h
@@ -146,7 +146,8 @@
   protected:
     // Add emulated functions to the built-in function emulator.
     virtual void initBuiltInFunctionEmulator(BuiltInFunctionEmulator *emu,
-                                             ShCompileOptions compileOptions){};
+                                             ShCompileOptions compileOptions)
+    {}
     // Translate to object code. May generate performance warnings through the diagnostics.
     virtual void translate(TIntermBlock *root,
                            ShCompileOptions compileOptions,
diff --git a/src/compiler/translator/ConstantUnion.h b/src/compiler/translator/ConstantUnion.h
index 6dab5be..155fcd4 100644
--- a/src/compiler/translator/ConstantUnion.h
+++ b/src/compiler/translator/ConstantUnion.h
@@ -20,7 +20,7 @@
 class TConstantUnion
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TConstantUnion();
 
     bool cast(TBasicType newType, const TConstantUnion &constant);
diff --git a/src/compiler/translator/Declarator.h b/src/compiler/translator/Declarator.h
index 7801b65..5b5d26b 100644
--- a/src/compiler/translator/Declarator.h
+++ b/src/compiler/translator/Declarator.h
@@ -19,7 +19,7 @@
 class TDeclarator : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TDeclarator(const ImmutableString &name, const TSourceLoc &line);
 
     TDeclarator(const ImmutableString &name,
diff --git a/src/compiler/translator/FunctionLookup.h b/src/compiler/translator/FunctionLookup.h
index bebe09a..62b07f2 100644
--- a/src/compiler/translator/FunctionLookup.h
+++ b/src/compiler/translator/FunctionLookup.h
@@ -19,7 +19,7 @@
 class TFunctionLookup : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
 
     static TFunctionLookup *CreateConstructor(const TType *type);
     static TFunctionLookup *CreateFunctionCall(const ImmutableString &name, const TSymbol *symbol);
diff --git a/src/compiler/translator/IntermNode.cpp b/src/compiler/translator/IntermNode.cpp
index 1ebe6aa..f460174 100644
--- a/src/compiler/translator/IntermNode.cpp
+++ b/src/compiler/translator/IntermNode.cpp
@@ -194,11 +194,14 @@
 }
 
 #define REPLACE_IF_IS(node, type, original, replacement) \
-    if (node == original)                                \
+    do                                                   \
     {                                                    \
-        node = static_cast<type *>(replacement);         \
-        return true;                                     \
-    }
+        if (node == original)                            \
+        {                                                \
+            node = static_cast<type *>(replacement);     \
+            return true;                                 \
+        }                                                \
+    } while (0)
 
 size_t TIntermSymbol::getChildCount() const
 {
diff --git a/src/compiler/translator/IntermNode.h b/src/compiler/translator/IntermNode.h
index 66d434e..2380599 100644
--- a/src/compiler/translator/IntermNode.h
+++ b/src/compiler/translator/IntermNode.h
@@ -68,7 +68,7 @@
 class TIntermNode : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TIntermNode()
     {
         // TODO: Move this to TSourceLoc constructor
diff --git a/src/compiler/translator/ParseContext_autogen.h b/src/compiler/translator/ParseContext_autogen.h
index add5aee..f5eafd8 100644
--- a/src/compiler/translator/ParseContext_autogen.h
+++ b/src/compiler/translator/ParseContext_autogen.h
@@ -2,7 +2,7 @@
 // Generated by gen_builtin_symbols.py using data from builtin_variables.json and
 // builtin_function_declarations.txt.
 //
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
diff --git a/src/compiler/translator/QualifierTypes.h b/src/compiler/translator/QualifierTypes.h
index 071093a..950ba5f 100644
--- a/src/compiler/translator/QualifierTypes.h
+++ b/src/compiler/translator/QualifierTypes.h
@@ -34,9 +34,9 @@
 class TQualifierWrapperBase : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TQualifierWrapperBase(const TSourceLoc &line) : mLine(line) {}
-    virtual ~TQualifierWrapperBase(){};
+    virtual ~TQualifierWrapperBase() {}
     virtual TQualifierType getType() const             = 0;
     virtual ImmutableString getQualifierString() const = 0;
     virtual unsigned int getRank() const               = 0;
@@ -176,7 +176,7 @@
     using QualifierSequence = TVector<const TQualifierWrapperBase *>;
 
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TTypeQualifierBuilder(const TStorageQualifierWrapper *scope, int shaderVersion);
     // Adds the passed qualifier to the end of the sequence.
     void appendQualifier(const TQualifierWrapperBase *qualifier);
diff --git a/src/compiler/translator/ShaderStorageBlockFunctionHLSL.cpp b/src/compiler/translator/ShaderStorageBlockFunctionHLSL.cpp
index 60535fe..01b246d 100644
--- a/src/compiler/translator/ShaderStorageBlockFunctionHLSL.cpp
+++ b/src/compiler/translator/ShaderStorageBlockFunctionHLSL.cpp
@@ -409,7 +409,6 @@
                 out << ssboFunction.typeString << " " << ssboFunction.functionName
                     << "(RWByteAddressBuffer buffer, uint loc, " << ssboFunction.typeString
                     << " value)\n";
-                ;
                 out << "{\n";
 
                 OutputSSBOAtomicMemoryFunctionBody(out, ssboFunction);
@@ -420,7 +419,6 @@
                 out << ssboFunction.typeString << " " << ssboFunction.functionName
                     << "(RWByteAddressBuffer buffer, uint loc, " << ssboFunction.typeString
                     << " compare_value, " << ssboFunction.typeString << " value)\n";
-                ;
                 out << "{\n";
                 OutputSSBOAtomicMemoryFunctionBody(out, ssboFunction);
                 break;
diff --git a/src/compiler/translator/ShaderStorageBlockOutputHLSL.h b/src/compiler/translator/ShaderStorageBlockOutputHLSL.h
index caceca3..2ef2364 100644
--- a/src/compiler/translator/ShaderStorageBlockOutputHLSL.h
+++ b/src/compiler/translator/ShaderStorageBlockOutputHLSL.h
@@ -22,7 +22,7 @@
 
 struct TReferencedBlock : angle::NonCopyable
 {
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TReferencedBlock(const TInterfaceBlock *block, const TVariable *instanceVariable);
     const TInterfaceBlock *block;
     const TVariable *instanceVariable;  // May be nullptr if the block is not instanced.
diff --git a/src/compiler/translator/StructureHLSL.h b/src/compiler/translator/StructureHLSL.h
index 4d490eb..ba4a8d1 100644
--- a/src/compiler/translator/StructureHLSL.h
+++ b/src/compiler/translator/StructureHLSL.h
@@ -67,7 +67,7 @@
 
     struct TStructProperties : public angle::NonCopyable
     {
-        POOL_ALLOCATOR_NEW_DELETE();
+        POOL_ALLOCATOR_NEW_DELETE
 
         TStructProperties() {}
 
diff --git a/src/compiler/translator/Symbol.h b/src/compiler/translator/Symbol.h
index ab8a2af..3b74a0b 100644
--- a/src/compiler/translator/Symbol.h
+++ b/src/compiler/translator/Symbol.h
@@ -24,7 +24,7 @@
 class TSymbol : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TSymbol(TSymbolTable *symbolTable,
             const ImmutableString &name,
             SymbolType symbolType,
diff --git a/src/compiler/translator/SymbolTable_autogen.cpp b/src/compiler/translator/SymbolTable_autogen.cpp
index 47d1545..1ab25b2 100644
--- a/src/compiler/translator/SymbolTable_autogen.cpp
+++ b/src/compiler/translator/SymbolTable_autogen.cpp
@@ -2,7 +2,7 @@
 // Generated by gen_builtin_symbols.py using data from builtin_variables.json and
 // builtin_function_declarations.txt.
 //
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -2194,7 +2194,7 @@
     return &kVar_gl_WorkGroupSize;
 }
 
-};  // namespace BuiltInVariable
+}  // namespace BuiltInVariable
 
 namespace BuiltInParameters
 {
@@ -7347,7 +7347,7 @@
     BuiltInId::texture_USamplerCube1_Float3,
     BuiltInName::texture,
     TExtension::UNDEFINED,
-    BuiltInParameters::p0Y2B2B2B,
+    BuiltInParameters::p0Y2B0B,
     2,
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
@@ -9624,7 +9624,7 @@
     BuiltInId::textureGather_USamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
-    BuiltInParameters::p0Y2B2B2B,
+    BuiltInParameters::p0Y2B0B,
     2,
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
diff --git a/src/compiler/translator/SymbolTable_autogen.h b/src/compiler/translator/SymbolTable_autogen.h
index bb8a415..2168743 100644
--- a/src/compiler/translator/SymbolTable_autogen.h
+++ b/src/compiler/translator/SymbolTable_autogen.h
@@ -2,7 +2,7 @@
 // Generated by gen_builtin_symbols.py using data from builtin_variables.json and
 // builtin_function_declarations.txt.
 //
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
diff --git a/src/compiler/translator/SymbolUniqueId.h b/src/compiler/translator/SymbolUniqueId.h
index c9b7648..7d0979e 100644
--- a/src/compiler/translator/SymbolUniqueId.h
+++ b/src/compiler/translator/SymbolUniqueId.h
@@ -19,7 +19,7 @@
 class TSymbolUniqueId
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     explicit TSymbolUniqueId(const TSymbol &symbol);
     constexpr TSymbolUniqueId(const TSymbolUniqueId &) = default;
     TSymbolUniqueId &operator                          =(const TSymbolUniqueId &);
diff --git a/src/compiler/translator/Types.h b/src/compiler/translator/Types.h
index 7491edf..e6bfd1c 100644
--- a/src/compiler/translator/Types.h
+++ b/src/compiler/translator/Types.h
@@ -30,7 +30,7 @@
 class TField : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TField(TType *type, const ImmutableString &name, const TSourceLoc &line, SymbolType symbolType)
         : mType(type), mName(name), mLine(line), mSymbolType(symbolType)
     {
@@ -91,7 +91,7 @@
 class TType
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TType();
     explicit TType(TBasicType t, unsigned char ps = 1, unsigned char ss = 1);
     TType(TBasicType t,
diff --git a/src/compiler/translator/builtin_symbols_hash_autogen.txt b/src/compiler/translator/builtin_symbols_hash_autogen.txt
index b79f34f..50754b5 100644
--- a/src/compiler/translator/builtin_symbols_hash_autogen.txt
+++ b/src/compiler/translator/builtin_symbols_hash_autogen.txt
@@ -1 +1 @@
-87bb6e2c1015c9e9aaf2a89e1595cd30
\ No newline at end of file
+c0555364e16391744b56e1f5d9c614c0
\ No newline at end of file
diff --git a/src/compiler/translator/gen_builtin_symbols.py b/src/compiler/translator/gen_builtin_symbols.py
index 765a802..e519391 100644
--- a/src/compiler/translator/gen_builtin_symbols.py
+++ b/src/compiler/translator/gen_builtin_symbols.py
@@ -187,7 +187,7 @@
 
 {get_variable_definitions}
 
-}};  // namespace BuiltInVariable
+}}  // namespace BuiltInVariable
 
 namespace BuiltInParameters
 {{
diff --git a/src/compiler/translator/glslang.l b/src/compiler/translator/glslang.l
index c6aa91d..8af29a8 100644
--- a/src/compiler/translator/glslang.l
+++ b/src/compiler/translator/glslang.l
@@ -40,6 +40,8 @@
 #endif
 #if defined(__clang__)
 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+// Flex isn't semi-colon clean.
+#pragma clang diagnostic ignored "-Wextra-semi-stmt"
 #endif
 }
 
diff --git a/src/compiler/translator/glslang.y b/src/compiler/translator/glslang.y
index 262db79..5d113e3 100644
--- a/src/compiler/translator/glslang.y
+++ b/src/compiler/translator/glslang.y
@@ -123,41 +123,41 @@
       }                                                      \
   } while (0)
 
-#define VERTEX_ONLY(S, L) {  \
+#define VERTEX_ONLY(S, L) do {  \
     if (context->getShaderType() != GL_VERTEX_SHADER) {  \
         context->error(L, " supported in vertex shaders only", S);  \
     }  \
-}
+} while (0)
 
-#define COMPUTE_ONLY(S, L) {  \
+#define COMPUTE_ONLY(S, L) do {  \
     if (context->getShaderType() != GL_COMPUTE_SHADER) {  \
         context->error(L, " supported in compute shaders only", S);  \
     }  \
-}
+} while (0)
 
 #define ES2_ONLY(S, L) {  \
-    if (context->getShaderVersion() != 100) {  \
+    if (context->getShaderVersion() != 100) do {  \
         context->error(L, " supported in GLSL ES 1.00 only", S);  \
     }  \
-}
+} while (0)
 
-#define ES3_OR_NEWER(TOKEN, LINE, REASON) {  \
+#define ES3_OR_NEWER(TOKEN, LINE, REASON) do {  \
     if (context->getShaderVersion() < 300) {  \
         context->error(LINE, REASON " supported in GLSL ES 3.00 and above only", TOKEN);  \
     }  \
-}
+} while (0)
 
-#define ES3_OR_NEWER_OR_MULTIVIEW(TOKEN, LINE, REASON) {  \
+#define ES3_OR_NEWER_OR_MULTIVIEW(TOKEN, LINE, REASON) do {  \
     if (context->getShaderVersion() < 300 && !context->isExtensionEnabled(TExtension::OVR_multiview)) {  \
         context->error(LINE, REASON " supported in GLSL ES 3.00 and above only", TOKEN);  \
     }  \
-}
+} while (0)
 
-#define ES3_1_ONLY(TOKEN, LINE, REASON) {  \
+#define ES3_1_ONLY(TOKEN, LINE, REASON) do {  \
     if (context->getShaderVersion() != 310) {  \
         context->error(LINE, REASON " supported in GLSL ES 3.10 only", TOKEN);  \
     }  \
-}
+} while (0)
 %}
 
 %token <lex> INVARIANT HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION
diff --git a/src/compiler/translator/glslang_lex.cpp b/src/compiler/translator/glslang_lex.cpp
index 01d59a6..860eb3f 100644
--- a/src/compiler/translator/glslang_lex.cpp
+++ b/src/compiler/translator/glslang_lex.cpp
@@ -25,6 +25,8 @@
 #endif
 #if defined(__clang__)
 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+// Flex isn't semi-colon clean.
+#pragma clang diagnostic ignored "-Wextra-semi-stmt"
 #endif
 
 
diff --git a/src/compiler/translator/glslang_tab.cpp b/src/compiler/translator/glslang_tab.cpp
index ae76e36..d26de9a 100644
--- a/src/compiler/translator/glslang_tab.cpp
+++ b/src/compiler/translator/glslang_tab.cpp
@@ -392,41 +392,41 @@
       }                                                      \
   } while (0)
 
-#define VERTEX_ONLY(S, L) {  \
+#define VERTEX_ONLY(S, L) do {  \
     if (context->getShaderType() != GL_VERTEX_SHADER) {  \
         context->error(L, " supported in vertex shaders only", S);  \
     }  \
-}
+} while (0)
 
-#define COMPUTE_ONLY(S, L) {  \
+#define COMPUTE_ONLY(S, L) do {  \
     if (context->getShaderType() != GL_COMPUTE_SHADER) {  \
         context->error(L, " supported in compute shaders only", S);  \
     }  \
-}
+} while (0)
 
-#define ES2_ONLY(S, L) {  \
+#define ES2_ONLY(S, L) do {  \
     if (context->getShaderVersion() != 100) {  \
         context->error(L, " supported in GLSL ES 1.00 only", S);  \
     }  \
-}
+} while (0)
 
-#define ES3_OR_NEWER(TOKEN, LINE, REASON) {  \
+#define ES3_OR_NEWER(TOKEN, LINE, REASON) do {  \
     if (context->getShaderVersion() < 300) {  \
         context->error(LINE, REASON " supported in GLSL ES 3.00 and above only", TOKEN);  \
     }  \
-}
+} while (0)
 
-#define ES3_OR_NEWER_OR_MULTIVIEW(TOKEN, LINE, REASON) {  \
+#define ES3_OR_NEWER_OR_MULTIVIEW(TOKEN, LINE, REASON) do {  \
     if (context->getShaderVersion() < 300 && !context->isExtensionEnabled(TExtension::OVR_multiview)) {  \
         context->error(LINE, REASON " supported in GLSL ES 3.00 and above only", TOKEN);  \
     }  \
-}
+} while (0)
 
-#define ES3_1_ONLY(TOKEN, LINE, REASON) {  \
+#define ES3_1_ONLY(TOKEN, LINE, REASON) do {  \
     if (context->getShaderVersion() != 310) {  \
         context->error(LINE, REASON " supported in GLSL ES 3.10 only", TOKEN);  \
     }  \
-}
+} while (0)
 
 
 
diff --git a/src/compiler/translator/tree_util/BuiltIn_autogen.h b/src/compiler/translator/tree_util/BuiltIn_autogen.h
index 510092b..65b1ba7 100644
--- a/src/compiler/translator/tree_util/BuiltIn_autogen.h
+++ b/src/compiler/translator/tree_util/BuiltIn_autogen.h
@@ -2,7 +2,7 @@
 // Generated by gen_builtin_symbols.py using data from builtin_variables.json and
 // builtin_function_declarations.txt.
 //
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
diff --git a/src/compiler/translator/tree_util/IntermTraverse.h b/src/compiler/translator/tree_util/IntermTraverse.h
index 094261a..30687a4 100644
--- a/src/compiler/translator/tree_util/IntermTraverse.h
+++ b/src/compiler/translator/tree_util/IntermTraverse.h
@@ -33,7 +33,7 @@
 class TIntermTraverser : angle::NonCopyable
 {
   public:
-    POOL_ALLOCATOR_NEW_DELETE();
+    POOL_ALLOCATOR_NEW_DELETE
     TIntermTraverser(bool preVisit,
                      bool inVisit,
                      bool postVisit,
diff --git a/src/feature_support_util/feature_support_util.cpp b/src/feature_support_util/feature_support_util.cpp
index 1c70d5d..dd73243 100644
--- a/src/feature_support_util/feature_support_util.cpp
+++ b/src/feature_support_util/feature_support_util.cpp
@@ -13,8 +13,8 @@
 #include <string.h>
 #include "common/platform.h"
 #if defined(ANGLE_PLATFORM_ANDROID)
-#include <android/log.h>
-#include <unistd.h>
+#    include <android/log.h>
+#    include <unistd.h>
 #endif
 #include <fstream>
 #include <list>
@@ -27,21 +27,21 @@
 // Define ANGLE_FEATURE_UTIL_LOG_VERBOSE if you want VERBOSE to output
 // ANGLE_FEATURE_UTIL_LOG_VERBOSE is automatically defined when is_debug = true
 
-#define ERR(...) __android_log_print(ANDROID_LOG_ERROR, "ANGLE", __VA_ARGS__)
-#define WARN(...) __android_log_print(ANDROID_LOG_WARN, "ANGLE", __VA_ARGS__)
-#define INFO(...) __android_log_print(ANDROID_LOG_INFO, "ANGLE", __VA_ARGS__)
-#define DEBUG(...) __android_log_print(ANDROID_LOG_DEBUG, "ANGLE", __VA_ARGS__)
-#ifdef ANGLE_FEATURE_UTIL_LOG_VERBOSE
-#define VERBOSE(...) __android_log_print(ANDROID_LOG_VERBOSE, "ANGLE", __VA_ARGS__)
-#else
-#define VERBOSE(...) ((void)0)
-#endif
+#    define ERR(...) __android_log_print(ANDROID_LOG_ERROR, "ANGLE", __VA_ARGS__)
+#    define WARN(...) __android_log_print(ANDROID_LOG_WARN, "ANGLE", __VA_ARGS__)
+#    define INFO(...) __android_log_print(ANDROID_LOG_INFO, "ANGLE", __VA_ARGS__)
+#    define DEBUG(...) __android_log_print(ANDROID_LOG_DEBUG, "ANGLE", __VA_ARGS__)
+#    ifdef ANGLE_FEATURE_UTIL_LOG_VERBOSE
+#        define VERBOSE(...) __android_log_print(ANDROID_LOG_VERBOSE, "ANGLE", __VA_ARGS__)
+#    else
+#        define VERBOSE(...) ((void)0)
+#    endif
 #else  // defined(ANDROID)
-#define ERR(...) printf(__VA_ARGS__);
-#define WARN(...) printf(__VA_ARGS__);
-#define INFO(...) printf(__VA_ARGS__);
-#define DEBUG(...) printf(__VA_ARGS__);
-#define VERBOSE(...) printf(__VA_ARGS__);
+#    define ERR(...) printf(__VA_ARGS__)
+#    define WARN(...) printf(__VA_ARGS__)
+#    define INFO(...) printf(__VA_ARGS__)
+#    define DEBUG(...) printf(__VA_ARGS__)
+#    define VERBOSE(...) printf(__VA_ARGS__)
 #endif  // defined(ANDROID)
 
 // JSON values are generally composed of either:
@@ -845,14 +845,14 @@
         return false;
     }
 
-// TODO (http://anglebug.com/3036): Restore the real code
+    // TODO (http://anglebug.com/3036): Restore the real code
     angle::SystemInfo *systemInfo = new angle::SystemInfo;
     systemInfo->gpus.resize(1);
     GPUDeviceInfo &gpu = systemInfo->gpus[0];
-    gpu.vendorId = 0xFEFEFEFE;
-    gpu.deviceId = 0xFEEEFEEE;
-    gpu.driverVendor = "Foo";
-    gpu.driverVersion = "1.2.3.4";
+    gpu.vendorId       = 0xFEFEFEFE;
+    gpu.deviceId       = 0xFEEEFEEE;
+    gpu.driverVendor   = "Foo";
+    gpu.driverVersion  = "1.2.3.4";
 
     *systemInfoHandle = systemInfo;
     return true;
diff --git a/src/libANGLE/Config.cpp b/src/libANGLE/Config.cpp
index 2ecdb6d..316e7f9 100644
--- a/src/libANGLE/Config.cpp
+++ b/src/libANGLE/Config.cpp
@@ -137,11 +137,12 @@
 
     bool operator()(const Config &x, const Config &y) const
     {
-#define SORT(attribute)                   \
-    if (x.attribute != y.attribute)       \
-    {                                     \
-        return x.attribute < y.attribute; \
-    }
+#define SORT(attribute)                       \
+    do                                        \
+    {                                         \
+        if (x.attribute != y.attribute)       \
+            return x.attribute < y.attribute; \
+    } while (0)
 
         static_assert(EGL_NONE < EGL_SLOW_CONFIG && EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG,
                       "Unexpected EGL enum value.");
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 0ffd4b5..10abb77 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -50,12 +50,6 @@
 {
 namespace
 {
-
-#define ANGLE_HANDLE_ERR(X) \
-    (void)(X);              \
-    return;
-#define ANGLE_CONTEXT_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_HANDLE_ERR);
-
 template <typename T>
 std::vector<Path *> GatherPaths(PathManager &resourceManager,
                                 GLsizei numPaths,
diff --git a/src/libANGLE/Context.inl.h b/src/libANGLE/Context.inl.h
index 6f138de..4738160 100644
--- a/src/libANGLE/Context.inl.h
+++ b/src/libANGLE/Context.inl.h
@@ -17,7 +17,7 @@
 #define ANGLE_HANDLE_ERR(X) \
     (void)(X);              \
     return;
-#define ANGLE_CONTEXT_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_HANDLE_ERR);
+#define ANGLE_CONTEXT_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_HANDLE_ERR)
 
 namespace gl
 {
diff --git a/src/libANGLE/Device.h b/src/libANGLE/Device.h
index 9e02620..1096e95 100644
--- a/src/libANGLE/Device.h
+++ b/src/libANGLE/Device.h
@@ -19,7 +19,7 @@
 namespace rx
 {
 class DeviceImpl;
-}
+}  // namespace rx
 
 namespace egl
 {
@@ -33,7 +33,7 @@
     EGLLabelKHR getLabel() const override;
 
     Error getDevice(EGLAttrib *value);
-    Display *getOwningDisplay() { return mOwningDisplay; };
+    Display *getOwningDisplay() { return mOwningDisplay; }
     EGLint getType();
 
     const DeviceExtensions &getExtensions() const;
diff --git a/src/libANGLE/Error.h b/src/libANGLE/Error.h
index 06fc5c7..37df5b0 100644
--- a/src/libANGLE/Error.h
+++ b/src/libANGLE/Error.h
@@ -129,7 +129,7 @@
     } while (0)
 
 #define ANGLE_RETURN(X) return X;
-#define ANGLE_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_RETURN);
+#define ANGLE_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_RETURN)
 
 // TODO(jmadill): Remove after EGL error refactor. http://anglebug.com/3041
 #define ANGLE_SWALLOW_ERR(EXPR)                                       \
@@ -147,13 +147,14 @@
 #undef ANGLE_CONCAT1
 
 #define ANGLE_CHECK(CONTEXT, EXPR, MESSAGE, ERROR)                                    \
+    do                                                                                \
     {                                                                                 \
         if (ANGLE_UNLIKELY(!(EXPR)))                                                  \
         {                                                                             \
             CONTEXT->handleError(ERROR, MESSAGE, __FILE__, ANGLE_FUNCTION, __LINE__); \
             return angle::Result::Stop;                                               \
         }                                                                             \
-    }
+    } while (0)
 
 namespace angle
 {
diff --git a/src/libANGLE/Framebuffer.cpp b/src/libANGLE/Framebuffer.cpp
index c4e83d1..ec99a04 100644
--- a/src/libANGLE/Framebuffer.cpp
+++ b/src/libANGLE/Framebuffer.cpp
@@ -143,7 +143,7 @@
     }
 
     return true;
-};
+}
 
 bool CheckAttachmentSampleCompleteness(const Context *context,
                                        const FramebufferAttachment &attachment,
diff --git a/src/libANGLE/WorkerThread.cpp b/src/libANGLE/WorkerThread.cpp
index 565e959..65ca66f 100644
--- a/src/libANGLE/WorkerThread.cpp
+++ b/src/libANGLE/WorkerThread.cpp
@@ -121,7 +121,7 @@
 class AsyncWorkerPool final : public WorkerThreadPool
 {
   public:
-    AsyncWorkerPool(size_t maxThreads) : mMaxThreads(maxThreads), mRunningThreads(0){};
+    AsyncWorkerPool(size_t maxThreads) : mMaxThreads(maxThreads), mRunningThreads(0) {}
     ~AsyncWorkerPool() override = default;
 
     std::shared_ptr<WaitableEvent> postWorkerTask(std::shared_ptr<Closure> task) override;
diff --git a/src/libANGLE/renderer/EGLSyncImpl.h b/src/libANGLE/renderer/EGLSyncImpl.h
index ebf8f79..9d910c4 100644
--- a/src/libANGLE/renderer/EGLSyncImpl.h
+++ b/src/libANGLE/renderer/EGLSyncImpl.h
@@ -25,8 +25,8 @@
 class EGLSyncImpl : angle::NonCopyable
 {
   public:
-    EGLSyncImpl(){};
-    virtual ~EGLSyncImpl(){};
+    EGLSyncImpl() {}
+    virtual ~EGLSyncImpl() {}
 
     virtual void onDestroy(const egl::Display *display) {}
 
diff --git a/src/libANGLE/renderer/ProgramImpl.h b/src/libANGLE/renderer/ProgramImpl.h
index 384ddae..bd19069 100644
--- a/src/libANGLE/renderer/ProgramImpl.h
+++ b/src/libANGLE/renderer/ProgramImpl.h
@@ -35,7 +35,7 @@
 class LinkEvent : angle::NonCopyable
 {
   public:
-    virtual ~LinkEvent(){};
+    virtual ~LinkEvent() {}
 
     // Please be aware that these methods may be called under a gl::Context other
     // than the one where the LinkEvent was created.
diff --git a/src/libANGLE/renderer/d3d/ImageD3D.h b/src/libANGLE/renderer/d3d/ImageD3D.h
index 04dd38b..70b1e12 100644
--- a/src/libANGLE/renderer/d3d/ImageD3D.h
+++ b/src/libANGLE/renderer/d3d/ImageD3D.h
@@ -38,7 +38,7 @@
 {
   public:
     ImageD3D();
-    virtual ~ImageD3D(){};
+    virtual ~ImageD3D() {}
 
     GLsizei getWidth() const { return mWidth; }
     GLsizei getHeight() const { return mHeight; }
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index d43e560..edd6d2a 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -263,7 +263,7 @@
 
     *sizeOut = sizeIter->second;
     return true;
-};
+}
 
 bool InterfaceBlockInfo::getBlockMemberInfo(const std::string &name,
                                             const std::string &mappedName,
@@ -278,7 +278,7 @@
 
     *infoOut = infoIter->second;
     return true;
-};
+}
 
 // Helper class that gathers uniform info from the default uniform block.
 class UniformEncodingVisitorD3D : public sh::BlockEncoderVisitor
diff --git a/src/libANGLE/renderer/d3d/RendererD3D.h b/src/libANGLE/renderer/d3d/RendererD3D.h
index 888c5ca..18c7b8e 100644
--- a/src/libANGLE/renderer/d3d/RendererD3D.h
+++ b/src/libANGLE/renderer/d3d/RendererD3D.h
@@ -92,7 +92,7 @@
 
 // ANGLE_TRY for HRESULT errors.
 #define ANGLE_TRY_HR(CONTEXT, EXPR, MESSAGE)                                                     \
-                                                                                                 \
+    do                                                                                           \
     {                                                                                            \
         auto ANGLE_LOCAL_VAR = (EXPR);                                                           \
         if (ANGLE_UNLIKELY(FAILED(ANGLE_LOCAL_VAR)))                                             \
@@ -100,16 +100,17 @@
             CONTEXT->handleResult(ANGLE_LOCAL_VAR, MESSAGE, __FILE__, ANGLE_FUNCTION, __LINE__); \
             return angle::Result::Stop;                                                          \
         }                                                                                        \
-    }
+    } while (0)
 
 #define ANGLE_CHECK_HR(CONTEXT, EXPR, MESSAGE, ERROR)                                  \
+    do                                                                                 \
     {                                                                                  \
         if (ANGLE_UNLIKELY(!(EXPR)))                                                   \
         {                                                                              \
             CONTEXT->handleResult(ERROR, MESSAGE, __FILE__, ANGLE_FUNCTION, __LINE__); \
             return angle::Result::Stop;                                                \
         }                                                                              \
-    }
+    } while (0)
 
 #define ANGLE_HR_UNREACHABLE(context) \
     UNREACHABLE();                    \
diff --git a/src/libANGLE/renderer/d3d/TextureD3D.h b/src/libANGLE/renderer/d3d/TextureD3D.h
index 8d2dfaf..4eb43b5 100644
--- a/src/libANGLE/renderer/d3d/TextureD3D.h
+++ b/src/libANGLE/renderer/d3d/TextureD3D.h
@@ -160,7 +160,7 @@
 
     angle::Result releaseTexStorage(const gl::Context *context);
 
-    GLuint getBaseLevel() const { return mBaseLevel; };
+    GLuint getBaseLevel() const { return mBaseLevel; }
 
     virtual void markAllImagesDirty() = 0;
 
diff --git a/src/libANGLE/renderer/d3d/VertexBuffer.h b/src/libANGLE/renderer/d3d/VertexBuffer.h
index 2376fbb..2b91b9f 100644
--- a/src/libANGLE/renderer/d3d/VertexBuffer.h
+++ b/src/libANGLE/renderer/d3d/VertexBuffer.h
@@ -62,7 +62,7 @@
     unsigned int getSerial() const;
 
     // This may be overridden (e.g. by VertexBuffer11) if necessary.
-    virtual void hintUnmapResource(){};
+    virtual void hintUnmapResource() {}
 
     // Reference counting.
     void addRef();
diff --git a/src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc b/src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc
index 5c9434c..5662700 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc
+++ b/src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc
@@ -1,7 +1,7 @@
 // GENERATED FILE - DO NOT EDIT.
 // Generated by gen_blit11helper.py.
 //
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -914,7 +914,7 @@
             UNREACHABLE();
             return BLITSHADER_INVALID;
     }
-};
+}
 
 angle::Result Blit11::mapBlitShader(const gl::Context *context,
                                     BlitShaderType blitShaderType)
diff --git a/src/libANGLE/renderer/d3d/d3d11/Renderer11.h b/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
index dcdd4c4..9861b9b 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
+++ b/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
@@ -317,9 +317,9 @@
     // D3D11-renderer specific methods
     ID3D11Device *getDevice() { return mDevice; }
     void *getD3DDevice() override;
-    ID3D11DeviceContext *getDeviceContext() { return mDeviceContext; };
-    ID3D11DeviceContext1 *getDeviceContext1IfSupported() { return mDeviceContext1; };
-    IDXGIFactory *getDxgiFactory() { return mDxgiFactory; };
+    ID3D11DeviceContext *getDeviceContext() { return mDeviceContext; }
+    ID3D11DeviceContext1 *getDeviceContext1IfSupported() { return mDeviceContext1; }
+    IDXGIFactory *getDxgiFactory() { return mDxgiFactory; }
 
     angle::Result getBlendState(const gl::Context *context,
                                 const d3d11::BlendStateKey &key,
@@ -388,7 +388,7 @@
                                        bool stencilBlit);
 
     bool isES3Capable() const;
-    const Renderer11DeviceCaps &getRenderer11DeviceCaps() const { return mRenderer11DeviceCaps; };
+    const Renderer11DeviceCaps &getRenderer11DeviceCaps() const { return mRenderer11DeviceCaps; }
 
     RendererClass getRendererClass() const override;
     StateManager11 *getStateManager() { return &mStateManager; }
diff --git a/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp b/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp
index 9fcd8a5..e88b906 100644
--- a/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp
@@ -97,9 +97,9 @@
                 break;
             }
 
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_ATTRIB_FUNC);
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BINDING_FUNC);
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BUFFER_DATA_FUNC);
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_ATTRIB_FUNC)
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BINDING_FUNC)
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BUFFER_DATA_FUNC)
 
             default:
                 UNREACHABLE();
diff --git a/src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni b/src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni
index 185810e..988ae52 100644
--- a/src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni
+++ b/src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni
@@ -1,7 +1,7 @@
 # GENERATED FILE - DO NOT EDIT.
 # Generated by gen_blit11helper.py.
 #
-# Copyright 2018 The ANGLE Project Authors. All rights reserved.
+# Copyright 2019 The ANGLE Project Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 #
diff --git a/src/libANGLE/renderer/d3d/d3d11/gen_blit11helper.py b/src/libANGLE/renderer/d3d/d3d11/gen_blit11helper.py
index 3b04689..d262b43 100644
--- a/src/libANGLE/renderer/d3d/d3d11/gen_blit11helper.py
+++ b/src/libANGLE/renderer/d3d/d3d11/gen_blit11helper.py
@@ -45,7 +45,7 @@
             UNREACHABLE();
             return BLITSHADER_INVALID;
     }}
-}};
+}}
 
 angle::Result Blit11::mapBlitShader(const gl::Context *context,
                                     BlitShaderType blitShaderType)
diff --git a/src/libANGLE/renderer/gl/QueryGL.cpp b/src/libANGLE/renderer/gl/QueryGL.cpp
index 23f4ef6..459e555 100644
--- a/src/libANGLE/renderer/gl/QueryGL.cpp
+++ b/src/libANGLE/renderer/gl/QueryGL.cpp
@@ -326,7 +326,7 @@
     else if (nativegl::SupportsOcclusionQueries(mFunctions))
     {
         mSyncProvider.reset(new SyncProviderGLQuery(mFunctions));
-        ANGLE_TRY(mSyncProvider->init(context, gl::QueryType::AnySamples))
+        ANGLE_TRY(mSyncProvider->init(context, gl::QueryType::AnySamples));
     }
     else
     {
diff --git a/src/libANGLE/renderer/gl/VertexArrayGL.cpp b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
index 897a11c..dc8264f 100644
--- a/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -690,9 +690,9 @@
             case VertexArray::DIRTY_BIT_ELEMENT_ARRAY_BUFFER_DATA:
                 break;
 
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_DIRTY_ATTRIB_FUNC);
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_DIRTY_BINDING_FUNC);
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_DIRTY_BUFFER_DATA_FUNC);
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_DIRTY_ATTRIB_FUNC)
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_DIRTY_BINDING_FUNC)
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_DIRTY_BUFFER_DATA_FUNC)
 
             default:
                 UNREACHABLE();
diff --git a/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp b/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
index 7c88f65..ac03341 100644
--- a/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
+++ b/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
@@ -145,11 +145,14 @@
 
 egl::Error FunctionsEGL::initialize(EGLNativeDisplayType nativeDisplay)
 {
-#define ANGLE_GET_PROC_OR_ERROR(MEMBER, NAME)                                       \
-    if (!SetPtr(MEMBER, getProcAddress(#NAME)))                                     \
-    {                                                                               \
-        return egl::EglNotInitialized() << "Could not load EGL entry point " #NAME; \
-    }
+#define ANGLE_GET_PROC_OR_ERROR(MEMBER, NAME)                                           \
+    do                                                                                  \
+    {                                                                                   \
+        if (!SetPtr(MEMBER, getProcAddress(#NAME)))                                     \
+        {                                                                               \
+            return egl::EglNotInitialized() << "Could not load EGL entry point " #NAME; \
+        }                                                                               \
+    } while (0)
 
     ANGLE_GET_PROC_OR_ERROR(&mFnPtrs->bindAPIPtr, eglBindAPI);
     ANGLE_GET_PROC_OR_ERROR(&mFnPtrs->chooseConfigPtr, eglChooseConfig);
diff --git a/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp b/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
index bb9fb6a..1304622 100644
--- a/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
+++ b/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
@@ -150,16 +150,19 @@
     getProc = reinterpret_cast<PFNGETPROCPROC>(glXGetProcAddress);
 #endif
 
-#define GET_PROC_OR_ERROR(MEMBER, NAME)                         \
-    if (!GetProc(getProc, MEMBER, #NAME))                       \
-    {                                                           \
-        *errorString = "Could not load GLX entry point " #NAME; \
-        return false;                                           \
-    }
+#define GET_PROC_OR_ERROR(MEMBER, NAME)                             \
+    do                                                              \
+    {                                                               \
+        if (!GetProc(getProc, MEMBER, #NAME))                       \
+        {                                                           \
+            *errorString = "Could not load GLX entry point " #NAME; \
+            return false;                                           \
+        }                                                           \
+    } while (0)
 #if !defined(ANGLE_LINK_GLX)
 #    define GET_FNPTR_OR_ERROR(MEMBER, NAME) GET_PROC_OR_ERROR(MEMBER, NAME)
 #else
-#    define GET_FNPTR_OR_ERROR(MEMBER, NAME) *MEMBER = NAME;
+#    define GET_FNPTR_OR_ERROR(MEMBER, NAME) *MEMBER = NAME
 #endif
 
     // GLX 1.0
diff --git a/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp b/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
index bf32090..2a41387 100644
--- a/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
+++ b/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
@@ -1006,19 +1006,22 @@
     HDC workerDeviceContext   = nullptr;
     HGLRC workerContext       = nullptr;
 
-#define CLEANUP_ON_ERROR()                                                      \
-    if (workerContext)                                                          \
-    {                                                                           \
-        mFunctionsWGL->deleteContext(workerContext);                            \
-    }                                                                           \
-    if (workerDeviceContext)                                                    \
-    {                                                                           \
-        mFunctionsWGL->releasePbufferDCARB(workerPbuffer, workerDeviceContext); \
-    }                                                                           \
-    if (workerPbuffer)                                                          \
-    {                                                                           \
-        mFunctionsWGL->destroyPbufferARB(workerPbuffer);                        \
-    }
+#define CLEANUP_ON_ERROR()                                                          \
+    do                                                                              \
+    {                                                                               \
+        if (workerContext)                                                          \
+        {                                                                           \
+            mFunctionsWGL->deleteContext(workerContext);                            \
+        }                                                                           \
+        if (workerDeviceContext)                                                    \
+        {                                                                           \
+            mFunctionsWGL->releasePbufferDCARB(workerPbuffer, workerDeviceContext); \
+        }                                                                           \
+        if (workerPbuffer)                                                          \
+        {                                                                           \
+            mFunctionsWGL->destroyPbufferARB(workerPbuffer);                        \
+        }                                                                           \
+    } while (0)
 
     const int attribs[] = {0, 0};
     workerPbuffer = mFunctionsWGL->createPbufferARB(mDeviceContext, mPixelFormat, 1, 1, attribs);
diff --git a/src/libANGLE/renderer/renderer_utils.cpp b/src/libANGLE/renderer/renderer_utils.cpp
index ed4b629..4cbc899 100644
--- a/src/libANGLE/renderer/renderer_utils.cpp
+++ b/src/libANGLE/renderer/renderer_utils.cpp
@@ -577,7 +577,7 @@
     // unsigned integers(with wrapping on overflow conditions)." ANGLE does not fully handle
     // these rules, an overflow error is returned if the start vertex cannot be stored in a
     // 32-bit signed integer.
-    ANGLE_CHECK_GL_MATH(contextImpl, startVertexInt64 <= std::numeric_limits<GLint>::max())
+    ANGLE_CHECK_GL_MATH(contextImpl, startVertexInt64 <= std::numeric_limits<GLint>::max());
 
     *firstVertexOut = static_cast<GLint>(startVertexInt64);
     return angle::Result::Continue;
diff --git a/src/libANGLE/renderer/vulkan/ContextVk.cpp b/src/libANGLE/renderer/vulkan/ContextVk.cpp
index 9af3932..cda4488 100644
--- a/src/libANGLE/renderer/vulkan/ContextVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ContextVk.cpp
@@ -326,7 +326,7 @@
 
     for (size_t attribIndex : mDirtyDefaultAttribsMask)
     {
-        ANGLE_TRY(updateDefaultAttribute(attribIndex))
+        ANGLE_TRY(updateDefaultAttribute(attribIndex));
     }
 
     mDirtyDefaultAttribsMask.reset();
diff --git a/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp b/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
index 132fe1b..d0677d6 100644
--- a/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
+++ b/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
@@ -8,6 +8,9 @@
 
 #include "libANGLE/renderer/vulkan/GlslangWrapper.h"
 
+// glslang has issues with some specific warnings.
+ANGLE_DISABLE_EXTRA_SEMI_WARNING
+
 // glslang's version of ShaderLang.h, not to be confused with ANGLE's.
 #include <glslang/Public/ShaderLang.h>
 
@@ -15,6 +18,8 @@
 #include <SPIRV/GlslangToSpv.h>
 #include <StandAlone/ResourceLimits.h>
 
+ANGLE_REENABLE_EXTRA_SEMI_WARNING
+
 #include <array>
 
 #include "common/FixedVector.h"
diff --git a/src/libANGLE/renderer/vulkan/SyncVk.cpp b/src/libANGLE/renderer/vulkan/SyncVk.cpp
index 0de3afa..fb2beba 100644
--- a/src/libANGLE/renderer/vulkan/SyncVk.cpp
+++ b/src/libANGLE/renderer/vulkan/SyncVk.cpp
@@ -241,7 +241,7 @@
             UNREACHABLE();
             *outResult = EGL_FALSE;
             return egl::Error(EGL_BAD_ALLOC);
-    };
+    }
 }
 
 egl::Error EGLSyncVk::serverWait(const egl::Display *display, EGLint flags)
diff --git a/src/libANGLE/renderer/vulkan/UtilsVk.cpp b/src/libANGLE/renderer/vulkan/UtilsVk.cpp
index 0d403a5..1fba26f 100644
--- a/src/libANGLE/renderer/vulkan/UtilsVk.cpp
+++ b/src/libANGLE/renderer/vulkan/UtilsVk.cpp
@@ -620,7 +620,7 @@
     vk::CommandBuffer *commandBuffer;
     if (!framebuffer->appendToStartedRenderPass(renderer->getCurrentQueueSerial(), &commandBuffer))
     {
-        ANGLE_TRY(framebuffer->startNewRenderPass(contextVk, &commandBuffer))
+        ANGLE_TRY(framebuffer->startNewRenderPass(contextVk, &commandBuffer));
     }
 
     ImageClearShaderParams shaderParams;
diff --git a/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp b/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
index 1cdcbaa..16a5b4d 100644
--- a/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
+++ b/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
@@ -357,7 +357,7 @@
         (*attribBits)[INDEX].reset();                                             \
         break;
 
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_ATTRIB_FUNC);
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_ATTRIB_FUNC)
 
 #define ANGLE_VERTEX_DIRTY_BINDING_FUNC(INDEX)                                    \
     case gl::VertexArray::DIRTY_BIT_BINDING_0 + INDEX:                            \
@@ -367,7 +367,7 @@
         (*bindingBits)[INDEX].reset();                                            \
         break;
 
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BINDING_FUNC);
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BINDING_FUNC)
 
 #define ANGLE_VERTEX_DIRTY_BUFFER_DATA_FUNC(INDEX)                                \
     case gl::VertexArray::DIRTY_BIT_BUFFER_DATA_0 + INDEX:                        \
@@ -375,7 +375,7 @@
                                   bindings[attribs[INDEX].bindingIndex], INDEX)); \
         break;
 
-                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BUFFER_DATA_FUNC);
+                ANGLE_VERTEX_INDEX_CASES(ANGLE_VERTEX_DIRTY_BUFFER_DATA_FUNC)
 
             default:
                 UNREACHABLE();
diff --git a/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp b/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
index 0777ac3..a9f6949 100644
--- a/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
@@ -280,7 +280,7 @@
 // Helper macro that casts to a bitfield type then verifies no bits were dropped.
 #define SetBitField(lhs, rhs)                                         \
     lhs = static_cast<typename std::decay<decltype(lhs)>::type>(rhs); \
-    ASSERT(static_cast<decltype(rhs)>(lhs) == (rhs));
+    ASSERT(static_cast<decltype(rhs)>(lhs) == (rhs))
 
 // When converting a byte number to a transition bit index we can shift instead of divide.
 constexpr size_t kTransitionByteShift = Log2(kGraphicsPipelineDirtyBitBytes);
diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.h b/src/libANGLE/renderer/vulkan/vk_helpers.h
index 2ab9a2a..ab00a9b 100644
--- a/src/libANGLE/renderer/vulkan/vk_helpers.h
+++ b/src/libANGLE/renderer/vulkan/vk_helpers.h
@@ -64,7 +64,7 @@
     // This frees resources immediately.
     void destroy(VkDevice device);
 
-    BufferHelper *getCurrentBuffer() { return mBuffer; };
+    BufferHelper *getCurrentBuffer() { return mBuffer; }
 
     // For testing only!
     void setMinimumSizeForTesting(size_t minSize);
diff --git a/src/libANGLE/renderer/vulkan/vk_utils.h b/src/libANGLE/renderer/vulkan/vk_utils.h
index f7a6ada..60aa808 100644
--- a/src/libANGLE/renderer/vulkan/vk_utils.h
+++ b/src/libANGLE/renderer/vulkan/vk_utils.h
@@ -45,7 +45,7 @@
 struct VertexAttribute;
 class VertexBinding;
 
-ANGLE_GL_OBJECTS_X(ANGLE_PRE_DECLARE_OBJECT);
+ANGLE_GL_OBJECTS_X(ANGLE_PRE_DECLARE_OBJECT)
 }  // namespace gl
 
 #define ANGLE_PRE_DECLARE_VK_OBJECT(OBJ) class OBJ##Vk;
@@ -66,7 +66,7 @@
 
 namespace rx
 {
-ANGLE_GL_OBJECTS_X(ANGLE_PRE_DECLARE_VK_OBJECT);
+ANGLE_GL_OBJECTS_X(ANGLE_PRE_DECLARE_VK_OBJECT)
 
 const char *VulkanResultString(VkResult result);
 // Verify that validation layers are available.
diff --git a/src/libANGLE/validationEGL.h b/src/libANGLE/validationEGL.h
index 9e0f444..a671bb0 100644
--- a/src/libANGLE/validationEGL.h
+++ b/src/libANGLE/validationEGL.h
@@ -318,13 +318,15 @@
 }  // namespace egl
 
 #define ANGLE_EGL_TRY(THREAD, EXPR, FUNCNAME, LABELOBJECT)                               \
+    do                                                                                   \
     {                                                                                    \
         auto ANGLE_LOCAL_VAR = (EXPR);                                                   \
         if (ANGLE_LOCAL_VAR.isError())                                                   \
             return THREAD->setError(ANGLE_LOCAL_VAR, GetDebug(), FUNCNAME, LABELOBJECT); \
-    }
+    } while (0)
 
 #define ANGLE_EGL_TRY_RETURN(THREAD, EXPR, FUNCNAME, LABELOBJECT, RETVAL)         \
+    do                                                                            \
     {                                                                             \
         auto ANGLE_LOCAL_VAR = (EXPR);                                            \
         if (ANGLE_LOCAL_VAR.isError())                                            \
@@ -332,6 +334,6 @@
             THREAD->setError(ANGLE_LOCAL_VAR, GetDebug(), FUNCNAME, LABELOBJECT); \
             return RETVAL;                                                        \
         }                                                                         \
-    }
+    } while (0)
 
 #endif  // LIBANGLE_VALIDATIONEGL_H_
diff --git a/src/libANGLE/validationES.h b/src/libANGLE/validationES.h
index 00f1cf1..2ed9ec4 100644
--- a/src/libANGLE/validationES.h
+++ b/src/libANGLE/validationES.h
@@ -661,8 +661,8 @@
 // Utility macro for handling implementation methods inside Validation.
 #define ANGLE_HANDLE_VALIDATION_ERR(X) \
     (void)(X);                         \
-    return false;
-#define ANGLE_VALIDATION_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_HANDLE_VALIDATION_ERR);
+    return false
+#define ANGLE_VALIDATION_TRY(EXPR) ANGLE_TRY_TEMPLATE(EXPR, ANGLE_HANDLE_VALIDATION_ERR)
 
 // We should check with Khronos if returning INVALID_FRAMEBUFFER_OPERATION is OK when querying
 // implementation format info for incomplete framebuffers. It seems like these queries are
diff --git a/src/libANGLE/validationES1.cpp b/src/libANGLE/validationES1.cpp
index 4102302..57b8b88 100644
--- a/src/libANGLE/validationES1.cpp
+++ b/src/libANGLE/validationES1.cpp
@@ -16,12 +16,15 @@
 #include "libANGLE/queryutils.h"
 #include "libANGLE/validationES.h"
 
-#define ANGLE_VALIDATE_IS_GLES1(context)                            \
-    if (context->getClientMajorVersion() > 1)                       \
-    {                                                               \
-        context->validationError(GL_INVALID_OPERATION, kGLES1Only); \
-        return false;                                               \
-    }
+#define ANGLE_VALIDATE_IS_GLES1(context)                                \
+    do                                                                  \
+    {                                                                   \
+        if (context->getClientMajorVersion() > 1)                       \
+        {                                                               \
+            context->validationError(GL_INVALID_OPERATION, kGLES1Only); \
+            return false;                                               \
+        }                                                               \
+    } while (0)
 
 namespace gl
 {
diff --git a/src/libGLESv2.gni b/src/libGLESv2.gni
index 676922a..d667596 100644
--- a/src/libGLESv2.gni
+++ b/src/libGLESv2.gni
@@ -45,8 +45,6 @@
   "src/common/third_party/base/anglebase/sys_byteorder.h",
   "src/common/third_party/smhasher/src/PMurHash.cpp",
   "src/common/third_party/smhasher/src/PMurHash.h",
-  "src/common/third_party/xxhash/xxhash.c",
-  "src/common/third_party/xxhash/xxhash.h",
   "src/common/tls.cpp",
   "src/common/tls.h",
   "src/common/uniform_type_info_autogen.cpp",
@@ -55,6 +53,11 @@
   "src/common/vector_utils.h",
 ]
 
+xxhash_sources = [
+  "src/common/third_party/xxhash/xxhash.c",
+  "src/common/third_party/xxhash/xxhash.h",
+]
+
 angle_system_utils_sources = [
   "src/common/Optional.h",
   "src/common/angleutils.h",
diff --git a/src/tests/BUILD.gn b/src/tests/BUILD.gn
index 7c1ab36..0c21d5a 100644
--- a/src/tests/BUILD.gn
+++ b/src/tests/BUILD.gn
@@ -38,6 +38,7 @@
       "${angle_googletest_dir}/googletest/src/gtest-all.cc",
     ]
     public_configs += [ ":angle_internal_gtest_config" ]
+    configs -= [ "${angle_root}:extra_warnings" ]
   }
 
   config("angle_internal_gmock_config") {
diff --git a/src/tests/compiler_tests/ImmutableString_test_autogen.cpp b/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
index c298a31..423d619 100644
--- a/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
+++ b/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
@@ -1,7 +1,7 @@
 // GENERATED FILE - DO NOT EDIT.
 // Generated by gen_builtin_symbols.py using data from builtin_function_declarations.txt.
 //
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
diff --git a/src/tests/compiler_tests/InitOutputVariables_test.cpp b/src/tests/compiler_tests/InitOutputVariables_test.cpp
index ba16bd9..ddbc9f1 100644
--- a/src/tests/compiler_tests/InitOutputVariables_test.cpp
+++ b/src/tests/compiler_tests/InitOutputVariables_test.cpp
@@ -176,7 +176,7 @@
         }
     }
 
-    bool isStructureFound() const { return mStructure != nullptr; };
+    bool isStructureFound() const { return mStructure != nullptr; }
     const TStructure *getStructure() const { return mStructure; }
 
   private:
diff --git a/src/tests/egl_tests/EGLContextCompatibilityTest.cpp b/src/tests/egl_tests/EGLContextCompatibilityTest.cpp
index 0b37d26..8d205a7 100644
--- a/src/tests/egl_tests/EGLContextCompatibilityTest.cpp
+++ b/src/tests/egl_tests/EGLContextCompatibilityTest.cpp
@@ -58,7 +58,7 @@
     {
         eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
         eglTerminate(mDisplay);
-    };
+    }
 
   protected:
     // Queries EGL config to determine if multisampled or not
diff --git a/src/tests/gl_tests/BPTCCompressedTextureTest.cpp b/src/tests/gl_tests/BPTCCompressedTextureTest.cpp
index 4578b48..802eada 100644
--- a/src/tests/gl_tests/BPTCCompressedTextureTest.cpp
+++ b/src/tests/gl_tests/BPTCCompressedTextureTest.cpp
@@ -21,7 +21,7 @@
 const std::array<GLubyte, 16> kBC7Data4x4 = {0x50, 0x1f, 0xfc, 0xf, 0x0,  0xf0, 0xe3, 0xe1,
                                              0xe1, 0xe1, 0xc1, 0xf, 0xfc, 0xc0, 0xf,  0xfc};
 
-};  // anonymous namespace
+}  // anonymous namespace
 
 class BPTCCompressedTextureTest : public ANGLETest
 {
diff --git a/src/tests/gl_tests/BindUniformLocationTest.cpp b/src/tests/gl_tests/BindUniformLocationTest.cpp
index 5a561c0..d4ef718 100644
--- a/src/tests/gl_tests/BindUniformLocationTest.cpp
+++ b/src/tests/gl_tests/BindUniformLocationTest.cpp
@@ -544,6 +544,6 @@
                        ES2_OPENGLES(),
                        ES2_VULKAN());
 
-ANGLE_INSTANTIATE_TEST(BindUniformLocationES31Test, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES())
+ANGLE_INSTANTIATE_TEST(BindUniformLocationES31Test, ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES());
 
 }  // namespace
diff --git a/src/tests/gl_tests/ClearTest.cpp b/src/tests/gl_tests/ClearTest.cpp
index 6d044bf..1c62f66 100644
--- a/src/tests/gl_tests/ClearTest.cpp
+++ b/src/tests/gl_tests/ClearTest.cpp
@@ -33,7 +33,7 @@
     color.B = static_cast<uint8_t>(vec.z() * 255.0f);
     color.A = static_cast<uint8_t>(vec.w() * 255.0f);
     return color;
-};
+}
 
 class ClearTestBase : public ANGLETest
 {
diff --git a/src/tests/gl_tests/TextureMultisampleTest.cpp b/src/tests/gl_tests/TextureMultisampleTest.cpp
index 51f31b0..15d3d15 100644
--- a/src/tests/gl_tests/TextureMultisampleTest.cpp
+++ b/src/tests/gl_tests/TextureMultisampleTest.cpp
@@ -118,7 +118,7 @@
     my_FragColor = texelFetch(tex, sampleCoords, sampleNum);
 }
 )";
-    };
+    }
 
     const char *blitArrayTextureLayerFragmentShader()
     {
@@ -140,7 +140,7 @@
     my_FragColor = texelFetch(tex, ivec3(sampleCoords, layer), sampleNum);
 }
 )";
-    };
+    }
 
     const char *blitIntArrayTextureLayerFragmentShader()
     {
@@ -162,7 +162,7 @@
     my_FragColor = vec4(texelFetch(tex, ivec3(sampleCoords, layer), sampleNum));
 }
 )";
-    };
+    }
 };
 
 class NegativeTextureMultisampleTest : public TextureMultisampleTest
diff --git a/src/tests/gl_tests/WebGLCompatibilityTest.cpp b/src/tests/gl_tests/WebGLCompatibilityTest.cpp
index f14d933..4db6c0d 100644
--- a/src/tests/gl_tests/WebGLCompatibilityTest.cpp
+++ b/src/tests/gl_tests/WebGLCompatibilityTest.cpp
@@ -297,7 +297,7 @@
     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
 
     ANGLE_GL_PROGRAM(program, "void main() { gl_Position = vec4(0, 0, 0, 1); }",
-                     "void main() { gl_FragColor = vec4(0, 1, 0, 1); }")
+                     "void main() { gl_FragColor = vec4(0, 1, 0, 1); }");
     glUseProgram(program.get());
 
     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr);
@@ -1336,7 +1336,7 @@
                               renderbuffer.get());
 
     ANGLE_GL_PROGRAM(program, "void main() { gl_Position = vec4(0, 0, 0, 1); }",
-                     "void main() { gl_FragColor = vec4(0, 1, 0, 1); }")
+                     "void main() { gl_FragColor = vec4(0, 1, 0, 1); }");
     glUseProgram(program.get());
     ASSERT_GL_NO_ERROR();
 
diff --git a/src/tests/perf_tests/BlitFramebufferPerf.cpp b/src/tests/perf_tests/BlitFramebufferPerf.cpp
index 47698f1..de9d536 100644
--- a/src/tests/perf_tests/BlitFramebufferPerf.cpp
+++ b/src/tests/perf_tests/BlitFramebufferPerf.cpp
@@ -249,4 +249,4 @@
                        D3D11(BufferType::COLOR, 2),
                        D3D11(BufferType::DEPTH, 2),
                        D3D11(BufferType::STENCIL, 2),
-                       D3D11(BufferType::DEPTH_STENCIL, 2))
+                       D3D11(BufferType::DEPTH_STENCIL, 2));
diff --git a/src/tests/perf_tests/DrawCallPerf.cpp b/src/tests/perf_tests/DrawCallPerf.cpp
index 19e1584..b3f0725 100644
--- a/src/tests/perf_tests/DrawCallPerf.cpp
+++ b/src/tests/perf_tests/DrawCallPerf.cpp
@@ -45,7 +45,6 @@
             break;
         default:
             break;
-            ;
     }
 
     return strstr.str();
diff --git a/src/tests/perf_tests/LinkProgramPerfTest.cpp b/src/tests/perf_tests/LinkProgramPerfTest.cpp
index 59cb0ac..937795e 100644
--- a/src/tests/perf_tests/LinkProgramPerfTest.cpp
+++ b/src/tests/perf_tests/LinkProgramPerfTest.cpp
@@ -121,7 +121,7 @@
     glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffer);
     glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vector3), vertices.data(),
                  GL_STATIC_DRAW);
-};
+}
 
 void LinkProgramBenchmark::destroyBenchmark()
 {
diff --git a/src/tests/perf_tests/MultiviewPerf.cpp b/src/tests/perf_tests/MultiviewPerf.cpp
index c61c882..8732765 100644
--- a/src/tests/perf_tests/MultiviewPerf.cpp
+++ b/src/tests/perf_tests/MultiviewPerf.cpp
@@ -34,7 +34,6 @@
     {
         return "#extension GL_OVR_multiview : require\nlayout(num_views = " + ToString(numViews) +
                ") in;\n";
-        ;
     }
     return "#extension GL_OVR_multiview : require\n";
 }
diff --git a/src/tests/preprocessor_tests/char_test.cpp b/src/tests/preprocessor_tests/char_test.cpp
index aa40388..17b6d78 100644
--- a/src/tests/preprocessor_tests/char_test.cpp
+++ b/src/tests/preprocessor_tests/char_test.cpp
@@ -88,7 +88,7 @@
     mPreprocessor.lex(&token);
     EXPECT_EQ(expectedType, token.type);
     EXPECT_EQ(expectedValue, token.text);
-};
+}
 
 // Note +1 for the max-value in range. It is there because the max-value
 // not included in the range.
diff --git a/src/tests/preprocessor_tests/define_test.cpp b/src/tests/preprocessor_tests/define_test.cpp
index 5ec4b2f..16dc812 100644
--- a/src/tests/preprocessor_tests/define_test.cpp
+++ b/src/tests/preprocessor_tests/define_test.cpp
@@ -30,7 +30,7 @@
                 print(pp::Diagnostics::PP_UNEXPECTED_TOKEN, pp::SourceLocation(0, 1), "2"));
 
     preprocess(input, expected);
-};
+}
 
 TEST_F(DefineTest, RedefinePredefined)
 {
diff --git a/src/tests/test_utils/ANGLETest.h b/src/tests/test_utils/ANGLETest.h
index 2c44aa0..f58d681 100644
--- a/src/tests/test_utils/ANGLETest.h
+++ b/src/tests/test_utils/ANGLETest.h
@@ -174,15 +174,16 @@
 #define EXPECT_PIXEL_COLOR32F_EQ(x, y, angleColor) EXPECT_EQ(angleColor, angle::ReadColor32F(x, y))
 
 #define EXPECT_PIXEL_RECT_EQ(x, y, width, height, color)                                           \
-                                                                                                   \
+    do                                                                                             \
     {                                                                                              \
         std::vector<GLColor> actualColors(width *height);                                          \
         glReadPixels((x), (y), (width), (height), GL_RGBA, GL_UNSIGNED_BYTE, actualColors.data()); \
         std::vector<GLColor> expectedColors(width *height, color);                                 \
         EXPECT_EQ(expectedColors, actualColors);                                                   \
-    }
+    } while (0)
 
 #define EXPECT_PIXEL_NEAR(x, y, r, g, b, a, abs_error)                  \
+    do                                                                  \
     {                                                                   \
         GLubyte pixel[4];                                               \
         glReadPixels((x), (y), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel); \
@@ -191,10 +192,10 @@
         EXPECT_NEAR((g), pixel[1], abs_error);                          \
         EXPECT_NEAR((b), pixel[2], abs_error);                          \
         EXPECT_NEAR((a), pixel[3], abs_error);                          \
-    }
+    } while (0)
 
 #define EXPECT_PIXEL32F_NEAR(x, y, r, g, b, a, abs_error)       \
-                                                                \
+    do                                                          \
     {                                                           \
         GLfloat pixel[4];                                       \
         glReadPixels((x), (y), 1, 1, GL_RGBA, GL_FLOAT, pixel); \
@@ -203,7 +204,7 @@
         EXPECT_NEAR((g), pixel[1], abs_error);                  \
         EXPECT_NEAR((b), pixel[2], abs_error);                  \
         EXPECT_NEAR((a), pixel[3], abs_error);                  \
-    }
+    } while (0)
 
 // TODO(jmadill): Figure out how we can use GLColor's nice printing with EXPECT_NEAR.
 #define EXPECT_PIXEL_COLOR_NEAR(x, y, angleColor, abs_error) \
@@ -213,15 +214,15 @@
     EXPECT_PIXEL32F_NEAR(x, y, angleColor.R, angleColor.G, angleColor.B, angleColor.A, abs_error)
 
 #define EXPECT_COLOR_NEAR(expected, actual, abs_error) \
-                                                       \
+    do                                                 \
     {                                                  \
         EXPECT_NEAR(expected.R, actual.R, abs_error);  \
         EXPECT_NEAR(expected.G, actual.G, abs_error);  \
         EXPECT_NEAR(expected.B, actual.B, abs_error);  \
         EXPECT_NEAR(expected.A, actual.A, abs_error);  \
-    }
+    } while (0)
 #define EXPECT_PIXEL32F_NEAR(x, y, r, g, b, a, abs_error)       \
-                                                                \
+    do                                                          \
     {                                                           \
         GLfloat pixel[4];                                       \
         glReadPixels((x), (y), 1, 1, GL_RGBA, GL_FLOAT, pixel); \
@@ -230,7 +231,7 @@
         EXPECT_NEAR((g), pixel[1], abs_error);                  \
         EXPECT_NEAR((b), pixel[2], abs_error);                  \
         EXPECT_NEAR((a), pixel[3], abs_error);                  \
-    }
+    } while (0)
 
 #define EXPECT_PIXEL_COLOR32F_NEAR(x, y, angleColor, abs_error) \
     EXPECT_PIXEL32F_NEAR(x, y, angleColor.R, angleColor.G, angleColor.B, angleColor.A, abs_error)
diff --git a/src/tests/test_utils/angle_test_instantiate.h b/src/tests/test_utils/angle_test_instantiate.h
index 3e983cc..032dbcc 100644
--- a/src/tests/test_utils/angle_test_instantiate.h
+++ b/src/tests/test_utils/angle_test_instantiate.h
@@ -50,7 +50,7 @@
     INSTANTIATE_TEST_CASE_P(, testName,                                          \
                             testing::ValuesIn(::angle::FilterTestParams(         \
                                 testName##params, ArraySize(testName##params))), \
-                            testing::PrintToStringParamName());
+                            testing::PrintToStringParamName())
 
 }  // namespace angle
 
diff --git a/src/tests/test_utils/gl_raii.h b/src/tests/test_utils/gl_raii.h
index a2e7d0e..e5848a4 100644
--- a/src/tests/test_utils/gl_raii.h
+++ b/src/tests/test_utils/gl_raii.h
@@ -187,37 +187,37 @@
 #define ANGLE_GL_EMPTY_PROGRAM(name) \
     priv::GLProgram name;            \
     name.makeEmpty();                \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 #define ANGLE_GL_PROGRAM(name, vertex, fragment) \
     priv::GLProgram name;                        \
     name.makeRaster(vertex, fragment);           \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 #define ANGLE_GL_PROGRAM_WITH_GS(name, vertex, geometry, fragment) \
     priv::GLProgram name;                                          \
     name.makeRaster(vertex, geometry, fragment);                   \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 #define ANGLE_GL_PROGRAM_TRANSFORM_FEEDBACK(name, vertex, fragment, tfVaryings, bufferMode) \
     priv::GLProgram name;                                                                   \
     name.makeRasterWithTransformFeedback(vertex, fragment, tfVaryings, bufferMode);         \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 #define ANGLE_GL_COMPUTE_PROGRAM(name, compute) \
     priv::GLProgram name;                       \
     name.makeCompute(compute);                  \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 #define ANGLE_GL_BINARY_OES_PROGRAM(name, binary, binaryFormat) \
     priv::GLProgram name;                                       \
     name.makeBinaryOES(binary, binaryFormat);                   \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 #define ANGLE_GL_BINARY_ES3_PROGRAM(name, binary, binaryFormat) \
     priv::GLProgram name;                                       \
     name.makeBinaryES3(binary, binaryFormat);                   \
-    ASSERT_TRUE(name.valid());
+    ASSERT_TRUE(name.valid())
 
 }  // namespace angle
 
diff --git a/src/tests/test_utils/third_party/vulkan_command_buffer_utils.h b/src/tests/test_utils/third_party/vulkan_command_buffer_utils.h
index ee59776..6d9b096 100644
--- a/src/tests/test_utils/third_party/vulkan_command_buffer_utils.h
+++ b/src/tests/test_utils/third_party/vulkan_command_buffer_utils.h
@@ -30,8 +30,16 @@
 #include <sstream>
 #include <string>
 #include <vector>
+
+#include "common/debug.h"
+
+// glslang has issues with some specific warnings.
+ANGLE_DISABLE_EXTRA_SEMI_WARNING
+
 #include "SPIRV/GlslangToSpv.h"
 
+ANGLE_REENABLE_EXTRA_SEMI_WARNING
+
 #if defined(__linux__) && !defined(__ANDROID__)
 #    define VK_USE_PLATFORM_XCB_KHR
 #endif
diff --git a/src/third_party/trace_event/trace_event.h b/src/third_party/trace_event/trace_event.h
index 040580e..ebc329b 100644
--- a/src/third_party/trace_event/trace_event.h
+++ b/src/third_party/trace_event/trace_event.h
@@ -462,16 +462,20 @@
 // Implementation detail: internal macro to create static category and add begin
 // event if the category is enabled. Also adds the end event when the scope
 // ends.
-#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, ...)                                     \
-    INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category);                                            \
-    gl::TraceEvent::TraceEndOnScopeClose INTERNALTRACEEVENTUID(profileScope);                    \
-    if (*INTERNALTRACEEVENTUID(catstatic))                                                       \
-    {                                                                                            \
-        gl::TraceEvent::addTraceEvent(TRACE_EVENT_PHASE_BEGIN, INTERNALTRACEEVENTUID(catstatic), \
-                                      name, gl::TraceEvent::noEventId, TRACE_EVENT_FLAG_NONE,    \
-                                      ##__VA_ARGS__);                                            \
-        INTERNALTRACEEVENTUID(profileScope).initialize(INTERNALTRACEEVENTUID(catstatic), name);  \
-    }
+#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, ...)                      \
+    do                                                                            \
+    {                                                                             \
+        INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category);                         \
+        gl::TraceEvent::TraceEndOnScopeClose INTERNALTRACEEVENTUID(profileScope); \
+        if (*INTERNALTRACEEVENTUID(catstatic))                                    \
+        {                                                                         \
+            gl::TraceEvent::addTraceEvent(                                        \
+                TRACE_EVENT_PHASE_BEGIN, INTERNALTRACEEVENTUID(catstatic), name,  \
+                gl::TraceEvent::noEventId, TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \
+            INTERNALTRACEEVENTUID(profileScope)                                   \
+                .initialize(INTERNALTRACEEVENTUID(catstatic), name);              \
+        }                                                                         \
+    } while (0)
 
 // Implementation detail: internal macro to create static category and add
 // event if the category is enabled.