Am 17.03.19 um 18:18 schrieb J. Gareth Moreton:
Hi Florian,

I think the main thing is that Object
Pascal has always supported the ability to
drop into assembly language, unlike C++
which requires a dialect-specific
extension and is not allowed at all under
Microsoft Visual C++ 64-bit.

Actually, the policy of FPC is to avoid assembler as much as possible.

Allowing
certain assembler routines to be inlined
seems like a logical extension using
language semantics that already exist.

Part of it may be preference but I think
some people like the fine degree of
control that assembly language offers,
while intrinsics > I find, can quickly get
somewhat untidy and confusing,

I cannot see how inlining does this better?

especially
with instructions like CPUID that read and
write to specific registers (although my
code forbids that instruction because EBX
is non-volatile).

CPUID is that slow, it makes no sense to inline it.


The other thing... no matter how good the
compiler is, there are some situations
where assembly language will always
perform better.

I doubt this as inline assembler pure routines use always fixed registers. Intrinsics don't do so.


I suppose I would like to ask the
community more than anything. Is this a
feature that you'd like to see and use?

I hoped the way that I designed the patch
helps to alleviate the can of worms by
simply not allowing inline if the platform
doesn't have the ability to support it
yet.

But this is exactly the can of worms. People will request that we support it on all CPUs.

"CanInline" simply returns False
unless overridden.


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

Reply via email to