> On Jul 23, 2023, at 7:13 AM, Benito van der Zander via fpc-devel
> <fpc-devel@lists.freepascal.org> wrote:
>
> with my patch, "copy" can be inlined!
> initialize and finalize some times, too.
Amazing!
>
> There are two places that call them. compiler/nld.pas and
> compiler/ngenutil.pas where it creates the call nodes. There my patch turns
> them into ordinary function calls, which can be inlined like any other
> function call.
This is the "old way" you describe. Why did they do it like this instead of
normal function calls which could be inlined? I suspect one of the compiler
devs needs to explain this because there may be a reason.
> Then there is compiler/hlcgobj.pas, which calls initialize/finalize for local
> or temporary variables. That appears to happen after the inlining is done.
> Perhaps it needs to do the inlining first to know which variables are there,
> and afterwards it could not change them anymore.
So the inlining caused extra init/finalize calls? That's not good for sure.
There's already a problem with an extra copy operator being called on temporary
memory which can make or break the feature entirely depending on your usage.
Regards,
Ryan Joseph
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel