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