forked from OSchip/llvm-project
Try to appease VS 2015 warnings from http://reviews.llvm.org/D11890
ByteSize and BitSize should not be size_t but unsigned, considering 1) They are at most 2^16 and 2^19, respectively. 2) BitSize is an argument to Type::getIntNTy which takes unsigned. Also, use the correct utostr instead itostr and cache the string result. Thanks to James Touton for reporting this! llvm-svn: 245167
This commit is contained in:
parent
40d4eb40f6
commit
dfb655fe17
|
@ -142,37 +142,35 @@ void ThreadSanitizer::initializeCallbacks(Module &M) {
|
|||
M.getOrInsertFunction("__tsan_func_exit", IRB.getVoidTy(), nullptr));
|
||||
OrdTy = IRB.getInt32Ty();
|
||||
for (size_t i = 0; i < kNumberOfAccessSizes; ++i) {
|
||||
const size_t ByteSize = 1 << i;
|
||||
const size_t BitSize = ByteSize * 8;
|
||||
SmallString<32> ReadName("__tsan_read" + itostr(ByteSize));
|
||||
const unsigned ByteSize = 1U << i;
|
||||
const unsigned BitSize = ByteSize * 8;
|
||||
std::string ByteSizeStr = utostr(ByteSize);
|
||||
std::string BitSizeStr = utostr(BitSize);
|
||||
SmallString<32> ReadName("__tsan_read" + ByteSizeStr);
|
||||
TsanRead[i] = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
ReadName, IRB.getVoidTy(), IRB.getInt8PtrTy(), nullptr));
|
||||
|
||||
SmallString<32> WriteName("__tsan_write" + itostr(ByteSize));
|
||||
SmallString<32> WriteName("__tsan_write" + ByteSizeStr);
|
||||
TsanWrite[i] = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
WriteName, IRB.getVoidTy(), IRB.getInt8PtrTy(), nullptr));
|
||||
|
||||
SmallString<64> UnalignedReadName("__tsan_unaligned_read" +
|
||||
itostr(ByteSize));
|
||||
SmallString<64> UnalignedReadName("__tsan_unaligned_read" + ByteSizeStr);
|
||||
TsanUnalignedRead[i] =
|
||||
checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
UnalignedReadName, IRB.getVoidTy(), IRB.getInt8PtrTy(), nullptr));
|
||||
|
||||
SmallString<64> UnalignedWriteName("__tsan_unaligned_write" +
|
||||
itostr(ByteSize));
|
||||
SmallString<64> UnalignedWriteName("__tsan_unaligned_write" + ByteSizeStr);
|
||||
TsanUnalignedWrite[i] =
|
||||
checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
UnalignedWriteName, IRB.getVoidTy(), IRB.getInt8PtrTy(), nullptr));
|
||||
|
||||
Type *Ty = Type::getIntNTy(M.getContext(), BitSize);
|
||||
Type *PtrTy = Ty->getPointerTo();
|
||||
SmallString<32> AtomicLoadName("__tsan_atomic" + itostr(BitSize) +
|
||||
"_load");
|
||||
SmallString<32> AtomicLoadName("__tsan_atomic" + BitSizeStr + "_load");
|
||||
TsanAtomicLoad[i] = checkSanitizerInterfaceFunction(
|
||||
M.getOrInsertFunction(AtomicLoadName, Ty, PtrTy, OrdTy, nullptr));
|
||||
|
||||
SmallString<32> AtomicStoreName("__tsan_atomic" + itostr(BitSize) +
|
||||
"_store");
|
||||
SmallString<32> AtomicStoreName("__tsan_atomic" + BitSizeStr + "_store");
|
||||
TsanAtomicStore[i] = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
AtomicStoreName, IRB.getVoidTy(), PtrTy, Ty, OrdTy, nullptr));
|
||||
|
||||
|
@ -201,7 +199,7 @@ void ThreadSanitizer::initializeCallbacks(Module &M) {
|
|||
M.getOrInsertFunction(RMWName, Ty, PtrTy, Ty, OrdTy, nullptr));
|
||||
}
|
||||
|
||||
SmallString<32> AtomicCASName("__tsan_atomic" + itostr(BitSize) +
|
||||
SmallString<32> AtomicCASName("__tsan_atomic" + BitSizeStr +
|
||||
"_compare_exchange_val");
|
||||
TsanAtomicCAS[i] = checkSanitizerInterfaceFunction(M.getOrInsertFunction(
|
||||
AtomicCASName, Ty, PtrTy, Ty, Ty, OrdTy, OrdTy, nullptr));
|
||||
|
@ -513,8 +511,8 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I, const DataLayout &DL) {
|
|||
int Idx = getMemoryAccessFuncIndex(Addr, DL);
|
||||
if (Idx < 0)
|
||||
return false;
|
||||
const size_t ByteSize = 1 << Idx;
|
||||
const size_t BitSize = ByteSize * 8;
|
||||
const unsigned ByteSize = 1U << Idx;
|
||||
const unsigned BitSize = ByteSize * 8;
|
||||
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
||||
Type *PtrTy = Ty->getPointerTo();
|
||||
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
||||
|
@ -527,8 +525,8 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I, const DataLayout &DL) {
|
|||
int Idx = getMemoryAccessFuncIndex(Addr, DL);
|
||||
if (Idx < 0)
|
||||
return false;
|
||||
const size_t ByteSize = 1 << Idx;
|
||||
const size_t BitSize = ByteSize * 8;
|
||||
const unsigned ByteSize = 1U << Idx;
|
||||
const unsigned BitSize = ByteSize * 8;
|
||||
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
||||
Type *PtrTy = Ty->getPointerTo();
|
||||
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
||||
|
@ -544,8 +542,8 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I, const DataLayout &DL) {
|
|||
Function *F = TsanAtomicRMW[RMWI->getOperation()][Idx];
|
||||
if (!F)
|
||||
return false;
|
||||
const size_t ByteSize = 1 << Idx;
|
||||
const size_t BitSize = ByteSize * 8;
|
||||
const unsigned ByteSize = 1U << Idx;
|
||||
const unsigned BitSize = ByteSize * 8;
|
||||
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
||||
Type *PtrTy = Ty->getPointerTo();
|
||||
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
||||
|
@ -558,8 +556,8 @@ bool ThreadSanitizer::instrumentAtomic(Instruction *I, const DataLayout &DL) {
|
|||
int Idx = getMemoryAccessFuncIndex(Addr, DL);
|
||||
if (Idx < 0)
|
||||
return false;
|
||||
const size_t ByteSize = 1 << Idx;
|
||||
const size_t BitSize = ByteSize * 8;
|
||||
const unsigned ByteSize = 1U << Idx;
|
||||
const unsigned BitSize = ByteSize * 8;
|
||||
Type *Ty = Type::getIntNTy(IRB.getContext(), BitSize);
|
||||
Type *PtrTy = Ty->getPointerTo();
|
||||
Value *Args[] = {IRB.CreatePointerCast(Addr, PtrTy),
|
||||
|
|
Loading…
Reference in New Issue