On Wed, Feb 22, 2012 at 11:39 AM, Georg-Johann Lay <a...@gjlay.de> wrote: > Denis Chertykov wrote: >> 2012/2/21 Richard Henderson: >>> On 02/21/12 09:08, Georg-Johann Lay wrote: >>>> PR rtl-optimization/50063 >>>> * config/avr/avr.md (movhi_sp_r): Handle -1 (unknown IRQ state) >>>> and 2 (8-bit SP) in operand 2. >>>> * config/avr/avr.c (avr_prologue_setup_frame): Adjust prologue >>>> setup to use movhi_sp_r instead of vanilla move to write SP. >>>> Adjust REG_CFA notes to superseed unspec. >>>> (expand_epilogue): Adjust epilogue setup to use read_sp instead >>>> of vanilla move. >>>> As function body might contain CLI or SEI: Use irq_state 0 (IRQ >>>> known to be off) only with TARGET_NO_INTERRUPTS. Never use >>>> irq_state 1 (IRQ known to be on) here. >>> The CFA bits in avr_prologue_setup_frame look good. >>> I'll let Denis or Eric review the movhi_sp_r change. >> >> Approved. >> >> Denis. > > Here is a patchlet for 4.6. It just sets -fno-dse to work around the problem > because I think back-porting all what's needed is too much change. > > Compiling avr-libc without DSE gives the same sizes for all objects which > shows > that this is not a crucial optimization for avr. > > Ok for 4.6 branch?
I don't think this kind of fixes are wanted. The patch misses a testcase to backport and the issue surely not only affects DSE. Richard. > Johann > > > PR rtl-optimization/50063 > * config/avr/avr.c (avr_option_override): Disable DSE. > > > > Index: config/avr/avr.c > =================================================================== > --- config/avr/avr.c (revision 184460) > +++ config/avr/avr.c (working copy) > @@ -245,6 +245,11 @@ avr_option_override (void) > > flag_delete_null_pointer_checks = 0; > > + /* Kick off DSE in order to hack around PR rtl-optimization/50063. > + Backporting all of 4.7 is too much. */ > + > + flag_dse = 0; > + > for (t = avr_mcu_types; t->name; t++) > if (strcmp (t->name, avr_mcu_name) == 0) > break; >