Fix up -Winconsistent-missing-override

  (and a couple presubmit fixes)

This allows us to turn back on -Werror for LLVM coverage builds,
and more generally supports building with Clang 3.7.

No public API changes.
TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/1232463006
diff --git a/bench/AlternatingColorPatternBench.cpp b/bench/AlternatingColorPatternBench.cpp
index 7744d72..8484954 100644
--- a/bench/AlternatingColorPatternBench.cpp
+++ b/bench/AlternatingColorPatternBench.cpp
@@ -112,7 +112,7 @@
         return fName.c_str();
     }
 
-    virtual void onPreDraw() {
+    void onPreDraw() override {
         int w = 40;
         int h = 40;
         makebm(&fBmp, w, h);
diff --git a/bench/BitmapBench.cpp b/bench/BitmapBench.cpp
index 6220247..718f7ac 100644
--- a/bench/BitmapBench.cpp
+++ b/bench/BitmapBench.cpp
@@ -93,7 +93,7 @@
     {}
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         fName.set("bitmap");
         fName.appendf("_%s%s", sk_tool_utils::colortype_name(fColorType),
                       kOpaque_SkAlphaType == fAlphaType ? "" : "_A");
@@ -110,7 +110,7 @@
         return fName.c_str();
     }
 
-    virtual void onPreDraw() {
+    void onPreDraw() override {
         SkBitmap bm;
 
         if (kIndex_8_SkColorType == fColorType) {
@@ -120,7 +120,7 @@
         }
         bm.eraseColor(kOpaque_SkAlphaType == fAlphaType ? SK_ColorBLACK : 0);
 
-        onDrawIntoBitmap(bm);
+        this->onDrawIntoBitmap(bm);
 
         if (kIndex_8_SkColorType == fColorType) {
             convertToIndex666(bm, &fBitmap, fAlphaType);
@@ -131,7 +131,7 @@
         fBitmap.setIsVolatile(fIsVolatile);
     }
 
-    virtual void onDraw(const int loops, SkCanvas* canvas) {
+    void onDraw(const int loops, SkCanvas* canvas) override {
         if (fDoScale) {
             canvas->scale(.99f, .99f);
         }
@@ -156,7 +156,7 @@
         }
     }
 
-    virtual void onDrawIntoBitmap(const SkBitmap& bm) {
+     virtual void onDrawIntoBitmap(const SkBitmap& bm) {
         const int w = bm.width();
         const int h = bm.height();
 
@@ -208,7 +208,7 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         fFullName.set(INHERITED::onGetName());
         if (fFlags & kScale_Flag) {
             fFullName.append("_scale");
@@ -225,7 +225,7 @@
         return fFullName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas* canvas) {
+    void onDraw(const int loops, SkCanvas* canvas) override {
         SkISize dim = canvas->getDeviceSize();
         if (fFlags & kScale_Flag) {
             const SkScalar x = SkIntToScalar(dim.fWidth) / 2;
@@ -287,7 +287,7 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         fFullName.set(INHERITED::onGetName());
 
         if (fSourceAlpha == kOpaque_SourceAlpha) {
diff --git a/bench/BitmapScaleBench.cpp b/bench/BitmapScaleBench.cpp
index f71e10f..2bfa312 100644
--- a/bench/BitmapScaleBench.cpp
+++ b/bench/BitmapScaleBench.cpp
@@ -32,7 +32,7 @@
     SkBitmap fInputBitmap, fOutputBitmap;
     SkMatrix fMatrix;
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName.c_str();
     }
 
@@ -56,7 +56,7 @@
         fName.printf( "bitmap_scale_%s_%d_%d", name, fInputSize, fOutputSize );
     }
 
-    virtual void onPreDraw() {
+    void onPreDraw() override {
         fInputBitmap.allocN32Pixels(fInputSize, fInputSize, true);
         fInputBitmap.eraseColor(SK_ColorWHITE);
 
@@ -65,7 +65,7 @@
         fMatrix.setScale( scale(), scale() );
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkPaint paint;
         this->setupPaint(&paint);
 
diff --git a/bench/ChecksumBench.cpp b/bench/ChecksumBench.cpp
index 9dd87c3..c731a8f 100644
--- a/bench/ChecksumBench.cpp
+++ b/bench/ChecksumBench.cpp
@@ -40,7 +40,7 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         switch (fType) {
             case kChecksum_ChecksumType: return "compute_checksum";
             case kMD5_ChecksumType: return "compute_md5";
@@ -51,7 +51,7 @@
         }
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         switch (fType) {
             case kChecksum_ChecksumType: {
                 for (int i = 0; i < loops; i++) {
diff --git a/bench/GrMemoryPoolBench.cpp b/bench/GrMemoryPoolBench.cpp
index 55690a4..3945774 100644
--- a/bench/GrMemoryPoolBench.cpp
+++ b/bench/GrMemoryPoolBench.cpp
@@ -5,6 +5,8 @@
  * found in the LICENSE file.
  */
 
+#include "SkTypes.h"
+
 // This tests a Gr class
 #if SK_SUPPORT_GPU
 
@@ -37,11 +39,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "grmemorypool_stack";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkRandom r;
         enum {
             kMaxObjects = 4 * (1 << 10),
@@ -99,11 +101,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "grmemorypool_random";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkRandom r;
         enum {
             kMaxObjects = 4 * (1 << 10),
@@ -147,11 +149,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "grmemorypool_queue";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkRandom r;
         C* objects[M];
         for (int i = 0; i < loops; i++) {
diff --git a/bench/InterpBench.cpp b/bench/InterpBench.cpp
index 9d8f32d..8171131 100644
--- a/bench/InterpBench.cpp
+++ b/bench/InterpBench.cpp
@@ -1,3 +1,10 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
 #include "Benchmark.h"
 #include "SkColorPriv.h"
 #include "SkMatrix.h"
@@ -31,11 +38,11 @@
 protected:
     virtual int mulLoopCount() const { return 1; }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         int n = loops * this->mulLoopCount();
         for (int i = 0; i < n; i++) {
             this->performTest(fDst, fFx, fDx, kBuffer);
diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp
index 16a6a5a..e05bd5f 100644
--- a/bench/MathBench.cpp
+++ b/bench/MathBench.cpp
@@ -1,3 +1,10 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
 #include "Benchmark.h"
 #include "SkColorPriv.h"
 #include "SkMatrix.h"
@@ -42,11 +49,11 @@
 protected:
     virtual int mulLoopCount() const { return 1; }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         int n = loops * this->mulLoopCount();
         for (int i = 0; i < n; i++) {
             this->performTest(fDst, fSrc, kBuffer);
@@ -66,9 +73,7 @@
                               const uint32_t* SK_RESTRICT src,
                               int count) = 0;
 
-    virtual void performTest(float* SK_RESTRICT dst,
-                             const float* SK_RESTRICT src,
-                             int count) override {
+    void performTest(float* SK_RESTRICT dst, const float* SK_RESTRICT src, int count) override {
         uint32_t* d = SkTCast<uint32_t*>(dst);
         const uint32_t* s = SkTCast<const uint32_t*>(src);
         this->performITest(d, s, count);
@@ -83,9 +88,7 @@
 public:
     NoOpMathBench() : INHERITED("noOp") {}
 protected:
-    virtual void performTest(float* SK_RESTRICT dst,
-                              const float* SK_RESTRICT src,
-                              int count) {
+    void performTest(float* SK_RESTRICT dst, const float* SK_RESTRICT src, int count) override {
         for (int i = 0; i < count; ++i) {
             dst[i] = src[i] + 1;
         }
@@ -98,9 +101,7 @@
 public:
     SkRSqrtMathBench() : INHERITED("sk_float_rsqrt") {}
 protected:
-    virtual void performTest(float* SK_RESTRICT dst,
-                              const float* SK_RESTRICT src,
-                              int count) {
+    void performTest(float* SK_RESTRICT dst, const float* SK_RESTRICT src, int count) override {
         for (int i = 0; i < count; ++i) {
             dst[i] = sk_float_rsqrt(src[i]);
         }
@@ -114,9 +115,7 @@
 public:
     SlowISqrtMathBench() : INHERITED("slowIsqrt") {}
 protected:
-    virtual void performTest(float* SK_RESTRICT dst,
-                              const float* SK_RESTRICT src,
-                              int count) {
+    void performTest(float* SK_RESTRICT dst, const float* SK_RESTRICT src, int count) override {
         for (int i = 0; i < count; ++i) {
             dst[i] = 1.0f / sk_float_sqrt(src[i]);
         }
@@ -139,9 +138,7 @@
 public:
     FastISqrtMathBench() : INHERITED("fastIsqrt") {}
 protected:
-    virtual void performTest(float* SK_RESTRICT dst,
-                              const float* SK_RESTRICT src,
-                              int count) {
+    void performTest(float* SK_RESTRICT dst, const float* SK_RESTRICT src, int count) override {
         for (int i = 0; i < count; ++i) {
             dst[i] = SkFastInvSqrt(src[i]);
         }
@@ -164,9 +161,9 @@
 public:
     QMul64Bench() : INHERITED("qmul64") {}
 protected:
-    virtual void performITest(uint32_t* SK_RESTRICT dst,
-                              const uint32_t* SK_RESTRICT src,
-                              int count) override {
+    void performITest(uint32_t* SK_RESTRICT dst,
+                      const uint32_t* SK_RESTRICT src,
+                      int count) override {
         for (int i = 0; i < count; ++i) {
             dst[i] = QMul64(src[i], (uint8_t)i);
         }
@@ -179,9 +176,9 @@
 public:
     QMul32Bench() : INHERITED("qmul32") {}
 protected:
-    virtual void performITest(uint32_t* SK_RESTRICT dst,
-                              const uint32_t* SK_RESTRICT src,
-                              int count) override {
+    void performITest(uint32_t* SK_RESTRICT dst,
+                      const uint32_t* SK_RESTRICT src,
+                      int count) override {
         for (int i = 0; i < count; ++i) {
             dst[i] = SkAlphaMulQ(src[i], (uint8_t)i);
         }
@@ -290,7 +287,7 @@
     }
 
 protected:
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         IsFiniteProc proc = fProc;
         const float* data = fData;
         // do this so the compiler won't throw away the function call
@@ -320,7 +317,7 @@
         }
     }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName;
     }
 
@@ -360,7 +357,7 @@
     virtual void process(float) {}
 
 protected:
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkRandom rand;
         float accum = 0;
         const float* data = fData;
@@ -382,7 +379,7 @@
         }
     }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName;
     }
 
@@ -422,7 +419,7 @@
     virtual void process(int) {}
 
 protected:
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         int accum = 0;
 
         if (fUsePortable) {
@@ -442,7 +439,7 @@
         }
     }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName;
     }
 
@@ -478,7 +475,7 @@
     virtual void process(int) {}
 
 protected:
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         int accum = 0;
 
         for (int j = 0; j < loops; ++j) {
@@ -489,7 +486,7 @@
         }
     }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName;
     }
 
@@ -522,7 +519,7 @@
     }
 
 protected:
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int j = 0; j < loops; ++j) {
             for (int i = 0; i < N - 4; ++i) {
                 fResult[i] = SkFloatToFixed(fData[i]);
@@ -535,7 +532,7 @@
         }
     }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "float_to_fixed";
     }
 
@@ -558,11 +555,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         volatile T a = 0, b = 0;
         T div = 0, mod = 0;
         for (int i = 0; i < loops; i++) {
diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp
index 98025f1..1949263 100644
--- a/bench/Matrix44Bench.cpp
+++ b/bench/Matrix44Bench.cpp
@@ -26,11 +26,11 @@
 protected:
     virtual int mulLoopCount() const { return 1; }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; i++) {
             this->performTest();
         }
@@ -52,7 +52,7 @@
         fM2.set(3, 3, 0);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 10; ++i) {
             (void) (fM0 == fM1);
             (void) (fM1 == fM2);
@@ -78,7 +78,7 @@
         mat.setRowMajord(rowMajor);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 10; ++i) {
             mat.setIdentity();
         }
@@ -97,7 +97,7 @@
         fX = fY = fZ = SkDoubleToMScalar(1.5);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         fM0.reset();
         for (int i = 0; i < 10; ++i) {
             fM0.preScale(fX, fY, fZ);
@@ -134,7 +134,7 @@
         fM0.setDouble(3, 3, 16.1);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 10; ++i) {
             fM0.invert(&fM1);
         }
@@ -166,7 +166,7 @@
         // bottom row (perspective component) remains (0, 0, 0, 1).
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 10; ++i) {
             fM0.invert(&fM1);
         }
@@ -193,7 +193,7 @@
         fM0.setDouble(2, 3, -12.1);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 10; ++i) {
             fM0.invert(&fM1);
         }
@@ -215,7 +215,7 @@
         fM0.setDouble(2, 3, -12.1);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 10; ++i) {
             fM0.invert(&fM1);
         }
@@ -234,7 +234,7 @@
         fX = fY = fZ = SkDoubleToMScalar(1.5);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         fM0.reset();
         for (int i = 0; i < 10; ++i) {
             fM0.postScale(fX, fY, fZ);
@@ -269,7 +269,7 @@
         }
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         fM0.reset();    // just to normalize this test with prescale/postscale
         for (int i = 0; i < 10000; ++i) {
             fM0.setConcat(fM1, fM2);
@@ -290,7 +290,7 @@
     // Putting random generation of the matrix inside performTest()
     // would help us avoid anomalous runs, but takes up 25% or
     // more of the function time.
-    virtual void performTest() {
+    void performTest() override {
         for (int i = 0; i < 20; ++i) {
             fMatrix.set(1, 2, 1);   // to invalidate the type-cache
             fMatrix.getType();
diff --git a/bench/MatrixBench.cpp b/bench/MatrixBench.cpp
index e3e5c70..75736aa 100644
--- a/bench/MatrixBench.cpp
+++ b/bench/MatrixBench.cpp
@@ -27,11 +27,11 @@
 protected:
     virtual int mulLoopCount() const { return 1; }
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return fName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; i++) {
             this->performTest();
         }
@@ -46,7 +46,7 @@
 public:
     EqualsMatrixBench() : INHERITED("equals") {}
 protected:
-    virtual void performTest() {
+    void performTest() override {
         SkMatrix m0, m1, m2;
 
         m0.reset();
@@ -72,7 +72,7 @@
         fM2.setTranslate(fSX, fSY);
     }
 protected:
-    virtual void performTest() {
+    void performTest() override {
         SkMatrix m;
         m = fM0; m.preScale(fSX, fSY);
         m = fM1; m.preScale(fSX, fSY);
@@ -112,7 +112,7 @@
     // Putting random generation of the matrix inside performTest()
     // would help us avoid anomalous runs, but takes up 25% or
     // more of the function time.
-    virtual void performTest() {
+    void performTest() override {
         fMatrix.setAll(fArray[0], fArray[1], fArray[2],
                        fArray[3], fArray[4], fArray[5],
                        fArray[6], fArray[7], fArray[8]);
@@ -146,7 +146,7 @@
     DecomposeMatrixBench() : INHERITED("decompose") {}
 
 protected:
-    virtual void onPreDraw() {
+    void onPreDraw() override {
         for (int i = 0; i < 10; ++i) {
             SkScalar rot0 = (fRandom.nextBool()) ? fRandom.nextRangeF(-180, 180) : 0.0f;
             SkScalar sx = fRandom.nextRangeF(-3000.f, 3000.f);
@@ -157,7 +157,7 @@
             fMatrix[i].postRotate(rot1);
         }
     }
-    virtual void performTest() {
+    void performTest() override {
         SkPoint rotation1, scale, rotation2;
         for (int i = 0; i < 10; ++i) {
             (void) SkDecomposeUpper2x2(fMatrix[i], &rotation1, &scale, &rotation2);
@@ -201,7 +201,7 @@
         kUncachedTypeMask_Flag  = 0x10,
     };
 protected:
-    virtual void performTest() {
+    void performTest() override {
         if (fFlags & kUncachedTypeMask_Flag) {
             // This will invalidate the typemask without
             // changing the matrix.
diff --git a/bench/MutexBench.cpp b/bench/MutexBench.cpp
index 8d7eb98..2565d38 100644
--- a/bench/MutexBench.cpp
+++ b/bench/MutexBench.cpp
@@ -14,11 +14,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "mutex";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkMutex mu;
         for (int i = 0; i < loops; i++) {
             mu.acquire();
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 710179a..ffec90b 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -148,7 +148,7 @@
     void appendName(SkString* name) override {
         name->append("sawtooth");
     }
-    virtual void makePath(SkPath* path) {
+    void makePath(SkPath* path) override {
         SkScalar x = SkIntToScalar(20);
         SkScalar y = SkIntToScalar(20);
         const SkScalar x0 = x;
diff --git a/bench/PictureNestingBench.cpp b/bench/PictureNestingBench.cpp
index a649dcc..48f2ef4 100644
--- a/bench/PictureNestingBench.cpp
+++ b/bench/PictureNestingBench.cpp
@@ -113,11 +113,11 @@
     }
 
 protected:
-    virtual bool isSuitableFor(Backend backend) {
+    bool isSuitableFor(Backend backend) override {
         return backend == kNonRendering_Backend;
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         SkIPoint canvasSize = onGetSize();
         SkPictureRecorder recorder;
 
@@ -151,7 +151,7 @@
         fPicture.reset(recorder.endRecording());
     }
 
-    virtual void onDraw(const int loops, SkCanvas* canvas) {
+    void onDraw(const int loops, SkCanvas* canvas) override {
         for (int i = 0; i < loops; i++) {
             canvas->drawPicture(fPicture);
         }
diff --git a/bench/RefCntBench.cpp b/bench/RefCntBench.cpp
index ee5d746..313e9a4 100644
--- a/bench/RefCntBench.cpp
+++ b/bench/RefCntBench.cpp
@@ -23,11 +23,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "atomic_inc_32";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; ++i) {
             sk_atomic_inc(&fX);
         }
@@ -47,11 +47,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "atomic_inc_64";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; ++i) {
             sk_atomic_inc(&fX);
         }
@@ -69,11 +69,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "ref_cnt_stack";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; ++i) {
             SkRefCnt ref;
             for (int j = 0; j < M; ++j) {
@@ -103,11 +103,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "ref_cnt_heap";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         char memory[sizeof(PlacedRefCnt)];
         for (int i = 0; i < loops; ++i) {
             PlacedRefCnt* ref = new (memory) PlacedRefCnt();
@@ -130,11 +130,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "ref_cnt_new";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; ++i) {
             SkRefCnt* ref = new SkRefCnt();
             for (int j = 0; j < M; ++j) {
@@ -158,11 +158,11 @@
     }
 
 protected:
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         return "ref_cnt_stack_weak";
     }
 
-    virtual void onDraw(const int loops, SkCanvas*) {
+    void onDraw(const int loops, SkCanvas*) override {
         for (int i = 0; i < loops; ++i) {
             SkWeakRefCnt ref;
             for (int j = 0; j < M; ++j) {
diff --git a/bench/RegionBench.cpp b/bench/RegionBench.cpp
index 84e8d1b..2188cb3 100644
--- a/bench/RegionBench.cpp
+++ b/bench/RegionBench.cpp
@@ -104,9 +104,9 @@
     }
 
 protected:
-    virtual const char* onGetName() { return fName.c_str(); }
+    const char* onGetName() override { return fName.c_str(); }
 
-    virtual void onDraw(const int loops, SkCanvas* canvas) {
+    void onDraw(const int loops, SkCanvas* canvas) override {
         Proc proc = fProc;
         for (int i = 0; i < loops; ++i) {
             proc(fA, fB);
diff --git a/bench/StrokeBench.cpp b/bench/StrokeBench.cpp
index 8417bbf..70dc79e 100644
--- a/bench/StrokeBench.cpp
+++ b/bench/StrokeBench.cpp
@@ -21,7 +21,7 @@
     }
 
 protected:
-    virtual bool isSuitableFor(Backend backend) {
+    bool isSuitableFor(Backend backend) override {
         return backend == kNonRendering_Backend;
     }
 
diff --git a/bench/TextBench.cpp b/bench/TextBench.cpp
index 0a6af34..2d051c9 100644
--- a/bench/TextBench.cpp
+++ b/bench/TextBench.cpp
@@ -90,7 +90,7 @@
     }
 
 
-    virtual const char* onGetName() {
+    const char* onGetName() override {
         fName.printf("text_%g", SkScalarToFloat(fPaint.getTextSize()));
         if (fDoPos) {
             fName.append("_pos");
@@ -109,7 +109,7 @@
         return fName.c_str();
     }
 
-    virtual void onDraw(const int loops, SkCanvas* canvas) {
+    void onDraw(const int loops, SkCanvas* canvas) override {
         const SkIPoint dim = this->getSize();
         SkRandom rand;
 
diff --git a/bench/TextBlobBench.cpp b/bench/TextBlobBench.cpp
index ae71a1e..f830001 100644
--- a/bench/TextBlobBench.cpp
+++ b/bench/TextBlobBench.cpp
@@ -50,11 +50,11 @@
         fBlob.reset(builder.build());
     }
 
-    const char* onGetName() {
+    const char* onGetName() override {
         return "TextBlobBench";
     }
 
-    void onDraw(const int loops, SkCanvas* canvas) {
+    void onDraw(const int loops, SkCanvas* canvas) override {
         SkPaint paint;
 
         // To ensure maximum caching, we just redraw the blob at the same place everytime
diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp
index 1d866c6..3e66456 100644
--- a/gm/bitmapshader.cpp
+++ b/gm/bitmapshader.cpp
@@ -49,15 +49,15 @@
         draw_mask(&fMask);
     }
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         return SkString("bitmapshaders");
     }
 
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(150, 100);
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
+    void onDraw(SkCanvas* canvas) override {
         SkPaint paint;
 
         for (int i = 0; i < 2; i++) {
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index dfec4e7..9357884 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -118,7 +118,7 @@
         return "";
     }
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         if (kRect_Clip == fClip && !fAntiAlias) {
             return SkString("complexclip2");
         }
@@ -130,12 +130,12 @@
         return str;
     }
 
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(SkScalarRoundToInt(fTotalWidth),
                              SkScalarRoundToInt(fTotalHeight));
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
+    void onDraw(SkCanvas* canvas) override {
         SkPaint rectPaint;
         rectPaint.setStyle(SkPaint::kStroke_Style);
         rectPaint.setStrokeWidth(-1);
diff --git a/gm/dcshader.cpp b/gm/dcshader.cpp
index 786f5eb..b26c750 100644
--- a/gm/dcshader.cpp
+++ b/gm/dcshader.cpp
@@ -70,7 +70,7 @@
                             const char* outputColor,
                             const char* inputColor,
                             const TransformedCoordsArray& coords,
-                            const TextureSamplerArray& samplers) {
+                            const TextureSamplerArray& samplers) override {
                 GrGLFragmentBuilder* fpb = builder->getFragmentShaderBuilder();
                 fpb->codeAppendf("vec2 c = %s;", fpb->ensureFSCoords2D(coords, 0).c_str());
                 fpb->codeAppend("vec2 r = mod(c, vec2(20.0));");
diff --git a/gm/shadows.cpp b/gm/shadows.cpp
index 5c0e1e1..729104c 100644
--- a/gm/shadows.cpp
+++ b/gm/shadows.cpp
@@ -36,84 +36,84 @@
                   SkIntToScalar(30), SkIntToScalar(30));
     }
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         return SkString("shadows");
     }
 
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(200, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
-    SkBlurDrawLooper* shadowLoopers[5];
-    shadowLoopers[0] =
-        SkBlurDrawLooper::Create(SK_ColorBLUE,
-                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
-                                 SkIntToScalar(5), SkIntToScalar(10),
-                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                                 SkBlurDrawLooper::kOverrideColor_BlurFlag |
-                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
-    SkAutoUnref aurL0(shadowLoopers[0]);
-    shadowLoopers[1] =
-        SkBlurDrawLooper::Create(SK_ColorBLUE,
-                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
-                                 SkIntToScalar(5), SkIntToScalar(10),
-                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                                 SkBlurDrawLooper::kOverrideColor_BlurFlag);
-    SkAutoUnref aurL1(shadowLoopers[1]);
-    shadowLoopers[2] =
-        SkBlurDrawLooper::Create(SK_ColorBLACK,
-                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
-                                 SkIntToScalar(5),
-                                 SkIntToScalar(10),
-                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
-    SkAutoUnref aurL2(shadowLoopers[2]);
-    shadowLoopers[3] =
-        SkBlurDrawLooper::Create(0x7FFF0000,
-                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
-                                 SkIntToScalar(-5), SkIntToScalar(-10),
-                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                                 SkBlurDrawLooper::kOverrideColor_BlurFlag |
-                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
-    SkAutoUnref aurL3(shadowLoopers[3]);
-    shadowLoopers[4] =
-        SkBlurDrawLooper::Create(SK_ColorBLACK, SkIntToScalar(0),
-                                 SkIntToScalar(5), SkIntToScalar(5),
-                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                                 SkBlurDrawLooper::kOverrideColor_BlurFlag |
-                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
-    SkAutoUnref aurL4(shadowLoopers[4]);
+    void onDraw(SkCanvas* canvas) override {
+        SkBlurDrawLooper* shadowLoopers[5];
+        shadowLoopers[0] =
+            SkBlurDrawLooper::Create(SK_ColorBLUE,
+                                     SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
+                                     SkIntToScalar(5), SkIntToScalar(10),
+                                     SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                     SkBlurDrawLooper::kOverrideColor_BlurFlag |
+                                     SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkAutoUnref aurL0(shadowLoopers[0]);
+        shadowLoopers[1] =
+            SkBlurDrawLooper::Create(SK_ColorBLUE,
+                                     SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
+                                     SkIntToScalar(5), SkIntToScalar(10),
+                                     SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                     SkBlurDrawLooper::kOverrideColor_BlurFlag);
+        SkAutoUnref aurL1(shadowLoopers[1]);
+        shadowLoopers[2] =
+            SkBlurDrawLooper::Create(SK_ColorBLACK,
+                                     SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
+                                     SkIntToScalar(5),
+                                     SkIntToScalar(10),
+                                     SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                     SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkAutoUnref aurL2(shadowLoopers[2]);
+        shadowLoopers[3] =
+            SkBlurDrawLooper::Create(0x7FFF0000,
+                                     SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
+                                     SkIntToScalar(-5), SkIntToScalar(-10),
+                                     SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                     SkBlurDrawLooper::kOverrideColor_BlurFlag |
+                                     SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkAutoUnref aurL3(shadowLoopers[3]);
+        shadowLoopers[4] =
+            SkBlurDrawLooper::Create(SK_ColorBLACK, SkIntToScalar(0),
+                                     SkIntToScalar(5), SkIntToScalar(5),
+                                     SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                     SkBlurDrawLooper::kOverrideColor_BlurFlag |
+                                     SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkAutoUnref aurL4(shadowLoopers[4]);
 
-    static const struct {
-        SkColor fColor;
-        SkScalar fStrokeWidth;
-    } gRec[] = {
-        { SK_ColorRED,      -SK_Scalar1 },
-        { SK_ColorGREEN,    SkIntToScalar(4) },
-        { SK_ColorBLUE,     SkIntToScalar(0)},
-    };
+        static const struct {
+            SkColor fColor;
+            SkScalar fStrokeWidth;
+        } gRec[] = {
+            { SK_ColorRED,      -SK_Scalar1 },
+            { SK_ColorGREEN,    SkIntToScalar(4) },
+            { SK_ColorBLUE,     SkIntToScalar(0)},
+        };
 
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    for (size_t i = 0; i < SK_ARRAY_COUNT(shadowLoopers); ++i) {
-        SkAutoCanvasRestore acr(canvas, true);
+        SkPaint paint;
+        paint.setAntiAlias(true);
+        for (size_t i = 0; i < SK_ARRAY_COUNT(shadowLoopers); ++i) {
+            SkAutoCanvasRestore acr(canvas, true);
 
-        paint.setLooper(shadowLoopers[i]);
+            paint.setLooper(shadowLoopers[i]);
 
-        canvas->translate(SkIntToScalar((unsigned int)i*40), SkIntToScalar(0));
-        setup(&paint, gRec[0].fColor, gRec[0].fStrokeWidth);
-        canvas->drawRect(fRect, paint);
+            canvas->translate(SkIntToScalar((unsigned int)i*40), SkIntToScalar(0));
+            setup(&paint, gRec[0].fColor, gRec[0].fStrokeWidth);
+            canvas->drawRect(fRect, paint);
 
-        canvas->translate(SkIntToScalar(0), SkIntToScalar(40));
-        setup(&paint, gRec[1].fColor, gRec[1].fStrokeWidth);
-        canvas->drawPath(fCirclePath, paint);
+            canvas->translate(SkIntToScalar(0), SkIntToScalar(40));
+            setup(&paint, gRec[1].fColor, gRec[1].fStrokeWidth);
+            canvas->drawPath(fCirclePath, paint);
 
-        canvas->translate(SkIntToScalar(0), SkIntToScalar(40));
-        setup(&paint, gRec[2].fColor, gRec[2].fStrokeWidth);
-        canvas->drawPath(fCirclePath, paint);
+            canvas->translate(SkIntToScalar(0), SkIntToScalar(40));
+            setup(&paint, gRec[2].fColor, gRec[2].fStrokeWidth);
+            canvas->drawPath(fCirclePath, paint);
+        }
     }
-}
 
 private:
     typedef GM INHERITED;
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index c0aa515..1745eb1 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -126,7 +126,7 @@
         canvas->restore();
     }
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         SkString str;
         str.printf("simpleaaclip_%s",
                     kRect_GeomType == fGeomType ? "rect" :
@@ -135,11 +135,11 @@
         return str;
     }
 
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
+    void onDraw(SkCanvas* canvas) override {
 
         static const struct {
             SkColor         fColor;
diff --git a/include/xml/SkXMLWriter.h b/include/xml/SkXMLWriter.h
index 45356d4..4c0935f 100644
--- a/include/xml/SkXMLWriter.h
+++ b/include/xml/SkXMLWriter.h
@@ -65,7 +65,7 @@
 public:
     SkXMLStreamWriter(SkWStream*);
     virtual ~SkXMLStreamWriter();
-    virtual void    writeHeader();
+    void writeHeader() override;
     SkDEBUGCODE(static void UnitTest();)
 
 protected:
@@ -83,10 +83,10 @@
     SkXMLParserWriter(SkXMLParser*);
     virtual ~SkXMLParserWriter();
 protected:
-    virtual void onStartElementLen(const char elem[], size_t length);
-    virtual void onEndElement();
-    virtual void onAddAttributeLen(const char name[], const char value[], size_t length);
-    virtual void onAddText(const char text[], size_t length) override;
+    void onStartElementLen(const char elem[], size_t length) override;
+    void onEndElement() override;
+    void onAddAttributeLen(const char name[], const char value[], size_t length) override;
+    void onAddText(const char text[], size_t length) override;
 private:
     SkXMLParser&        fParser;
 };
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 7e90e98..a80ccd9 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -176,7 +176,7 @@
 #endif
     }
 
-    virtual void setUpBackend(SampleWindow* win, int msaaSampleCount) {
+    void setUpBackend(SampleWindow* win, int msaaSampleCount) override {
         SkASSERT(kNone_BackEndType == fBackend);
 
         fBackend = kNone_BackEndType;
@@ -250,7 +250,7 @@
         this->windowSizeChanged(win);
     }
 
-    virtual void tearDownBackend(SampleWindow *win) {
+    void tearDownBackend(SampleWindow *win) override {
 #if SK_SUPPORT_GPU
         if (fCurContext) {
             // in case we have outstanding refs to this guy (lua?)
@@ -269,8 +269,7 @@
         fBackend = kNone_BackEndType;
     }
 
-    virtual SkSurface* createSurface(SampleWindow::DeviceType dType,
-                                     SampleWindow* win) override {
+    SkSurface* createSurface(SampleWindow::DeviceType dType, SampleWindow* win) override {
 #if SK_SUPPORT_GPU
         if (IsGpuDeviceType(dType) && fCurContext) {
             SkSurfaceProps props(win->getSurfaceProps());
@@ -280,9 +279,8 @@
         return NULL;
     }
 
-    virtual void publishCanvas(SampleWindow::DeviceType dType,
-                               SkCanvas* canvas,
-                               SampleWindow* win) {
+    void publishCanvas(SampleWindow::DeviceType dType,
+                       SkCanvas* canvas, SampleWindow* win) override {
 #if SK_SUPPORT_GPU
         if (fCurContext) {
             // in case we have queued drawing calls
@@ -305,7 +303,7 @@
         win->present();
     }
 
-    virtual void windowSizeChanged(SampleWindow* win) {
+    void windowSizeChanged(SampleWindow* win) override {
 #if SK_SUPPORT_GPU
         if (fCurContext) {
             AttachmentInfo attachmentInfo;
@@ -316,7 +314,7 @@
 #endif
     }
 
-    virtual GrContext* getGrContext() {
+    GrContext* getGrContext() override {
 #if SK_SUPPORT_GPU
         return fCurContext;
 #else
diff --git a/samplecode/SampleCamera.cpp b/samplecode/SampleCamera.cpp
index 1f3b8c3..991013a 100644
--- a/samplecode/SampleCamera.cpp
+++ b/samplecode/SampleCamera.cpp
@@ -57,7 +57,7 @@
 
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
+    bool onQuery(SkEvent* evt) override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "Camera");
             return true;
@@ -65,7 +65,7 @@
         return this->INHERITED::onQuery(evt);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         canvas->translate(this->width()/2, this->height()/2);
 
         Sk3DView    view;
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp
index 62d4a3d..9036fbe 100644
--- a/samplecode/SampleFatBits.cpp
+++ b/samplecode/SampleFatBits.cpp
@@ -446,7 +446,7 @@
         return this->INHERITED::onQuery(evt);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         fFB.drawBG(canvas);
         if (fFB.getTriangle()) {
             fFB.drawTriangle(canvas, fPts);
@@ -473,8 +473,7 @@
         }
     }
 
-    virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                              unsigned modi) override {
+    SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
         SkPoint pt = { x, y };
         int index = -1;
         int count = fFB.getTriangle() ? 3 : 2;
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 62a8c3b..0c34638 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -141,7 +141,7 @@
 
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
+    bool onQuery(SkEvent* evt) override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "Layers");
             return true;
@@ -153,7 +153,7 @@
         canvas->drawColor(SK_ColorGRAY);
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
+    void onDraw(SkCanvas* canvas) override {
         this->drawBG(canvas);
 
         if (true) {
@@ -214,14 +214,13 @@
         test_fade(canvas);
     }
 
-    virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                              unsigned modi) override {
+    SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
         this->inval(NULL);
 
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
-    virtual bool onClick(Click* click) {
+    bool onClick(Click* click) override {
         return this->INHERITED::onClick(click);
     }
 
diff --git a/samplecode/SampleLines.cpp b/samplecode/SampleLines.cpp
index 4b491a5..0166bc0 100644
--- a/samplecode/SampleLines.cpp
+++ b/samplecode/SampleLines.cpp
@@ -34,7 +34,7 @@
 
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
+    bool onQuery(SkEvent* evt) override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "Lines");
             return true;
@@ -62,7 +62,7 @@
         canvas->drawRect(r, paint);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         SkBitmap bm;
         SkImageDecoder::DecodeFile("/kill.gif", &bm);
         canvas->drawBitmap(bm, 0, 0, NULL);
diff --git a/samplecode/SampleManyRects.cpp b/samplecode/SampleManyRects.cpp
index 5032498..a570853 100644
--- a/samplecode/SampleManyRects.cpp
+++ b/samplecode/SampleManyRects.cpp
@@ -34,7 +34,7 @@
         return this->INHERITED::onQuery(evt);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         SkISize dsize = canvas->getDeviceSize();
         canvas->clear(0xFFF0E0F0);
 
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index ac500bf..9ada9ef 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -262,7 +262,7 @@
 
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt)  {
+    bool onQuery(SkEvent* evt)  override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "Patch");
             return true;
@@ -270,7 +270,7 @@
         return this->INHERITED::onQuery(evt);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         const int nu = 10;
         const int nv = 10;
 
@@ -334,8 +334,7 @@
         return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5);
     }
 
-    virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
-                                              unsigned modi) override {
+    SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
         x -= DX;
         y -= DY;
         for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); i++) {
@@ -346,7 +345,7 @@
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
-    virtual bool onClick(Click* click) {
+    bool onClick(Click* click) override {
         fPts[((PtClick*)click)->fIndex].set(click->fCurr.fX - DX, click->fCurr.fY - DY);
         this->inval(NULL);
         return true;
diff --git a/samplecode/SamplePath.cpp b/samplecode/SamplePath.cpp
index 4493d39..313abca 100644
--- a/samplecode/SamplePath.cpp
+++ b/samplecode/SamplePath.cpp
@@ -142,7 +142,7 @@
 
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
+    bool onQuery(SkEvent* evt) override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "Paths");
             return true;
@@ -173,7 +173,7 @@
         canvas->drawPath(path, paint);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         this->init();
         canvas->translate(50, 50);
 
@@ -194,7 +194,7 @@
             canvas->translate(0, 200);
         }
     }
-    
+
     bool onAnimate(const SkAnimTimer& timer) override {
         SkScalar currSecs = timer.scaled(100);
         SkScalar delta = currSecs - fPrevSecs;
@@ -241,7 +241,7 @@
             fPts[i].fX = 20 + rand.nextUScalar1() * 640;
             fPts[i].fY = 20 + rand.nextUScalar1() * 480;
         }
-        
+
         const SkScalar rad = 50;
 
         fPtsPaint.setAntiAlias(true);
@@ -289,7 +289,7 @@
         }
         return this->INHERITED::onQuery(evt);
     }
-    
+
     void makePath(SkPath* path) {
         path->moveTo(fPts[0]);
         for (int i = 1; i < N; ++i) {
diff --git a/samplecode/SamplePathClip.cpp b/samplecode/SamplePathClip.cpp
index ab7ed5d..494debf 100644
--- a/samplecode/SamplePathClip.cpp
+++ b/samplecode/SamplePathClip.cpp
@@ -37,7 +37,7 @@
 
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
+    bool onQuery(SkEvent* evt) override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "PathClip");
             return true;
@@ -45,7 +45,7 @@
         return this->INHERITED::onQuery(evt);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         SkRect oval = fOval;
         oval.offset(fCenter.fX - oval.centerX(), fCenter.fY - oval.centerY());
 
@@ -74,7 +74,7 @@
         return new Click(this);
     }
 
-    virtual bool onClick(Click* click) {
+    bool onClick(Click* click) override {
         fCenter.set(click->fCurr.fX, click->fCurr.fY);
         this->inval(NULL);
         return false;
diff --git a/samplecode/SamplePathFuzz.cpp b/samplecode/SamplePathFuzz.cpp
index 55f7f41..0955ce9 100644
--- a/samplecode/SamplePathFuzz.cpp
+++ b/samplecode/SamplePathFuzz.cpp
@@ -652,7 +652,7 @@
     }
 protected:
     // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
+    bool onQuery(SkEvent* evt) override {
         if (SampleCode::TitleQ(*evt)) {
             SampleCode::TitleR(evt, "PathFuzzer");
             return true;
@@ -668,7 +668,7 @@
         path_fuzz_stroker(&offscreen, fIndex);
     }
 
-    virtual void onDrawContent(SkCanvas* canvas) {
+    void onDrawContent(SkCanvas* canvas) override {
         if (fOneDraw) {
             fuzzPath.randomize();
             const SkPath& path = fuzzPath.getPath();
diff --git a/src/animator/SkXMLAnimatorWriter.h b/src/animator/SkXMLAnimatorWriter.h
index 2f6721d..87cf218 100644
--- a/src/animator/SkXMLAnimatorWriter.h
+++ b/src/animator/SkXMLAnimatorWriter.h
@@ -19,7 +19,7 @@
 public:
     SkXMLAnimatorWriter(SkAnimator*);
     virtual ~SkXMLAnimatorWriter();
-    virtual void    writeHeader();
+    void writeHeader() override;
     SkDEBUGCODE(static void UnitTest(class SkCanvas* canvas);)
 
 protected:
diff --git a/src/core/SkFunction.h b/src/core/SkFunction.h
index 429c6f5..8e41cba 100644
--- a/src/core/SkFunction.h
+++ b/src/core/SkFunction.h
@@ -54,7 +54,7 @@
         LambdaImpl(const Fn& fn) : fFn(fn) {}
 
         R call(Args... args) const override { return fFn(Forward(args)...); }
-        Interface* clone() const { return SkNEW_ARGS(LambdaImpl<Fn>, (fFn)); }
+        Interface* clone() const override { return SkNEW_ARGS(LambdaImpl<Fn>, (fFn)); }
     private:
         Fn fFn;
     };
@@ -64,7 +64,7 @@
         FnPtrImpl(R (*fn)(Args...)) : fFn(fn) {}
 
         R call(Args... args) const override { return fFn(Forward(args)...); }
-        Interface* clone() const { return SkNEW_ARGS(FnPtrImpl, (fFn)); }
+        Interface* clone() const override { return SkNEW_ARGS(FnPtrImpl, (fFn)); }
     private:
         R (*fFn)(Args...);
     };
diff --git a/src/core/SkRWBuffer.cpp b/src/core/SkRWBuffer.cpp
index 33d82af..6669471 100644
--- a/src/core/SkRWBuffer.cpp
+++ b/src/core/SkRWBuffer.cpp
@@ -15,12 +15,12 @@
     SkBufferBlock*  fNext;
     size_t          fUsed;
     size_t          fCapacity;
-    
+
     const void* startData() const { return this + 1; };
-    
+
     size_t avail() const { return fCapacity - fUsed; }
     void* availData() { return (char*)this->startData() + fUsed; }
-    
+
     static SkBufferBlock* Alloc(size_t length) {
         size_t capacity = LengthToCapacity(length);
         SkBufferBlock* block = (SkBufferBlock*)sk_malloc_throw(sizeof(SkBufferBlock) + capacity);
@@ -73,12 +73,12 @@
         head->fBlock.fCapacity = capacity;
         return head;
     }
-    
+
     void ref() const {
         SkASSERT(fRefCnt > 0);
         sk_atomic_inc(&fRefCnt);
     }
-    
+
     void unref() const {
         SkASSERT(fRefCnt > 0);
         // A release here acts in place of all releases we "should" have been doing in ref().
@@ -93,7 +93,7 @@
             }
         }
     }
-    
+
     void validate(size_t minUsed, SkBufferBlock* tail = NULL) const {
 #ifdef SK_DEBUG
         SkASSERT(fRefCnt > 0);
@@ -203,7 +203,7 @@
     }
 
     fTotalUsed += length;
-    
+
     if (NULL == fHead) {
         fHead = SkBufferHead::Alloc(length);
         fTail = &fHead->fBlock;
@@ -304,16 +304,16 @@
     bool isAtEnd() const override {
         return fBuffer->size() == fGlobalOffset;
     }
-    
+
     SkStreamAsset* duplicate() const override {
         return SkNEW_ARGS(SkROBufferStreamAsset, (fBuffer));
     }
-    
-    size_t getPosition() const {
+
+    size_t getPosition() const override {
         return fGlobalOffset;
     }
-    
-    bool seek(size_t position) {
+
+    bool seek(size_t position) override {
         AUTO_VALIDATE
         if (position < fGlobalOffset) {
             this->rewind();
@@ -321,8 +321,8 @@
         (void)this->skip(position - fGlobalOffset);
         return true;
     }
-    
-    bool move(long offset) {
+
+    bool move(long offset)  override{
         AUTO_VALIDATE
         offset += fGlobalOffset;
         if (offset <= 0) {
@@ -332,13 +332,13 @@
         }
         return true;
     }
-    
+
     SkStreamAsset* fork() const override {
         SkStreamAsset* clone = this->duplicate();
         clone->seek(this->getPosition());
         return clone;
     }
-    
+
 
 private:
     const SkROBuffer*   fBuffer;
diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h
index 9c55359..ea4e890 100644
--- a/src/gpu/GrGeometryProcessor.h
+++ b/src/gpu/GrGeometryProcessor.h
@@ -24,7 +24,7 @@
         , fWillUseGeoShader(false)
         , fHasLocalCoords(false) {}
 
-    bool willUseGeoShader() const { return fWillUseGeoShader; }
+    bool willUseGeoShader() const override { return fWillUseGeoShader; }
 
     // TODO delete when paths are in batch
     void initBatchTracker(GrBatchTracker*, const GrPipelineInfo&) const override {}
diff --git a/src/gpu/gl/GrGLPathProgram.h b/src/gpu/gl/GrGLPathProgram.h
index 503940c..c7ca3dc 100644
--- a/src/gpu/gl/GrGLPathProgram.h
+++ b/src/gpu/gl/GrGLPathProgram.h
@@ -37,7 +37,7 @@
                                   const GrPendingFragmentStage&,
                                   int index,
                                   GrGLInstalledFragProc*) override;
-    virtual void onSetRenderTargetState(const GrPrimitiveProcessor&, const GrPipeline&);
+    void onSetRenderTargetState(const GrPrimitiveProcessor&, const GrPipeline&) override;
 
     friend class GrGLPathProgramBuilder;
 
diff --git a/src/utils/debugger/SkDebugCanvas.cpp b/src/utils/debugger/SkDebugCanvas.cpp
index df0a6d8..3c166b7 100644
--- a/src/utils/debugger/SkDebugCanvas.cpp
+++ b/src/utils/debugger/SkDebugCanvas.cpp
@@ -78,7 +78,9 @@
         }
     }
 
-    void onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint) {
+    void onDrawPicture(const SkPicture* picture,
+                       const SkMatrix* matrix,
+                       const SkPaint* paint) override {
         // We need to replay the picture onto this canvas in order to filter its internal paints.
         this->SkCanvas::onDrawPicture(picture, matrix, paint);
     }
diff --git a/src/utils/debugger/SkDebugCanvas.h b/src/utils/debugger/SkDebugCanvas.h
index 06338e2..ceaaa78 100644
--- a/src/utils/debugger/SkDebugCanvas.h
+++ b/src/utils/debugger/SkDebugCanvas.h
@@ -183,7 +183,7 @@
                         const SkPaint& paint) override;
 
     void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
-                     const SkPoint texCoords[4], SkXfermode* xmode, const SkPaint& paint);
+                     const SkPoint texCoords[4], SkXfermode* xmode, const SkPaint& paint) override;
     void onDrawPaint(const SkPaint&) override;
 
     void onDrawRect(const SkRect&, const SkPaint&) override;
diff --git a/tools/llvm_coverage_build b/tools/llvm_coverage_build
index f769d6c..07b547f 100755
--- a/tools/llvm_coverage_build
+++ b/tools/llvm_coverage_build
@@ -23,6 +23,6 @@
 echo "CXX=$CXX"
 $CC --version
 
-export GYP_DEFINES="skia_warnings_as_errors=0 skia_clang_build=1"
+export GYP_DEFINES="skia_clang_build=1"
 export BUILDTYPE=Coverage
 make $@