* do not extend 8 bit return values to 32 bit when loading them into eax,

this is not required by the api, neither does e.g. clang it

git-svn-id: trunk@48136 -
This commit is contained in:
florian 2021-01-11 21:47:32 +00:00
parent 22864b47e4
commit a286ad9d77

View File

@ -178,10 +178,13 @@ unit cpupara;
cl.typ:=X86_64_INTEGERSI_CLASS;
{ gcc/clang sign/zero-extend all values to 32 bits, except for
_Bool (= Pascal boolean), which is only zero-extended to 8 bits
as per the x86-64 ABI -> do the same }
as per the x86-64 ABI -> do the same
some testing showed, that this is not true for 8 bit values:
in case of an 8 bit value, it is not zero/sign extended }
if not assigned(cl.def) or
not is_pasbool(cl.def) or
(torddef(cl.def).ordtype<>pasbool1) then
not(cl.def.typ=orddef) or
not(torddef(cl.def).ordtype in [uchar,u8bit,s8bit,pasbool1]) then
cl.def:=u32inttype;
end
else