diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2010-01-10 12:58:08 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2010-01-10 12:58:08 +0000 |
commit | 55bcea1e65ea97efb782314605f01e3bca9706d0 (patch) | |
tree | be67c9ed2f95facf346be289e231b9b2dba78c52 /clang/lib/Frontend | |
parent | 89b14a4309ec7c59a0dbb748aef088a661edbfe4 (diff) | |
download | bcm5719-llvm-55bcea1e65ea97efb782314605f01e3bca9706d0.tar.gz bcm5719-llvm-55bcea1e65ea97efb782314605f01e3bca9706d0.zip |
Generalize target weirdness handling having proper layering in mind:
1. Add helper class for sema checks for target attributes
2. Add helper class for codegen of target attributes
As a proof-of-concept - implement msp430's 'interrupt' attribute.
llvm-svn: 93118
Diffstat (limited to 'clang/lib/Frontend')
-rw-r--r-- | clang/lib/Frontend/PCHReaderDecl.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Frontend/PCHReaderDecl.cpp b/clang/lib/Frontend/PCHReaderDecl.cpp index 91568f182da..69343ed48c4 100644 --- a/clang/lib/Frontend/PCHReaderDecl.cpp +++ b/clang/lib/Frontend/PCHReaderDecl.cpp @@ -438,6 +438,9 @@ Attr *PCHReader::ReadAttributes() { bool IsInherited = Record[Idx++]; switch (Kind) { + default: + assert(0 && "Unknown attribute!"); + break; STRING_ATTR(Alias); UNSIGNED_ATTR(Aligned); SIMPLE_ATTR(AlwaysInline); diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index 39e5d6f46bf..84a8a450b0c 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -1739,9 +1739,12 @@ void PCHWriter::WriteIdentifierTable(Preprocessor &PP) { void PCHWriter::WriteAttributeRecord(const Attr *Attr) { RecordData Record; for (; Attr; Attr = Attr->getNext()) { - Record.push_back(Attr->getKind()); // FIXME: stable encoding + Record.push_back(Attr->getKind()); // FIXME: stable encoding, target attrs Record.push_back(Attr->isInherited()); switch (Attr->getKind()) { + default: + assert(0 && "Does not support PCH writing for this attribute yet!"); + break; case Attr::Alias: AddString(cast<AliasAttr>(Attr)->getAliasee(), Record); break; |