On 10/03/2019 11:40, Yuriy Sydorov wrote:
If I recall correctly, currently the compiler uses longints as stack offsets internally in several places. That's why the limit is 2GB even for 64-bit targets.

That would be compiler bugs that need to be fixed. Ideally, the commit message would also have mentioned that :)

The issue in this tread is caused by the incorrect declaration of procedure's params. See my other answer. In this case 2GB of stack is not needed at all.

Indeed.

I suppose there are no real world apps which require 2GB of stack for local vars or parameters. Even if we consider future apps it is useless to support 64-bit stack offsets for local vars of a single procedure.

If the architecture and OS support it, I see no reason to forbid it. It's always possible to add a hint about efficiency in case the size of the locals grows beyond offsets that can be embedded in a single instruction, although this hint would trigger already at 32KB of locals on e.g. PowerPC.


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to