mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 04:59:26 +02:00
* fixed compiler internal error in the in_[and/or/xor]_assign_x_y inline nodes
when their second parameter is a large 64-bit unsigned constant git-svn-id: trunk@35684 -
This commit is contained in:
parent
b62a833a01
commit
f19ebe2acf
@ -467,7 +467,7 @@ implementation
|
||||
begin
|
||||
{$ifndef cpu64bitalu}
|
||||
if def_cgsize(left.resultdef) in [OS_64,OS_S64] then
|
||||
cg64.a_op64_const_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],def_cgsize(tcallparanode(left).right.resultdef),maskvalue,tcallparanode(tcallparanode(left).right).left.location)
|
||||
cg64.a_op64_const_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],def_cgsize(tcallparanode(left).right.resultdef),maskvalue.svalue,tcallparanode(tcallparanode(left).right).left.location)
|
||||
else
|
||||
{$endif not cpu64bitalu}
|
||||
hlcg.a_op_const_loc(current_asmdata.CurrAsmList,andorxorop[inlinenumber],tcallparanode(left).right.resultdef,
|
||||
|
@ -39,6 +39,10 @@ begin
|
||||
gr.q := $5A7EFF4455AAFF00;
|
||||
AndAssignQWord(gr.q, $4F23E7680FF05A78);
|
||||
Check(gr.q, $4A22E74005A05A00);
|
||||
|
||||
gr.q := $5A7EFF4455AAFF00;
|
||||
AndAssignQWord(gr.q, $CF23E7680FF05A78);
|
||||
Check(gr.q, $4A22E74005A05A00);
|
||||
end;
|
||||
|
||||
procedure Test_And_Ref_Ref;
|
||||
@ -86,6 +90,10 @@ begin
|
||||
q := $5A7EFF4455AAFF00;
|
||||
AndAssignQWord(q, $4F23E7680FF05A78);
|
||||
Check(q, $4A22E74005A05A00);
|
||||
|
||||
q := $5A7EFF4455AAFF00;
|
||||
AndAssignQWord(q, $CF23E7680FF05A78);
|
||||
Check(q, $4A22E74005A05A00);
|
||||
end;
|
||||
|
||||
procedure Test_And_RegVar_RegVar;
|
||||
@ -133,6 +141,10 @@ begin
|
||||
gr.q := $5A7EFF4455AAFF00;
|
||||
OrAssignQWord(gr.q, $4F23E7680FF05A78);
|
||||
Check(gr.q, $5F7FFF6C5FFAFF78);
|
||||
|
||||
gr.q := $5A7EFF4455AAFF00;
|
||||
OrAssignQWord(gr.q, $CF23E7680FF05A78);
|
||||
Check(gr.q, $DF7FFF6C5FFAFF78);
|
||||
end;
|
||||
|
||||
procedure Test_Or_Ref_Ref;
|
||||
@ -180,6 +192,10 @@ begin
|
||||
q := $5A7EFF4455AAFF00;
|
||||
OrAssignQWord(q, $4F23E7680FF05A78);
|
||||
Check(q, $5F7FFF6C5FFAFF78);
|
||||
|
||||
q := $5A7EFF4455AAFF00;
|
||||
OrAssignQWord(q, $CF23E7680FF05A78);
|
||||
Check(q, $DF7FFF6C5FFAFF78);
|
||||
end;
|
||||
|
||||
procedure Test_Or_RegVar_RegVar;
|
||||
@ -227,6 +243,10 @@ begin
|
||||
gr.q := $5A7EFF4455AAFF00;
|
||||
XorAssignQWord(gr.q, $4F23E7680FF05A78);
|
||||
Check(gr.q, $155D182C5A5AA578);
|
||||
|
||||
gr.q := $5A7EFF4455AAFF00;
|
||||
XorAssignQWord(gr.q, $CF23E7680FF05A78);
|
||||
Check(gr.q, $955D182C5A5AA578);
|
||||
end;
|
||||
|
||||
procedure Test_Xor_Ref_Ref;
|
||||
@ -274,6 +294,10 @@ begin
|
||||
q := $5A7EFF4455AAFF00;
|
||||
XorAssignQWord(q, $4F23E7680FF05A78);
|
||||
Check(q, $155D182C5A5AA578);
|
||||
|
||||
q := $5A7EFF4455AAFF00;
|
||||
XorAssignQWord(q, $CF23E7680FF05A78);
|
||||
Check(q, $955D182C5A5AA578);
|
||||
end;
|
||||
|
||||
procedure Test_Xor_RegVar_RegVar;
|
||||
|
Loading…
Reference in New Issue
Block a user