diff options
Diffstat (limited to 'clang/lib/Frontend/CacheTokens.cpp')
-rw-r--r-- | clang/lib/Frontend/CacheTokens.cpp | 59 |
1 files changed, 39 insertions, 20 deletions
diff --git a/clang/lib/Frontend/CacheTokens.cpp b/clang/lib/Frontend/CacheTokens.cpp index 0fca5130c5f..2cb65826ad6 100644 --- a/clang/lib/Frontend/CacheTokens.cpp +++ b/clang/lib/Frontend/CacheTokens.cpp @@ -23,6 +23,7 @@ #include "clang/Lex/Preprocessor.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringMap.h" +#include "llvm/Support/EndianStream.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" @@ -78,21 +79,23 @@ public: unsigned getKind() const { return (unsigned) Kind; } void EmitData(raw_ostream& Out) { + using namespace llvm::support; + endian::Writer<little> LE(Out); switch (Kind) { case IsFE: { // Emit stat information. llvm::sys::fs::UniqueID UID = FE->getUniqueID(); - ::Emit64(Out, UID.getFile()); - ::Emit64(Out, UID.getDevice()); - ::Emit64(Out, FE->getModificationTime()); - ::Emit64(Out, FE->getSize()); + LE.write<uint64_t>(UID.getFile()); + LE.write<uint64_t>(UID.getDevice()); + LE.write<uint64_t>(FE->getModificationTime()); + LE.write<uint64_t>(FE->getSize()); } break; case IsDE: // Emit stat information. - ::Emit64(Out, Data->UniqueID.getFile()); - ::Emit64(Out, Data->UniqueID.getDevice()); - ::Emit64(Out, Data->ModTime); - ::Emit64(Out, Data->Size); + LE.write<uint64_t>(Data->UniqueID.getFile()); + LE.write<uint64_t>(Data->UniqueID.getDevice()); + LE.write<uint64_t>(Data->ModTime); + LE.write<uint64_t>(Data->Size); delete Data; break; default: @@ -120,32 +123,36 @@ public: static std::pair<unsigned,unsigned> EmitKeyDataLength(raw_ostream& Out, PTHEntryKeyVariant V, const PTHEntry& E) { + using namespace llvm::support; + endian::Writer<little> LE(Out); unsigned n = V.getString().size() + 1 + 1; - ::Emit16(Out, n); + LE.write<uint16_t>(n); unsigned m = V.getRepresentationLength() + (V.isFile() ? 4 + 4 : 0); - ::Emit8(Out, m); + LE.write<uint8_t>(m); return std::make_pair(n, m); } static void EmitKey(raw_ostream& Out, PTHEntryKeyVariant V, unsigned n){ + using namespace llvm::support; // Emit the entry kind. - ::Emit8(Out, (unsigned) V.getKind()); + endian::Writer<little>(Out).write<uint8_t>((unsigned)V.getKind()); // Emit the string. Out.write(V.getString().data(), n - 1); } static void EmitData(raw_ostream& Out, PTHEntryKeyVariant V, const PTHEntry& E, unsigned) { - + using namespace llvm::support; + endian::Writer<little> LE(Out); // For file entries emit the offsets into the PTH file for token data // and the preprocessor blocks table. if (V.isFile()) { - ::Emit32(Out, E.getTokenOffset()); - ::Emit32(Out, E.getPPCondTableOffset()); + LE.write<uint32_t>(E.getTokenOffset()); + LE.write<uint32_t>(E.getPPCondTableOffset()); } // Emit any other data associated with the key (i.e., stat information). @@ -186,18 +193,28 @@ class PTHWriter { /// Emit a token to the PTH file. void EmitToken(const Token& T); - void Emit8(uint32_t V) { ::Emit8(Out, V); } + void Emit8(uint32_t V) { + using namespace llvm::support; + endian::Writer<little>(Out).write<uint8_t>(V); + } - void Emit16(uint32_t V) { ::Emit16(Out, V); } + void Emit16(uint32_t V) { + using namespace llvm::support; + endian::Writer<little>(Out).write<uint16_t>(V); + } - void Emit32(uint32_t V) { ::Emit32(Out, V); } + void Emit32(uint32_t V) { + using namespace llvm::support; + endian::Writer<little>(Out).write<uint32_t>(V); + } void EmitBuf(const char *Ptr, unsigned NumBytes) { Out.write(Ptr, NumBytes); } void EmitString(StringRef V) { - ::Emit16(Out, V.size()); + using namespace llvm::support; + endian::Writer<little>(Out).write<uint16_t>(V.size()); EmitBuf(V.data(), V.size()); } @@ -584,8 +601,9 @@ public: static std::pair<unsigned,unsigned> EmitKeyDataLength(raw_ostream& Out, const PTHIdKey* key, uint32_t) { + using namespace llvm::support; unsigned n = key->II->getLength() + 1; - ::Emit16(Out, n); + endian::Writer<little>(Out).write<uint16_t>(n); return std::make_pair(n, sizeof(uint32_t)); } @@ -598,7 +616,8 @@ public: static void EmitData(raw_ostream& Out, PTHIdKey*, uint32_t pID, unsigned) { - ::Emit32(Out, pID); + using namespace llvm::support; + endian::Writer<little>(Out).write<uint32_t>(pID); } }; } // end anonymous namespace |