]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* tree-sra.c (decide_block_copy): Decide if there are groups.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Sep 2007 15:23:01 +0000 (15:23 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Sep 2007 15:23:01 +0000 (15:23 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128602 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 2e4a1907503a8f50f6bdb605e259e9c82c0d84b1..99d4f89697de427890476d10e184d55bf93faf9a 100644 (file)
@@ -1,3 +1,7 @@
+2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-sra.c (decide_block_copy): Decide if there are groups.
+
 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
 
        * config/m68k/m68k.c (output_move_himode): Remove jump table
index 36d6ceef2d2bd7f3cf74242576db1a5cfa55d14c..b36320df6ead4b6d158755ce6c83184c0a109bc1 100644 (file)
@@ -1,3 +1,7 @@
+2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/slice2.ad[sb]: New testcase.
+
 2007-09-19  Nick Clifton  <nickc@redhat.com>
 
        * gcc.dg/cpp/assert4.c: Fix expected h8300 preprocessor define.
diff --git a/gcc/testsuite/gnat.dg/slice2.adb b/gcc/testsuite/gnat.dg/slice2.adb
new file mode 100644 (file)
index 0000000..ab73074
--- /dev/null
@@ -0,0 +1,13 @@
+-- { dg-do compile }\r
+-- { dg-options "-O" }\r
+\r
+package body Slice2 is\r
+\r
+  function F (I : R1) return R2 is\r
+    Val : R2;\r
+  begin\r
+    Val.Text (1 .. 8) := I.Text (1 .. 8);\r
+    return Val;\r
+  end F;\r
+\r
+end Slice2;\r
diff --git a/gcc/testsuite/gnat.dg/slice2.ads b/gcc/testsuite/gnat.dg/slice2.ads
new file mode 100644 (file)
index 0000000..f1b8674
--- /dev/null
@@ -0,0 +1,14 @@
+package Slice2 is\r
+\r
+  type R1 is record\r
+    Text : String (1 .. 30);\r
+  end record;\r
+\r
+  type R2 is record\r
+    Text : String (1 .. 8);\r
+    B : Boolean := True;\r
+  end record;\r
+\r
+  function F (I : R1) return R2;\r
+\r
+end Slice2;\r
index 4a3924b6a64e7b5de63c11816dce86b8ca420237..b1d2acc30197f4721121b6a9da8a6b8c171d536a 100644 (file)
@@ -1491,8 +1491,8 @@ decide_block_copy (struct sra_elt *elt)
       return false;
     }
 
-  /* Don't decide if we've no uses.  */
-  if (elt->n_uses == 0 && elt->n_copies == 0)
+  /* Don't decide if we've no uses and no groups.  */
+  if (elt->n_uses == 0 && elt->n_copies == 0 && elt->groups == NULL)
     ;
 
   else if (!elt->is_scalar)