diff --git a/compiler/i8086/cgcpu.pas b/compiler/i8086/cgcpu.pas index d4d2f44ae9..2219e1ac30 100644 --- a/compiler/i8086/cgcpu.pas +++ b/compiler/i8086/cgcpu.pas @@ -1382,10 +1382,15 @@ unit cgcpu; procedure tcg8086.g_flags2ref(list: TAsmList; size: TCgSize; const f: tresflags; const ref: TReference); var tmpreg : tregister; + tmpregsize: TCgSize; begin - tmpreg:=getintregister(list,size); - g_flags2reg(list,size,f,tmpreg); - a_load_reg_ref(list,size,size,tmpreg,ref); + if size in [OS_8,OS_S8,OS_16,OS_S16] then + tmpregsize:=size + else + tmpregsize:=OS_16; + tmpreg:=getintregister(list,tmpregsize); + g_flags2reg(list,tmpregsize,f,tmpreg); + a_load_reg_ref(list,tmpregsize,size,tmpreg,ref); end;