diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp | 74 |
1 files changed, 21 insertions, 53 deletions
diff --git a/contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp b/contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp index d31b12e..1bf10d2 100644 --- a/contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp +++ b/contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp @@ -51,6 +51,7 @@ public: typedef SmallVector<uint64_t, 64> RecordData; typedef SmallVectorImpl<uint64_t> RecordDataImpl; +typedef ArrayRef<uint64_t> RecordDataRef; class SDiagsWriter; @@ -393,13 +394,9 @@ unsigned SDiagsWriter::getEmitFile(const char *FileName){ // Lazily generate the record for the file. entry = State->Files.size(); - RecordData Record; - Record.push_back(RECORD_FILENAME); - Record.push_back(entry); - Record.push_back(0); // For legacy. - Record.push_back(0); // For legacy. StringRef Name(FileName); - Record.push_back(Name.size()); + RecordData::value_type Record[] = {RECORD_FILENAME, entry, 0 /* For legacy */, + 0 /* For legacy */, Name.size()}; State->Stream.EmitRecordWithBlob(State->Abbrevs.get(RECORD_FILENAME), Record, Name); @@ -478,7 +475,7 @@ void SDiagsWriter::EmitBlockInfoBlock() { AddSourceLocationAbbrev(Abbrev); Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 10)); // Category. Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 10)); // Mapped Diag ID. - Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Text size. + Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 16)); // Text size. Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Diagnostc text. Abbrevs.set(RECORD_DIAG, Stream.EmitBlockInfoAbbrev(BLOCK_DIAG, Abbrev)); @@ -531,14 +528,11 @@ void SDiagsWriter::EmitBlockInfoBlock() { void SDiagsWriter::EmitMetaBlock() { llvm::BitstreamWriter &Stream = State->Stream; - RecordData &Record = State->Record; AbbreviationMap &Abbrevs = State->Abbrevs; Stream.EnterSubblock(BLOCK_META, 3); - Record.clear(); - Record.push_back(RECORD_VERSION); - Record.push_back(VersionNumber); - Stream.EmitRecordWithAbbrev(Abbrevs.get(RECORD_VERSION), Record); + RecordData::value_type Record[] = {RECORD_VERSION, VersionNumber}; + Stream.EmitRecordWithAbbrev(Abbrevs.get(RECORD_VERSION), Record); Stream.ExitBlock(); } @@ -548,11 +542,8 @@ unsigned SDiagsWriter::getEmitCategory(unsigned int category) { // We use a local version of 'Record' so that we can be generating // another record when we lazily generate one for the category entry. - RecordData Record; - Record.push_back(RECORD_CATEGORY); - Record.push_back(category); StringRef catName = DiagnosticIDs::getCategoryNameFromID(category); - Record.push_back(catName.size()); + RecordData::value_type Record[] = {RECORD_CATEGORY, category, catName.size()}; State->Stream.EmitRecordWithBlob(State->Abbrevs.get(RECORD_CATEGORY), Record, catName); @@ -581,10 +572,8 @@ unsigned SDiagsWriter::getEmitDiagnosticFlag(StringRef FlagName) { entry.second = FlagName; // Lazily emit the string in a separate record. - RecordData Record; - Record.push_back(RECORD_DIAG_FLAG); - Record.push_back(entry.first); - Record.push_back(FlagName.size()); + RecordData::value_type Record[] = {RECORD_DIAG_FLAG, entry.first, + FlagName.size()}; State->Stream.EmitRecordWithBlob(State->Abbrevs.get(RECORD_DIAG_FLAG), Record, FlagName); } @@ -844,17 +833,9 @@ std::error_code SDiagsMerger::visitEndOfDiagnostic() { std::error_code SDiagsMerger::visitSourceRangeRecord(const serialized_diags::Location &Start, const serialized_diags::Location &End) { - RecordData Record; - Record.push_back(RECORD_SOURCE_RANGE); - Record.push_back(FileLookup[Start.FileID]); - Record.push_back(Start.Line); - Record.push_back(Start.Col); - Record.push_back(Start.Offset); - Record.push_back(FileLookup[End.FileID]); - Record.push_back(End.Line); - Record.push_back(End.Col); - Record.push_back(End.Offset); - + RecordData::value_type Record[] = { + RECORD_SOURCE_RANGE, FileLookup[Start.FileID], Start.Line, Start.Col, + Start.Offset, FileLookup[End.FileID], End.Line, End.Col, End.Offset}; Writer.State->Stream.EmitRecordWithAbbrev( Writer.State->Abbrevs.get(RECORD_SOURCE_RANGE), Record); return std::error_code(); @@ -863,19 +844,13 @@ SDiagsMerger::visitSourceRangeRecord(const serialized_diags::Location &Start, std::error_code SDiagsMerger::visitDiagnosticRecord( unsigned Severity, const serialized_diags::Location &Location, unsigned Category, unsigned Flag, StringRef Message) { - RecordData MergedRecord; - MergedRecord.push_back(RECORD_DIAG); - MergedRecord.push_back(Severity); - MergedRecord.push_back(FileLookup[Location.FileID]); - MergedRecord.push_back(Location.Line); - MergedRecord.push_back(Location.Col); - MergedRecord.push_back(Location.Offset); - MergedRecord.push_back(CategoryLookup[Category]); - MergedRecord.push_back(Flag ? DiagFlagLookup[Flag] : 0); - MergedRecord.push_back(Message.size()); + RecordData::value_type Record[] = { + RECORD_DIAG, Severity, FileLookup[Location.FileID], Location.Line, + Location.Col, Location.Offset, CategoryLookup[Category], + Flag ? DiagFlagLookup[Flag] : 0, Message.size()}; Writer.State->Stream.EmitRecordWithBlob( - Writer.State->Abbrevs.get(RECORD_DIAG), MergedRecord, Message); + Writer.State->Abbrevs.get(RECORD_DIAG), Record, Message); return std::error_code(); } @@ -883,17 +858,10 @@ std::error_code SDiagsMerger::visitFixitRecord(const serialized_diags::Location &Start, const serialized_diags::Location &End, StringRef Text) { - RecordData Record; - Record.push_back(RECORD_FIXIT); - Record.push_back(FileLookup[Start.FileID]); - Record.push_back(Start.Line); - Record.push_back(Start.Col); - Record.push_back(Start.Offset); - Record.push_back(FileLookup[End.FileID]); - Record.push_back(End.Line); - Record.push_back(End.Col); - Record.push_back(End.Offset); - Record.push_back(Text.size()); + RecordData::value_type Record[] = {RECORD_FIXIT, FileLookup[Start.FileID], + Start.Line, Start.Col, Start.Offset, + FileLookup[End.FileID], End.Line, End.Col, + End.Offset, Text.size()}; Writer.State->Stream.EmitRecordWithBlob( Writer.State->Abbrevs.get(RECORD_FIXIT), Record, Text); |