mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-27 14:45:50 +00:00
remove extractMallocCallFromBitCast, since it was tailor maded for its sole user. Update GlobalOpt accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158952 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1fb6c8369
commit
eb7c6865cd
@ -69,13 +69,6 @@ static inline CallInst *extractMallocCall(Value *I) {
|
||||
return const_cast<CallInst*>(extractMallocCall((const Value*)I));
|
||||
}
|
||||
|
||||
/// extractMallocCallFromBitCast - Returns the corresponding CallInst if the
|
||||
/// instruction is a bitcast of the result of a malloc call.
|
||||
const CallInst *extractMallocCallFromBitCast(const Value *I);
|
||||
static inline CallInst *extractMallocCallFromBitCast(Value *I) {
|
||||
return const_cast<CallInst*>(extractMallocCallFromBitCast((const Value*)I));
|
||||
}
|
||||
|
||||
/// isArrayMalloc - Returns the corresponding CallInst if the instruction
|
||||
/// is a call to malloc whose array size can be determined and the array size
|
||||
/// is not constant 1. Otherwise, return NULL.
|
||||
|
@ -170,14 +170,7 @@ bool llvm::isReallocLikeFn(const Value *V, bool LookThroughBitCast) {
|
||||
/// is a malloc call. Since CallInst::CreateMalloc() only creates calls, we
|
||||
/// ignore InvokeInst here.
|
||||
const CallInst *llvm::extractMallocCall(const Value *I) {
|
||||
return isMallocLikeFn(I) ? cast<CallInst>(I) : 0;
|
||||
}
|
||||
|
||||
/// extractMallocCallFromBitCast - Returns the corresponding CallInst if the
|
||||
/// instruction is a bitcast of the result of a malloc call.
|
||||
const CallInst *llvm::extractMallocCallFromBitCast(const Value *I) {
|
||||
const BitCastInst *BCI = dyn_cast<BitCastInst>(I);
|
||||
return BCI ? extractMallocCall(BCI->getOperand(0)) : 0;
|
||||
return isMallocLikeFn(I) ? dyn_cast<CallInst>(I) : 0;
|
||||
}
|
||||
|
||||
static Value *computeArraySize(const CallInst *CI, const TargetData *TD,
|
||||
|
@ -1567,8 +1567,10 @@ static bool TryToOptimizeStoreOfMallocToGlobal(GlobalVariable *GV,
|
||||
Instruction *Cast = new BitCastInst(Malloc, CI->getType(), "tmp", CI);
|
||||
CI->replaceAllUsesWith(Cast);
|
||||
CI->eraseFromParent();
|
||||
CI = dyn_cast<BitCastInst>(Malloc) ?
|
||||
extractMallocCallFromBitCast(Malloc) : cast<CallInst>(Malloc);
|
||||
if (BitCastInst *BCI = dyn_cast<BitCastInst>(Malloc))
|
||||
CI = cast<CallInst>(BCI->getOperand(0));
|
||||
else
|
||||
CI = cast<CallInst>(Malloc);
|
||||
}
|
||||
|
||||
GVI = PerformHeapAllocSRoA(GV, CI, getMallocArraySize(CI, TD, true), TD);
|
||||
|
Loading…
Reference in New Issue
Block a user