diff options
author | Justin Bogner <mail@justinbogner.com> | 2015-06-21 20:32:40 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2015-06-21 20:32:40 +0000 |
commit | 4c18324b8b5d0eaa1199634e3809ee52f7a851a0 (patch) | |
tree | f71527126ff6ed24ab482420c22449f1e9eacac0 /clang/lib/Serialization | |
parent | ca9c0ccbc03716701ea4b87f1e509e1c87ab17d4 (diff) | |
download | bcm5719-llvm-4c18324b8b5d0eaa1199634e3809ee52f7a851a0.tar.gz bcm5719-llvm-4c18324b8b5d0eaa1199634e3809ee52f7a851a0.zip |
ASTReader: Treat InputFileOffsets as unaligned to avoid UB
This is a better approach to fixing the undefined behaviour I tried to
fix in r240228. This data doesn't necessarily have suitable alignment
for uint64_t, so use unaligned_uint64_t instead.
This fixes 225 test failures when clang is built with ubsan.
llvm-svn: 240247
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index d75b5eb73d5..7242793be22 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2307,7 +2307,8 @@ ASTReader::ReadControlBlock(ModuleFile &F, case INPUT_FILE_OFFSETS: NumInputs = Record[0]; NumUserInputs = Record[1]; - F.InputFileOffsets = (const uint64_t *)Blob.data(); + F.InputFileOffsets = + (const llvm::support::unaligned_uint64_t *)Blob.data(); F.InputFilesLoaded.resize(NumInputs); break; } |