AVR embedded - Compiler optimiert eigenartig

Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

AVR embedded - Compiler optimiert eigenartig

Beitrag von Timm Thaler »

Ich habe gesehen, dass der Compiler für AVR embedded an einigen Stellen nicht nachvollziehbar optimiert.

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:

Antworten