浏览代码

* traisenode.pass_typecheck: in the case of 'raise X at addr,frame' require 'addr' to be a far pointer in i8086 far code memory models

git-svn-id: trunk@25514 -
nickysn 12 年之前
父节点
当前提交
5973b231ec
共有 1 个文件被更改,包括 10 次插入0 次删除
  1. 10 0
      compiler/nflw.pas

+ 10 - 0
compiler/nflw.pas

@@ -237,6 +237,9 @@ implementation
     {$ifdef state_tracking}
     {$ifdef state_tracking}
       nstate,
       nstate,
     {$endif}
     {$endif}
+    {$ifdef i8086}
+      cpuinfo,
+    {$endif i8086}
       cgbase,procinfo
       cgbase,procinfo
       ;
       ;
 
 
@@ -1929,7 +1932,14 @@ implementation
                begin
                begin
                  { addr }
                  { addr }
                  typecheckpass(right);
                  typecheckpass(right);
+{$ifdef i8086}
+                 if current_settings.x86memorymodel in x86_far_code_models then
+                   inserttypeconv(right,voidfarpointertype)
+                 else
+                   inserttypeconv(right,voidnearpointertype);
+{$else i8086}
                  inserttypeconv(right,voidpointertype);
                  inserttypeconv(right,voidpointertype);
+{$endif i8086}
                  { frame }
                  { frame }
                  if assigned(third) then
                  if assigned(third) then
                   begin
                   begin