summaryrefslogtreecommitdiff
path: root/compiler/ncgutil.pas
diff options
context:
space:
mode:
authorsergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-12-01 11:47:12 +0000
committersergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-12-01 11:47:12 +0000
commit022aec2a477e4c8275589dbe9a7b138cec9f1e76 (patch)
tree6fe2a0a2aab9273282ec9c9cf26062f7b4a3124a /compiler/ncgutil.pas
parente8f9c6d1074dc7c9ad99c57114aab183f232ab5e (diff)
downloadfpc-022aec2a477e4c8275589dbe9a7b138cec9f1e76.tar.gz
* Factored reusable (SEH-related) piece of code into separate procedure.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@26157 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/ncgutil.pas')
-rw-r--r--compiler/ncgutil.pas15
1 files changed, 15 insertions, 0 deletions
diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas
index e5e42b0775..30137b65f4 100644
--- a/compiler/ncgutil.pas
+++ b/compiler/ncgutil.pas
@@ -138,6 +138,7 @@ interface
function getprocalign : shortint;
procedure gen_fpc_dummy(list : TAsmList);
+ procedure gen_load_frame_for_exceptfilter(list : TAsmList);
implementation
@@ -2213,4 +2214,18 @@ implementation
end;
+ procedure gen_load_frame_for_exceptfilter(list : TAsmList);
+ var
+ para: tparavarsym;
+ begin
+ para:=tparavarsym(current_procinfo.procdef.paras[0]);
+ if not (vo_is_parentfp in para.varoptions) then
+ InternalError(201201142);
+ if (para.paraloc[calleeside].location^.loc<>LOC_REGISTER) or
+ (para.paraloc[calleeside].location^.next<>nil) then
+ InternalError(201201143);
+ cg.a_load_reg_reg(list,OS_ADDR,OS_ADDR,para.paraloc[calleeside].location^.register,
+ NR_FRAME_POINTER_REG);
+ end;
+
end.