[fpc-pascal] Pascal Ardiono (avr) library
    Joost van der Sluis 
    joost at cnoc.nl
       
    Sun Apr  4 13:03:40 CEST 2021
    
    
  
Op 04-04-2021 om 12:50 schreef Joost van der Sluis via fpc-pascal:
> I came across some issues while doing this, but I can not remember all 
> of them.
Another one: (Also constant propagation)
-O4, {$WRITEABLECONST OFF}
# [19] a := DigitalPinToBitMask[5];
	lds	r18,(TC_sARDUINO_ss_DIGITALPINTOBITMASK+5)
# Var a located in register r18
	# Register r18 allocated
	# Register r18 released
# [20] a := 32;
	ldi	r18,32
First, the compiler could remove line 19 completely.
Secondly, (TC_sARDUINO_ss_DIGITALPINTOBITMASK+5) is a constant with 
value 32. So why the lds, and not ldi? (ie: line 19 and 20 are exactly 
the same!)
btw: the value of a was not used in this example, so a warning was 
raised. But the compiler could also throw this piece of code away 
altogether....
Regards,
Joost.
    
    
More information about the fpc-pascal
mailing list