[fpc-devel] Discussion on a particular optimisation development (WARNING: Technical!)

Florian Klämpfl florian at freepascal.org
Wed Feb 3 22:18:52 CET 2021


Am 03.02.21 um 22:14 schrieb J. Gareth Moreton via fpc-devel:
> Rats, I might have messed up with some of the arithmetic, as well as the 
> dangers of crossing bitwise with logical Boolean operations, although 
> some combinations still work - if the conditions are "x = 0" rather than 
> "x <> 0" in the example:
> 
>       testq    %rbx,%rbx
>       seteb    %al
>       testq    %rsi,%rsi
>       seteb    %dl
>       andb     %dl,%al
> 
> Then this would equate to:
> 
>       orq      %rbx,%rsi
>       seteb    %al

Indeed:

# [6] b:=(x=0) and (y=0);
	orl	%edx,%eax
# Var b located in register al
	seteb	%al

:)

> 
> Mistake aside, I'm looking for acceptable solutions for a 
> platform-dependent node transformation, like a flag of some kind ($if 
> defined etc. might get untidy, although is an option).
> 

This depends on the transformation. Most transformations are beneficial 
for all platforms.


More information about the fpc-devel mailing list