diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-04-26 21:04:47 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-04-26 21:04:47 +0000 |
commit | abb9f55c8021c158e5fb9ed95c573648b254e610 (patch) | |
tree | 4581e5601c74fe3d8da238734e1ce111d6cb0920 /llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp | |
parent | ce26eac51100c294a294ec23a26e7c1c74c9f143 (diff) | |
download | bcm5719-llvm-abb9f55c8021c158e5fb9ed95c573648b254e610.tar.gz bcm5719-llvm-abb9f55c8021c158e5fb9ed95c573648b254e610.zip |
Revert "[SimplifyLibCalls] sprintf doesn't copy null bytes"
The destination buffer that sprintf uses is restrict qualified, we do
not need to worry about derived pointers referenced via format
specifiers.
This reverts commit r267580.
llvm-svn: 267605
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp index 70f6422f1e6..104a82ce2a5 100644 --- a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp @@ -1995,10 +1995,9 @@ Value *LibCallSimplifier::optimizeSPrintFString(CallInst *CI, IRBuilder<> &B) { Value *Len = emitStrLen(CI->getArgOperand(2), B, DL, TLI); if (!Len) return nullptr; - B.CreateMemCpy(CI->getArgOperand(0), CI->getArgOperand(2), Len, 1); - Value *PtrToNullByte = - B.CreateGEP(B.getInt8Ty(), CI->getArgOperand(0), Len, "nul"); - B.CreateStore(B.getInt8(0), PtrToNullByte); + Value *IncLen = + B.CreateAdd(Len, ConstantInt::get(Len->getType(), 1), "leninc"); + B.CreateMemCpy(CI->getArgOperand(0), CI->getArgOperand(2), IncLen, 1); // The sprintf result is the unincremented number of bytes in the string. return B.CreateIntCast(Len, CI->getType(), false); |