mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 19:12:56 +02:00
[RISCV][NFC] Minor refactoring of CC_RISCV
Immediately check if we need to early-exit as we have a return value that can't be returned directly. Also tweak following if/else. llvm-svn: 355773
This commit is contained in:
parent
89f1cb1de4
commit
1a291c1dfc
@ -940,20 +940,20 @@ static bool CC_RISCV(const DataLayout &DL, unsigned ValNo, MVT ValVT, MVT LocVT,
|
||||
unsigned XLen = DL.getLargestLegalIntTypeSizeInBits();
|
||||
assert(XLen == 32 || XLen == 64);
|
||||
MVT XLenVT = XLen == 32 ? MVT::i32 : MVT::i64;
|
||||
if (ValVT == MVT::f32) {
|
||||
LocVT = XLenVT;
|
||||
LocInfo = CCValAssign::BCvt;
|
||||
}
|
||||
if (XLen == 64 && ValVT == MVT::f64) {
|
||||
LocVT = MVT::i64;
|
||||
LocInfo = CCValAssign::BCvt;
|
||||
}
|
||||
|
||||
// Any return value split in to more than two values can't be returned
|
||||
// directly.
|
||||
if (IsRet && ValNo > 1)
|
||||
return true;
|
||||
|
||||
if (ValVT == MVT::f32) {
|
||||
LocVT = XLenVT;
|
||||
LocInfo = CCValAssign::BCvt;
|
||||
} else if (XLen == 64 && ValVT == MVT::f64) {
|
||||
LocVT = MVT::i64;
|
||||
LocInfo = CCValAssign::BCvt;
|
||||
}
|
||||
|
||||
// If this is a variadic argument, the RISC-V calling convention requires
|
||||
// that it is assigned an 'even' or 'aligned' register if it has 8-byte
|
||||
// alignment (RV32) or 16-byte alignment (RV64). An aligned register should
|
||||
|
Loading…
Reference in New Issue
Block a user