OSDN Git Service

* tree-ssa-live.c (remove_unused_scope_block_p): Remove again
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Jun 2012 06:46:25 +0000 (06:46 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Jun 2012 06:46:25 +0000 (06:46 +0000)
DECL_IGNORED_P non-reg vars even if they are used.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@188873 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/lto15.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/lto15.ads [new file with mode: 0644]
gcc/tree-ssa-live.c

index 7764a37..2e3c01e 100644 (file)
@@ -1,3 +1,8 @@
+2012-06-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-ssa-live.c (remove_unused_scope_block_p): Remove again
+       DECL_IGNORED_P non-reg vars even if they are used.
+
 2012-06-19  Jason Merrill  <jason@redhat.com>
 
        PR c++/52637
index 39ea16c..3c6c35e 100644 (file)
@@ -1,3 +1,7 @@
+2012-06-22  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/lto15.ad[sb]: New test.
+
 2012-06-19  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        * gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets
diff --git a/gcc/testsuite/gnat.dg/lto15.adb b/gcc/testsuite/gnat.dg/lto15.adb
new file mode 100644 (file)
index 0000000..b1bc251
--- /dev/null
@@ -0,0 +1,11 @@
+-- { dg-do compile }
+-- { dg-options "-O -flto -g" }
+
+package body Lto15 is
+
+   function Proc (Data : Arr) return R is
+   begin
+      return (Data'Length, Data);
+   end;
+
+end Lto15;
diff --git a/gcc/testsuite/gnat.dg/lto15.ads b/gcc/testsuite/gnat.dg/lto15.ads
new file mode 100644 (file)
index 0000000..297ea0c
--- /dev/null
@@ -0,0 +1,11 @@
+package Lto15 is
+
+   type Arr is array (Positive range <>) of Integer;
+
+   type R(Size : Positive) is record
+      Data : Arr (1 .. Size);
+   end record;
+
+   function Proc (Data : Arr) return R;
+
+end Lto15;
index 31eac11..80ab425 100644 (file)
@@ -451,11 +451,8 @@ remove_unused_scope_block_p (tree scope)
       else if (TREE_CODE (*t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (*t))
        unused = false;
 
-      /* Remove everything we don't generate debug info for.
-        Don't remove larger vars though, because BLOCK_VARS are
-        used also during expansion to determine which variables
-        might share stack space.  */
-      else if (DECL_IGNORED_P (*t) && is_gimple_reg (*t))
+      /* Remove everything we don't generate debug info for.  */
+      else if (DECL_IGNORED_P (*t))
        {
          *t = DECL_CHAIN (*t);
          next = t;