From ca9c0ccbc03716701ea4b87f1e509e1c87ab17d4 Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Sun, 21 Jun 2015 20:32:36 +0000 Subject: [PATCH] Revert "ASTReader: Copy input file offset data to avoid unaligned accesses" We can do this better by changing the type to unaligned_uint64_t and paying the cost on use instead of up front. This reverts r240228 llvm-svn: 240246 --- clang/include/clang/Serialization/Module.h | 2 +- clang/lib/Serialization/ASTReader.cpp | 12 ++---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/clang/include/clang/Serialization/Module.h b/clang/include/clang/Serialization/Module.h index 48715e3..5571d91 100644 --- a/clang/include/clang/Serialization/Module.h +++ b/clang/include/clang/Serialization/Module.h @@ -206,7 +206,7 @@ public: llvm::BitstreamCursor InputFilesCursor; /// \brief Offsets for all of the input file entries in the AST file. - std::vector InputFileOffsets; + const uint64_t *InputFileOffsets; /// \brief The input files that have been loaded from this AST file. std::vector InputFilesLoaded; diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index af6f92a..d75b5eb7 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2304,21 +2304,13 @@ ASTReader::ReadControlBlock(ModuleFile &F, return Result; break; - case INPUT_FILE_OFFSETS: { + case INPUT_FILE_OFFSETS: NumInputs = Record[0]; NumUserInputs = Record[1]; - F.InputFileOffsets.clear(); - F.InputFileOffsets.reserve(NumInputs); - using namespace llvm::support; - const char *Buf = Blob.data(); - for (unsigned int I = 0; I < NumInputs; ++I) - F.InputFileOffsets.push_back( - endian::readNext(Buf)); - + F.InputFileOffsets = (const uint64_t *)Blob.data(); F.InputFilesLoaded.resize(NumInputs); break; } - } } } -- 2.7.4