Tested with 3.3.1  d3ac07ad27
-O4
Win 64 bit

In the code below, compiled with -alr
   .section .text.n_p$project1_$$_foo,"ax"
   ....
   # Var a located in register rbx
(and it stays in rbx, until the call to write is prepared)



But if I comment out the "write", and uncomment the "a.w"
   # Var a located at rsp+32, size=OS_64

Even the initial 2 lines will then NOT use a register for "a"?



program project1;
{$mode objfpc}{$Inline on}
{$StackFrames off}{$ImplicitExceptions off}

{$ModeSwitch typehelpers}

type
  P = ^integer;

  PH = type helper for P
    procedure w;
  end;

procedure PH.w;
begin
  write(self^)
end;

var g:p;

procedure Foo;
var a: p;
begin
  a:= g;
  a^:=1;
  //a.w;
  write(a^); //
end;

begin
  foo;
end.


_______________________________________________
fpc-devel maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to