From abb9f55c8021c158e5fb9ed95c573648b254e610 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Tue, 26 Apr 2016 21:04:47 +0000 Subject: 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 --- llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp') diff --git a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp index 70f6422..104a82c 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); -- cgit v1.1