mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-28 21:34:23 +00:00
[fast-isel] Add support for returning non-legal types with no sign- or zero-
entend flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150774 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
29879d7f86
commit
b8703fe265
@ -2037,14 +2037,14 @@ bool ARMFastISel::SelectRet(const Instruction *I) {
|
||||
if (RVVT != MVT::i1 && RVVT != MVT::i8 && RVVT != MVT::i16)
|
||||
return false;
|
||||
|
||||
if (!Outs[0].Flags.isZExt() && !Outs[0].Flags.isSExt())
|
||||
return false;
|
||||
|
||||
assert(DestVT == MVT::i32 && "ARM should always ext to i32");
|
||||
|
||||
bool isZExt = Outs[0].Flags.isZExt();
|
||||
SrcReg = ARMEmitIntExt(RVVT, SrcReg, DestVT, isZExt);
|
||||
if (SrcReg == 0) return false;
|
||||
// Perform extension if flagged as either zext or sext. Otherwise, do
|
||||
// nothing.
|
||||
if (Outs[0].Flags.isZExt() || Outs[0].Flags.isSExt()) {
|
||||
SrcReg = ARMEmitIntExt(RVVT, SrcReg, DestVT, Outs[0].Flags.isZExt());
|
||||
if (SrcReg == 0) return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Make the copy.
|
||||
|
@ -46,3 +46,12 @@ entry:
|
||||
; CHECK: bx lr
|
||||
ret i16 %a
|
||||
}
|
||||
|
||||
define i16 @ret6(i16 %a) nounwind uwtable ssp {
|
||||
entry:
|
||||
; CHECK: ret6
|
||||
; CHECK-NOT: uxth
|
||||
; CHECK-NOT: sxth
|
||||
; CHECK: bx lr
|
||||
ret i16 %a
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user