summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-04-26 21:04:47 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-04-26 21:04:47 +0000
commitabb9f55c8021c158e5fb9ed95c573648b254e610 (patch)
tree4581e5601c74fe3d8da238734e1ce111d6cb0920 /llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
parentce26eac51100c294a294ec23a26e7c1c74c9f143 (diff)
downloadbcm5719-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.cpp7
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);
OpenPOWER on IntegriCloud