[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #18 from ubizjak at gmail dot com 2009-10-15 18:04 --- Backport approved offline by Vlad. Fixed. -- ubizjak at gmail dot com changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|--- |4.4.3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #16 from ubizjak at gmail dot com 2009-10-08 08:17 --- Vlad, is it OK if I backport this patch to 4.4? I have tested it on 4.4 without problems. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #15 from vmakarov at gcc dot gnu dot org 2009-10-07 17:18 --- Subject: Bug 22072 Author: vmakarov Date: Wed Oct 7 17:18:38 2009 New Revision: 152533 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=152533 Log: 2009-10-07 Vladimir Makarov vmaka...@redhat.com PR middle-end/22072 * ira-lives.c (check_and_make_def_conflict): Process all operands. Modified: trunk/gcc/ChangeLog trunk/gcc/ira-lives.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #14 from vmakarov at redhat dot com 2009-10-06 21:59 --- IRA does not create a conflict for p66 and p67 (in function triangle). One pseudo is earlyclobber. They should have a conflict. Therefore p67 gets wrong hard register and reload fixes this by generation of additional move. Actually I found a reason for this. It is a typo in ira-lives.c::check_and_make_def_conflict (continue stmts should be instead of returns in the loop). I'll submit the patch for a review soon. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #12 from pinskia at gcc dot gnu dot org 2008-09-14 04:28 --- a1 (r65,l0) best GENERAL_REGS, cover GENERAL_REGS If IRA chose CREG instead of GENERAL_REGS, it would have been right. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added CC||vmakarov at gcc dot gnu dot ||org GCC build triplet|i686-pc-linux-gnu | GCC host triplet|i686-pc-linux-gnu | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #13 from pinskia at gcc dot gnu dot org 2008-09-14 04:30 --- *** Bug 27856 has been marked as a duplicate of this bug. *** -- pinskia at gcc dot gnu dot org changed: What|Removed |Added OtherBugsDependingO||27856 nThis|| CC||etienne_lorrain at yahoo dot ||fr http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
[Bug middle-end/22072] bizarre code for int*int/2 for -Os
--- Comment #11 from pinskia at gcc dot gnu dot org 2006-09-18 01:24 --- So the only bug here is that -Os produces an extra move. That comes from the register allocator/reload: Reloads for insn # 13 Reload 0: reload_in (SI) = (reg:SI 1 dx [65]) GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 3) reload_in_reg: (reg:SI 1 dx [65]) reload_reg_rtx: (reg:SI 2 cx) -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Severity|minor |enhancement Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords||missed-optimization, ra Last reconfirmed|-00-00 00:00:00 |2006-09-18 01:24:44 date|| Summary|bizarre code for int*int/2 |bizarre code for int*int/2 ||for -Os http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072