Browse Source

* references to symbols were only decreased in taicpu.done for jmps, fixed

Jonas Maebe 24 years ago
parent
commit
8b0adc1f23
1 changed files with 21 additions and 19 deletions
  1. 21 19
      compiler/i386/cpuasm.pas

+ 21 - 19
compiler/i386/cpuasm.pas

@@ -552,24 +552,23 @@ uses
 
     destructor taicpu.destroy;
       begin
-        if is_jmp then
-          dec(PasmLabel(oper[0].sym)^.refs)
-        else
-          begin
-            { unrolled for speed }
-            if (ops>0) then
-             begin
-               if (oper[0].typ=top_ref) then
-                dispose(oper[0].ref);
-               if (ops>1) then
-                begin
-                  if (oper[1].typ=top_ref) then
-                   dispose(oper[1].ref);
-                  if (ops>2) and (oper[2].typ=top_ref) then
-                   dispose(oper[2].ref);
-                end;
-             end;
-          end;
+        { unrolled for speed }
+        if (ops>0) then
+         begin
+           case oper[0].typ of
+             top_ref:
+               dispose(oper[0].ref);
+             top_symbol:
+               dec(Pasmsymbol(oper[0].sym)^.refs);
+           end;
+           if (ops>1) then
+            begin
+              if (oper[1].typ=top_ref) then
+               dispose(oper[1].ref);
+              if (ops>2) and (oper[2].typ=top_ref) then
+               dispose(oper[2].ref);
+            end;
+         end;
         inherited destroy;
       end;
 
@@ -1691,7 +1690,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.7  2000-12-26 15:56:17  peter
+  Revision 1.8  2001-01-07 15:48:56  jonas
+    * references to symbols were only decreased in taicpu.done for jmps, fixed
+
+  Revision 1.7  2000/12/26 15:56:17  peter
     * unrolled loops in taicpu.destroy
 
   Revision 1.6  2000/12/25 00:07:31  peter