aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ira.c4
-rw-r--r--gcc/testsuite/gfortran.dg/pr40587.f17
3 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2834ac6..4f1c48c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40640
diff --git a/gcc/ira.c b/gcc/ira.c
index 98dd645..7a2efe9 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -2797,14 +2797,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))
diff --git a/gcc/testsuite/gfortran.dg/pr40587.f b/gcc/testsuite/gfortran.dg/pr40587.f
new file mode 100644
index 0000000..0761d9d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr40587.f
@@ -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