mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-06 17:35:57 +02:00
* implement dogetcopy for the Aarch64 variant of the tryfinally node
git-svn-id: trunk@44957 -
This commit is contained in:
parent
55c1ecedac
commit
2aa0e50873
@ -47,6 +47,7 @@ interface
|
|||||||
constructor create_implicit(l,r:TNode);override;
|
constructor create_implicit(l,r:TNode);override;
|
||||||
function simplify(forinline: boolean): tnode;override;
|
function simplify(forinline: boolean): tnode;override;
|
||||||
procedure pass_generate_code;override;
|
procedure pass_generate_code;override;
|
||||||
|
function dogetcopy:tnode;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -346,6 +347,26 @@ procedure taarch64tryfinallynode.pass_generate_code;
|
|||||||
flowcontrol:=oldflowcontrol;
|
flowcontrol:=oldflowcontrol;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function taarch64tryfinallynode.dogetcopy: tnode;
|
||||||
|
var
|
||||||
|
p : taarch64tryfinallynode absolute result;
|
||||||
|
begin
|
||||||
|
result:=inherited dogetcopy;
|
||||||
|
if (target_info.system=system_aarch64_win64) then
|
||||||
|
begin
|
||||||
|
if df_generic in current_procinfo.procdef.defoptions then
|
||||||
|
InternalError(2020033101);
|
||||||
|
|
||||||
|
p.finalizepi:=tcgprocinfo(current_procinfo.create_for_outlining('$fin$',current_procinfo.procdef.struct,potype_exceptfilter,voidtype,p.right));
|
||||||
|
if pi_do_call in finalizepi.flags then
|
||||||
|
include(p.finalizepi.flags,pi_do_call);
|
||||||
|
{ the init/final code is messing with asm nodes, so inform the compiler about this }
|
||||||
|
include(p.finalizepi.flags,pi_has_assembler_block);
|
||||||
|
if implicitframe then
|
||||||
|
p.finalizepi.allocate_push_parasize(32);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ taarch64tryexceptnode }
|
{ taarch64tryexceptnode }
|
||||||
|
|
||||||
procedure taarch64tryexceptnode.pass_generate_code;
|
procedure taarch64tryexceptnode.pass_generate_code;
|
||||||
|
Loading…
Reference in New Issue
Block a user