2012/1/14 Denis Chertykov <cherty...@gmail.com>: > 2012/1/13 Georg-Johann Lay <a...@gjlay.de>: >> 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. > > Oops. > Something wrong happened, probably I committed a wrong untested patch. > It must be reverted.
Commit reverted. Denis.