diff options
author | Dan Gohman <gohman@apple.com> | 2008-07-23 00:34:11 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-07-23 00:34:11 +0000 |
commit | fa1211f69bff82013a10a89298229398da8fab9b (patch) | |
tree | 279ecc560c7cae19b38bbac7b9d902befed21361 /llvm/lib/VMCore/AutoUpgrade.cpp | |
parent | a2b4b4ad9929a9a1031f262c5820227ac0cc5afb (diff) | |
download | bcm5719-llvm-fa1211f69bff82013a10a89298229398da8fab9b.tar.gz bcm5719-llvm-fa1211f69bff82013a10a89298229398da8fab9b.zip |
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.
llvm-svn: 53941
Diffstat (limited to 'llvm/lib/VMCore/AutoUpgrade.cpp')
-rw-r--r-- | llvm/lib/VMCore/AutoUpgrade.cpp | 28 |
1 files changed, 0 insertions, 28 deletions
diff --git a/llvm/lib/VMCore/AutoUpgrade.cpp b/llvm/lib/VMCore/AutoUpgrade.cpp index fd7d6dcd4c2..a48fbd2c902 100644 --- a/llvm/lib/VMCore/AutoUpgrade.cpp +++ b/llvm/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(); - } - } - } -} |