forked from OSchip/llvm-project
[SimplifyLibcalls] [NFC] Cleanup, improvements
Summary: * Use "find('%')" instead of loop to find '%' char (we already uses find('%') in optimizePrintFString..) * Convert getParent() chains to getModule()/getFunction() Reviewers: lebedev.ri, spatel Reviewed By: spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D47397 llvm-svn: 333668
This commit is contained in:
parent
90aba024c5
commit
5430b73755
|
@ -538,7 +538,7 @@ Value *LibCallSimplifier::optimizeStrLen(CallInst *CI, IRBuilder<> &B) {
|
|||
}
|
||||
|
||||
Value *LibCallSimplifier::optimizeWcslen(CallInst *CI, IRBuilder<> &B) {
|
||||
Module &M = *CI->getParent()->getParent()->getParent();
|
||||
Module &M = *CI->getModule();
|
||||
unsigned WCharSize = TLI->getWCharSize(M) * 8;
|
||||
// We cannot perform this optimization without wchar_size metadata.
|
||||
if (WCharSize == 0)
|
||||
|
@ -1865,9 +1865,8 @@ Value *LibCallSimplifier::optimizeSPrintFString(CallInst *CI, IRBuilder<> &B) {
|
|||
if (CI->getNumArgOperands() == 2) {
|
||||
// Make sure there's no % in the constant array. We could try to handle
|
||||
// %% -> % in the future if we cared.
|
||||
for (unsigned i = 0, e = FormatStr.size(); i != e; ++i)
|
||||
if (FormatStr[i] == '%')
|
||||
return nullptr; // we found a format specifier, bail out.
|
||||
if (FormatStr.find('%') != StringRef::npos)
|
||||
return nullptr; // we found a format specifier, bail out.
|
||||
|
||||
// sprintf(str, fmt) -> llvm.memcpy(align 1 str, align 1 fmt, strlen(fmt)+1)
|
||||
B.CreateMemCpy(CI->getArgOperand(0), 1, CI->getArgOperand(1), 1,
|
||||
|
@ -1952,9 +1951,8 @@ Value *LibCallSimplifier::optimizeSnPrintFString(CallInst *CI, IRBuilder<> &B) {
|
|||
if (CI->getNumArgOperands() == 3) {
|
||||
// Make sure there's no % in the constant array. We could try to handle
|
||||
// %% -> % in the future if we cared.
|
||||
for (unsigned i = 0, e = FormatStr.size(); i != e; ++i)
|
||||
if (FormatStr[i] == '%')
|
||||
return nullptr; // we found a format specifier, bail out.
|
||||
if (FormatStr.find('%') != StringRef::npos)
|
||||
return nullptr; // we found a format specifier, bail out.
|
||||
|
||||
if (N == 0)
|
||||
return ConstantInt::get(CI->getType(), FormatStr.size());
|
||||
|
@ -2039,9 +2037,9 @@ Value *LibCallSimplifier::optimizeFPrintFString(CallInst *CI, IRBuilder<> &B) {
|
|||
|
||||
// fprintf(F, "foo") --> fwrite("foo", 3, 1, F)
|
||||
if (CI->getNumArgOperands() == 2) {
|
||||
for (unsigned i = 0, e = FormatStr.size(); i != e; ++i)
|
||||
if (FormatStr[i] == '%') // Could handle %% -> % if we cared.
|
||||
return nullptr; // We found a format specifier.
|
||||
// Could handle %% -> % if we cared.
|
||||
if (FormatStr.find('%') != StringRef::npos)
|
||||
return nullptr; // We found a format specifier.
|
||||
|
||||
return emitFWrite(
|
||||
CI->getArgOperand(1),
|
||||
|
@ -2128,7 +2126,7 @@ Value *LibCallSimplifier::optimizeFPuts(CallInst *CI, IRBuilder<> &B) {
|
|||
|
||||
// Don't rewrite fputs to fwrite when optimising for size because fwrite
|
||||
// requires more arguments and thus extra MOVs are required.
|
||||
if (CI->getParent()->getParent()->optForSize())
|
||||
if (CI->getFunction()->optForSize())
|
||||
return nullptr;
|
||||
|
||||
// Check if has any use
|
||||
|
|
Loading…
Reference in New Issue