[fpc-devel] Question on updating FPC packages
J. Gareth Moreton
gareth at moreton-family.com
Thu Oct 31 00:41:45 CET 2019
Well, when it comes to the specific changes I made to uComplex... the
compiler might be able to detect a kind of 'auto-const' system, but
actually inserting 'const' into the formal parameters helps with syntax
checking as well as generating more efficient code, namely modifying the
parameter when you're perhaps not supposed to.
For vectorcall, I don't think the compiler will correctly guess when and
when not to use the calling convention, and there are times where you
may not want to use vectorcall, usually when interfacing with
third-party programs or libraries. In this case, it's more likely that
the programmer may stumble upon unintented behaviour if it tries to
enable vectorcall for something that is meant to be the default
Microsoft ABI instead.
And using assembly language to directly call the uComplex routines I
don't think is a realistic real-world example, considering that's a
situation where you're more likely to be using the XMM registers
directly to do such mathematics. Besides, I think all bets are off when
it comes to assembly language - in this instance I tried to make sure
that Pascal code didn't have to change though (other than a
recompilation maybe).
I could just say 'screw it' and write my own complex number library, but
then that would just add to the growing collection of third-party
libraries instead of a standard set of libraries that are antiquated and
potentially sluggish on modern systems.
Gareth aka. Kit
On 30/10/2019 22:02, Florian Klämpfl wrote:
> Am 29.10.19 um 14:06 schrieb Marco van de Voort:
>>
>> Op 2019-10-27 om 10:46 schreef Florian Klämpfl:
>>> Am 27.10.19 um 10:27 schrieb Michael Van Canneyt:
>>>> If you genuinely believe that micro-optimization changes can make a
>>>> difference:
>>>>
>>>> Submit patches.
>>>
>>> As said: I am against applying them. Why? They clutter code and
>>> after all, they make assumptions about the current target which not
>>> might be always valid. And time testing them is much better spent in
>>> improving the compiler and then all code benefits. Another point:
>>> for example explicit inline increases normally code size (not always
>>> but often), so it is against the use of -Os. Applying inline
>>> manually on umpteen subroutines makes no sense. Better improve auto
>>> inlining.
>>
>> Auto inlining is also no panacea. It only works with heuristics,
>> and is thus only as good as a formula of the heuristic.
>
> Yes. And manually adding inline is only as good as the knowledge of
> the user doing so. If somebody implements it right (I did not, I used
> the easiest approach and used an existing function to estimate the
> complexity of a subroutine). The compiler can just count the number of
> the generate instructions or even calculate the length of the
> procedure and then decide to keep the node tree for inlining.
>
>>
>> Changing calling conventions, vectorizing, loops all complicates
>> that, and it will never be perfect, and a change here will lead to a
>> problem there etc.
>
> See above.
>
>>
>> If you know a routine can evaluate to one instruction in most cases,
>> I don't see anything wrong with just marking it as such.
>>
>
> The compiler knows this as well as the compiler generated the code.
> Why should I guess if the compiler knows?
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
More information about the fpc-devel
mailing list