This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/56451] [4.8/4.9 regression] Wrong code for gcc.c-torture/execute/941015-1.c on SH
- From: "olegendo at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 25 Nov 2013 21:34:17 +0000
- Subject: [Bug rtl-optimization/56451] [4.8/4.9 regression] Wrong code for gcc.c-torture/execute/941015-1.c on SH
- Auto-submitted: auto-generated
- References: <bug-56451-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56451
Oleg Endo <olegendo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-11-25
Ever confirmed|0 |1
--- Comment #6 from Oleg Endo <olegendo at gcc dot gnu.org> ---
Hm, I'm just poking around here, sorry if it's just useless noise ...
In dbr_schedule, doing:
fill_simple_delay_slots (1);
fill_simple_delay_slots (0);
fill_eager_delay_slots ();
relax_delay_slots (first);
or
// fill_simple_delay_slots (1);
fill_simple_delay_slots (0);
fill_eager_delay_slots ();
relax_delay_slots (first);
-> produces bad code.
fill_simple_delay_slots (1);
fill_simple_delay_slots (0);
// fill_eager_delay_slots ();
relax_delay_slots (first);
-> doesn't do anything to the code.
// fill_simple_delay_slots (1);
// fill_simple_delay_slots (0);
fill_eager_delay_slots ();
relax_delay_slots (first);
or
fill_simple_delay_slots (1);
// fill_simple_delay_slots (0);
fill_eager_delay_slots ();
relax_delay_slots (first);
-> results in the following code (looks OK):
mov.l .L8,r1
cmp/ge r1,r5
bf/s .L11
mov #1,r0
cmp/gt r1,r5
bt/s .L6
mov #2,r0
mov.l .L9,r1
cmp/hs r1,r4
bt .L6
mov #1,r0
.L6:
.align 1
.L11:
rts
nop
.L10: