Remove redundaunt override specifiers (NFC)
authorKazu Hirata <kazu@google.com>
Mon, 25 Jul 2022 05:28:11 +0000 (22:28 -0700)
committerKazu Hirata <kazu@google.com>
Mon, 25 Jul 2022 05:28:11 +0000 (22:28 -0700)
Identified with modernize-use-override.

25 files changed:
clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.h
clang-tools-extra/clangd/CodeComplete.cpp
clang-tools-extra/clangd/refactor/tweaks/AnnotateHighlightings.cpp
clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp
clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp
clang-tools-extra/clangd/refactor/tweaks/ExpandMacro.cpp
clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp
clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp
clang-tools-extra/clangd/refactor/tweaks/MemberwiseConstructor.cpp
clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp
clang-tools-extra/clangd/refactor/tweaks/ObjCMemberwiseInitializer.cpp
clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp
clang-tools-extra/clangd/refactor/tweaks/SpecialMembers.cpp
clang-tools-extra/clangd/refactor/tweaks/SwapIfBranches.cpp
clang/include/clang/Frontend/Utils.h
clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
clang/include/clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h
clang/include/clang/Tooling/Refactoring/RefactoringActionRules.h
clang/include/clang/Tooling/Refactoring/RefactoringOptions.h
clang/lib/CodeGen/ABIInfo.h
clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
lld/MachO/SyntheticSections.h
llvm/include/llvm/Analysis/DDG.h
llvm/lib/Target/SystemZ/SystemZRegisterInfo.h
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

index def04c917bbc948b47d3aa4fccaadc2ea46eba59..d00afecd495de224d5be56d1a8a72bf7823d51a4 100644 (file)
@@ -34,12 +34,11 @@ public:
   /// class will do the matching and call the derived class'
   /// getDeclFailureInfo() and getMacroFailureInfo() for determining whether a
   /// given identifier passes or fails the check.
-  void registerMatchers(ast_matchers::MatchFinder *Finder) override final;
-  void
-  check(const ast_matchers::MatchFinder::MatchResult &Result) override final;
+  void registerMatchers(ast_matchers::MatchFinder *Finder) final;
+  void check(const ast_matchers::MatchFinder::MatchResult &Result) final;
   void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
-                           Preprocessor *ModuleExpanderPP) override final;
-  void onEndOfTranslationUnit() override final;
+                           Preprocessor *ModuleExpanderPP) final;
+  void onEndOfTranslationUnit() final;
 
   /// Derived classes that override this function should call this method from
   /// the overridden method.
index b9998711f52e49be33d677d3a3ed1e383e103376..edbb1722ae38e6b25ce44547052bb635a609e1d6 100644 (file)
@@ -788,7 +788,7 @@ struct CompletionRecorder : public CodeCompleteConsumer {
 
   void ProcessCodeCompleteResults(class Sema &S, CodeCompletionContext Context,
                                   CodeCompletionResult *InResults,
-                                  unsigned NumResults) override final {
+                                  unsigned NumResults) final {
     // Results from recovery mode are generally useless, and the callback after
     // recovery (if any) is usually more interesting. To make sure we handle the
     // future callback from sema, we just ignore all callbacks in recovery mode,
index 1383560ad465674f1ec4f403b811e0b14b8f568e..2a34e43f980baa072d0d97a391bdc0146fe4636d 100644 (file)
@@ -23,7 +23,7 @@ namespace {
 ///   void /* entity.name.function.cpp */ f() { int /* variable.cpp */ abc; }
 class AnnotateHighlightings : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   bool prepare(const Selection &Inputs) override { return true; }
   Expected<Effect> apply(const Selection &Inputs) override;
index 9812cfcf3c626e99826f9fcd68d81936383efa20..96d0a194fb892b52ffd69774d9c0e16a95791238 100644 (file)
@@ -385,7 +385,7 @@ addInlineIfInHeader(const FunctionDecl *FD) {
 ///
 class DefineInline : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   llvm::StringLiteral kind() const override {
     return CodeAction::REFACTOR_KIND;
index d0c06f80ce6b307ad751c0ade04bd569bdc9501d..f2ae97c080693a7ecd33e4865fda821e60a71207 100644 (file)
@@ -31,7 +31,7 @@ namespace {
 ///   `-StringLiteral "foo"
 class DumpAST : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   bool prepare(const Selection &Inputs) override {
     for (auto *N = Inputs.ASTSelection.commonAncestor(); N && !Node;
@@ -84,7 +84,7 @@ llvm::Expected<Tweak::Effect> DumpAST::apply(const Selection &Inputs) {
 ///          *IntegerLiteral 2
 class ShowSelectionTree : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   bool prepare(const Selection &Inputs) override { return true; }
   Expected<Effect> apply(const Selection &Inputs) override {
@@ -104,7 +104,7 @@ REGISTER_TWEAK(ShowSelectionTree)
 ///  foo -
 ///  {"containerName":null,"id":"CA2EBE44A1D76D2A","name":"foo","usr":"c:@F@foo#"}
 class DumpSymbol : public Tweak {
-  const char *id() const override final;
+  const char *id() const final;
   bool prepare(const Selection &Inputs) override { return true; }
   Expected<Effect> apply(const Selection &Inputs) override {
     std::string Storage;
@@ -133,7 +133,7 @@ REGISTER_TWEAK(DumpSymbol)
 ///          |  nvsize=4, nvalign=4]
 class DumpRecordLayout : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   bool prepare(const Selection &Inputs) override {
     if (auto *Node = Inputs.ASTSelection.commonAncestor())
index fad3a3c3d20dff90ec9249d1f246552971a9249a..29e681c3d44f78d4ec675753ac12e63f03e6b04d 100644 (file)
@@ -30,7 +30,7 @@ namespace {
 ///   10*a+10*a
 class ExpandMacro : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   llvm::StringLiteral kind() const override {
     return CodeAction::REFACTOR_KIND;
   }
index adfc42a851b02d6cb4f45c70b019e86ae9a9fde8..66fe4fdbfa2d3a38e77bda1e7e6d4c2a8950469e 100644 (file)
@@ -796,7 +796,7 @@ llvm::Expected<NewFunction> getExtractedFunction(ExtractionZone &ExtZone,
 
 class ExtractFunction : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   bool prepare(const Selection &Inputs) override;
   Expected<Effect> apply(const Selection &Inputs) override;
   std::string title() const override { return "Extract to function"; }
index 5efe09fb3cb2770277e6a4cdc444e77b4e553fca..aac017c0725d47c11658c540c4aafb35839037d7 100644 (file)
@@ -485,7 +485,7 @@ const SelectionTree::Node *computeExtractedExpr(const SelectionTree::Node *N) {
 /// int x = placeholder * 3;
 class ExtractVariable : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   bool prepare(const Selection &Inputs) override;
   Expected<Effect> apply(const Selection &Inputs) override;
   std::string title() const override {
index bc0f4e1ce2569bc0b31856022dacca1e0031508a..9bb8ca96a8b61e8f0a2fcada3310c2f21b9b7586 100644 (file)
@@ -32,7 +32,7 @@ namespace {
 // We place the constructor inline, other tweaks are available to outline it.
 class MemberwiseConstructor : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   llvm::StringLiteral kind() const override {
     return CodeAction::REFACTOR_KIND;
   }
index 1e2d6c31fc454b7fc32a29e25b28ca5d14d336a8..62995840ac24a5aa0436bd8892868e2506319467 100644 (file)
@@ -30,7 +30,7 @@ namespace {
 ///   NSLocalizedString(@"description", @"")
 class ObjCLocalizeStringLiteral : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   llvm::StringLiteral kind() const override {
     return CodeAction::REFACTOR_KIND;
   }
index 30ff0586195501844b659ac170f069204a0e38b2..c129428991d462db4eb601eba6fe4ffa743d4d3b 100644 (file)
@@ -172,7 +172,7 @@ initializerForParams(const SmallVector<MethodParameter, 8> &Params,
 /// properties and instance variables.
 class ObjCMemberwiseInitializer : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   llvm::StringLiteral kind() const override {
     return CodeAction::REFACTOR_KIND;
   }
index 4185127d1f017546f90fa6d7d31059d59cfd4562..f5021b820f38d7f6271774b23b90aed9b318b2ad 100644 (file)
@@ -28,7 +28,7 @@ namespace {
 /// b)");
 class RawStringLiteral : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   bool prepare(const Selection &Inputs) override;
   Expected<Effect> apply(const Selection &Inputs) override;
index 7d5b41abe5fc5e23afdcfa31bc282d3fdc1e95fb..e15605191c752ea8a87f2b8030c1e66a298b26eb 100644 (file)
@@ -86,7 +86,7 @@ std::string buildSpecialMemberDeclarations(const CXXRecordDecl &Class) {
 //  - as a baseline for explicit modification
 class DeclareCopyMove : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
   llvm::StringLiteral kind() const override {
     return CodeAction::REFACTOR_KIND;
   }
index 5c829cb3488780edbd9b2890d8942cfc233a879c..b59f1d63f3f0e499c7af938a658f591de8163ef0 100644 (file)
@@ -31,7 +31,7 @@ namespace {
 ///   if (foo) { continue; } else { return 10; }
 class SwapIfBranches : public Tweak {
 public:
-  const char *id() const override final;
+  const char *id() const final;
 
   bool prepare(const Selection &Inputs) override;
   Expected<Effect> apply(const Selection &Inputs) override;
index 240624d5408f16141991fb83e93d69a1e61879d0..143cf4359f00b50bfd62c6eccb48faeac8b01463 100644 (file)
@@ -107,10 +107,10 @@ public:
 
   void finishedMainFile(DiagnosticsEngine &Diags) override;
 
-  bool needSystemDependencies() final override { return IncludeSystemHeaders; }
+  bool needSystemDependencies() final { return IncludeSystemHeaders; }
 
   bool sawDependency(StringRef Filename, bool FromModule, bool IsSystem,
-                     bool IsModuleFile, bool IsMissing) final override;
+                     bool IsModuleFile, bool IsMissing) final;
 
 protected:
   void outputDependencyFile(llvm::raw_ostream &OS);
index 685dc66182ef4d3968dc861e8c4b244e19d16675..48da56c00f7a3ccf2c8d0f9ac2cfa0b751908ca8 100644 (file)
@@ -731,7 +731,7 @@ public:
 
   PathDiagnosticPieceRef VisitNode(const ExplodedNode *N,
                                    BugReporterContext &BR,
-                                   PathSensitiveBugReport &R) override final;
+                                   PathSensitiveBugReport &R) final;
 };
 
 } // namespace ento
index 49e4a0c149f14d8bb11fd87955825885826bd812..1a318da3acca196488227fbffb4abd1bbac7029a 100644 (file)
@@ -98,7 +98,7 @@ public:
   OptionRequirement() : Opt(createRefactoringOption<OptionType>()) {}
 
   ArrayRef<std::shared_ptr<RefactoringOption>>
-  getRefactoringOptions() const final override {
+  getRefactoringOptions() const final {
     return Opt;
   }
 
index 86fcc6ad0a799a769ad387eeaa608605be82f0db..5cb051d5343389dc7d5d678997a8d1652cf04bde 100644 (file)
@@ -52,7 +52,7 @@ using RefactoringActionRules =
 class SourceChangeRefactoringRule : public RefactoringActionRuleBase {
 public:
   void invoke(RefactoringResultConsumer &Consumer,
-              RefactoringRuleContext &Context) final override {
+              RefactoringRuleContext &Context) final {
     Expected<AtomicChanges> Changes = createSourceReplacements(Context);
     if (!Changes)
       Consumer.handleError(Changes.takeError());
@@ -74,7 +74,7 @@ private:
 class FindSymbolOccurrencesRefactoringRule : public RefactoringActionRuleBase {
 public:
   void invoke(RefactoringResultConsumer &Consumer,
-              RefactoringRuleContext &Context) final override {
+              RefactoringRuleContext &Context) final {
     Expected<SymbolOccurrences> Occurrences = findSymbolOccurrences(Context);
     if (!Occurrences)
       Consumer.handleError(Occurrences.takeError());
index 1575a136b11cf2529017e619640f5f4f5efe87db..75bd91d150165cf7f4edf59b8de93ddfb93928a6 100644 (file)
@@ -24,7 +24,7 @@ template <typename T,
           typename = std::enable_if_t<traits::IsValidOptionType<T>::value>>
 class OptionalRefactoringOption : public RefactoringOption {
 public:
-  void passToVisitor(RefactoringOptionVisitor &Visitor) final override {
+  void passToVisitor(RefactoringOptionVisitor &Visitor) final {
     Visitor.visit(*this, Value);
   }
 
@@ -48,7 +48,7 @@ public:
   const ValueType &getValue() const {
     return *OptionalRefactoringOption<T>::Value;
   }
-  bool isRequired() const final override { return true; }
+  bool isRequired() const final { return true; }
 };
 
 } // end namespace tooling
index fe6cc7a2b1c75a64055836d62ae95cf82f07be24..c1eb8a9757962a63d22dbe0681ea56b743404419 100644 (file)
@@ -127,7 +127,7 @@ namespace CodeGen {
   public:
     SwiftABIInfo(CodeGen::CodeGenTypes &cgt) : ABIInfo(cgt) {}
 
-    bool supportsSwift() const final override { return true; }
+    bool supportsSwift() const final { return true; }
 
     virtual bool shouldPassIndirectlyForSwift(ArrayRef<llvm::Type*> types,
                                               bool asReturnValue) const = 0;
index 2caa5bbc16df1e46760790c4747b0c1b7e6dbc40..b99c219673d6fc7240f2651fa62097a75dabc022 100644 (file)
@@ -547,19 +547,17 @@ private:
 
   // Region of interest corresponds to an IVar, exiting a method
   // which could have written into that IVar, but did not.
-  virtual PathDiagnosticPieceRef
-  maybeEmitNoteForObjCSelf(PathSensitiveBugReport &R,
-                           const ObjCMethodCall &Call,
-                           const ExplodedNode *N) override final;
+  PathDiagnosticPieceRef maybeEmitNoteForObjCSelf(PathSensitiveBugReport &R,
+                                                  const ObjCMethodCall &Call,
+                                                  const ExplodedNode *N) final;
 
-  virtual PathDiagnosticPieceRef
-  maybeEmitNoteForCXXThis(PathSensitiveBugReport &R,
-                          const CXXConstructorCall &Call,
-                          const ExplodedNode *N) override final;
+  PathDiagnosticPieceRef maybeEmitNoteForCXXThis(PathSensitiveBugReport &R,
+                                                 const CXXConstructorCall &Call,
+                                                 const ExplodedNode *N) final;
 
-  virtual PathDiagnosticPieceRef
+  PathDiagnosticPieceRef
   maybeEmitNoteForParameters(PathSensitiveBugReport &R, const CallEvent &Call,
-                             const ExplodedNode *N) override final;
+                             const ExplodedNode *N) final;
 
   /// Consume the information on the no-store stack frame in order to
   /// either emit a note or suppress the report enirely.
index afdd46d8a7de4bd08e768e6de750bd4ccbfa1823..29c2d98c6625ca9a2f4e343537bb8753434d0e15 100644 (file)
@@ -70,7 +70,7 @@ public:
   // Sections in __LINKEDIT are special: their offsets are recorded in the
   // load commands like LC_DYLD_INFO_ONLY and LC_SYMTAB, instead of in section
   // headers.
-  bool isHidden() const override final { return true; }
+  bool isHidden() const final { return true; }
 
   virtual uint64_t getRawSize() const = 0;
 
@@ -80,9 +80,7 @@ public:
   //
   // NOTE: This assumes that the extra bytes required for alignment can be
   // zero-valued bytes.
-  uint64_t getSize() const override final {
-    return llvm::alignTo(getRawSize(), align);
-  }
+  uint64_t getSize() const final { return llvm::alignTo(getRawSize(), align); }
 };
 
 // The header of the Mach-O file, which must have a file offset of zero.
index 7649e630b23d733af0a375517b3595d8cb6c6fd2..bc599cb1f9a1545be0b3633d13fefc72bbd82e6d 100644 (file)
@@ -348,37 +348,37 @@ public:
   DDGBuilder(DataDependenceGraph &G, DependenceInfo &D,
              const BasicBlockListType &BBs)
       : AbstractDependenceGraphBuilder(G, D, BBs) {}
-  DDGNode &createRootNode() final override {
+  DDGNode &createRootNode() final {
     auto *RN = new RootDDGNode();
     assert(RN && "Failed to allocate memory for DDG root node.");
     Graph.addNode(*RN);
     return *RN;
   }
-  DDGNode &createFineGrainedNode(Instruction &I) final override {
+  DDGNode &createFineGrainedNode(Instruction &I) final {
     auto *SN = new SimpleDDGNode(I);
     assert(SN && "Failed to allocate memory for simple DDG node.");
     Graph.addNode(*SN);
     return *SN;
   }
-  DDGNode &createPiBlock(const NodeListType &L) final override {
+  DDGNode &createPiBlock(const NodeListType &L) final {
     auto *Pi = new PiBlockDDGNode(L);
     assert(Pi && "Failed to allocate memory for pi-block node.");
     Graph.addNode(*Pi);
     return *Pi;
   }
-  DDGEdge &createDefUseEdge(DDGNode &Src, DDGNode &Tgt) final override {
+  DDGEdge &createDefUseEdge(DDGNode &Src, DDGNode &Tgt) final {
     auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::RegisterDefUse);
     assert(E && "Failed to allocate memory for edge");
     Graph.connect(Src, Tgt, *E);
     return *E;
   }
-  DDGEdge &createMemoryEdge(DDGNode &Src, DDGNode &Tgt) final override {
+  DDGEdge &createMemoryEdge(DDGNode &Src, DDGNode &Tgt) final {
     auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::MemoryDependence);
     assert(E && "Failed to allocate memory for edge");
     Graph.connect(Src, Tgt, *E);
     return *E;
   }
-  DDGEdge &createRootedEdge(DDGNode &Src, DDGNode &Tgt) final override {
+  DDGEdge &createRootedEdge(DDGNode &Src, DDGNode &Tgt) final {
     auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::Rooted);
     assert(E && "Failed to allocate memory for edge");
     assert(isa<RootDDGNode>(Src) && "Expected root node");
@@ -386,7 +386,7 @@ public:
     return *E;
   }
 
-  const NodeListType &getNodesInPiBlock(const DDGNode &N) final override {
+  const NodeListType &getNodesInPiBlock(const DDGNode &N) final {
     auto *PiNode = dyn_cast<const PiBlockDDGNode>(&N);
     assert(PiNode && "Expected a pi-block node.");
     return PiNode->getNodes();
@@ -394,11 +394,10 @@ public:
 
   /// Return true if the two nodes \pSrc and \pTgt are both simple nodes and
   /// the consecutive instructions after merging belong to the same basic block.
-  bool areNodesMergeable(const DDGNode &Src,
-                         const DDGNode &Tgt) const final override;
-  void mergeNodes(DDGNode &Src, DDGNode &Tgt) final override;
-  bool shouldSimplify() const final override;
-  bool shouldCreatePiBlocks() const final override;
+  bool areNodesMergeable(const DDGNode &Src, const DDGNode &Tgt) const final;
+  void mergeNodes(DDGNode &Src, DDGNode &Tgt) final;
+  bool shouldSimplify() const final;
+  bool shouldCreatePiBlocks() const final;
 };
 
 raw_ostream &operator<<(raw_ostream &OS, const DDGNode &N);
index 93ffa9847f0662fef7bbb36d239ce948cb022ae8..db0936f3f56b8d4f3d862f8e0dbc2a806d942ba7 100644 (file)
@@ -81,25 +81,22 @@ public:
 /// Particular to z/OS when in 64 bit mode
 class SystemZXPLINK64Registers : public SystemZCallingConventionRegisters {
 public:
-  int getReturnFunctionAddressRegister() override final {
-    return SystemZ::R7D;
-  };
+  int getReturnFunctionAddressRegister() final { return SystemZ::R7D; };
 
-  int getStackPointerRegister() override final { return SystemZ::R4D; };
+  int getStackPointerRegister() final { return SystemZ::R4D; };
 
-  int getFramePointerRegister() override final { return SystemZ::R8D; };
+  int getFramePointerRegister() final { return SystemZ::R8D; };
 
   int getAddressOfCalleeRegister() { return SystemZ::R6D; };
 
-  const MCPhysReg *
-  getCalleeSavedRegs(const MachineFunction *MF) const override final;
+  const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const final;
 
   const uint32_t *getCallPreservedMask(const MachineFunction &MF,
-                                       CallingConv::ID CC) const override final;
+                                       CallingConv::ID CC) const final;
 
-  int getCallFrameSize() override final { return 128; }
+  int getCallFrameSize() final { return 128; }
 
-  int getStackPointerBias() override final { return 2048; }
+  int getStackPointerBias() final { return 2048; }
 
   /// Destroys the object. Bogus destructor overriding base class destructor
   ~SystemZXPLINK64Registers() = default;
@@ -109,23 +106,20 @@ public:
 /// Particular when on zLinux in 64 bit mode
 class SystemZELFRegisters : public SystemZCallingConventionRegisters {
 public:
-  int getReturnFunctionAddressRegister() override final {
-    return SystemZ::R14D;
-  };
+  int getReturnFunctionAddressRegister() final { return SystemZ::R14D; };
 
-  int getStackPointerRegister() override final { return SystemZ::R15D; };
+  int getStackPointerRegister() final { return SystemZ::R15D; };
 
-  int getFramePointerRegister() override final { return SystemZ::R11D; };
+  int getFramePointerRegister() final { return SystemZ::R11D; };
 
-  const MCPhysReg *
-  getCalleeSavedRegs(const MachineFunction *MF) const override final;
+  const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const final;
 
   const uint32_t *getCallPreservedMask(const MachineFunction &MF,
-                                       CallingConv::ID CC) const override final;
+                                       CallingConv::ID CC) const final;
 
-  int getCallFrameSize() override final { return SystemZMC::ELFCallFrameSize; }
+  int getCallFrameSize() final { return SystemZMC::ELFCallFrameSize; }
 
-  int getStackPointerBias() override final { return 0; }
+  int getStackPointerBias() final { return 0; }
 
   /// Destroys the object. Bogus destructor overriding base class destructor
   ~SystemZELFRegisters() = default;
index b887ea41676be26dabb38d4bba6a675c462b0bda..238b074089aa1bd18de549f84bb8436eafbe286b 100644 (file)
@@ -798,8 +798,7 @@ public:
 
   // Override this function to handle the more complex control flow around the
   // three loops.
-  std::pair<BasicBlock *, Value *>
-  createVectorizedLoopSkeleton() final override {
+  std::pair<BasicBlock *, Value *> createVectorizedLoopSkeleton() final {
     return createEpilogueVectorizedLoopSkeleton();
   }
 
@@ -835,8 +834,7 @@ public:
                                        EPI, LVL, CM, BFI, PSI, Check) {}
   /// Implements the interface for creating a vectorized skeleton using the
   /// *main loop* strategy (ie the first pass of vplan execution).
-  std::pair<BasicBlock *, Value *>
-  createEpilogueVectorizedLoopSkeleton() final override;
+  std::pair<BasicBlock *, Value *> createEpilogueVectorizedLoopSkeleton() final;
 
 protected:
   /// Emits an iteration count bypass check once for the main loop (when \p
@@ -866,8 +864,7 @@ public:
   }
   /// Implements the interface for creating a vectorized skeleton using the
   /// *epilogue loop* strategy (ie the second pass of vplan execution).
-  std::pair<BasicBlock *, Value *>
-  createEpilogueVectorizedLoopSkeleton() final override;
+  std::pair<BasicBlock *, Value *> createEpilogueVectorizedLoopSkeleton() final;
 
 protected:
   /// Emits an iteration count bypass check after the main vector loop has