Denis Chertykov wrote:
> Committed
>
> Denis
Consider code prom PR51374
void __vector_18 (void)
{
extern char slot;
unsigned char status = (*(volatile unsigned char*) 0x2B);
unsigned char data = (*(volatile unsigned char*) 0x2C);
if (status & 0x10)
slot = 0;
}
the code with -Os -S -dp sets up a frame pointer which is not needed and should
not be there:
__vector_18:
push r28 ; 28 pushqi1/1 [length = 1]
push r29 ; 29 pushqi1/1 [length = 1]
in r28,__SP_L__ ; 30 *movhi/8 [length = 2]
in r29,__SP_H__
/* prologue: function */
/* frame size = 0 */
/* stack size = 2 */
.L__stack_usage = 2
in r24,0xc ; 8 movqi_insn/4 [length = 1]
sbis 0xb,4 ; 11 *sbix_branch [length = 2]
rjmp .L1
sts slot,__zero_reg__ ; 13 movqi_insn/3 [length = 2]
.L1:
/* epilogue start */
pop r29 ; 33 popqi [length = 1]
pop r28 ; 34 popqi [length = 1]
ret ; 35 return_from_epilogue [length = 1]
This happens even for empty function.
Johann