P4 to Git Change 1288111 by jsjodin@jsjodin-git2p4-llvm on 2016/07/06 18:20:21

SWDEV-3 - [msan] Fix __msan_maybe_ for non-standard type sizes.

	Fix incorrect calculation of the type size for __msan_maybe_warning_N
	call that resulted in an invalid (narrowing) zext instruction and
	\"Assertion `castIsValid(op, S, Ty) && \"Invalid cast!\"' failed.\"

	Only happens in very large functions (with more than 3500 MSan
	checks) operating on integer types that are not power-of-two.

	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274395 91177308-0d34-0410-b5e6-96231b3b80d8

	GitHash: dcfa1b5241a1d0484ad1a67485329b1c7c13b575

Affected files ...

... //depot/stg/opencl/drivers/opencl/compiler/llvm.git/lib/Transforms/Instrumentation/MemorySanitizer.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm.git/test/Instrumentation/MemorySanitizer/with-call-type-size.ll#1 add
This commit is contained in:
foreman
2016-07-07 03:40:09 -04:00
parent 476d5fff29
commit 89153addab
7 changed files with 82 additions and 90 deletions
+7 -5
View File
@@ -1072,10 +1072,9 @@ Resource::free()
void
Resource::writeRawData(
VirtualGPU& gpu,
size_t offset,
size_t size,
size_t size,
const void* data,
bool waitForEvent) const
bool waitForEvent) const
{
GpuEvent event;
@@ -1083,8 +1082,11 @@ Resource::writeRawData(
// size needs to be DWORD aligned
assert((size & 3) == 0);
gpu.eventBegin(MainEngine);
//! @todo Remove cache flush
//! It's a workaround for a PAL crash with embedded data, allocated before any command
gpu.flushCUCaches();
gpu.queue(MainEngine).addCmdMemRef(iMem());
gpu.iCmd()->CmdUpdateMemory(*iMem(), offset, size, reinterpret_cast<const uint32_t*>(data));
gpu.iCmd()->CmdUpdateMemory(*iMem(), 0, size, reinterpret_cast<const uint32_t*>(data));
gpu.eventEnd(MainEngine, event);
setBusy(gpu, event);
@@ -1936,7 +1938,7 @@ Resource::warmUpRenames(VirtualGPU& gpu)
uint dummy = 0;
const bool NoWait = false;
// Write 0 for the buffer paging by VidMM
writeRawData(gpu, 0, sizeof(dummy), &dummy, NoWait);
writeRawData(gpu, sizeof(dummy), &dummy, NoWait);
const bool Force = true;
rename(gpu, Force);
}