--- Comment #6 from pinskia at gcc dot gnu dot org 2010-01-03 06:38 ---
I think if we get the old SRA behavior back for this code, we will get this
optimization in 4.5 since we remove the sptr->base and the other unnecessary
store during PRE.
--
http://gcc.gnu.org/bugzilla/show_bug.
--- Comment #5 from pinskia at gcc dot gnu dot org 2010-01-03 06:35 ---
4.5 has:
_T2 = *sptr_1(D);
_T2$curr_14 = sptr_1(D)->curr;
_ans = _T2;
D.2697_7 = _T2$curr_14 + -1;
*sptr_1(D) = _ans;
sptr_1(D)->curr = D.2697_7;
While 4.4 does:
_T2$base = sptr->base;
D.1587 = sptr-
--- Comment #4 from pinskia at gcc dot gnu dot org 2010-01-03 06:33 ---
Hmm, 4.5 is worse off than 4.4 with respect of the stack space usage.
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
---
--- Comment #3 from pinskia at gcc dot gnu dot org 2010-01-03 06:30 ---
Oh in fact I think the reason is the SRA issue. In that:
int
Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
{
sptr->curr += 4294967295U;
}
Works.
--
pinskia at gcc dot gnu dot org changed:
W