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