Browse Source

* check if a target really supports safecall before calling load_safecallresult_node

florian 2 years ago
parent
commit
1b08b89b7b
1 changed files with 5 additions and 2 deletions
  1. 5 2
      compiler/optdfa.pas

+ 5 - 2
compiler/optdfa.pas

@@ -54,7 +54,9 @@ unit optdfa;
   implementation
   implementation
 
 
     uses
     uses
-      globtype,constexp,
+      globtype,
+      systems,
+      constexp,
       verbose,
       verbose,
       symconst,symdef,symsym,
       symconst,symdef,symsym,
       defutil,
       defutil,
@@ -642,7 +644,8 @@ unit optdfa;
           begin
           begin
             if current_procinfo.procdef.proctypeoption=potype_constructor then
             if current_procinfo.procdef.proctypeoption=potype_constructor then
               resultnode:=load_self_node
               resultnode:=load_self_node
-            else if current_procinfo.procdef.proccalloption=pocall_safecall then
+            else if (current_procinfo.procdef.proccalloption=pocall_safecall) and
+              (tf_safecall_exceptions in target_info.flags) then
               resultnode:=load_safecallresult_node
               resultnode:=load_safecallresult_node
             else
             else
               resultnode:=load_result_node;
               resultnode:=load_result_node;