forked from OSchip/llvm-project
Add comments explaining why there's only one register for
i8 return values. llvm-svn: 67502
This commit is contained in:
parent
31a20d680a
commit
70d9929def
|
@ -22,7 +22,12 @@ class CCIfSubtarget<string F, CCAction A>
|
|||
|
||||
// Return-value conventions common to all X86 CC's.
|
||||
def RetCC_X86Common : CallingConv<[
|
||||
// Scalar values are returned in AX first, then DX.
|
||||
// Scalar values are returned in AX first, then DX, except for i8 where
|
||||
// the convention is to return values in AL and AH. However, using AL and
|
||||
// is AH problematic -- a return of {i16,i8} would end up using AX and AH,
|
||||
// and one value would clobber the other. C front-ends are currently expected
|
||||
// to pack two i8 values into an i16 in the rare situations where this
|
||||
// is necessary.
|
||||
CCIfType<[i8] , CCAssignToReg<[AL]>>,
|
||||
CCIfType<[i16], CCAssignToReg<[AX, DX]>>,
|
||||
CCIfType<[i32], CCAssignToReg<[EAX, EDX]>>,
|
||||
|
|
Loading…
Reference in New Issue