From 0977d76f420970e904fdec674c902adef6e743bb Mon Sep 17 00:00:00 2001
From: Jeppe Johansen <jeppe@j-software.dk>
Date: Sun, 21 Jul 2013 13:41:10 +0000
Subject: [PATCH] Mark global symbols with assembler references as non-regable

git-svn-id: trunk@25155 -
---
 compiler/raatt.pas | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/compiler/raatt.pas b/compiler/raatt.pas
index 88971c60c6..9b6d63bef6 100644
--- a/compiler/raatt.pas
+++ b/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);