[cfe-commits] r70039 - in /cfe/trunk/lib/Frontend: PCHReader.cpp PCHWriter.cpp
Steve Naroff
snaroff at apple.com
Sat Apr 25 05:07:32 PDT 2009
Author: snaroff
Date: Sat Apr 25 07:07:12 2009
New Revision: 70039
URL: http://llvm.org/viewvc/llvm-project?rev=70039&view=rev
Log:
Fix a major bug in PCHReader::ReadSelectorBlock().
Also simplify some syntax in PCHWriter::WritePreprocessor(), suggested by Chris.
Modified:
cfe/trunk/lib/Frontend/PCHReader.cpp
cfe/trunk/lib/Frontend/PCHWriter.cpp
Modified: cfe/trunk/lib/Frontend/PCHReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReader.cpp?rev=70039&r1=70038&r2=70039&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PCHReader.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHReader.cpp Sat Apr 25 07:07:12 2009
@@ -1750,14 +1750,15 @@
for (unsigned SelIdx = 0; SelIdx < NumSels; SelIdx++) {
unsigned NumArgs = Record[Idx++];
KeyIdents.clear();
- if (NumArgs <= 1) {
+ if (NumArgs == 0) {
+ // If the number of arguments is 0, the we must have an Identifier.
IdentifierInfo *II = DecodeIdentifierInfo(Record[Idx++]);
assert(II && "DecodeIdentifierInfo returned 0");
KeyIdents.push_back(II);
} else {
+ // For keyword selectors, the Identifier is optional (::: is legal!).
for (unsigned ArgIdx = 0; ArgIdx < NumArgs; ++ArgIdx) {
IdentifierInfo *II = DecodeIdentifierInfo(Record[Idx++]);
- assert(II && "DecodeIdentifierInfo returned 0");
KeyIdents.push_back(II);
}
}
Modified: cfe/trunk/lib/Frontend/PCHWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHWriter.cpp?rev=70039&r1=70038&r2=70039&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PCHWriter.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHWriter.cpp Sat Apr 25 07:07:12 2009
@@ -1554,11 +1554,11 @@
for (HeaderSearch::header_file_iterator I = HS.header_file_begin(),
E = HS.header_file_end();
I != E; ++I) {
- Record.push_back((*I).isImport);
- Record.push_back((*I).DirInfo);
- Record.push_back((*I).NumIncludes);
- if ((*I).ControllingMacro)
- AddIdentifierRef((*I).ControllingMacro, Record);
+ Record.push_back(I->isImport);
+ Record.push_back(I->DirInfo);
+ Record.push_back(I->NumIncludes);
+ if (I->ControllingMacro)
+ AddIdentifierRef(I->ControllingMacro, Record);
else
Record.push_back(0);
Stream.EmitRecord(pch::PP_HEADER_FILE_INFO, Record);
More information about the cfe-commits
mailing list