diff options
| author | Aaron Ballman <aaron@aaronballman.com> | 2013-12-04 22:23:43 +0000 |
|---|---|---|
| committer | Aaron Ballman <aaron@aaronballman.com> | 2013-12-04 22:23:43 +0000 |
| commit | b4c112338ff9fc58248dff97862835540430e9a1 (patch) | |
| tree | 3671aad3fa656701c27f7fd9410d6de0fc00354d | |
| parent | f8790646b2820d6c5db13c65a820f8d6936d1c0b (diff) | |
| download | bcm5719-llvm-b4c112338ff9fc58248dff97862835540430e9a1.tar.gz bcm5719-llvm-b4c112338ff9fc58248dff97862835540430e9a1.zip | |
The MSP430Interrupt attribute does have a sema handler (it's in TargetAttributesSema). Added a FIXME about the attribute being nameless when it really does have a valid name, and a comment explaining why we're using the name instead of the attribute kind.
llvm-svn: 196420
| -rw-r--r-- | clang/include/clang/Basic/Attr.td | 6 | ||||
| -rw-r--r-- | clang/lib/Sema/TargetAttributesSema.cpp | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index ff4050d462e..3f42c2e154e 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -515,9 +515,13 @@ def MSABI : InheritableAttr { } def MSP430Interrupt : InheritableAttr, TargetSpecificAttr { + // FIXME: this attribute is spelled the same as the ARMInterrupt attribute, + // but two attributes cannot currently share the same name because of the + // getAttrKind function. However, in this case, the attributes are for + // different targets, so sharing the same name but different arguments is a + // reasonable design. For now, this attribute will remain having no spelling. let Spellings = []; let Args = [UnsignedArgument<"Number">]; - let SemaHandler = 0; } def Mips16 : InheritableAttr, TargetSpecificAttr { diff --git a/clang/lib/Sema/TargetAttributesSema.cpp b/clang/lib/Sema/TargetAttributesSema.cpp index 1469e1247f6..034e460eeb2 100644 --- a/clang/lib/Sema/TargetAttributesSema.cpp +++ b/clang/lib/Sema/TargetAttributesSema.cpp @@ -108,6 +108,8 @@ namespace { MSP430AttributesSema() { } bool ProcessDeclAttribute(Scope *scope, Decl *D, const AttributeList &Attr, Sema &S) const { + // Because this attribute has no spelling (see the FIXME in Attr.td as to + // why), we must check for the name instead of the attribute kind. if (Attr.getName()->getName() == "interrupt") { HandleMSP430InterruptAttr(D, Attr, S); return true; |

