git-svn-id: trunk@44083 -
@@ -14062,6 +14062,8 @@ tests/test/tabsvr2.pp svneol=native#text/plain
tests/test/tabsvr3.pp svneol=native#text/plain
tests/test/tabsvr4.pp svneol=native#text/plain
tests/test/tabsvr5.pp svneol=native#text/plain
+tests/test/tabsvr6.pp svneol=native#text/pascal
+tests/test/tabsvr7.pp svneol=native#text/pascal
tests/test/taddstr1.pp svneol=native#text/plain
tests/test/taes1.pp svneol=native#text/plain
tests/test/talign.pp svneol=native#text/plain
@@ -1403,6 +1403,8 @@ implementation
((n.nodetype in [derefn,vecn,subscriptn]) or
((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)
) then
result:=fen_norecurse_true;
end;
@@ -0,0 +1,18 @@
+{$mode objfpc}
+{$B+}
+uses
+ sysutils;
+var
+ { absolute means volatile, so the expression below cannot be optimized
+ and must cause a sig fault }
+ a : longint absolute 0;
+begin
+ try
+ while true or (a=0) do
+ break;
+ except
+ writeln('ok');
+ halt(0);
+ end;
+ halt(1);
+end.
+ while false and (a=0) do