mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Allow deadargelim to change return types even though now values were dead. This
again canonicalizes {i32} into i32 and {} into void. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53610 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d1d1de7f39
commit
4f72368529
@ -601,8 +601,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
const Type *RetTy = FTy->getReturnType();
|
||||
const Type *NRetTy = NULL;
|
||||
unsigned RetCount = NumRetVals(F);
|
||||
// Explicitly track if anything changed, for debugging.
|
||||
bool Changed = false;
|
||||
// -1 means unused, other numbers are the new index
|
||||
SmallVector<int, 5> NewRetIdxs(RetCount, -1);
|
||||
std::vector<const Type*> RetTypes;
|
||||
@ -621,7 +619,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
++NumRetValsEliminated;
|
||||
DOUT << "DAE - Removing return value " << i << " from "
|
||||
<< F->getNameStart() << "\n";
|
||||
Changed = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -633,9 +630,8 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
DOUT << "DAE - Removing return value from " << F->getNameStart()
|
||||
<< "\n";
|
||||
++NumRetValsEliminated;
|
||||
Changed = true;
|
||||
}
|
||||
if (RetTypes.size() > 1 || (STy && STy->getNumElements()==RetTypes.size()))
|
||||
if (RetTypes.size() > 1)
|
||||
// More than one return type? Return a struct with them. Also, if we used
|
||||
// to return a struct and didn't change the number of return values,
|
||||
// return a struct again. This prevents changing {something} into
|
||||
@ -688,7 +684,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
++NumArgumentsEliminated;
|
||||
DOUT << "DAE - Removing argument " << i << " (" << I->getNameStart()
|
||||
<< ") from " << F->getNameStart() << "\n";
|
||||
Changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -714,11 +709,6 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
||||
if (NFTy == FTy)
|
||||
return false;
|
||||
|
||||
// The function type is only allowed to be different if we actually left out
|
||||
// an argument or return value.
|
||||
assert(Changed && "Function type changed while no arguments or return values"
|
||||
"were removed!");
|
||||
|
||||
// Create the new function body and insert it into the module...
|
||||
Function *NF = Function::Create(NFTy, F->getLinkage());
|
||||
NF->copyAttributesFrom(F);
|
||||
|
Loading…
Reference in New Issue
Block a user