tsan: fix unaligned memory access routine

It was possimitically handling an aligned 8-byte access as 2 4-byte accesses.

llvm-svn: 215546
This commit is contained in:
Dmitry Vyukov 2014-08-13 13:20:23 +00:00
parent 87cc652651
commit 5f86aaa27b
1 changed files with 3 additions and 3 deletions

View File

@ -605,13 +605,13 @@ void UnalignedMemoryAccess(ThreadState *thr, uptr pc, uptr addr,
while (size) {
int size1 = 1;
int kAccessSizeLog = kSizeLog1;
if (size >= 8 && (addr & ~7) == ((addr + 8) & ~7)) {
if (size >= 8 && (addr & ~7) == ((addr + 7) & ~7)) {
size1 = 8;
kAccessSizeLog = kSizeLog8;
} else if (size >= 4 && (addr & ~7) == ((addr + 4) & ~7)) {
} else if (size >= 4 && (addr & ~7) == ((addr + 3) & ~7)) {
size1 = 4;
kAccessSizeLog = kSizeLog4;
} else if (size >= 2 && (addr & ~7) == ((addr + 2) & ~7)) {
} else if (size >= 2 && (addr & ~7) == ((addr + 1) & ~7)) {
size1 = 2;
kAccessSizeLog = kSizeLog2;
}