diff options
author | Devang Patel <dpatel@apple.com> | 2008-02-23 00:35:18 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-02-23 00:35:18 +0000 |
commit | 57ef4f46c182cdbe014d469892090ff50c739cf9 (patch) | |
tree | f23b0db1085ced0c14bbdf11adaec0bea64a20d2 /lib/AsmParser | |
parent | 313d4b809326f3e04814f94e5b8ae05649d8e0f6 (diff) | |
download | external_llvm-57ef4f46c182cdbe014d469892090ff50c739cf9.zip external_llvm-57ef4f46c182cdbe014d469892090ff50c739cf9.tar.gz external_llvm-57ef4f46c182cdbe014d469892090ff50c739cf9.tar.bz2 |
To support multiple return values, now ret instruction supports multiple operands instead of one aggregate operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47508 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AsmParser')
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 9f2e5ac..b36e85c 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -2531,7 +2531,7 @@ ReturnedVal : ResolvedVal { $$->push_back($1); CHECK_FOR_ERROR } - | ReturnedVal ',' ConstVal { + | ReturnedVal ',' ResolvedVal { ($$=$1)->push_back($3); CHECK_FOR_ERROR }; @@ -2580,28 +2580,7 @@ InstructionList : InstructionList Inst { BBTerminatorInst : RET ReturnedVal { // Return with a result... - if($2->size() == 1) - $$ = new ReturnInst($2->back()); - else { - - std::vector<const Type*> Elements; - std::vector<Constant*> Vals; - for (std::vector<Value *>::iterator I = $2->begin(), - E = $2->end(); I != E; ++I) { - Value *V = *I; - Constant *C = cast<Constant>(V); - Elements.push_back(V->getType()); - Vals.push_back(C); - } - - const StructType *STy = StructType::get(Elements); - PATypeHolder *PTy = - new PATypeHolder(HandleUpRefs(StructType::get(Elements))); - - Constant *CS = ConstantStruct::get(STy, Vals); // *$2); - $$ = new ReturnInst(CS); - delete PTy; - } + $$ = new ReturnInst(*$2); delete $2; CHECK_FOR_ERROR } @@ -3174,6 +3153,7 @@ MemoryInst : MALLOC Types OptCAlign { if (!GetResultInst::isValidOperands(TmpVal, $5)) GEN_ERROR("Invalid getresult operands"); $$ = new GetResultInst(TmpVal, $5); + delete $2; CHECK_FOR_ERROR } | GETELEMENTPTR Types ValueRef IndexList { |