浏览代码

* ensure that the label points inside the range where the raise is located for psabieh

git-svn-id: branches/debug_eh@41384 -
florian 6 年之前
父节点
当前提交
f66d7d431f
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      compiler/nflw.pas

+ 4 - 0
compiler/nflw.pas

@@ -2205,6 +2205,10 @@ implementation
                 current_addr:=clabelnode.create(cnothingnode.create,clabelsym.create('$raiseaddr'));
                 addstatement(statements,current_addr);
                 right:=caddrnode.create(cloadnode.create(current_addr.labsym,current_addr.labsym.owner));
+
+                { raise address off by one so we are for sure inside the action area for the raise }
+                if tf_use_psabieh in target_info.flags then
+                  right:=caddnode.create_internal(addn,right,cordconstnode.create(1,sizesinttype,false));
               end;
 
             raisenode:=ccallnode.createintern('fpc_raiseexception',