summaryrefslogtreecommitdiff
path: root/avx512-0037785/compiler/x86_64/cpupara.pas
diff options
context:
space:
mode:
Diffstat (limited to 'avx512-0037785/compiler/x86_64/cpupara.pas')
-rw-r--r--avx512-0037785/compiler/x86_64/cpupara.pas9
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