diff options
Diffstat (limited to 'avx512-0037785/compiler/x86_64/cpupara.pas')
-rw-r--r-- | avx512-0037785/compiler/x86_64/cpupara.pas | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/avx512-0037785/compiler/x86_64/cpupara.pas b/avx512-0037785/compiler/x86_64/cpupara.pas index 7bbb48580c..b35b0a2331 100644 --- a/avx512-0037785/compiler/x86_64/cpupara.pas +++ b/avx512-0037785/compiler/x86_64/cpupara.pas @@ -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 |