OSDN Git Service

PR middle-end/35136
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Feb 2008 20:49:21 +0000 (20:49 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Feb 2008 20:49:21 +0000 (20:49 +0000)
* gimplify.c (force_gimple_operand_bsi): Move SSA renaming code from
here to...
(force_gimple_operand): ...here.

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

gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/loop_address.adb [new file with mode: 0644]

index 8eb01b6..36e3c46 100644 (file)
@@ -1,3 +1,10 @@
+2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/35136
+       * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
+       code from here to...
+       (force_gimple_operand): ...here.
+
 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/35144
index 04ed39c..bc576a0 100644 (file)
@@ -6629,6 +6629,14 @@ force_gimple_operand (tree expr, tree *stmts, bool simple, tree var)
 
   pop_gimplify_context (NULL);
 
+  if (*stmts && gimple_in_ssa_p (cfun))
+    {
+      tree_stmt_iterator tsi;
+
+      for (tsi = tsi_start (*stmts); !tsi_end_p (tsi); tsi_next (&tsi))
+       mark_symbols_for_renaming (tsi_stmt (tsi));
+    }
+
   return expr;
 }
 
@@ -6648,14 +6656,6 @@ force_gimple_operand_bsi (block_stmt_iterator *bsi, tree expr,
   expr = force_gimple_operand (expr, &stmts, simple_p, var);
   if (stmts)
     {
-      if (gimple_in_ssa_p (cfun))
-       {
-         tree_stmt_iterator tsi;
-
-         for (tsi = tsi_start (stmts); !tsi_end_p (tsi); tsi_next (&tsi))
-           mark_symbols_for_renaming (tsi_stmt (tsi));
-       }
-
       if (before)
        bsi_insert_before (bsi, stmts, m);
       else
index e49d4aa..8fb8761 100644 (file)
@@ -1,3 +1,7 @@
+2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/loop_address.adb: New test.
+
 2008-02-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * obj-c++.dg/bitfield-1.mm: Expect failures.
diff --git a/gcc/testsuite/gnat.dg/loop_address.adb b/gcc/testsuite/gnat.dg/loop_address.adb
new file mode 100644 (file)
index 0000000..e8e93d4
--- /dev/null
@@ -0,0 +1,30 @@
+-- { dg-do compile }
+-- { dg-options "-O -gnatws" }
+
+-- PR middle-end/35136
+
+pragma Extend_System(AUX_DEC);
+with System;
+
+procedure Loop_Address is
+
+   function Y(E : Integer) return String is
+   begin
+      return "";
+   end Y;
+
+   function X(C : in System.Address) return String is
+      D : Integer;
+      for D use at C;
+   begin
+      return Y(D);
+   end X;
+
+   A : System.Address;
+   B : String := "";
+
+begin
+   for I in 0..1 loop
+      B := X(System."+"(A, I));
+   end loop;
+end;