mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-27 04:18:42 +00:00
Remove some support for ReturnInsts with multiple operands, and for
returning a scalar value in a function whose return type is a single- element structure or array. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128810 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
1 parent
cc5d992bc1
commit
3e2f74e6d6
4 files changed
+5
-49
No files matched your search
+4
-24
@@ -826,30 +826,10 @@ void Verifier::visitReturnInst(ReturnInst &RI) {
|
||||
Assert2(N == 0,
|
||||
"Found return instr that returns non-void in Function of void "
|
||||
"return type!", &RI, F->getReturnType());
|
||||
else if (N == 1 && F->getReturnType() == RI.getOperand(0)->getType()) {
|
||||
// Exactly one return value and it matches the return type. Good.
|
||||
} else if (const StructType *STy = dyn_cast<StructType>(F->getReturnType())) {
|
||||
// The return type is a struct; check for multiple return values.
|
||||
Assert2(STy->getNumElements() == N,
|
||||
"Incorrect number of return values in ret instruction!",
|
||||
&RI, F->getReturnType());
|
||||
for (unsigned i = 0; i != N; ++i)
|
||||
Assert2(STy->getElementType(i) == RI.getOperand(i)->getType(),
|
||||
"Function return type does not match operand "
|
||||
"type of return inst!", &RI, F->getReturnType());
|
||||
} else if (const ArrayType *ATy = dyn_cast<ArrayType>(F->getReturnType())) {
|
||||
// The return type is an array; check for multiple return values.
|
||||
Assert2(ATy->getNumElements() == N,
|
||||
"Incorrect number of return values in ret instruction!",
|
||||
&RI, F->getReturnType());
|
||||
for (unsigned i = 0; i != N; ++i)
|
||||
Assert2(ATy->getElementType() == RI.getOperand(i)->getType(),
|
||||
"Function return type does not match operand "
|
||||
"type of return inst!", &RI, F->getReturnType());
|
||||
} else {
|
||||
CheckFailed("Function return type does not match operand "
|
||||
"type of return inst!", &RI, F->getReturnType());
|
||||
}
|
||||
else
|
||||
Assert2(N == 1 && F->getReturnType() == RI.getOperand(0)->getType(),
|
||||
"Function return type does not match operand "
|
||||
"type of return inst!", &RI, F->getReturnType());
|
||||
|
||||
// Check to make sure that the return value has necessary properties for
|
||||
// terminators...
|
||||
|
||||
Reference in new issue
Block a user