diff options
| author | Aaron Ballman <aaron@aaronballman.com> | 2018-03-04 15:32:01 +0000 |
|---|---|---|
| committer | Aaron Ballman <aaron@aaronballman.com> | 2018-03-04 15:32:01 +0000 |
| commit | 3cfa9d1d617588bd0580ba6d62846ab9adfd5d7e (patch) | |
| tree | a3b72f00d0002bc97725ca82b4941e7f4d5736e3 | |
| parent | 8197b04b9ba5a0f0fc4c9f16426d2eb26745e612 (diff) | |
| download | bcm5719-llvm-3cfa9d1d617588bd0580ba6d62846ab9adfd5d7e.tar.gz bcm5719-llvm-3cfa9d1d617588bd0580ba6d62846ab9adfd5d7e.zip | |
Replace the custom handling for several attributes; NFC.
These attributes were only customized because of the need to check for attribute mutual exclusion, but we now have the handleSimpleAttributeWithExclusions() helper function to handle these scenarios.
llvm-svn: 326675
| -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); |

