瀏覽代碼

+ might_have_sideeffects takes care of vo_volatile now (it is not exposed yet)

git-svn-id: trunk@44085 -
florian 5 年之前
父節點
當前提交
5a87855b06
共有 1 個文件被更改,包括 7 次插入1 次删除
  1. 7 1
      compiler/nutils.pas

+ 7 - 1
compiler/nutils.pas

@@ -1404,7 +1404,13 @@ implementation
              ((n.nodetype in [addn,subn,muln,divn,slashn,unaryminusn]) and (n.localswitches*[cs_check_overflow,cs_check_range]<>[]))
             )
            ) or
-           ((n.nodetype=loadn) and (tloadnode(n).symtableentry.typ=absolutevarsym) and (tabsolutevarsym(tloadnode(n).symtableentry).abstyp=toaddr)
+           ((n.nodetype=loadn) and
+            (
+             ((tloadnode(n).symtableentry.typ=absolutevarsym) and (tabsolutevarsym(tloadnode(n).symtableentry).abstyp=toaddr)) or
+             ((tloadnode(n).symtableentry.typ in [paravarsym,localvarsym,staticvarsym]) and
+               (vo_volatile in tabstractvarsym(tloadnode(n).symtableentry).varoptions)
+             )
+            )
            ) then
           result:=fen_norecurse_true;
       end;