Author: pcc Date: Fri May 18 12:46:24 2018 New Revision: 332757 URL: http://llvm.org/viewvc/llvm-project?rev=332757&view=rev Log: Support: Simplify endian stream interface. NFCI.
Provide some free functions to reduce verbosity of endian-writing a single value, and replace the endianness template parameter with a field. Part of PR37466. Differential Revision: https://reviews.llvm.org/D47032 Modified: cfe/trunk/lib/Frontend/CacheTokens.cpp cfe/trunk/lib/Serialization/ASTWriter.cpp cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h Modified: cfe/trunk/lib/Frontend/CacheTokens.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CacheTokens.cpp?rev=332757&r1=332756&r2=332757&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CacheTokens.cpp (original) +++ cfe/trunk/lib/Frontend/CacheTokens.cpp Fri May 18 12:46:24 2018 @@ -88,7 +88,7 @@ public: void EmitData(raw_ostream& Out) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); switch (Kind) { case IsFE: { // Emit stat information. @@ -135,7 +135,7 @@ public: EmitKeyDataLength(raw_ostream& Out, PTHEntryKeyVariant V, const PTHEntry& E) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); unsigned n = V.getString().size() + 1 + 1; LE.write<uint16_t>(n); @@ -149,7 +149,7 @@ public: static void EmitKey(raw_ostream& Out, PTHEntryKeyVariant V, unsigned n){ using namespace llvm::support; // Emit the entry kind. - endian::Writer<little>(Out).write<uint8_t>((unsigned)V.getKind()); + Out << char(V.getKind()); // Emit the string. Out.write(V.getString().data(), n - 1); } @@ -157,7 +157,7 @@ public: static void EmitData(raw_ostream& Out, PTHEntryKeyVariant V, const PTHEntry& E, unsigned) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); // For file entries emit the offsets into the PTH file for token data // and the preprocessor blocks table. @@ -205,18 +205,17 @@ class PTHWriter { void EmitToken(const Token& T); void Emit8(uint32_t V) { - using namespace llvm::support; - endian::Writer<little>(Out).write<uint8_t>(V); + Out << char(V); } void Emit16(uint32_t V) { using namespace llvm::support; - endian::Writer<little>(Out).write<uint16_t>(V); + endian::write<uint16_t>(Out, V, little); } void Emit32(uint32_t V) { using namespace llvm::support; - endian::Writer<little>(Out).write<uint32_t>(V); + endian::write<uint32_t>(Out, V, little); } void EmitBuf(const char *Ptr, unsigned NumBytes) { @@ -225,7 +224,7 @@ class PTHWriter { void EmitString(StringRef V) { using namespace llvm::support; - endian::Writer<little>(Out).write<uint16_t>(V.size()); + endian::write<uint16_t>(Out, V.size(), little); EmitBuf(V.data(), V.size()); } @@ -299,7 +298,7 @@ PTHEntry PTHWriter::LexTokens(Lexer& L) // Pad 0's so that we emit tokens to a 4-byte alignment. // This speed up reading them back in. using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); uint32_t TokenOff = Out.tell(); for (uint64_t N = llvm::OffsetToAlignment(TokenOff, 4); N; --N, ++TokenOff) LE.write<uint8_t>(0); @@ -632,7 +631,7 @@ public: EmitKeyDataLength(raw_ostream& Out, const PTHIdKey* key, uint32_t) { using namespace llvm::support; unsigned n = key->II->getLength() + 1; - endian::Writer<little>(Out).write<uint16_t>(n); + endian::write<uint16_t>(Out, n, little); return std::make_pair(n, sizeof(uint32_t)); } @@ -646,7 +645,7 @@ public: static void EmitData(raw_ostream& Out, PTHIdKey*, uint32_t pID, unsigned) { using namespace llvm::support; - endian::Writer<little>(Out).write<uint32_t>(pID); + endian::write<uint32_t>(Out, pID, little); } }; } // end anonymous namespace Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=332757&r1=332756&r2=332757&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original) +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Fri May 18 12:46:24 2018 @@ -1955,7 +1955,7 @@ namespace { EmitKeyDataLength(raw_ostream& Out, key_type_ref key, data_type_ref Data) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); unsigned KeyLen = key.Filename.size() + 1 + 8 + 8; LE.write<uint16_t>(KeyLen); unsigned DataLen = 1 + 2 + 4 + 4; @@ -1971,7 +1971,7 @@ namespace { void EmitKey(raw_ostream& Out, key_type_ref key, unsigned KeyLen) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); LE.write<uint64_t>(key.Size); KeyLen -= 8; LE.write<uint64_t>(key.ModTime); @@ -1983,7 +1983,7 @@ namespace { data_type_ref Data, unsigned DataLen) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); uint64_t Start = Out.tell(); (void)Start; unsigned char Flags = (Data.HFI.isImport << 5) @@ -2153,7 +2153,7 @@ void ASTWriter::WriteHeaderSearch(const llvm::raw_svector_ostream Out(TableData); // Make sure that no bucket is at offset 0 - endian::Writer<little>(Out).write<uint32_t>(0); + endian::write<uint32_t>(Out, 0, little); BucketOffset = Generator.Emit(Out, GeneratorTrait); } @@ -3292,7 +3292,7 @@ public: data_type_ref Methods) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); unsigned KeyLen = 2 + (Sel.getNumArgs()? Sel.getNumArgs() * 4 : 4); LE.write<uint16_t>(KeyLen); unsigned DataLen = 4 + 2 + 2; // 2 bytes for each of the method counts @@ -3311,7 +3311,7 @@ public: void EmitKey(raw_ostream& Out, Selector Sel, unsigned) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); uint64_t Start = Out.tell(); assert((Start >> 32) == 0 && "Selector key offset too large"); Writer.SetSelectorOffset(Sel, Start); @@ -3328,7 +3328,7 @@ public: data_type_ref Methods, unsigned DataLen) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); uint64_t Start = Out.tell(); (void)Start; LE.write<uint32_t>(Methods.ID); unsigned NumInstanceMethods = 0; @@ -3440,7 +3440,7 @@ void ASTWriter::WriteSelectors(Sema &Sem ASTMethodPoolTrait Trait(*this); llvm::raw_svector_ostream Out(MethodPool); // Make sure that no bucket is at offset 0 - endian::Writer<little>(Out).write<uint32_t>(0); + endian::write<uint32_t>(Out, 0, little); BucketOffset = Generator.Emit(Out, Trait); } @@ -3622,7 +3622,7 @@ public: using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); assert((uint16_t)DataLen == DataLen && (uint16_t)KeyLen == KeyLen); LE.write<uint16_t>(DataLen); @@ -3651,7 +3651,7 @@ public: IdentID ID, unsigned) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); auto MacroOffset = Writer.getMacroDirectivesOffset(II); if (!isInterestingIdentifier(II, MacroOffset)) { @@ -3755,7 +3755,7 @@ void ASTWriter::WriteIdentifierTable(Pre llvm::raw_svector_ostream Out(IdentifierTable); // Make sure that no bucket is at offset 0 - endian::Writer<little>(Out).write<uint32_t>(0); + endian::write<uint32_t>(Out, 0, little); BucketOffset = Generator.Emit(Out, Trait); } @@ -3851,8 +3851,7 @@ public: using namespace llvm::support; - endian::Writer<little>(Out) - .write<uint32_t>(Writer.getChain()->getModuleFileID(F)); + endian::write<uint32_t>(Out, Writer.getChain()->getModuleFileID(F), little); } std::pair<unsigned, unsigned> EmitKeyDataLength(raw_ostream &Out, @@ -3860,7 +3859,7 @@ public: data_type_ref Lookup) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); unsigned KeyLen = 1; switch (Name.getKind()) { case DeclarationName::Identifier: @@ -3894,7 +3893,7 @@ public: void EmitKey(raw_ostream &Out, DeclarationNameKey Name, unsigned) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); LE.write<uint8_t>(Name.getKind()); switch (Name.getKind()) { case DeclarationName::Identifier: @@ -3926,7 +3925,7 @@ public: unsigned DataLen) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); uint64_t Start = Out.tell(); (void)Start; for (unsigned I = Lookup.first, N = Lookup.second; I != N; ++I) LE.write<uint32_t>(DeclIDs[I]); @@ -4921,7 +4920,7 @@ ASTFileSignature ASTWriter::WriteASTCore for (ModuleFile &M : Chain->ModuleMgr) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); LE.write<uint8_t>(static_cast<uint8_t>(M.Kind)); StringRef Name = M.Kind == MK_PrebuiltModule || M.Kind == MK_ExplicitModule Modified: cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp?rev=332757&r1=332756&r2=332757&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp (original) +++ cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp Fri May 18 12:46:24 2018 @@ -703,7 +703,7 @@ public: std::pair<unsigned,unsigned> EmitKeyDataLength(raw_ostream& Out, key_type_ref Key, data_type_ref Data) { using namespace llvm::support; - endian::Writer<little> LE(Out); + endian::Writer LE(Out, little); unsigned KeyLen = Key.size(); unsigned DataLen = Data.size() * 4; LE.write<uint16_t>(KeyLen); @@ -719,7 +719,7 @@ public: unsigned DataLen) { using namespace llvm::support; for (unsigned I = 0, N = Data.size(); I != N; ++I) - endian::Writer<little>(Out).write<uint32_t>(Data[I]); + endian::write<uint32_t>(Out, Data[I], little); } }; @@ -797,7 +797,7 @@ bool GlobalModuleIndexBuilder::writeInde using namespace llvm::support; llvm::raw_svector_ostream Out(IdentifierTable); // Make sure that no bucket is at offset 0 - endian::Writer<little>(Out).write<uint32_t>(0); + endian::write<uint32_t>(Out, 0, little); BucketOffset = Generator.Emit(Out, Trait); } Modified: cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h?rev=332757&r1=332756&r2=332757&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h (original) +++ cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h Fri May 18 12:46:24 2018 @@ -312,7 +312,7 @@ public: // Write our header information. { - endian::Writer<little> Writer(OutStream); + endian::Writer Writer(OutStream, little); // Reserve four bytes for the bucket offset. Writer.write<uint32_t>(0); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits