mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +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:
@@ -102,7 +102,15 @@ public:
|
||||
}
|
||||
|
||||
ReturnInst *CreateRet(Value * const* retVals, unsigned N) {
|
||||
return Insert(ReturnInst::Create(retVals, N));
|
||||
const Type *RetType = BB->getParent()->getReturnType();
|
||||
if (N == 0 && RetType == Type::VoidTy)
|
||||
return CreateRetVoid();
|
||||
if (N == 1 && retVals[0]->getType() == RetType)
|
||||
return Insert(ReturnInst::Create(retVals[0]));
|
||||
Value *V = UndefValue::get(RetType);
|
||||
for (unsigned i = 0; i != N; ++i)
|
||||
V = CreateInsertValue(V, retVals[i], i, "mrv");
|
||||
return Insert(ReturnInst::Create(V));
|
||||
}
|
||||
|
||||
/// CreateBr - Create an unconditional 'br label X' instruction.
|
||||
@@ -568,11 +576,6 @@ public:
|
||||
return Insert(new ShuffleVectorInst(V1, V2, Mask), Name);
|
||||
}
|
||||
|
||||
GetResultInst *CreateGetResult(Value *V, unsigned Index,
|
||||
const char *Name = "") {
|
||||
return Insert(new GetResultInst(V, Index), Name);
|
||||
}
|
||||
|
||||
Value *CreateExtractValue(Value *Agg, unsigned Idx,
|
||||
const char *Name = "") {
|
||||
if (Constant *AggC = dyn_cast<Constant>(Agg))
|
||||
|
Reference in New Issue
Block a user