diff options
| -rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 74 | 
1 files changed, 10 insertions, 64 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index a58726fae5f..b35c3114ff6 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -1842,22 +1842,6 @@ static void handleAliasAttr(Sema &S, Decl *D, const AttributeList &AL) {                                           AL.getAttributeSpellingListIndex()));  } -static void handleColdAttr(Sema &S, Decl *D, const AttributeList &AL) { -  if (checkAttrMutualExclusion<HotAttr>(S, D, AL.getRange(), AL.getName())) -    return; - -  D->addAttr(::new (S.Context) ColdAttr(AL.getRange(), S.Context, -                                        AL.getAttributeSpellingListIndex())); -} - -static void handleHotAttr(Sema &S, Decl *D, const AttributeList &AL) { -  if (checkAttrMutualExclusion<ColdAttr>(S, D, AL.getRange(), AL.getName())) -    return; - -  D->addAttr(::new (S.Context) HotAttr(AL.getRange(), S.Context, -                                       AL.getAttributeSpellingListIndex())); -} -  static void handleTLSModelAttr(Sema &S, Decl *D,                                 const AttributeList &AL) {    StringRef Model; @@ -2066,26 +2050,6 @@ static void handleDependencyAttr(Sema &S, Scope *Scope, Decl *D,                                     AL.getAttributeSpellingListIndex()));  } -static void handleNotTailCalledAttr(Sema &S, Decl *D, -                                    const AttributeList &AL) { -  if (checkAttrMutualExclusion<AlwaysInlineAttr>(S, D, AL.getRange(), -                                                 AL.getName())) -    return; - -  D->addAttr(::new (S.Context) NotTailCalledAttr( -      AL.getRange(), S.Context, AL.getAttributeSpellingListIndex())); -} - -static void handleDisableTailCallsAttr(Sema &S, Decl *D, -                                       const AttributeList &AL) { -  if (checkAttrMutualExclusion<NakedAttr>(S, D, AL.getRange(), -                                          AL.getName())) -    return; - -  D->addAttr(::new (S.Context) DisableTailCallsAttr( -      AL.getRange(), S.Context, AL.getAttributeSpellingListIndex())); -} -  static void handleUnusedAttr(Sema &S, Decl *D, const AttributeList &AL) {    bool IsCXX17Attr = AL.isCXX11Attribute() && !AL.getScopeName(); @@ -4807,28 +4771,6 @@ static void handleObjCRequiresSuperAttr(Sema &S, Decl *D,        Attrs.getRange(), S.Context, Attrs.getAttributeSpellingListIndex()));  } -static void handleCFAuditedTransferAttr(Sema &S, Decl *D, -                                        const AttributeList &AL) { -  if (checkAttrMutualExclusion<CFUnknownTransferAttr>(S, D, AL.getRange(), -                                                      AL.getName())) -    return; - -  D->addAttr(::new (S.Context) -             CFAuditedTransferAttr(AL.getRange(), S.Context, -                                   AL.getAttributeSpellingListIndex())); -} - -static void handleCFUnknownTransferAttr(Sema &S, Decl *D, -                                        const AttributeList &AL) { -  if (checkAttrMutualExclusion<CFAuditedTransferAttr>(S, D, AL.getRange(), -                                                      AL.getName())) -    return; - -  D->addAttr(::new (S.Context) -             CFUnknownTransferAttr(AL.getRange(), S.Context, -             AL.getAttributeSpellingListIndex())); -} -  static void handleObjCBridgeAttr(Sema &S, Decl *D, const AttributeList &AL) {    IdentifierLoc *Parm = AL.isArgIdent(0) ? AL.getArgAsIdent(0) : nullptr; @@ -6100,10 +6042,10 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,      handleOwnershipAttr(S, D, AL);      break;    case AttributeList::AT_Cold: -    handleColdAttr(S, D, AL); +    handleSimpleAttributeWithExclusions<ColdAttr, HotAttr>(S, D, AL);      break;    case AttributeList::AT_Hot: -    handleHotAttr(S, D, AL); +    handleSimpleAttributeWithExclusions<HotAttr, ColdAttr>(S, D, AL);      break;    case AttributeList::AT_Naked:      handleNakedAttr(S, D, AL); @@ -6154,10 +6096,12 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,      handleObjCBoxable(S, D, AL);      break;    case AttributeList::AT_CFAuditedTransfer: -    handleCFAuditedTransferAttr(S, D, AL); +    handleSimpleAttributeWithExclusions<CFAuditedTransferAttr, +                                        CFUnknownTransferAttr>(S, D, AL);      break;    case AttributeList::AT_CFUnknownTransfer: -    handleCFUnknownTransferAttr(S, D, AL); +    handleSimpleAttributeWithExclusions<CFUnknownTransferAttr, +                                        CFAuditedTransferAttr>(S, D, AL);      break;    case AttributeList::AT_CFConsumed:    case AttributeList::AT_NSConsumed: @@ -6225,10 +6169,12 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,      handleSimpleAttribute<ReturnsTwiceAttr>(S, D, AL);      break;    case AttributeList::AT_NotTailCalled: -    handleNotTailCalledAttr(S, D, AL); +    handleSimpleAttributeWithExclusions<NotTailCalledAttr, +                                        AlwaysInlineAttr>(S, D, AL);      break;    case AttributeList::AT_DisableTailCalls: -    handleDisableTailCallsAttr(S, D, AL); +    handleSimpleAttributeWithExclusions<DisableTailCallsAttr, +                                        NakedAttr>(S, D, AL);      break;    case AttributeList::AT_Used:      handleSimpleAttribute<UsedAttr>(S, D, AL);  | 

