r203543 - [C++11] Add 'override' keyword to virtual methods that override their base class.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Tue Mar 11 05:01:13 PDT 2014


Thank you so much for this systematic cleanup!

On 11 March 2014 02:22, Craig Topper <craig.topper at gmail.com> wrote:
> Author: ctopper
> Date: Tue Mar 11 01:22:39 2014
> New Revision: 203543
>
> URL: http://llvm.org/viewvc/llvm-project?rev=203543&view=rev
> Log:
> [C++11] Add 'override' keyword to virtual methods that override their base class.
>
> Modified:
>     cfe/trunk/include/clang/AST/Attr.h
>     cfe/trunk/include/clang/AST/Decl.h
>     cfe/trunk/include/clang/AST/DeclBase.h
>     cfe/trunk/include/clang/AST/DeclCXX.h
>     cfe/trunk/include/clang/AST/DeclFriend.h
>     cfe/trunk/include/clang/AST/DeclObjC.h
>     cfe/trunk/include/clang/AST/DeclTemplate.h
>     cfe/trunk/include/clang/AST/VTableBuilder.h
>     cfe/trunk/lib/AST/ItaniumCXXABI.cpp
>     cfe/trunk/lib/AST/ItaniumMangle.cpp
>     cfe/trunk/lib/AST/MicrosoftCXXABI.cpp
>     cfe/trunk/lib/AST/MicrosoftMangle.cpp
>     cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
>
> Modified: cfe/trunk/include/clang/AST/Attr.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Attr.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Attr.h (original)
> +++ cfe/trunk/include/clang/AST/Attr.h Tue Mar 11 01:22:39 2014
> @@ -131,7 +131,7 @@ public:
>  };
>
>  class InheritableParamAttr : public InheritableAttr {
> -  virtual void anchor();
> +  void anchor() override;
>  protected:
>    InheritableParamAttr(attr::Kind AK, SourceRange R,
>                         unsigned SpellingListIndex = 0)
>
> Modified: cfe/trunk/include/clang/AST/Decl.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Decl.h (original)
> +++ cfe/trunk/include/clang/AST/Decl.h Tue Mar 11 01:22:39 2014
> @@ -304,7 +304,7 @@ inline raw_ostream &operator<<(raw_ostre
>  /// location of the statement.  For GNU local labels (__label__), the decl
>  /// location is where the __label__ is.
>  class LabelDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    LabelStmt *TheStmt;
>    /// LocStart - For normal labels, this is the same as the main declaration
>    /// label, i.e., the location of the identifier; for GNU local labels,
> @@ -329,7 +329,7 @@ public:
>    bool isGnuLocal() const { return LocStart != getLocation(); }
>    void setLocStart(SourceLocation L) { LocStart = L; }
>
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(LocStart, getLocation());
>    }
>
> @@ -359,9 +359,9 @@ class NamespaceDecl : public NamedDecl,
>                  NamespaceDecl *PrevDecl);
>
>    typedef Redeclarable<NamespaceDecl> redeclarable_base;
> -  virtual NamespaceDecl *getNextRedeclaration();
> -  virtual NamespaceDecl *getPreviousDeclImpl();
> -  virtual NamespaceDecl *getMostRecentDeclImpl();
> +  NamespaceDecl *getNextRedeclaration() override;
> +  NamespaceDecl *getPreviousDeclImpl() override;
> +  NamespaceDecl *getMostRecentDeclImpl() override;
>
>  public:
>    static NamespaceDecl *Create(ASTContext &C, DeclContext *DC,
> @@ -435,14 +435,14 @@ public:
>    }
>
>    /// Retrieves the canonical declaration of this namespace.
> -  NamespaceDecl *getCanonicalDecl() {
> +  NamespaceDecl *getCanonicalDecl() override {
>      return getOriginalNamespace();
>    }
>    const NamespaceDecl *getCanonicalDecl() const {
>      return getOriginalNamespace();
>    }
> -
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(LocStart, RBraceLoc);
>    }
>
> @@ -469,7 +469,7 @@ public:
>  /// an lvalue) a function (in which case it is a function designator) or
>  /// an enum constant.
>  class ValueDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    QualType DeclType;
>
>  protected:
> @@ -570,7 +570,7 @@ public:
>    /// range taking into account any outer template declarations.
>    SourceLocation getOuterLocStart() const;
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>    SourceLocation getLocStart() const LLVM_READONLY {
>      return getOuterLocStart();
>    }
> @@ -772,11 +772,11 @@ protected:
>            TypeSourceInfo *TInfo, StorageClass SC);
>
>    typedef Redeclarable<VarDecl> redeclarable_base;
> -  virtual VarDecl *getNextRedeclaration() { return RedeclLink.getNext(); }
> -  virtual VarDecl *getPreviousDeclImpl() {
> +  VarDecl *getNextRedeclaration() override { return RedeclLink.getNext(); }
> +  VarDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual VarDecl *getMostRecentDeclImpl() {
> +  VarDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -796,8 +796,8 @@ public:
>                           StorageClass S);
>
>    static VarDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    /// \brief Returns the storage class as written in the source. For the
>    /// computed linkage of symbol, see getLinkage.
> @@ -918,7 +918,7 @@ public:
>      return getKind() != Decl::ParmVar && getDeclContext()->isRecord();
>    }
>
> -  virtual VarDecl *getCanonicalDecl();
> +  VarDecl *getCanonicalDecl() override;
>    const VarDecl *getCanonicalDecl() const {
>      return const_cast<VarDecl*>(this)->getCanonicalDecl();
>    }
> @@ -965,7 +965,7 @@ public:
>
>    /// \brief Determine whether this is or was instantiated from an out-of-line
>    /// definition of a static data member.
> -  virtual bool isOutOfLine() const;
> +  bool isOutOfLine() const override;
>
>    /// \brief If this is a static data member, find its out-of-line definition.
>    VarDecl *getOutOfLineDefinition();
> @@ -1213,7 +1213,7 @@ public:
>  };
>
>  class ImplicitParamDecl : public VarDecl {
> -  virtual void anchor();
> +  void anchor() override;
>  public:
>    static ImplicitParamDecl *Create(ASTContext &C, DeclContext *DC,
>                                     SourceLocation IdLoc, IdentifierInfo *Id,
> @@ -1259,8 +1259,8 @@ public:
>                               StorageClass S, Expr *DefArg);
>
>    static ParmVarDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    void setObjCMethodScopeInfo(unsigned parameterIndex) {
>      ParmVarDeclBits.IsObjCMethodParam = true;
> @@ -1564,11 +1564,11 @@ protected:
>        DNLoc(NameInfo.getInfo()) {}
>
>    typedef Redeclarable<FunctionDecl> redeclarable_base;
> -  virtual FunctionDecl *getNextRedeclaration() { return RedeclLink.getNext(); }
> -  virtual FunctionDecl *getPreviousDeclImpl() {
> +  FunctionDecl *getNextRedeclaration() override { return RedeclLink.getNext(); }
> +  FunctionDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual FunctionDecl *getMostRecentDeclImpl() {
> +  FunctionDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -1612,13 +1612,12 @@ public:
>      return DeclarationNameInfo(getDeclName(), getLocation(), DNLoc);
>    }
>
> -  virtual void getNameForDiagnostic(raw_ostream &OS,
> -                                    const PrintingPolicy &Policy,
> -                                    bool Qualified) const;
> +  void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy,
> +                            bool Qualified) const override;
>
>    void setRangeEnd(SourceLocation E) { EndRangeLoc = E; }
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    /// \brief Returns true if the function has a body (definition). The
>    /// function body might be in any of the (re-)declarations of this
> @@ -1627,7 +1626,7 @@ public:
>    /// containing the body (if there is one).
>    bool hasBody(const FunctionDecl *&Definition) const;
>
> -  virtual bool hasBody() const {
> +  bool hasBody() const override {
>      const FunctionDecl* Definition;
>      return hasBody(Definition);
>    }
> @@ -1655,7 +1654,7 @@ public:
>    /// unnecessary AST de-serialization of the body.
>    Stmt *getBody(const FunctionDecl *&Definition) const;
>
> -  virtual Stmt *getBody() const {
> +   Stmt *getBody() const override {
>      const FunctionDecl* Definition;
>      return getBody(Definition);
>    }
> @@ -1835,7 +1834,7 @@ public:
>    void setPreviousDeclaration(FunctionDecl * PrevDecl);
>
>    virtual const FunctionDecl *getCanonicalDecl() const;
> -  virtual FunctionDecl *getCanonicalDecl();
> +  FunctionDecl *getCanonicalDecl() override;
>
>    unsigned getBuiltinID() const;
>
> @@ -2120,7 +2119,7 @@ public:
>
>    /// \brief Determine whether this is or was instantiated from an out-of-line
>    /// definition of a member function.
> -  virtual bool isOutOfLine() const;
> +  bool isOutOfLine() const override;
>
>    /// \brief Identify a memory copying or setting function.
>    /// If the given function is a memory copy or setting function, returns
> @@ -2259,10 +2258,10 @@ public:
>      return cast<RecordDecl>(getDeclContext());
>    }
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    /// Retrieves the canonical declaration of this field.
> -  FieldDecl *getCanonicalDecl() { return getFirstDecl(); }
> +  FieldDecl *getCanonicalDecl() override { return getFirstDecl(); }
>    const FieldDecl *getCanonicalDecl() const { return getFirstDecl(); }
>
>    // Implement isa/cast/dyncast/etc.
> @@ -2301,10 +2300,10 @@ public:
>    void setInitExpr(Expr *E) { Init = (Stmt*) E; }
>    void setInitVal(const llvm::APSInt &V) { Val = V; }
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    /// Retrieves the canonical declaration of this enumerator.
> -  EnumConstantDecl *getCanonicalDecl() { return getFirstDecl(); }
> +  EnumConstantDecl *getCanonicalDecl() override { return getFirstDecl(); }
>    const EnumConstantDecl *getCanonicalDecl() const { return getFirstDecl(); }
>
>    // Implement isa/cast/dyncast/etc.
> @@ -2318,7 +2317,7 @@ public:
>  /// field injected from an anonymous union/struct into the parent scope.
>  /// IndirectFieldDecl are always implicit.
>  class IndirectFieldDecl : public ValueDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    NamedDecl **Chaining;
>    unsigned ChainingSize;
>
> @@ -2364,7 +2363,7 @@ public:
>  /// TypeDecl - Represents a declaration of a type.
>  ///
>  class TypeDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// TypeForDecl - This indicates the Type object that represents
>    /// this TypeDecl.  It is a cache maintained by
>    /// ASTContext::getTypedefType, ASTContext::getTagDeclType, and
> @@ -2394,7 +2393,7 @@ public:
>
>    SourceLocation getLocStart() const LLVM_READONLY { return LocStart; }
>    void setLocStart(SourceLocation L) { LocStart = L; }
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      if (LocStart.isValid())
>        return SourceRange(LocStart, getLocation());
>      else
> @@ -2409,7 +2408,7 @@ public:
>
>  /// Base class for declarations which introduce a typedef-name.
>  class TypedefNameDecl : public TypeDecl, public Redeclarable<TypedefNameDecl> {
> -  virtual void anchor();
> +  void anchor() override;
>    typedef std::pair<TypeSourceInfo*, QualType> ModedTInfo;
>    llvm::PointerUnion<TypeSourceInfo*, ModedTInfo*> MaybeModedTInfo;
>
> @@ -2420,13 +2419,13 @@ protected:
>      : TypeDecl(DK, DC, IdLoc, Id, StartLoc), MaybeModedTInfo(TInfo) {}
>
>    typedef Redeclarable<TypedefNameDecl> redeclarable_base;
> -  virtual TypedefNameDecl *getNextRedeclaration() {
> +  TypedefNameDecl *getNextRedeclaration() override {
>      return RedeclLink.getNext();
>    }
> -  virtual TypedefNameDecl *getPreviousDeclImpl() {
> +  TypedefNameDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual TypedefNameDecl *getMostRecentDeclImpl() {
> +  TypedefNameDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -2460,7 +2459,7 @@ public:
>    }
>
>    /// Retrieves the canonical declaration of this typedef-name.
> -  TypedefNameDecl *getCanonicalDecl() { return getFirstDecl(); }
> +  TypedefNameDecl *getCanonicalDecl() override { return getFirstDecl(); }
>    const TypedefNameDecl *getCanonicalDecl() const { return getFirstDecl(); }
>
>    // Implement isa/cast/dyncast/etc.
> @@ -2482,8 +2481,8 @@ public:
>                               SourceLocation StartLoc, SourceLocation IdLoc,
>                               IdentifierInfo *Id, TypeSourceInfo *TInfo);
>    static TypedefDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    // Implement isa/cast/dyncast/etc.
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
> @@ -2503,7 +2502,7 @@ public:
>                                 IdentifierInfo *Id, TypeSourceInfo *TInfo);
>    static TypeAliasDecl *CreateDeserialized(ASTContext &C, unsigned ID);
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    // Implement isa/cast/dyncast/etc.
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
> @@ -2604,11 +2603,11 @@ protected:
>    }
>
>    typedef Redeclarable<TagDecl> redeclarable_base;
> -  virtual TagDecl *getNextRedeclaration() { return RedeclLink.getNext(); }
> -  virtual TagDecl *getPreviousDeclImpl() {
> +  TagDecl *getNextRedeclaration() override { return RedeclLink.getNext(); }
> +  TagDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual TagDecl *getMostRecentDeclImpl() {
> +  TagDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -2637,9 +2636,9 @@ public:
>    /// getOuterLocStart - Return SourceLocation representing start of source
>    /// range taking into account any outer template declarations.
>    SourceLocation getOuterLocStart() const;
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
> -  virtual TagDecl* getCanonicalDecl();
> +  TagDecl* getCanonicalDecl() override;
>    const TagDecl* getCanonicalDecl() const {
>      return const_cast<TagDecl*>(this)->getCanonicalDecl();
>    }
> @@ -2807,7 +2806,7 @@ public:
>  /// with a fixed underlying type, and in C we allow them to be forward-declared
>  /// with no underlying type as an extension.
>  class EnumDecl : public TagDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// IntegerType - This represent the integer type that the enum corresponds
>    /// to for code generation purposes.  Note that the enumerator constants may
>    /// have a different type than this does.
> @@ -2853,7 +2852,7 @@ class EnumDecl : public TagDecl {
>    void setInstantiationOfMemberEnum(ASTContext &C, EnumDecl *ED,
>                                      TemplateSpecializationKind TSK);
>  public:
> -  EnumDecl *getCanonicalDecl() {
> +  EnumDecl *getCanonicalDecl() override {
>      return cast<EnumDecl>(TagDecl::getCanonicalDecl());
>    }
>    const EnumDecl *getCanonicalDecl() const {
> @@ -3202,7 +3201,7 @@ public:
>    SourceLocation getAsmLoc() const { return getLocation(); }
>    SourceLocation getRParenLoc() const { return RParenLoc; }
>    void setRParenLoc(SourceLocation L) { RParenLoc = L; }
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(getAsmLoc(), getRParenLoc());
>    }
>
> @@ -3298,7 +3297,7 @@ public:
>    void setIsVariadic(bool value) { IsVariadic = value; }
>
>    CompoundStmt *getCompoundBody() const { return (CompoundStmt*) Body; }
> -  Stmt *getBody() const { return (Stmt*) Body; }
> +  Stmt *getBody() const override { return (Stmt*) Body; }
>    void setBody(CompoundStmt *B) { Body = (Stmt*) B; }
>
>    void setSignatureAsWritten(TypeSourceInfo *Sig) { SignatureAsWritten = Sig; }
> @@ -3386,7 +3385,7 @@ public:
>      ManglingContextDecl = Ctx;
>    }
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    // Implement isa/cast/dyncast/etc.
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
> @@ -3422,7 +3421,7 @@ public:
>    static CapturedDecl *CreateDeserialized(ASTContext &C, unsigned ID,
>                                            unsigned NumParams);
>
> -  Stmt *getBody() const { return Body; }
> +  Stmt *getBody() const override { return Body; }
>    void setBody(Stmt *B) { Body = B; }
>
>    unsigned getNumParams() const { return NumParams; }
> @@ -3525,9 +3524,9 @@ public:
>    /// This will return an empty array if the locations of the individual
>    /// identifiers aren't available.
>    ArrayRef<SourceLocation> getIdentifierLocs() const;
> -
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> -
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY;
> +
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
>    static bool classofKind(Kind K) { return K == Import; }
>  };
>
> Modified: cfe/trunk/include/clang/AST/DeclBase.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclBase.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclBase.h (original)
> +++ cfe/trunk/include/clang/AST/DeclBase.h Tue Mar 11 01:22:39 2014
> @@ -1009,7 +1009,7 @@ public:
>                         SourceManager &sm, const char *Msg)
>    : TheDecl(theDecl), Loc(L), SM(sm), Message(Msg) {}
>
> -  virtual void print(raw_ostream &OS) const;
> +  void print(raw_ostream &OS) const override;
>  };
>
>  typedef llvm::MutableArrayRef<NamedDecl*> DeclContextLookupResult;
>
> Modified: cfe/trunk/include/clang/AST/DeclCXX.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclCXX.h (original)
> +++ cfe/trunk/include/clang/AST/DeclCXX.h Tue Mar 11 01:22:39 2014
> @@ -123,7 +123,7 @@ public:
>    /// \brief Sets the location of the colon.
>    void setColonLoc(SourceLocation CLoc) { ColonLoc = CLoc; }
>
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(getAccessSpecifierLoc(), getColonLoc());
>    }
>
> @@ -627,7 +627,7 @@ public:
>    typedef std::reverse_iterator<base_class_const_iterator>
>      reverse_base_class_const_iterator;
>
> -  virtual CXXRecordDecl *getCanonicalDecl() {
> +  CXXRecordDecl *getCanonicalDecl() override {
>      return cast<CXXRecordDecl>(RecordDecl::getCanonicalDecl());
>    }
>    virtual const CXXRecordDecl *getCanonicalDecl() const {
> @@ -1546,7 +1546,7 @@ public:
>    void finishedDefaultedOrDeletedMember(CXXMethodDecl *MD);
>
>    /// \brief Indicates that the definition of this class is now complete.
> -  virtual void completeDefinition();
> +  void completeDefinition() override;
>
>    /// \brief Indicates that the definition of this class is now complete,
>    /// and provides a final overrider map to help determine
> @@ -1654,7 +1654,7 @@ public:
>  /// In the terminology of the C++ Standard, these are the (static and
>  /// non-static) member functions, whether virtual or not.
>  class CXXMethodDecl : public FunctionDecl {
> -  virtual void anchor();
> +  void anchor() override;
>  protected:
>    CXXMethodDecl(Kind DK, CXXRecordDecl *RD, SourceLocation StartLoc,
>                  const DeclarationNameInfo &NameInfo,
> @@ -1721,10 +1721,10 @@ public:
>    /// \brief Determine whether this is a move assignment operator.
>    bool isMoveAssignmentOperator() const;
>
> -  CXXMethodDecl *getCanonicalDecl() {
> +  CXXMethodDecl *getCanonicalDecl() override {
>      return cast<CXXMethodDecl>(FunctionDecl::getCanonicalDecl());
>    }
> -  const CXXMethodDecl *getCanonicalDecl() const {
> +  const CXXMethodDecl *getCanonicalDecl() const override {
>      return const_cast<CXXMethodDecl*>(this)->getCanonicalDecl();
>    }
>
> @@ -2084,7 +2084,7 @@ public:
>  /// };
>  /// \endcode
>  class CXXConstructorDecl : public CXXMethodDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// \brief Whether this constructor declaration has the \c explicit keyword
>    /// specified.
>    bool IsExplicitSpecified : 1;
> @@ -2258,10 +2258,10 @@ public:
>    /// \brief Set the constructor that this inheriting constructor is based on.
>    void setInheritedConstructor(const CXXConstructorDecl *BaseCtor);
>
> -  const CXXConstructorDecl *getCanonicalDecl() const {
> +  const CXXConstructorDecl *getCanonicalDecl() const override {
>      return cast<CXXConstructorDecl>(FunctionDecl::getCanonicalDecl());
>    }
> -  CXXConstructorDecl *getCanonicalDecl() {
> +  CXXConstructorDecl *getCanonicalDecl() override {
>      return cast<CXXConstructorDecl>(FunctionDecl::getCanonicalDecl());
>    }
>
> @@ -2284,7 +2284,7 @@ public:
>  /// };
>  /// \endcode
>  class CXXDestructorDecl : public CXXMethodDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    FunctionDecl *OperatorDelete;
>
> @@ -2333,7 +2333,7 @@ public:
>  /// };
>  /// \endcode
>  class CXXConversionDecl : public CXXMethodDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// Whether this conversion function declaration is marked
>    /// "explicit", meaning that it can only be applied when the user
>    /// explicitly wrote a cast. This is a C++0x feature.
> @@ -2462,7 +2462,7 @@ public:
>      return decls_empty() ? getLocation() : decls_begin()->getLocEnd();
>    }
>
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(ExternLoc, getLocEnd());
>    }
>
> @@ -2487,7 +2487,7 @@ public:
>  /// artificial names for all using-directives in order to store
>  /// them in DeclContext effectively.
>  class UsingDirectiveDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// \brief The location of the \c using keyword.
>    SourceLocation UsingLoc;
>
> @@ -2568,8 +2568,8 @@ public:
>                                      NamedDecl *Nominated,
>                                      DeclContext *CommonAncestor);
>    static UsingDirectiveDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(UsingLoc, getLocation());
>    }
>
> @@ -2590,7 +2590,7 @@ public:
>  /// namespace Foo = Bar;
>  /// \endcode
>  class NamespaceAliasDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// \brief The location of the \c namespace keyword.
>    SourceLocation NamespaceLoc;
> @@ -2663,8 +2663,8 @@ public:
>                                      NamedDecl *Namespace);
>
>    static NamespaceAliasDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(NamespaceLoc, IdentLoc);
>    }
>
> @@ -2686,7 +2686,7 @@ public:
>  /// }
>  /// \endcode
>  class UsingShadowDecl : public NamedDecl, public Redeclarable<UsingShadowDecl> {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// The referenced declaration.
>    NamedDecl *Underlying;
> @@ -2709,13 +2709,13 @@ class UsingShadowDecl : public NamedDecl
>    }
>
>    typedef Redeclarable<UsingShadowDecl> redeclarable_base;
> -  virtual UsingShadowDecl *getNextRedeclaration() {
> +  UsingShadowDecl *getNextRedeclaration() override {
>      return RedeclLink.getNext();
>    }
> -  virtual UsingShadowDecl *getPreviousDeclImpl() {
> +  UsingShadowDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual UsingShadowDecl *getMostRecentDeclImpl() {
> +  UsingShadowDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -2736,10 +2736,10 @@ public:
>    using redeclarable_base::getPreviousDecl;
>    using redeclarable_base::getMostRecentDecl;
>
> -  virtual UsingShadowDecl *getCanonicalDecl() {
> +  UsingShadowDecl *getCanonicalDecl() override {
>      return getFirstDecl();
>    }
> -  virtual const UsingShadowDecl *getCanonicalDecl() const {
> +  const UsingShadowDecl *getCanonicalDecl() const {
>      return getFirstDecl();
>    }
>
> @@ -2778,7 +2778,7 @@ public:
>  ///    using someNameSpace::someIdentifier;
>  /// \endcode
>  class UsingDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// \brief The source location of the 'using' keyword itself.
>    SourceLocation UsingLocation;
> @@ -2894,7 +2894,7 @@ public:
>
>    static UsingDecl *CreateDeserialized(ASTContext &C, unsigned ID);
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
>    static bool classofKind(Kind K) { return K == Using; }
> @@ -2915,7 +2915,7 @@ public:
>  /// };
>  /// \endcode
>  class UnresolvedUsingValueDecl : public ValueDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// \brief The source location of the 'using' keyword
>    SourceLocation UsingLocation;
> @@ -2968,7 +2968,7 @@ public:
>    static UnresolvedUsingValueDecl *
>    CreateDeserialized(ASTContext &C, unsigned ID);
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
>    static bool classofKind(Kind K) { return K == UnresolvedUsingValue; }
> @@ -2989,7 +2989,7 @@ public:
>  /// The type associated with an unresolved using typename decl is
>  /// currently always a typename type.
>  class UnresolvedUsingTypenameDecl : public TypeDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// \brief The source location of the 'typename' keyword
>    SourceLocation TypenameLocation;
> @@ -3067,7 +3067,7 @@ public:
>
>    SourceLocation getRParenLoc() const { return RParenLoc; }
>
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(getLocation(), getRParenLoc());
>    }
>
>
> Modified: cfe/trunk/include/clang/AST/DeclFriend.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclFriend.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclFriend.h (original)
> +++ cfe/trunk/include/clang/AST/DeclFriend.h Tue Mar 11 01:22:39 2014
> @@ -132,7 +132,7 @@ public:
>    }
>
>    /// Retrieves the source range for the friend declaration.
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      if (NamedDecl *ND = getFriendDecl()) {
>        if (FunctionTemplateDecl *FTD = dyn_cast<FunctionTemplateDecl>(ND))
>          return FTD->getSourceRange();
>
> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
> +++ cfe/trunk/include/clang/AST/DeclObjC.h Tue Mar 11 01:22:39 2014
> @@ -246,7 +246,7 @@ private:
>    /// \brief A definition will return its interface declaration.
>    /// An interface declaration will return its definition.
>    /// Otherwise it will return itself.
> -  virtual ObjCMethodDecl *getNextRedeclaration();
> +  ObjCMethodDecl *getNextRedeclaration() override;
>
>  public:
>    static ObjCMethodDecl *
> @@ -259,8 +259,8 @@ public:
>           bool HasRelatedResultType = false);
>
>    static ObjCMethodDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  virtual ObjCMethodDecl *getCanonicalDecl();
> +
> +  ObjCMethodDecl *getCanonicalDecl() override;
>    const ObjCMethodDecl *getCanonicalDecl() const {
>      return const_cast<ObjCMethodDecl*>(this)->getCanonicalDecl();
>    }
> @@ -289,7 +289,7 @@ public:
>    // Location information, modeled after the Stmt API.
>    SourceLocation getLocStart() const LLVM_READONLY { return getLocation(); }
>    SourceLocation getLocEnd() const LLVM_READONLY;
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(getLocation(), getLocEnd());
>    }
>
> @@ -473,10 +473,10 @@ public:
>        const ObjCMethodDecl **InitMethod = 0) const;
>
>    /// \brief Determine whether this method has a body.
> -  virtual bool hasBody() const { return Body.isValid(); }
> +  bool hasBody() const override { return Body.isValid(); }
>
>    /// \brief Retrieve the body of this method, if it has one.
> -  virtual Stmt *getBody() const;
> +  Stmt *getBody() const override;
>
>    void setLazyBody(uint64_t Offset) { Body = Offset; }
>
> @@ -505,7 +505,7 @@ public:
>  /// ObjCProtocolDecl, and ObjCImplDecl.
>  ///
>  class ObjCContainerDecl : public NamedDecl, public DeclContext {
> -  virtual void anchor();
> +  void anchor() override;
>
>    SourceLocation AtStart;
>
> @@ -596,7 +596,7 @@ public:
>      AtEnd = atEnd;
>    }
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(AtStart, getAtEndRange().getEnd());
>    }
>
> @@ -642,7 +642,7 @@ public:
>  ///
>  class ObjCInterfaceDecl : public ObjCContainerDecl
>                          , public Redeclarable<ObjCInterfaceDecl> {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// TypeForDecl - This indicates the Type object that represents this
>    /// TypeDecl.  It is a cache maintained by ASTContext::getObjCInterfaceType
> @@ -735,13 +735,13 @@ class ObjCInterfaceDecl : public ObjCCon
>    void allocateDefinitionData();
>
>    typedef Redeclarable<ObjCInterfaceDecl> redeclarable_base;
> -  virtual ObjCInterfaceDecl *getNextRedeclaration() {
> +  ObjCInterfaceDecl *getNextRedeclaration() override {
>      return RedeclLink.getNext();
>    }
> -  virtual ObjCInterfaceDecl *getPreviousDeclImpl() {
> +  ObjCInterfaceDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual ObjCInterfaceDecl *getMostRecentDeclImpl() {
> +  ObjCInterfaceDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -755,7 +755,7 @@ public:
>
>    static ObjCInterfaceDecl *CreateDeserialized(ASTContext &C, unsigned ID);
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      if (isThisDeclarationADefinition())
>        return ObjCContainerDecl::getSourceRange();
>
> @@ -1177,8 +1177,8 @@ public:
>    ObjCPropertyDecl
>      *FindPropertyVisibleInPrimaryClass(IdentifierInfo *PropertyId) const;
>
> -  virtual void collectPropertiesToImplement(PropertyMap &PM,
> -                                            PropertyDeclOrder &PO) const;
> +  void collectPropertiesToImplement(PropertyMap &PM,
> +                                    PropertyDeclOrder &PO) const override;
>
>    /// isSuperClassOf - Return true if this class is the specified class or is a
>    /// super class of the specified interface class.
> @@ -1284,7 +1284,7 @@ public:
>    using redeclarable_base::isFirstDecl;
>
>    /// Retrieves the canonical declaration of this Objective-C class.
> -  ObjCInterfaceDecl *getCanonicalDecl() { return getFirstDecl(); }
> +  ObjCInterfaceDecl *getCanonicalDecl() override { return getFirstDecl(); }
>    const ObjCInterfaceDecl *getCanonicalDecl() const { return getFirstDecl(); }
>
>    // Low-level accessor
> @@ -1319,7 +1319,7 @@ private:
>  ///   }
>  ///
>  class ObjCIvarDecl : public FieldDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>  public:
>    enum AccessControl {
> @@ -1382,7 +1382,7 @@ private:
>
>  /// \brief Represents a field declaration created by an \@defs(...).
>  class ObjCAtDefsFieldDecl : public FieldDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    ObjCAtDefsFieldDecl(DeclContext *DC, SourceLocation StartLoc,
>                        SourceLocation IdLoc, IdentifierInfo *Id,
>                        QualType T, Expr *BW)
> @@ -1435,7 +1435,7 @@ public:
>  ///
>  class ObjCProtocolDecl : public ObjCContainerDecl,
>                           public Redeclarable<ObjCProtocolDecl> {
> -  virtual void anchor();
> +  void anchor() override;
>
>    struct DefinitionData {
>      // \brief The declaration that defines this protocol.
> @@ -1464,13 +1464,13 @@ class ObjCProtocolDecl : public ObjCCont
>    void allocateDefinitionData();
>
>    typedef Redeclarable<ObjCProtocolDecl> redeclarable_base;
> -  virtual ObjCProtocolDecl *getNextRedeclaration() {
> +  ObjCProtocolDecl *getNextRedeclaration() override {
>      return RedeclLink.getNext();
>    }
> -  virtual ObjCProtocolDecl *getPreviousDeclImpl() {
> +  ObjCProtocolDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual ObjCProtocolDecl *getMostRecentDeclImpl() {
> +  ObjCProtocolDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -1576,7 +1576,7 @@ public:
>    /// \brief Starts the definition of this Objective-C protocol.
>    void startDefinition();
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      if (isThisDeclarationADefinition())
>        return ObjCContainerDecl::getSourceRange();
>
> @@ -1593,14 +1593,14 @@ public:
>    using redeclarable_base::isFirstDecl;
>
>    /// Retrieves the canonical declaration of this Objective-C protocol.
> -  ObjCProtocolDecl *getCanonicalDecl() { return getFirstDecl(); }
> +  ObjCProtocolDecl *getCanonicalDecl() override { return getFirstDecl(); }
>    const ObjCProtocolDecl *getCanonicalDecl() const { return getFirstDecl(); }
>
> -  virtual void collectPropertiesToImplement(PropertyMap &PM,
> -                                            PropertyDeclOrder &PO) const;
> -
> -void collectInheritedProtocolProperties(const ObjCPropertyDecl *Property,
> -                                        ProtocolPropertyMap &PM) const;
> +  void collectPropertiesToImplement(PropertyMap &PM,
> +                                    PropertyDeclOrder &PO) const override;
> +
> +  void collectInheritedProtocolProperties(const ObjCPropertyDecl *Property,
> +                                          ProtocolPropertyMap &PM) const;
>
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
>    static bool classofKind(Kind K) { return K == ObjCProtocol; }
> @@ -1628,7 +1628,7 @@ void collectInheritedProtocolProperties(
>  /// don't support this level of dynamism, which is both powerful and dangerous.
>  ///
>  class ObjCCategoryDecl : public ObjCContainerDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// Interface belonging to this category
>    ObjCInterfaceDecl *ClassInterface;
> @@ -1739,7 +1739,7 @@ public:
>  };
>
>  class ObjCImplDecl : public ObjCContainerDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// Class interface for this class/category implementation
>    ObjCInterfaceDecl *ClassInterface;
> @@ -1803,7 +1803,7 @@ public:
>  ///
>  /// ObjCCategoryImplDecl
>  class ObjCCategoryImplDecl : public ObjCImplDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    // Category name
>    IdentifierInfo *Id;
> @@ -1883,7 +1883,7 @@ raw_ostream &operator<<(raw_ostream &OS,
>  /// specified, they need to be *identical* to the interface.
>  ///
>  class ObjCImplementationDecl : public ObjCImplDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// Implementation Class's super class.
>    ObjCInterfaceDecl *SuperClass;
>    SourceLocation SuperLoc;
> @@ -2030,7 +2030,7 @@ raw_ostream &operator<<(raw_ostream &OS,
>  /// ObjCCompatibleAliasDecl - Represents alias of a class. This alias is
>  /// declared as \@compatibility_alias alias class.
>  class ObjCCompatibleAliasDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>    /// Class that this is an alias of.
>    ObjCInterfaceDecl *AliasedClass;
>
> @@ -2061,7 +2061,7 @@ public:
>  /// \@property (assign, readwrite) int MyProperty;
>  /// \endcode
>  class ObjCPropertyDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>  public:
>    enum PropertyAttributeKind {
>      OBJC_PR_noattr    = 0x00,
> @@ -2220,7 +2220,7 @@ public:
>      return PropertyIvarDecl;
>    }
>
> -  virtual SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(AtLoc, getLocation());
>    }
>
> @@ -2290,8 +2290,8 @@ public:
>                                        SourceLocation ivarLoc);
>
>    static ObjCPropertyImplDecl *CreateDeserialized(ASTContext &C, unsigned ID);
> -
> -  virtual SourceRange getSourceRange() const LLVM_READONLY;
> +
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    SourceLocation getLocStart() const LLVM_READONLY { return AtLoc; }
>    void setAtLoc(SourceLocation Loc) { AtLoc = Loc; }
>
> Modified: cfe/trunk/include/clang/AST/DeclTemplate.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclTemplate.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclTemplate.h (original)
> +++ cfe/trunk/include/clang/AST/DeclTemplate.h Tue Mar 11 01:22:39 2014
> @@ -227,7 +227,7 @@ public:
>  /// The TemplateDecl class stores the list of template parameters and a
>  /// reference to the templated scoped declaration: the underlying AST node.
>  class TemplateDecl : public NamedDecl {
> -  virtual void anchor();
> +  void anchor() override;
>  protected:
>    // This is probably never used.
>    TemplateDecl(Kind DK, DeclContext *DC, SourceLocation L,
> @@ -261,7 +261,7 @@ public:
>      return K >= firstTemplate && K <= lastTemplate;
>    }
>
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      return SourceRange(TemplateParams->getTemplateLoc(),
>                         TemplatedDecl->getSourceRange().getEnd());
>    }
> @@ -530,13 +530,13 @@ class RedeclarableTemplateDecl : public
>                                   public Redeclarable<RedeclarableTemplateDecl>
>  {
>    typedef Redeclarable<RedeclarableTemplateDecl> redeclarable_base;
> -  virtual RedeclarableTemplateDecl *getNextRedeclaration() {
> +  RedeclarableTemplateDecl *getNextRedeclaration() override {
>      return RedeclLink.getNext();
>    }
> -  virtual RedeclarableTemplateDecl *getPreviousDeclImpl() {
> +  RedeclarableTemplateDecl *getPreviousDeclImpl() override {
>      return getPreviousDecl();
>    }
> -  virtual RedeclarableTemplateDecl *getMostRecentDeclImpl() {
> +  RedeclarableTemplateDecl *getMostRecentDeclImpl() override {
>      return getMostRecentDecl();
>    }
>
> @@ -631,7 +631,9 @@ public:
>    template <class decl_type> friend class RedeclarableTemplate;
>
>    /// \brief Retrieves the canonical declaration of this template.
> -  RedeclarableTemplateDecl *getCanonicalDecl() { return getFirstDecl(); }
> +  RedeclarableTemplateDecl *getCanonicalDecl() override {
> +    return getFirstDecl();
> +  }
>    const RedeclarableTemplateDecl *getCanonicalDecl() const {
>      return getFirstDecl();
>    }
> @@ -775,7 +777,7 @@ protected:
>                         TemplateParameterList *Params, NamedDecl *Decl)
>      : RedeclarableTemplateDecl(FunctionTemplate, DC, L, Name, Params, Decl) { }
>
> -  CommonBase *newCommon(ASTContext &C) const;
> +  CommonBase *newCommon(ASTContext &C) const override;
>
>    Common *getCommonPtr() const {
>      return static_cast<Common *>(RedeclarableTemplateDecl::getCommonPtr());
> @@ -815,7 +817,7 @@ public:
>    FunctionDecl *findSpecialization(const TemplateArgument *Args,
>                                     unsigned NumArgs, void *&InsertPos);
>
> -  FunctionTemplateDecl *getCanonicalDecl() {
> +  FunctionTemplateDecl *getCanonicalDecl() override {
>      return cast<FunctionTemplateDecl>(
>               RedeclarableTemplateDecl::getCanonicalDecl());
>    }
> @@ -1008,7 +1010,7 @@ public:
>    /// \brief Returns whether this is a parameter pack.
>    bool isParameterPack() const;
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    // Implement isa/cast/dyncast/etc.
>    static bool classof(const Decl *D) { return classofKind(D->getKind()); }
> @@ -1085,7 +1087,7 @@ public:
>    using TemplateParmPosition::setPosition;
>    using TemplateParmPosition::getIndex;
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    /// \brief Determine whether this template parameter has a default
>    /// argument.
> @@ -1205,7 +1207,7 @@ public:
>  class TemplateTemplateParmDecl : public TemplateDecl,
>                                   protected TemplateParmPosition
>  {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// DefaultArgument - The default template argument, if any.
>    TemplateArgumentLoc DefaultArgument;
> @@ -1346,7 +1348,7 @@ public:
>      DefaultArgumentWasInherited = false;
>    }
>
> -  SourceRange getSourceRange() const LLVM_READONLY {
> +  SourceRange getSourceRange() const override LLVM_READONLY {
>      SourceLocation End = getLocation();
>      if (hasDefaultArgument() && !defaultArgumentWasInherited())
>        End = getDefaultArgument().getSourceRange().getEnd();
> @@ -1443,9 +1445,8 @@ public:
>    static ClassTemplateSpecializationDecl *
>    CreateDeserialized(ASTContext &C, unsigned ID);
>
> -  virtual void getNameForDiagnostic(raw_ostream &OS,
> -                                    const PrintingPolicy &Policy,
> -                                    bool Qualified) const;
> +  void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy,
> +                            bool Qualified) const override;
>
>    ClassTemplateSpecializationDecl *getMostRecentDecl() {
>      CXXRecordDecl *Recent = static_cast<CXXRecordDecl *>(
> @@ -1616,7 +1617,7 @@ public:
>      return ExplicitInfo ? ExplicitInfo->TemplateKeywordLoc : SourceLocation();
>    }
>
> -  SourceRange getSourceRange() const LLVM_READONLY;
> +  SourceRange getSourceRange() const override LLVM_READONLY;
>
>    void Profile(llvm::FoldingSetNodeID &ID) const {
>      Profile(ID, TemplateArgs->data(), TemplateArgs->size(), getASTContext());
> @@ -1642,7 +1643,7 @@ public:
>
>  class ClassTemplatePartialSpecializationDecl
>    : public ClassTemplateSpecializationDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// \brief The list of template parameters
>    TemplateParameterList* TemplateParams;
> @@ -1839,7 +1840,7 @@ protected:
>      : RedeclarableTemplateDecl(ClassTemplate, 0, SourceLocation(),
>                                 DeclarationName(), 0, 0) { }
>
> -  CommonBase *newCommon(ASTContext &C) const;
> +  CommonBase *newCommon(ASTContext &C) const override;
>
>    Common *getCommonPtr() const {
>      return static_cast<Common *>(RedeclarableTemplateDecl::getCommonPtr());
> @@ -1878,7 +1879,7 @@ public:
>    /// in. InsertPos must be obtained from findSpecialization.
>    void AddSpecialization(ClassTemplateSpecializationDecl *D, void *InsertPos);
>
> -  ClassTemplateDecl *getCanonicalDecl() {
> +  ClassTemplateDecl *getCanonicalDecl() override {
>      return cast<ClassTemplateDecl>(
>               RedeclarableTemplateDecl::getCanonicalDecl());
>    }
> @@ -2108,7 +2109,7 @@ protected:
>                          TemplateParameterList *Params, NamedDecl *Decl)
>      : RedeclarableTemplateDecl(TypeAliasTemplate, DC, L, Name, Params, Decl) { }
>
> -  CommonBase *newCommon(ASTContext &C) const;
> +  CommonBase *newCommon(ASTContext &C) const override;
>
>    Common *getCommonPtr() {
>      return static_cast<Common *>(RedeclarableTemplateDecl::getCommonPtr());
> @@ -2121,7 +2122,7 @@ public:
>    }
>
>
> -  TypeAliasTemplateDecl *getCanonicalDecl() {
> +  TypeAliasTemplateDecl *getCanonicalDecl() override {
>      return cast<TypeAliasTemplateDecl>(
>               RedeclarableTemplateDecl::getCanonicalDecl());
>    }
> @@ -2314,9 +2315,8 @@ public:
>    static VarTemplateSpecializationDecl *CreateDeserialized(ASTContext &C,
>                                                             unsigned ID);
>
> -  virtual void getNameForDiagnostic(raw_ostream &OS,
> -                                    const PrintingPolicy &Policy,
> -                                    bool Qualified) const;
> +  void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy,
> +                            bool Qualified) const override;
>
>    VarTemplateSpecializationDecl *getMostRecentDecl() {
>      VarDecl *Recent = static_cast<VarDecl *>(this)->getMostRecentDecl();
> @@ -2508,7 +2508,7 @@ public:
>
>  class VarTemplatePartialSpecializationDecl
>      : public VarTemplateSpecializationDecl {
> -  virtual void anchor();
> +  void anchor() override;
>
>    /// \brief The list of template parameters
>    TemplateParameterList *TemplateParams;
> @@ -2683,7 +2683,7 @@ protected:
>        : RedeclarableTemplateDecl(VarTemplate, 0, SourceLocation(),
>                                   DeclarationName(), 0, 0) {}
>
> -  CommonBase *newCommon(ASTContext &C) const;
> +  CommonBase *newCommon(ASTContext &C) const override;
>
>    Common *getCommonPtr() const {
>      return static_cast<Common *>(RedeclarableTemplateDecl::getCommonPtr());
> @@ -2722,7 +2722,7 @@ public:
>    /// in. InsertPos must be obtained from findSpecialization.
>    void AddSpecialization(VarTemplateSpecializationDecl *D, void *InsertPos);
>
> -  VarTemplateDecl *getCanonicalDecl() {
> +  VarTemplateDecl *getCanonicalDecl() override {
>      return cast<VarTemplateDecl>(RedeclarableTemplateDecl::getCanonicalDecl());
>    }
>    const VarTemplateDecl *getCanonicalDecl() const {
>
> Modified: cfe/trunk/include/clang/AST/VTableBuilder.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/VTableBuilder.h?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/VTableBuilder.h (original)
> +++ cfe/trunk/include/clang/AST/VTableBuilder.h Tue Mar 11 01:22:39 2014
> @@ -329,7 +329,7 @@ private:
>      VirtualBaseClassOffsetOffsetsMapTy;
>    VirtualBaseClassOffsetOffsetsMapTy VirtualBaseClassOffsetOffsets;
>
> -  void computeVTableRelatedInformation(const CXXRecordDecl *RD);
> +  void computeVTableRelatedInformation(const CXXRecordDecl *RD) override;
>
>  public:
>    ItaniumVTableContext(ASTContext &Context);
> @@ -495,7 +495,7 @@ private:
>
>    void enumerateVFPtrs(const CXXRecordDecl *ForClass, VPtrInfoVector &Result);
>
> -  void computeVTableRelatedInformation(const CXXRecordDecl *RD);
> +  void computeVTableRelatedInformation(const CXXRecordDecl *RD) override;
>
>    void dumpMethodLocations(const CXXRecordDecl *RD,
>                             const MethodVFTableLocationsTy &NewMethods,
> @@ -520,7 +520,7 @@ public:
>
>    const MethodVFTableLocation &getMethodVFTableLocation(GlobalDecl GD);
>
> -  const ThunkInfoVectorTy *getThunkInfo(GlobalDecl GD) {
> +  const ThunkInfoVectorTy *getThunkInfo(GlobalDecl GD) override {
>      // Complete destructors don't have a slot in a vftable, so no thunks needed.
>      if (isa<CXXDestructorDecl>(GD.getDecl()) &&
>          GD.getDtorType() == Dtor_Complete)
>
> Modified: cfe/trunk/lib/AST/ItaniumCXXABI.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumCXXABI.cpp?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ItaniumCXXABI.cpp (original)
> +++ cfe/trunk/lib/AST/ItaniumCXXABI.cpp Tue Mar 11 01:22:39 2014
> @@ -37,11 +37,11 @@ class ItaniumNumberingContext : public M
>
>  public:
>    /// Variable decls are numbered by identifier.
> -  virtual unsigned getManglingNumber(const VarDecl *VD, unsigned) {
> +  unsigned getManglingNumber(const VarDecl *VD, unsigned) override {
>      return ++VarManglingNumbers[VD->getIdentifier()];
>    }
>
> -  virtual unsigned getManglingNumber(const TagDecl *TD, unsigned) {
> +  unsigned getManglingNumber(const TagDecl *TD, unsigned) override {
>      return ++TagManglingNumbers[TD->getIdentifier()];
>    }
>  };
> @@ -53,7 +53,7 @@ public:
>    ItaniumCXXABI(ASTContext &Ctx) : Context(Ctx) { }
>
>    std::pair<uint64_t, unsigned>
> -  getMemberPointerWidthAndAlign(const MemberPointerType *MPT) const {
> +  getMemberPointerWidthAndAlign(const MemberPointerType *MPT) const override {
>      const TargetInfo &Target = Context.getTargetInfo();
>      TargetInfo::IntType PtrDiff = Target.getPtrDiffType(0);
>      uint64_t Width = Target.getTypeWidth(PtrDiff);
> @@ -63,7 +63,7 @@ public:
>      return std::make_pair(Width, Align);
>    }
>
> -  CallingConv getDefaultMethodCallConv(bool isVariadic) const {
> +  CallingConv getDefaultMethodCallConv(bool isVariadic) const override {
>      const llvm::Triple &T = Context.getTargetInfo().getTriple();
>      if (!isVariadic && T.getOS() == llvm::Triple::MinGW32 &&
>          T.getArch() == llvm::Triple::x86)
> @@ -73,7 +73,7 @@ public:
>
>    // We cheat and just check that the class has a vtable pointer, and that it's
>    // only big enough to have a vtable pointer and nothing more (or less).
> -  bool isNearlyEmpty(const CXXRecordDecl *RD) const {
> +  bool isNearlyEmpty(const CXXRecordDecl *RD) const override {
>
>      // Check that the class has a vtable pointer.
>      if (!RD->isDynamicClass())
> @@ -85,7 +85,7 @@ public:
>      return Layout.getNonVirtualSize() == PointerSize;
>    }
>
> -  virtual MangleNumberingContext *createMangleNumberingContext() const {
> +  MangleNumberingContext *createMangleNumberingContext() const override {
>      return new ItaniumNumberingContext();
>    }
>  };
>
> Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ItaniumMangle.cpp (original)
> +++ cfe/trunk/lib/AST/ItaniumMangle.cpp Tue Mar 11 01:22:39 2014
> @@ -125,36 +125,33 @@ public:
>    /// @name Mangler Entry Points
>    /// @{
>
> -  bool shouldMangleCXXName(const NamedDecl *D);
> -  void mangleCXXName(const NamedDecl *D, raw_ostream &);
> -  void mangleThunk(const CXXMethodDecl *MD,
> -                   const ThunkInfo &Thunk,
> -                   raw_ostream &);
> +  bool shouldMangleCXXName(const NamedDecl *D) override;
> +  void mangleCXXName(const NamedDecl *D, raw_ostream &) override;
> +  void mangleThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk,
> +                   raw_ostream &) override;
>    void mangleCXXDtorThunk(const CXXDestructorDecl *DD, CXXDtorType Type,
>                            const ThisAdjustment &ThisAdjustment,
> -                          raw_ostream &);
> -  void mangleReferenceTemporary(const VarDecl *D,
> -                                raw_ostream &);
> -  void mangleCXXVTable(const CXXRecordDecl *RD,
> -                       raw_ostream &);
> -  void mangleCXXVTT(const CXXRecordDecl *RD,
> -                    raw_ostream &);
> +                          raw_ostream &) override;
> +  void mangleReferenceTemporary(const VarDecl *D, raw_ostream &) override;
> +  void mangleCXXVTable(const CXXRecordDecl *RD, raw_ostream &) override;
> +  void mangleCXXVTT(const CXXRecordDecl *RD, raw_ostream &) override;
>    void mangleCXXCtorVTable(const CXXRecordDecl *RD, int64_t Offset,
> -                           const CXXRecordDecl *Type,
> -                           raw_ostream &);
> -  void mangleCXXRTTI(QualType T, raw_ostream &);
> -  void mangleCXXRTTIName(QualType T, raw_ostream &);
> -  void mangleTypeName(QualType T, raw_ostream &);
> +                           const CXXRecordDecl *Type, raw_ostream &) override;
> +  void mangleCXXRTTI(QualType T, raw_ostream &) override;
> +  void mangleCXXRTTIName(QualType T, raw_ostream &) override;
> +  void mangleTypeName(QualType T, raw_ostream &) override;
>    void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type,
> -                     raw_ostream &);
> +                     raw_ostream &) override;
>    void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type,
> -                     raw_ostream &);
> +                     raw_ostream &) override;
>
> -  void mangleStaticGuardVariable(const VarDecl *D, raw_ostream &);
> -  void mangleDynamicInitializer(const VarDecl *D, raw_ostream &Out);
> -  void mangleDynamicAtExitDestructor(const VarDecl *D, raw_ostream &Out);
> -  void mangleItaniumThreadLocalInit(const VarDecl *D, raw_ostream &);
> -  void mangleItaniumThreadLocalWrapper(const VarDecl *D, raw_ostream &);
> +  void mangleStaticGuardVariable(const VarDecl *D, raw_ostream &) override;
> +  void mangleDynamicInitializer(const VarDecl *D, raw_ostream &Out) override;
> +  void mangleDynamicAtExitDestructor(const VarDecl *D,
> +                                     raw_ostream &Out) override;
> +  void mangleItaniumThreadLocalInit(const VarDecl *D, raw_ostream &) override;
> +  void mangleItaniumThreadLocalWrapper(const VarDecl *D,
> +                                       raw_ostream &) override;
>
>    bool getNextDiscriminator(const NamedDecl *ND, unsigned &disc) {
>      // Lambda closure types are already numbered.
>
> Modified: cfe/trunk/lib/AST/MicrosoftCXXABI.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftCXXABI.cpp?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/MicrosoftCXXABI.cpp (original)
> +++ cfe/trunk/lib/AST/MicrosoftCXXABI.cpp Tue Mar 11 01:22:39 2014
> @@ -29,13 +29,13 @@ namespace {
>  /// Typically these are things like static locals, lambdas, or blocks.
>  class MicrosoftNumberingContext : public MangleNumberingContext {
>  public:
> -  virtual unsigned getManglingNumber(const VarDecl *VD,
> -                                     unsigned MSLocalManglingNumber) {
> +  unsigned getManglingNumber(const VarDecl *VD,
> +                             unsigned MSLocalManglingNumber) override {
>      return MSLocalManglingNumber;
>    }
>
> -  virtual unsigned getManglingNumber(const TagDecl *TD,
> -                                     unsigned MSLocalManglingNumber) {
> +  unsigned getManglingNumber(const TagDecl *TD,
> +                             unsigned MSLocalManglingNumber) override {
>      return MSLocalManglingNumber;
>    }
>  };
> @@ -46,16 +46,16 @@ public:
>    MicrosoftCXXABI(ASTContext &Ctx) : Context(Ctx) { }
>
>    std::pair<uint64_t, unsigned>
> -  getMemberPointerWidthAndAlign(const MemberPointerType *MPT) const;
> +  getMemberPointerWidthAndAlign(const MemberPointerType *MPT) const override;
>
> -  CallingConv getDefaultMethodCallConv(bool isVariadic) const {
> +  CallingConv getDefaultMethodCallConv(bool isVariadic) const override {
>      if (!isVariadic &&
>          Context.getTargetInfo().getTriple().getArch() == llvm::Triple::x86)
>        return CC_X86ThisCall;
>      return CC_C;
>    }
>
> -  bool isNearlyEmpty(const CXXRecordDecl *RD) const {
> +  bool isNearlyEmpty(const CXXRecordDecl *RD) const override {
>      // FIXME: Audit the corners
>      if (!RD->isDynamicClass())
>        return false;
> @@ -69,7 +69,7 @@ public:
>        Layout.getNonVirtualSize() == PointerSize * 2;
>    }
>
> -  MangleNumberingContext *createMangleNumberingContext() const {
> +  MangleNumberingContext *createMangleNumberingContext() const override {
>      return new MicrosoftNumberingContext();
>    }
>  };
>
> Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)
> +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Tue Mar 11 01:22:39 2014
> @@ -92,34 +92,32 @@ class MicrosoftMangleContextImpl : publi
>  public:
>    MicrosoftMangleContextImpl(ASTContext &Context, DiagnosticsEngine &Diags)
>        : MicrosoftMangleContext(Context, Diags) {}
> -  virtual bool shouldMangleCXXName(const NamedDecl *D);
> -  virtual void mangleCXXName(const NamedDecl *D, raw_ostream &Out);
> -  virtual void mangleVirtualMemPtrThunk(const CXXMethodDecl *MD,
> -                                        raw_ostream &);
> -  virtual void mangleThunk(const CXXMethodDecl *MD,
> -                           const ThunkInfo &Thunk,
> -                           raw_ostream &);
> -  virtual void mangleCXXDtorThunk(const CXXDestructorDecl *DD, CXXDtorType Type,
> -                                  const ThisAdjustment &ThisAdjustment,
> -                                  raw_ostream &);
> -  virtual void mangleCXXVFTable(const CXXRecordDecl *Derived,
> -                                ArrayRef<const CXXRecordDecl *> BasePath,
> -                                raw_ostream &Out);
> -  virtual void mangleCXXVBTable(const CXXRecordDecl *Derived,
> -                                ArrayRef<const CXXRecordDecl *> BasePath,
> -                                raw_ostream &Out);
> -  virtual void mangleCXXRTTI(QualType T, raw_ostream &);
> -  virtual void mangleCXXRTTIName(QualType T, raw_ostream &);
> -  virtual void mangleTypeName(QualType T, raw_ostream &);
> -  virtual void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type,
> -                             raw_ostream &);
> -  virtual void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type,
> -                             raw_ostream &);
> -  virtual void mangleReferenceTemporary(const VarDecl *, raw_ostream &);
> -  virtual void mangleStaticGuardVariable(const VarDecl *D, raw_ostream &Out);
> -  virtual void mangleDynamicInitializer(const VarDecl *D, raw_ostream &Out);
> -  virtual void mangleDynamicAtExitDestructor(const VarDecl *D,
> -                                             raw_ostream &Out);
> +  bool shouldMangleCXXName(const NamedDecl *D) override;
> +  void mangleCXXName(const NamedDecl *D, raw_ostream &Out) override;
> +  void mangleVirtualMemPtrThunk(const CXXMethodDecl *MD, raw_ostream &) override;
> +  void mangleThunk(const CXXMethodDecl *MD, const ThunkInfo &Thunk,
> +                   raw_ostream &) override;
> +  void mangleCXXDtorThunk(const CXXDestructorDecl *DD, CXXDtorType Type,
> +                          const ThisAdjustment &ThisAdjustment,
> +                          raw_ostream &) override;
> +  void mangleCXXVFTable(const CXXRecordDecl *Derived,
> +                        ArrayRef<const CXXRecordDecl *> BasePath,
> +                        raw_ostream &Out) override;
> +  void mangleCXXVBTable(const CXXRecordDecl *Derived,
> +                        ArrayRef<const CXXRecordDecl *> BasePath,
> +                        raw_ostream &Out) override;
> +  void mangleCXXRTTI(QualType T, raw_ostream &) override;
> +  void mangleCXXRTTIName(QualType T, raw_ostream &) override;
> +  void mangleTypeName(QualType T, raw_ostream &) override;
> +  void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type,
> +                     raw_ostream &) override;
> +  void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type,
> +                     raw_ostream &) override;
> +  void mangleReferenceTemporary(const VarDecl *, raw_ostream &) override;
> +  void mangleStaticGuardVariable(const VarDecl *D, raw_ostream &Out) override;
> +  void mangleDynamicInitializer(const VarDecl *D, raw_ostream &Out) override;
> +  void mangleDynamicAtExitDestructor(const VarDecl *D,
> +                                     raw_ostream &Out) override;
>    bool getNextDiscriminator(const NamedDecl *ND, unsigned &disc) {
>      // Lambda closure types are already numbered.
>      if (isLambda(ND))
>
> Modified: cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp?rev=203543&r1=203542&r2=203543&view=diff
> ==============================================================================
> --- cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp (original)
> +++ cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp Tue Mar 11 01:22:39 2014
> @@ -1491,10 +1491,10 @@ void EmitClangAttrClass(RecordKeeper &Re
>        OS << "  }\n\n";
>      }
>
> -    OS << "  virtual " << R.getName() << "Attr *clone (ASTContext &C) const;\n";
> -    OS << "  virtual void printPretty(raw_ostream &OS,\n"
> -       << "                           const PrintingPolicy &Policy) const;\n";
> -    OS << "  virtual const char *getSpelling() const;\n";
> +    OS << "  " << R.getName() << "Attr *clone(ASTContext &C) const override;\n";
> +    OS << "  void printPretty(raw_ostream &OS,\n"
> +       << "                   const PrintingPolicy &Policy) const override;\n";
> +    OS << "  const char *getSpelling() const override;\n";
>
>      if (!ElideSpelling) {
>        assert(!SemanticToSyntacticMap.empty() && "Empty semantic mapping list");
> @@ -1524,11 +1524,11 @@ void EmitClangAttrClass(RecordKeeper &Re
>         << "attr::" << R.getName() << "; }\n";
>
>      bool LateParsed = R.getValueAsBit("LateParsed");
> -    OS << "  virtual bool isLateParsed() const { return "
> +    OS << "  bool isLateParsed() const override { return "
>         << LateParsed << "; }\n";
>
>      if (R.getValueAsBit("DuplicatesAllowedWhileMerging"))
> -      OS << "  virtual bool duplicatesAllowed() const { return true; }\n\n";
> +      OS << "  bool duplicatesAllowed() const override { return true; }\n\n";
>
>      OS << "};\n\n";
>    }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list