Add comments explaining why there's only one register for

i8 return values.

llvm-svn: 67502
This commit is contained in:
Dan Gohman 2009-03-23 04:28:24 +00:00
parent 31a20d680a
commit 70d9929def
1 changed files with 6 additions and 1 deletions

View File

@ -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]>>,