r338641 - [AST][4/4] Move the bit-fields from ObjCMethodDecl and ObjCContainerDecl into DeclContext

David Jones via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 1 15:57:06 PDT 2018


(And it was fixed in r338648)

On Wed, Aug 1, 2018 at 3:24 PM David Jones <dlj at google.com> wrote:

> FYI, this breaks clang:
>
> .../llvm/tools/clang/lib/AST/DeclObjC.cpp:793:7: error: static_assert
> expression is not an integral constant expression
>       static_cast<unsigned>(ObjCMethodDeclBits.ObjCMethodFamilyBitWidth) ==
>       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> .../llvm/tools/clang/lib/AST/DeclObjC.cpp:793:29: note: implicit use of
> 'this' pointer is only allowed within the evaluation of a call to a
> 'constexpr' member function
>       static_cast<unsigned>(ObjCMethodDeclBits.ObjCMethodFamilyBitWidth) ==
>                             ^
> 1 error generated.
>
>
> On Wed, Aug 1, 2018 at 2:31 PM Erich Keane via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: erichkeane
>> Date: Wed Aug  1 14:31:08 2018
>> New Revision: 338641
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=338641&view=rev
>> Log:
>> [AST][4/4] Move the bit-fields from ObjCMethodDecl and ObjCContainerDecl
>> into DeclContext
>>
>> This patch follows https://reviews.llvm.org/D49729,
>> https://reviews.llvm.org/D49732 and
>> https://reviews.llvm.org/D49733.
>>
>> Move the bits from ObjCMethodDecl and ObjCContainerDecl
>> into DeclContext.
>>
>> Differential Revision: https://reviews.llvm.org/D49734
>>
>> Patch By: bricci
>>
>> Modified:
>>     cfe/trunk/include/clang/AST/DeclObjC.h
>>     cfe/trunk/lib/AST/DeclObjC.cpp
>>     cfe/trunk/lib/Sema/SemaDeclObjC.cpp
>>     cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
>>     cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
>>
>> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=338641&r1=338640&r2=338641&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
>> +++ cfe/trunk/include/clang/AST/DeclObjC.h Wed Aug  1 14:31:08 2018
>> @@ -141,58 +141,10 @@ public:
>>    enum ImplementationControl { None, Required, Optional };
>>
>>  private:
>> -  // The conventional meaning of this method; an ObjCMethodFamily.
>> -  // This is not serialized; instead, it is computed on demand and
>> -  // cached.
>> -  mutable unsigned Family : ObjCMethodFamilyBitWidth;
>> -
>> -  /// instance (true) or class (false) method.
>> -  unsigned IsInstance : 1;
>> -  unsigned IsVariadic : 1;
>> -
>> -  /// True if this method is the getter or setter for an explicit
>> property.
>> -  unsigned IsPropertyAccessor : 1;
>> -
>> -  // Method has a definition.
>> -  unsigned IsDefined : 1;
>> -
>> -  /// Method redeclaration in the same interface.
>> -  unsigned IsRedeclaration : 1;
>> -
>> -  /// Is redeclared in the same interface.
>> -  mutable unsigned HasRedeclaration : 1;
>> -
>> -  // NOTE: VC++ treats enums as signed, avoid using
>> ImplementationControl enum
>> -  /// \@required/\@optional
>> -  unsigned DeclImplementation : 2;
>> -
>> -  // NOTE: VC++ treats enums as signed, avoid using the
>> ObjCDeclQualifier enum
>> -  /// in, inout, etc.
>> -  unsigned objcDeclQualifier : 7;
>> -
>> -  /// Indicates whether this method has a related result type.
>> -  unsigned RelatedResultType : 1;
>> -
>> -  /// Whether the locations of the selector identifiers are in a
>> -  /// "standard" position, a enum SelectorLocationsKind.
>> -  unsigned SelLocsKind : 2;
>> -
>> -  /// Whether this method overrides any other in the class hierarchy.
>> -  ///
>> -  /// A method is said to override any method in the class's
>> -  /// base classes, its protocols, or its categories' protocols, that has
>> -  /// the same selector and is of the same kind (class or instance).
>> -  /// A method in an implementation is not considered as overriding the
>> same
>> -  /// method in the interface or its categories.
>> -  unsigned IsOverriding : 1;
>> -
>> -  /// Indicates if the method was a definition but its body was skipped.
>> -  unsigned HasSkippedBody : 1;
>> -
>> -  // Return type of this method.
>> +  /// Return type of this method.
>>    QualType MethodDeclType;
>>
>> -  // Type source information for the return type.
>> +  /// Type source information for the return type.
>>    TypeSourceInfo *ReturnTInfo;
>>
>>    /// Array of ParmVarDecls for the formal parameters of this method
>> @@ -203,7 +155,7 @@ private:
>>    /// List of attributes for this method declaration.
>>    SourceLocation DeclEndLoc; // the location of the ';' or '{'.
>>
>> -  // The following are only used for method definitions, null otherwise.
>> +  /// The following are only used for method definitions, null otherwise.
>>    LazyDeclStmtPtr Body;
>>
>>    /// SelfDecl - Decl for the implicit self parameter. This is lazily
>> @@ -220,21 +172,14 @@ private:
>>                   bool isVariadic = false, bool isPropertyAccessor =
>> false,
>>                   bool isImplicitlyDeclared = false, bool isDefined =
>> false,
>>                   ImplementationControl impControl = None,
>> -                 bool HasRelatedResultType = false)
>> -      : NamedDecl(ObjCMethod, contextDecl, beginLoc, SelInfo),
>> -        DeclContext(ObjCMethod), Family(InvalidObjCMethodFamily),
>> -        IsInstance(isInstance), IsVariadic(isVariadic),
>> -        IsPropertyAccessor(isPropertyAccessor), IsDefined(isDefined),
>> -        IsRedeclaration(0), HasRedeclaration(0),
>> DeclImplementation(impControl),
>> -        objcDeclQualifier(OBJC_TQ_None),
>> -        RelatedResultType(HasRelatedResultType),
>> -        SelLocsKind(SelLoc_StandardNoSpace), IsOverriding(0),
>> HasSkippedBody(0),
>> -        MethodDeclType(T), ReturnTInfo(ReturnTInfo), DeclEndLoc(endLoc) {
>> -    setImplicit(isImplicitlyDeclared);
>> -  }
>> +                 bool HasRelatedResultType = false);
>>
>>    SelectorLocationsKind getSelLocsKind() const {
>> -    return (SelectorLocationsKind)SelLocsKind;
>> +    return
>> static_cast<SelectorLocationsKind>(ObjCMethodDeclBits.SelLocsKind);
>> +  }
>> +
>> +  void setSelLocsKind(SelectorLocationsKind Kind) {
>> +    ObjCMethodDeclBits.SelLocsKind = Kind;
>>    }
>>
>>    bool hasStandardSelLocs() const {
>> @@ -244,10 +189,10 @@ private:
>>    /// Get a pointer to the stored selector identifiers locations array.
>>    /// No locations will be stored if HasStandardSelLocs is true.
>>    SourceLocation *getStoredSelLocs() {
>> -    return reinterpret_cast<SourceLocation*>(getParams() + NumParams);
>> +    return reinterpret_cast<SourceLocation *>(getParams() + NumParams);
>>    }
>>    const SourceLocation *getStoredSelLocs() const {
>> -    return reinterpret_cast<const SourceLocation*>(getParams() +
>> NumParams);
>> +    return reinterpret_cast<const SourceLocation *>(getParams() +
>> NumParams);
>>    }
>>
>>    /// Get a pointer to the stored selector identifiers locations array.
>> @@ -297,21 +242,35 @@ public:
>>    }
>>
>>    ObjCDeclQualifier getObjCDeclQualifier() const {
>> -    return ObjCDeclQualifier(objcDeclQualifier);
>> +    return
>> static_cast<ObjCDeclQualifier>(ObjCMethodDeclBits.objcDeclQualifier);
>> +  }
>> +
>> +  void setObjCDeclQualifier(ObjCDeclQualifier QV) {
>> +    ObjCMethodDeclBits.objcDeclQualifier = QV;
>>    }
>> -  void setObjCDeclQualifier(ObjCDeclQualifier QV) { objcDeclQualifier =
>> QV; }
>>
>>    /// Determine whether this method has a result type that is related
>>    /// to the message receiver's type.
>> -  bool hasRelatedResultType() const { return RelatedResultType; }
>> +  bool hasRelatedResultType() const {
>> +    return ObjCMethodDeclBits.RelatedResultType;
>> +  }
>>
>>    /// Note whether this method has a related result type.
>> -  void SetRelatedResultType(bool RRT = true) { RelatedResultType = RRT; }
>> +  void setRelatedResultType(bool RRT = true) {
>> +    ObjCMethodDeclBits.RelatedResultType = RRT;
>> +  }
>>
>>    /// True if this is a method redeclaration in the same interface.
>> -  bool isRedeclaration() const { return IsRedeclaration; }
>> +  bool isRedeclaration() const { return
>> ObjCMethodDeclBits.IsRedeclaration; }
>> +  void setIsRedeclaration(bool RD) { ObjCMethodDeclBits.IsRedeclaration
>> = RD; }
>>    void setAsRedeclaration(const ObjCMethodDecl *PrevMethod);
>>
>> +  /// True if redeclared in the same interface.
>> +  bool hasRedeclaration() const { return
>> ObjCMethodDeclBits.HasRedeclaration; }
>> +  void setHasRedeclaration(bool HRD) const {
>> +    ObjCMethodDeclBits.HasRedeclaration = HRD;
>> +  }
>> +
>>    /// Returns the location where the declarator ends. It will be
>>    /// the location of ';' for a method declaration and the location of
>> '{'
>>    /// for a method definition.
>> @@ -449,18 +408,26 @@ public:
>>    /// Determines the family of this method.
>>    ObjCMethodFamily getMethodFamily() const;
>>
>> -  bool isInstanceMethod() const { return IsInstance; }
>> -  void setInstanceMethod(bool isInst) { IsInstance = isInst; }
>> -  bool isVariadic() const { return IsVariadic; }
>> -  void setVariadic(bool isVar) { IsVariadic = isVar; }
>> +  bool isInstanceMethod() const { return ObjCMethodDeclBits.IsInstance; }
>> +  void setInstanceMethod(bool isInst) {
>> +    ObjCMethodDeclBits.IsInstance = isInst;
>> +  }
>>
>> -  bool isClassMethod() const { return !IsInstance; }
>> +  bool isVariadic() const { return ObjCMethodDeclBits.IsVariadic; }
>> +  void setVariadic(bool isVar) { ObjCMethodDeclBits.IsVariadic = isVar; }
>>
>> -  bool isPropertyAccessor() const { return IsPropertyAccessor; }
>> -  void setPropertyAccessor(bool isAccessor) { IsPropertyAccessor =
>> isAccessor; }
>> +  bool isClassMethod() const { return !isInstanceMethod(); }
>>
>> -  bool isDefined() const { return IsDefined; }
>> -  void setDefined(bool isDefined) { IsDefined = isDefined; }
>> +  bool isPropertyAccessor() const {
>> +    return ObjCMethodDeclBits.IsPropertyAccessor;
>> +  }
>> +
>> +  void setPropertyAccessor(bool isAccessor) {
>> +    ObjCMethodDeclBits.IsPropertyAccessor = isAccessor;
>> +  }
>> +
>> +  bool isDefined() const { return ObjCMethodDeclBits.IsDefined; }
>> +  void setDefined(bool isDefined) { ObjCMethodDeclBits.IsDefined =
>> isDefined; }
>>
>>    /// Whether this method overrides any other in the class hierarchy.
>>    ///
>> @@ -469,8 +436,8 @@ public:
>>    /// the same selector and is of the same kind (class or instance).
>>    /// A method in an implementation is not considered as overriding the
>> same
>>    /// method in the interface or its categories.
>> -  bool isOverriding() const { return IsOverriding; }
>> -  void setOverriding(bool isOverriding) { IsOverriding = isOverriding; }
>> +  bool isOverriding() const { return ObjCMethodDeclBits.IsOverriding; }
>> +  void setOverriding(bool IsOver) { ObjCMethodDeclBits.IsOverriding =
>> IsOver; }
>>
>>    /// Return overridden methods for the given \p Method.
>>    ///
>> @@ -484,8 +451,10 @@ public:
>>                       SmallVectorImpl<const ObjCMethodDecl *>
>> &Overridden) const;
>>
>>    /// True if the method was a definition but its body was skipped.
>> -  bool hasSkippedBody() const { return HasSkippedBody; }
>> -  void setHasSkippedBody(bool Skipped = true) { HasSkippedBody =
>> Skipped; }
>> +  bool hasSkippedBody() const { return
>> ObjCMethodDeclBits.HasSkippedBody; }
>> +  void setHasSkippedBody(bool Skipped = true) {
>> +    ObjCMethodDeclBits.HasSkippedBody = Skipped;
>> +  }
>>
>>    /// Returns the property associated with this method's selector.
>>    ///
>> @@ -496,11 +465,11 @@ public:
>>
>>    // Related to protocols declared in  \@protocol
>>    void setDeclImplementation(ImplementationControl ic) {
>> -    DeclImplementation = ic;
>> +    ObjCMethodDeclBits.DeclImplementation = ic;
>>    }
>>
>>    ImplementationControl getImplementationControl() const {
>> -    return ImplementationControl(DeclImplementation);
>> +    return ImplementationControl(ObjCMethodDeclBits.DeclImplementation);
>>    }
>>
>>    bool isOptional() const {
>> @@ -984,8 +953,6 @@ public:
>>  /// ObjCProtocolDecl, and ObjCImplDecl.
>>  ///
>>  class ObjCContainerDecl : public NamedDecl, public DeclContext {
>> -  SourceLocation AtStart;
>> -
>>    // These two locations in the range mark the end of the method
>> container.
>>    // The first points to the '@' token, and the second to the 'end'
>> token.
>>    SourceRange AtEnd;
>> @@ -993,10 +960,8 @@ class ObjCContainerDecl : public NamedDe
>>    void anchor() override;
>>
>>  public:
>> -  ObjCContainerDecl(Kind DK, DeclContext *DC,
>> -                    IdentifierInfo *Id, SourceLocation nameLoc,
>> -                    SourceLocation atStartLoc)
>> -      : NamedDecl(DK, DC, nameLoc, Id), DeclContext(DK),
>> AtStart(atStartLoc) {}
>> +  ObjCContainerDecl(Kind DK, DeclContext *DC, IdentifierInfo *Id,
>> +                    SourceLocation nameLoc, SourceLocation atStartLoc);
>>
>>    // Iterator access to instance/class properties.
>>    using prop_iterator = specific_decl_iterator<ObjCPropertyDecl>;
>> @@ -1130,20 +1095,19 @@ public:
>>    virtual void collectPropertiesToImplement(PropertyMap &PM,
>>                                              PropertyDeclOrder &PO) const
>> {}
>>
>> -  SourceLocation getAtStartLoc() const { return AtStart; }
>> -  void setAtStartLoc(SourceLocation Loc) { AtStart = Loc; }
>> +  SourceLocation getAtStartLoc() const { return
>> ObjCContainerDeclBits.AtStart; }
>>
>> -  // Marks the end of the container.
>> -  SourceRange getAtEndRange() const {
>> -    return AtEnd;
>> +  void setAtStartLoc(SourceLocation Loc) {
>> +    ObjCContainerDeclBits.AtStart = Loc;
>>    }
>>
>> -  void setAtEndRange(SourceRange atEnd) {
>> -    AtEnd = atEnd;
>> -  }
>> +  // Marks the end of the container.
>> +  SourceRange getAtEndRange() const { return AtEnd; }
>> +
>> +  void setAtEndRange(SourceRange atEnd) { AtEnd = atEnd; }
>>
>>    SourceRange getSourceRange() const override LLVM_READONLY {
>> -    return SourceRange(AtStart, getAtEndRange().getEnd());
>> +    return SourceRange(getAtStartLoc(), getAtEndRange().getEnd());
>>    }
>>
>>    // Implement isa/cast/dyncast/etc.
>>
>> Modified: cfe/trunk/lib/AST/DeclObjC.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclObjC.cpp?rev=338641&r1=338640&r2=338641&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/AST/DeclObjC.cpp (original)
>> +++ cfe/trunk/lib/AST/DeclObjC.cpp Wed Aug  1 14:31:08 2018
>> @@ -65,6 +65,13 @@ void ObjCProtocolList::set(ObjCProtocolD
>>  // ObjCInterfaceDecl
>>
>>  //===----------------------------------------------------------------------===//
>>
>> +ObjCContainerDecl::ObjCContainerDecl(Kind DK, DeclContext *DC,
>> +                                     IdentifierInfo *Id, SourceLocation
>> nameLoc,
>> +                                     SourceLocation atStartLoc)
>> +    : NamedDecl(DK, DC, nameLoc, Id), DeclContext(DK) {
>> +  setAtStartLoc(atStartLoc);
>> +}
>> +
>>  void ObjCContainerDecl::anchor() {}
>>
>>  /// getIvarDecl - This method looks up an ivar in this ContextDecl.
>> @@ -769,6 +776,44 @@ ObjCMethodDecl *ObjCInterfaceDecl::looku
>>  // ObjCMethodDecl
>>
>>  //===----------------------------------------------------------------------===//
>>
>> +ObjCMethodDecl::ObjCMethodDecl(SourceLocation beginLoc, SourceLocation
>> endLoc,
>> +                               Selector SelInfo, QualType T,
>> +                               TypeSourceInfo *ReturnTInfo,
>> +                               DeclContext *contextDecl, bool isInstance,
>> +                               bool isVariadic, bool isPropertyAccessor,
>> +                               bool isImplicitlyDeclared, bool isDefined,
>> +                               ImplementationControl impControl,
>> +                               bool HasRelatedResultType)
>> +    : NamedDecl(ObjCMethod, contextDecl, beginLoc, SelInfo),
>> +      DeclContext(ObjCMethod), MethodDeclType(T),
>> ReturnTInfo(ReturnTInfo),
>> +      DeclEndLoc(endLoc) {
>> +  // See the comment in ObjCMethodFamilyBitfields about
>> +  // ObjCMethodFamilyBitWidth for why we check this.
>> +  static_assert(
>> +      static_cast<unsigned>(ObjCMethodDeclBits.ObjCMethodFamilyBitWidth)
>> ==
>> +          static_cast<unsigned>(ObjCMethodFamilyBitWidth),
>> +      "ObjCMethodDeclBitfields::ObjCMethodFamilyBitWidth and "
>> +      "ObjCMethodFamilyBitWidth do not match!");
>> +
>> +  // Initialized the bits stored in DeclContext.
>> +  ObjCMethodDeclBits.Family =
>> +      static_cast<ObjCMethodFamily>(InvalidObjCMethodFamily);
>> +  setInstanceMethod(isInstance);
>> +  setVariadic(isVariadic);
>> +  setPropertyAccessor(isPropertyAccessor);
>> +  setDefined(isDefined);
>> +  setIsRedeclaration(false);
>> +  setHasRedeclaration(false);
>> +  setDeclImplementation(impControl);
>> +  setObjCDeclQualifier(OBJC_TQ_None);
>> +  setRelatedResultType(HasRelatedResultType);
>> +  setSelLocsKind(SelLoc_StandardNoSpace);
>> +  setOverriding(false);
>> +  setHasSkippedBody(false);
>> +
>> +  setImplicit(isImplicitlyDeclared);
>> +}
>> +
>>  ObjCMethodDecl *ObjCMethodDecl::Create(
>>      ASTContext &C, SourceLocation beginLoc, SourceLocation endLoc,
>>      Selector SelInfo, QualType T, TypeSourceInfo *ReturnTInfo,
>> @@ -810,8 +855,8 @@ Stmt *ObjCMethodDecl::getBody() const {
>>  void ObjCMethodDecl::setAsRedeclaration(const ObjCMethodDecl
>> *PrevMethod) {
>>    assert(PrevMethod);
>>    getASTContext().setObjCMethodRedeclaration(PrevMethod, this);
>> -  IsRedeclaration = true;
>> -  PrevMethod->HasRedeclaration = true;
>> +  setIsRedeclaration(true);
>> +  PrevMethod->setHasRedeclaration(true);
>>  }
>>
>>  void ObjCMethodDecl::setParamsAndSelLocs(ASTContext &C,
>> @@ -846,9 +891,9 @@ void ObjCMethodDecl::setMethodParams(AST
>>    if (isImplicit())
>>      return setParamsAndSelLocs(C, Params, llvm::None);
>>
>> -  SelLocsKind = hasStandardSelectorLocs(getSelector(), SelLocs, Params,
>> -                                        DeclEndLoc);
>> -  if (SelLocsKind != SelLoc_NonStandard)
>> +  setSelLocsKind(hasStandardSelectorLocs(getSelector(), SelLocs, Params,
>> +                                        DeclEndLoc));
>> +  if (getSelLocsKind() != SelLoc_NonStandard)
>>      return setParamsAndSelLocs(C, Params, llvm::None);
>>
>>    setParamsAndSelLocs(C, Params, SelLocs);
>> @@ -860,7 +905,7 @@ void ObjCMethodDecl::setMethodParams(AST
>>  ObjCMethodDecl *ObjCMethodDecl::getNextRedeclarationImpl() {
>>    ASTContext &Ctx = getASTContext();
>>    ObjCMethodDecl *Redecl = nullptr;
>> -  if (HasRedeclaration)
>> +  if (hasRedeclaration())
>>      Redecl =
>> const_cast<ObjCMethodDecl*>(Ctx.getObjCMethodRedeclaration(this));
>>    if (Redecl)
>>      return Redecl;
>> @@ -938,7 +983,7 @@ SourceLocation ObjCMethodDecl::getLocEnd
>>  }
>>
>>  ObjCMethodFamily ObjCMethodDecl::getMethodFamily() const {
>> -  auto family = static_cast<ObjCMethodFamily>(Family);
>> +  auto family = static_cast<ObjCMethodFamily>(ObjCMethodDeclBits.Family);
>>    if (family != static_cast<unsigned>(InvalidObjCMethodFamily))
>>      return family;
>>
>> @@ -954,7 +999,7 @@ ObjCMethodFamily ObjCMethodDecl::getMeth
>>      case ObjCMethodFamilyAttr::OMF_mutableCopy: family =
>> OMF_mutableCopy; break;
>>      case ObjCMethodFamilyAttr::OMF_new: family = OMF_new; break;
>>      }
>> -    Family = static_cast<unsigned>(family);
>> +    ObjCMethodDeclBits.Family = family;
>>      return family;
>>    }
>>
>> @@ -1025,7 +1070,7 @@ ObjCMethodFamily ObjCMethodDecl::getMeth
>>    }
>>
>>    // Cache the result.
>> -  Family = static_cast<unsigned>(family);
>> +  ObjCMethodDeclBits.Family = family;
>>    return family;
>>  }
>>
>>
>> Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=338641&r1=338640&r2=338641&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Wed Aug  1 14:31:08 2018
>> @@ -4351,7 +4351,7 @@ void Sema::CheckObjCMethodOverrides(ObjC
>>
>>      // Propagate down the 'related result type' bit from overridden
>> methods.
>>      if (RTC != Sema::RTC_Incompatible &&
>> overridden->hasRelatedResultType())
>> -      ObjCMethod->SetRelatedResultType();
>> +      ObjCMethod->setRelatedResultType();
>>
>>      // Then merge the declarations.
>>      mergeObjCMethodDecls(ObjCMethod, overridden);
>> @@ -4746,7 +4746,7 @@ Decl *Sema::ActOnMethodDeclaration(
>>
>>      if (InferRelatedResultType &&
>>          !ObjCMethod->getReturnType()->isObjCIndependentClassType())
>> -      ObjCMethod->SetRelatedResultType();
>> +      ObjCMethod->setRelatedResultType();
>>    }
>>
>>    if (MethodDefinition &&
>>
>> Modified: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderDecl.cpp?rev=338641&r1=338640&r2=338641&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Serialization/ASTReaderDecl.cpp (original)
>> +++ cfe/trunk/lib/Serialization/ASTReaderDecl.cpp Wed Aug  1 14:31:08 2018
>> @@ -1007,18 +1007,18 @@ void ASTDeclReader::VisitObjCMethodDecl(
>>    MD->setVariadic(Record.readInt());
>>    MD->setPropertyAccessor(Record.readInt());
>>    MD->setDefined(Record.readInt());
>> -  MD->IsOverriding = Record.readInt();
>> -  MD->HasSkippedBody = Record.readInt();
>> +  MD->setOverriding(Record.readInt());
>> +  MD->setHasSkippedBody(Record.readInt());
>>
>> -  MD->IsRedeclaration = Record.readInt();
>> -  MD->HasRedeclaration = Record.readInt();
>> -  if (MD->HasRedeclaration)
>> +  MD->setIsRedeclaration(Record.readInt());
>> +  MD->setHasRedeclaration(Record.readInt());
>> +  if (MD->hasRedeclaration())
>>      Reader.getContext().setObjCMethodRedeclaration(MD,
>>                                         ReadDeclAs<ObjCMethodDecl>());
>>
>>
>>  MD->setDeclImplementation((ObjCMethodDecl::ImplementationControl)Record.readInt());
>>    MD->setObjCDeclQualifier((Decl::ObjCDeclQualifier)Record.readInt());
>> -  MD->SetRelatedResultType(Record.readInt());
>> +  MD->setRelatedResultType(Record.readInt());
>>    MD->setReturnType(Record.readType());
>>    MD->setReturnTypeSourceInfo(GetTypeSourceInfo());
>>    MD->DeclEndLoc = ReadSourceLocation();
>> @@ -1028,7 +1028,7 @@ void ASTDeclReader::VisitObjCMethodDecl(
>>    for (unsigned I = 0; I != NumParams; ++I)
>>      Params.push_back(ReadDeclAs<ParmVarDecl>());
>>
>> -  MD->SelLocsKind = Record.readInt();
>> +  MD->setSelLocsKind((SelectorLocationsKind)Record.readInt());
>>    unsigned NumStoredSelLocs = Record.readInt();
>>    SmallVector<SourceLocation, 16> SelLocs;
>>    SelLocs.reserve(NumStoredSelLocs);
>>
>> Modified: cfe/trunk/lib/Serialization/ASTWriterDecl.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterDecl.cpp?rev=338641&r1=338640&r2=338641&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Serialization/ASTWriterDecl.cpp (original)
>> +++ cfe/trunk/lib/Serialization/ASTWriterDecl.cpp Wed Aug  1 14:31:08 2018
>> @@ -647,12 +647,12 @@ void ASTDeclWriter::VisitObjCMethodDecl(
>>    Record.push_back(D->isVariadic());
>>    Record.push_back(D->isPropertyAccessor());
>>    Record.push_back(D->isDefined());
>> -  Record.push_back(D->IsOverriding);
>> -  Record.push_back(D->HasSkippedBody);
>> +  Record.push_back(D->isOverriding());
>> +  Record.push_back(D->hasSkippedBody());
>>
>> -  Record.push_back(D->IsRedeclaration);
>> -  Record.push_back(D->HasRedeclaration);
>> -  if (D->HasRedeclaration) {
>> +  Record.push_back(D->isRedeclaration());
>> +  Record.push_back(D->hasRedeclaration());
>> +  if (D->hasRedeclaration()) {
>>      assert(Context.getObjCMethodRedeclaration(D));
>>      Record.AddDeclRef(Context.getObjCMethodRedeclaration(D));
>>    }
>> @@ -669,7 +669,7 @@ void ASTDeclWriter::VisitObjCMethodDecl(
>>    for (const auto *P : D->parameters())
>>      Record.AddDeclRef(P);
>>
>> -  Record.push_back(D->SelLocsKind);
>> +  Record.push_back(D->getSelLocsKind());
>>    unsigned NumStoredSelLocs = D->getNumStoredSelLocs();
>>    SourceLocation *SelLocs = D->getStoredSelLocs();
>>    Record.push_back(NumStoredSelLocs);
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180801/4848bad8/attachment-0001.html>


More information about the cfe-commits mailing list