فهرست منبع

+ preserve the node fileinfo and verbosity properties from the previous
assignment node when applying the optloadmodifystore node transformations.
This keeps the source line info intact in the -al asm output (and probably
makes the optimization debugger friendly, although this isn't tested and not
at all guaranteed for all the other -O3 level optimizations)

git-svn-id: trunk@36256 -

nickysn 8 سال پیش
والد
کامیت
720ac63a28
1فایلهای تغییر یافته به همراه18 افزوده شده و 0 حذف شده
  1. 18 0
      compiler/optloadmodifystore.pas

+ 18 - 0
compiler/optloadmodifystore.pas

@@ -67,6 +67,8 @@ unit optloadmodifystore;
                   newinlinenodetype,false,ccallparanode.create(
                   newinlinenodetype,false,ccallparanode.create(
                   tinlinenode(right).left,nil));
                   tinlinenode(right).left,nil));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 tinlinenode(right).left:=nil;
                 tinlinenode(right).left:=nil;
                 exit;
                 exit;
               end;
               end;
@@ -107,6 +109,8 @@ unit optloadmodifystore;
                     newinlinenodetype,false,ccallparanode.create(
                     newinlinenodetype,false,ccallparanode.create(
                     taddnode(right).right,ccallparanode.create(taddnode(right).left,nil)));
                     taddnode(right).right,ccallparanode.create(taddnode(right).left,nil)));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 taddnode(right).left:=nil;
                 taddnode(right).left:=nil;
                 taddnode(right).right:=nil;
                 taddnode(right).right:=nil;
                 exit;
                 exit;
@@ -162,6 +166,8 @@ unit optloadmodifystore;
                     newinlinenodetype,false,ccallparanode.create(
                     newinlinenodetype,false,ccallparanode.create(
                     taddnode(ttypeconvnode(right).left).right,ccallparanode.create(ttypeconvnode(taddnode(ttypeconvnode(right).left).left).left,nil)));
                     taddnode(ttypeconvnode(right).left).right,ccallparanode.create(ttypeconvnode(taddnode(ttypeconvnode(right).left).left).left,nil)));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 ttypeconvnode(taddnode(ttypeconvnode(right).left).left).left:=nil;
                 ttypeconvnode(taddnode(ttypeconvnode(right).left).left).left:=nil;
                 taddnode(ttypeconvnode(right).left).right:=nil;
                 taddnode(ttypeconvnode(right).left).right:=nil;
                 exit;
                 exit;
@@ -200,6 +206,8 @@ unit optloadmodifystore;
                     newinlinenodetype,false,ccallparanode.create(
                     newinlinenodetype,false,ccallparanode.create(
                     taddnode(right).left,ccallparanode.create(taddnode(right).right,nil)));
                     taddnode(right).left,ccallparanode.create(taddnode(right).right,nil)));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 taddnode(right).right:=nil;
                 taddnode(right).right:=nil;
                 taddnode(right).left:=nil;
                 taddnode(right).left:=nil;
                 exit;
                 exit;
@@ -252,6 +260,8 @@ unit optloadmodifystore;
                     newinlinenodetype,false,ccallparanode.create(
                     newinlinenodetype,false,ccallparanode.create(
                     taddnode(ttypeconvnode(right).left).left,ccallparanode.create(ttypeconvnode(taddnode(ttypeconvnode(right).left).right).left,nil)));
                     taddnode(ttypeconvnode(right).left).left,ccallparanode.create(ttypeconvnode(taddnode(ttypeconvnode(right).left).right).left,nil)));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 ttypeconvnode(taddnode(ttypeconvnode(right).left).right).left:=nil;
                 ttypeconvnode(taddnode(ttypeconvnode(right).left).right).left:=nil;
                 taddnode(ttypeconvnode(right).left).left:=nil;
                 taddnode(ttypeconvnode(right).left).left:=nil;
                 exit;
                 exit;
@@ -285,6 +295,8 @@ unit optloadmodifystore;
                   newinlinenodetype,false,ccallparanode.create(
                   newinlinenodetype,false,ccallparanode.create(
                   tshlshrnode(right).right,ccallparanode.create(tshlshrnode(right).left,nil)));
                   tshlshrnode(right).right,ccallparanode.create(tshlshrnode(right).left,nil)));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 tshlshrnode(right).left:=nil;
                 tshlshrnode(right).left:=nil;
                 tshlshrnode(right).right:=nil;
                 tshlshrnode(right).right:=nil;
                 exit;
                 exit;
@@ -331,6 +343,8 @@ unit optloadmodifystore;
                   newinlinenodetype,false,ccallparanode.create(
                   newinlinenodetype,false,ccallparanode.create(
                   tshlshrnode(ttypeconvnode(right).left).right,ccallparanode.create(ttypeconvnode(tshlshrnode(ttypeconvnode(right).left).left).left,nil)));
                   tshlshrnode(ttypeconvnode(right).left).right,ccallparanode.create(ttypeconvnode(tshlshrnode(ttypeconvnode(right).left).left).left,nil)));
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 ttypeconvnode(tshlshrnode(ttypeconvnode(right).left).left).left:=nil;
                 ttypeconvnode(tshlshrnode(ttypeconvnode(right).left).left).left:=nil;
                 tshlshrnode(ttypeconvnode(right).left).right:=nil;
                 tshlshrnode(ttypeconvnode(right).left).right:=nil;
                 exit;
                 exit;
@@ -355,6 +369,8 @@ unit optloadmodifystore;
                 result:=cinlinenode.createintern(
                 result:=cinlinenode.createintern(
                   newinlinenodetype,false,tunarynode(right).left);
                   newinlinenodetype,false,tunarynode(right).left);
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 tunarynode(right).left:=nil;
                 tunarynode(right).left:=nil;
                 exit;
                 exit;
               end;
               end;
@@ -388,6 +404,8 @@ unit optloadmodifystore;
                 result:=cinlinenode.createintern(
                 result:=cinlinenode.createintern(
                   newinlinenodetype,false,ttypeconvnode(tunarynode(ttypeconvnode(right).left).left).left);
                   newinlinenodetype,false,ttypeconvnode(tunarynode(ttypeconvnode(right).left).left).left);
                 result.localswitches:=localswitches;
                 result.localswitches:=localswitches;
+                result.fileinfo:=fileinfo;
+                result.verbosity:=verbosity;
                 ttypeconvnode(tunarynode(ttypeconvnode(right).left).left).left:=nil;
                 ttypeconvnode(tunarynode(ttypeconvnode(right).left).left).left:=nil;
                 exit;
                 exit;
               end;
               end;