re PR target/40587 (Revision 139590 caused ICE in emit_swap_insn at reg-stack.c:827)

2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/40587
	* ira.c (build_insn_chain): Use DF_LR_OUT instead of
	df_get_live_out.
	* testsuite/gfortran.dg/pr40587.f: New test.

From-SVN: r149213
This commit is contained in:
Vladimir Makarov 2009-07-03 22:46:30 +00:00 committed by Vladimir Makarov
parent ce80f42bc5
commit 6593a269e8
3 changed files with 26 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
PR target/40587
* ira.c (build_insn_chain): Use DF_LR_OUT instead of
df_get_live_out.
* testsuite/gfortran.dg/pr40587.f: New test.
2009-07-02 Richard Guenther <rguenther@suse.de>
PR middle-end/40585

View File

@ -2794,14 +2794,14 @@ build_insn_chain (void)
CLEAR_REG_SET (live_relevant_regs);
memset (live_subregs_used, 0, max_regno * sizeof (int));
EXECUTE_IF_SET_IN_BITMAP (df_get_live_out (bb), 0, i, bi)
EXECUTE_IF_SET_IN_BITMAP (DF_LR_OUT (bb), 0, i, bi)
{
if (i >= FIRST_PSEUDO_REGISTER)
break;
bitmap_set_bit (live_relevant_regs, i);
}
EXECUTE_IF_SET_IN_BITMAP (df_get_live_out (bb),
EXECUTE_IF_SET_IN_BITMAP (DF_LR_OUT (bb),
FIRST_PSEUDO_REGISTER, i, bi)
{
if (pseudo_for_reload_consideration_p (i))

View File

@ -0,0 +1,17 @@
C PR traget/40587
C { dg-do compile }
C { dg-options "-O2" }
subroutine TEST(i, r, result)
implicit none
integer i
REAL*8 r
REAL*8 result
REAL*8 r2
if(i.eq.0) then
r2 = r
else
call ERROR()
endif
result = r2
return
end