Hier z.B. wird einmal direkt der Portpin ausgewertet, dann wird er eingelesen und ausgewertet. Ich weiß, dass der Compiler das früher besser gemacht hat.
Welchen Grund könnte das haben? Und ist das ein Fall für einen Bug Report? (FPC3.2.2-r0d122c49, AVR5 für ATmega328P, Compiler-Stufe -O3)
Code: Alles auswählen
# [154] if (PINjmpB and Pjmp1B) <> 0 then begin // wenn high, Jumper zieht auf low wenn offen
in r19,3
sbrs r19,0
rjmp .Lj21
.Lj20:
ldi r18,1
.Lj21:
# [157] if (PINjmpD and Pjmp2D) <> 0 then begin // wenn high
sbis 9,7
rjmp .Lj23
.Lj28:
# [158] Inc(jumptemp, 2);
ldi r19,2
add r18,r19
.Lj23:
# [160] if (PINjmpD and Pjmp4D) <> 0 then begin // wenn high
in r19,9
sbrs r19,6
rjmp .Lj25
.Lj24:
# [161] Inc(jumptemp, 4);
ldi r19,4
add r18,r19
.Lj25: