Ver código fonte

* check for top_ref instead of OT_MEMORY in needaddrprefix

peter 21 anos atrás
pai
commit
38373b90d8
1 arquivos alterados com 16 adições e 14 exclusões
  1. 16 14
      compiler/x86/aasmcpu.pas

+ 16 - 14
compiler/x86/aasmcpu.pas

@@ -1291,19 +1291,18 @@ implementation
 
     function taicpu.needaddrprefix(opidx:byte):boolean;
       begin
-        needaddrprefix:=false;
-        if (OT_MEMORY and (not oper[opidx]^.ot))=0 then
-          begin
-            if (
-                (oper[opidx]^.ref^.index<>NR_NO) and
-                (getsubreg(oper[opidx]^.ref^.index)<>R_SUBD)
-               ) or
-               (
-                (oper[opidx]^.ref^.base<>NR_NO) and
-                (getsubreg(oper[opidx]^.ref^.base)<>R_SUBD)
-               ) then
-              needaddrprefix:=true;
-          end;
+        result:=(oper[opidx]^.typ=top_ref) and
+                (oper[opidx]^.ref^.refaddr=addr_no) and
+                (
+                 (
+                  (oper[opidx]^.ref^.index<>NR_NO) and
+                  (getsubreg(oper[opidx]^.ref^.index)<>R_SUBD)
+                 ) or
+                 (
+                  (oper[opidx]^.ref^.base<>NR_NO) and
+                  (getsubreg(oper[opidx]^.ref^.base)<>R_SUBD)
+                 )
+                );
       end;
 
 
@@ -1969,7 +1968,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.54  2004-03-15 08:44:51  michael
+  Revision 1.55  2004-03-16 16:19:19  peter
+    * check for top_ref instead of OT_MEMORY in needaddrprefix
+
+  Revision 1.54  2004/03/15 08:44:51  michael
   + Fix from peter: fixes crash when inlining assembler code referencing local vars
 
   Revision 1.53  2004/03/04 17:25:38  peter