https://sourceware.org/bugzilla/show_bug.cgi?id=32704
Bug ID: 32704 Summary: Improve __gcc_isr prologue generation Product: binutils Version: 2.44 Status: NEW Severity: enhancement Priority: P3 Component: gas Assignee: unassigned at sourceware dot org Reporter: gjl at gcc dot gnu.org Target Milestone: --- Target: avr In code like volatile char var; __attribute((signal)) void __vector1 () { var = 1; var = 0; } the body of the ISR needs zero_reg, doesn't clobber SREG and uses a reg >= R16: __vector1: __gcc_isr 1 ldi r24, 1 sts var, r24 sts var, __zero_reg__ __gcc_isr 2 reti __gcc_isr 0,r24 In that situation, the prologue from __gcc_isr can be improved from the current 000000f2 <__vector1>: f2: 1f 92 push r1 f4: 1f b6 in r1, 0x3f ; 63 f6: 1f 92 push r1 f8: 11 24 eor r1, r1 fa: 8f 93 push r24 that clobbers SREG just for the purpose of CLR R1, to something like push r1 push r24 ldi r24, 0 mov r1, r24 which is shorted, faster and uses less stack space. -- You are receiving this mail because: You are on the CC list for the bug.