mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Enable first-class aggregates support.
Remove the GetResultInst instruction. It is still accepted in LLVM assembly and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove support for return instructions with multiple values. These are auto-upgraded to use InsertValueInst instructions. The IRBuilder still accepts multiple-value returns, and auto-upgrades them to InsertValueInst instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53941 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -217,27 +217,7 @@ void LCSSA::getLoopValuesUsedOutsideLoop(Loop *L,
|
||||
}
|
||||
|
||||
if (*BB != UserBB && !inLoop(UserBB)) {
|
||||
const StructType *STy = dyn_cast<StructType>(I->getType());
|
||||
if (STy) {
|
||||
// I is a call or an invoke that returns multiple values.
|
||||
// These values are accessible through getresult only.
|
||||
// If the getresult value is not in the BB then move it
|
||||
// immediately here. It will be processed in next iteration.
|
||||
BasicBlock::iterator InsertPoint;
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(I)) {
|
||||
InsertPoint = II->getNormalDest()->getFirstNonPHI();
|
||||
} else {
|
||||
InsertPoint = I;
|
||||
InsertPoint++;
|
||||
}
|
||||
for (Value::use_iterator TmpI = I->use_begin(),
|
||||
TmpE = I->use_end(); TmpI != TmpE; ++TmpI) {
|
||||
GetResultInst *GR = cast<GetResultInst>(TmpI);
|
||||
if (GR->getParent() != *BB)
|
||||
GR->moveBefore(InsertPoint);
|
||||
}
|
||||
} else
|
||||
AffectedValues.insert(I);
|
||||
AffectedValues.insert(I);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user