aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore/AutoUpgrade.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-07-23 00:34:11 +0000
committerDan Gohman <gohman@apple.com>2008-07-23 00:34:11 +0000
commitfc74abfba5128544a750fce22fdf13eb0403e3ce (patch)
tree36ed972103bbbb170370e4e6688787ed5f1f9ac8 /lib/VMCore/AutoUpgrade.cpp
parent5e6ebaf4d1d3043d3428b65ee8054c71c24af930 (diff)
downloadexternal_llvm-fc74abfba5128544a750fce22fdf13eb0403e3ce.zip
external_llvm-fc74abfba5128544a750fce22fdf13eb0403e3ce.tar.gz
external_llvm-fc74abfba5128544a750fce22fdf13eb0403e3ce.tar.bz2
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
Diffstat (limited to 'lib/VMCore/AutoUpgrade.cpp')
-rw-r--r--lib/VMCore/AutoUpgrade.cpp28
1 files changed, 0 insertions, 28 deletions
diff --git a/lib/VMCore/AutoUpgrade.cpp b/lib/VMCore/AutoUpgrade.cpp
index fd7d6dc..a48fbd2 100644
--- a/lib/VMCore/AutoUpgrade.cpp
+++ b/lib/VMCore/AutoUpgrade.cpp
@@ -414,31 +414,3 @@ void llvm::UpgradeCallsToIntrinsic(Function* F) {
}
}
}
-
-/// This is an auto-upgrade hook for mutiple-value return statements.
-/// This function auto-upgrades all such return statements in the given
-/// function to use aggregate return values built with insertvalue
-/// instructions.
-void llvm::UpgradeMultipleReturnValues(Function *CurrentFunction) {
- const Type *ReturnType = CurrentFunction->getReturnType();
- for (Function::iterator I = CurrentFunction->begin(),
- E = CurrentFunction->end(); I != E; ++I) {
- BasicBlock *BB = I;
- if (ReturnInst *RI = dyn_cast<ReturnInst>(BB->getTerminator())) {
- unsigned NumVals = RI->getNumOperands();
- if (NumVals > 1 ||
- (isa<StructType>(ReturnType) &&
- (NumVals == 0 || RI->getOperand(0)->getType() != ReturnType))) {
- std::vector<const Type *> Types(NumVals);
- for (unsigned i = 0; i != NumVals; ++i)
- Types[i] = RI->getOperand(i)->getType();
- const Type *ReturnType = StructType::get(Types);
- Value *RV = UndefValue::get(ReturnType);
- for (unsigned i = 0; i != NumVals; ++i)
- RV = InsertValueInst::Create(RV, RI->getOperand(i), i, "mrv", RI);
- ReturnInst::Create(RV, RI);
- RI->eraseFromParent();
- }
- }
- }
-}