diff options
author | sergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-12-01 11:47:12 +0000 |
---|---|---|
committer | sergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-12-01 11:47:12 +0000 |
commit | 022aec2a477e4c8275589dbe9a7b138cec9f1e76 (patch) | |
tree | 6fe2a0a2aab9273282ec9c9cf26062f7b4a3124a /compiler/ncgutil.pas | |
parent | e8f9c6d1074dc7c9ad99c57114aab183f232ab5e (diff) | |
download | fpc-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.pas | 15 |
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. |