mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 20:26:07 +00:00
Use early returns to reduce indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234057 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -2284,25 +2284,25 @@ Value *FortifiedLibCallSimplifier::optimizeStrpCpyChk(CallInst *CI,
|
|||||||
// st[rp]cpy_chk call which may fail at runtime if the size is too long.
|
// st[rp]cpy_chk call which may fail at runtime if the size is too long.
|
||||||
// TODO: It might be nice to get a maximum length out of the possible
|
// TODO: It might be nice to get a maximum length out of the possible
|
||||||
// string lengths for varying.
|
// string lengths for varying.
|
||||||
if (isFortifiedCallFoldable(CI, 2, 1, true)) {
|
if (isFortifiedCallFoldable(CI, 2, 1, true))
|
||||||
Value *Ret = EmitStrCpy(Dst, Src, B, TLI, Name.substr(2, 6));
|
return EmitStrCpy(Dst, Src, B, TLI, Name.substr(2, 6));
|
||||||
return Ret;
|
|
||||||
} else if (!OnlyLowerUnknownSize) {
|
|
||||||
// Maybe we can stil fold __st[rp]cpy_chk to __memcpy_chk.
|
|
||||||
uint64_t Len = GetStringLength(Src);
|
|
||||||
if (Len == 0)
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
Type *SizeTTy = DL.getIntPtrType(CI->getContext());
|
if (OnlyLowerUnknownSize)
|
||||||
Value *LenV = ConstantInt::get(SizeTTy, Len);
|
return nullptr;
|
||||||
Value *Ret = EmitMemCpyChk(Dst, Src, LenV, ObjSize, B, DL, TLI);
|
|
||||||
// If the function was an __stpcpy_chk, and we were able to fold it into
|
// Maybe we can stil fold __st[rp]cpy_chk to __memcpy_chk.
|
||||||
// a __memcpy_chk, we still need to return the correct end pointer.
|
uint64_t Len = GetStringLength(Src);
|
||||||
if (Ret && Func == LibFunc::stpcpy_chk)
|
if (Len == 0)
|
||||||
return B.CreateGEP(B.getInt8Ty(), Dst, ConstantInt::get(SizeTTy, Len - 1));
|
return nullptr;
|
||||||
return Ret;
|
|
||||||
}
|
Type *SizeTTy = DL.getIntPtrType(CI->getContext());
|
||||||
return nullptr;
|
Value *LenV = ConstantInt::get(SizeTTy, Len);
|
||||||
|
Value *Ret = EmitMemCpyChk(Dst, Src, LenV, ObjSize, B, DL, TLI);
|
||||||
|
// If the function was an __stpcpy_chk, and we were able to fold it into
|
||||||
|
// a __memcpy_chk, we still need to return the correct end pointer.
|
||||||
|
if (Ret && Func == LibFunc::stpcpy_chk)
|
||||||
|
return B.CreateGEP(B.getInt8Ty(), Dst, ConstantInt::get(SizeTTy, Len - 1));
|
||||||
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
Value *FortifiedLibCallSimplifier::optimizeStrpNCpyChk(CallInst *CI,
|
Value *FortifiedLibCallSimplifier::optimizeStrpNCpyChk(CallInst *CI,
|
||||||
|
Reference in New Issue
Block a user