瀏覽代碼

Mark global symbols with assembler references as non-regable

git-svn-id: trunk@25155 -
Jeppe Johansen 12 年之前
父節點
當前提交
0977d76f42
共有 1 個文件被更改,包括 12 次插入1 次删除
  1. 12 1
      compiler/raatt.pas

+ 12 - 1
compiler/raatt.pas

@@ -1518,7 +1518,18 @@ unit raatt;
                        begin
                          case sym.typ of
                            staticvarsym :
-                             hs:=tstaticvarsym(sym).mangledname;
+                             begin
+                               { we always assume in asm statements that     }
+                               { that the variable is valid.                 }
+                               tabstractvarsym(sym).varstate:=vs_readwritten;
+                               inc(tabstractvarsym(sym).refs);
+                               { variable can't be placed in a register }
+                               tabstractvarsym(sym).varregable:=vr_none;
+                               { and anything may happen with its address }
+                               tabstractvarsym(sym).addr_taken:=true;
+
+                               hs:=tstaticvarsym(sym).mangledname;
+                             end;
                            localvarsym,
                            paravarsym :
                              Message(asmr_e_no_local_or_para_allowed);