Browse Source

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

git-svn-id: branches/debug_eh@41384 -
florian 6 năm trước cách đây
mục cha
commit
f66d7d431f
1 tập tin đã thay đổi với 4 bổ sung0 xóa
  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'));
                 current_addr:=clabelnode.create(cnothingnode.create,clabelsym.create('$raiseaddr'));
                 addstatement(statements,current_addr);
                 addstatement(statements,current_addr);
                 right:=caddrnode.create(cloadnode.create(current_addr.labsym,current_addr.labsym.owner));
                 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;
               end;
 
 
             raisenode:=ccallnode.createintern('fpc_raiseexception',
             raisenode:=ccallnode.createintern('fpc_raiseexception',