OSDN Git Service

2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Jul 2009 22:36:31 +0000 (22:36 +0000)
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Jul 2009 22:36:31 +0000 (22:36 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149212 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ira.c
gcc/testsuite/gfortran.dg/pr40587.f [new file with mode: 0644]

index 2834ac6..4f1c48c 100644 (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-03  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/40640
index 98dd645..7a2efe9 100644 (file)
--- 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 (file)
index 0000000..0761d9d
--- /dev/null
@@ -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