* tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 17 Oct 2009 22:21:24 +0000 (22:21 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 17 Oct 2009 22:21:24 +0000 (22:21 +0000)
case.  Force using values to replace references within the statement.
(convert_local_reference_stmt): Likewise.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/nested_proc1.adb [moved from gcc/testsuite/gnat.dg/nested_proc.adb with 95% similarity]
gcc/testsuite/gnat.dg/nested_proc2.adb [new file with mode: 0644]
gcc/tree-nested.c

index c05cc6d..d4eb66f 100644 (file)
@@ -1,5 +1,11 @@
 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
 
+       * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
+       case.  Force using values to replace references within the statement.
+       (convert_local_reference_stmt): Likewise.
+
+2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
        * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
        remove a subsequent GOTO or RETURN statement.
 
index 62f8075..168123f 100644 (file)
@@ -1,5 +1,11 @@
 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
 
+       * gnat.dg/nested_proc.adb: Rename into...
+       * gnat.dg/nested_proc1.adb: ...this.
+       * gnat.dg/nested_proc2.adb: New test.
+
+2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
        * gnat.dg/noreturn1.ad[sb]: New test.
 
 2009-10-17  Janus Weil  <janus@gcc.gnu.org>
similarity index 95%
rename from gcc/testsuite/gnat.dg/nested_proc.adb
rename to gcc/testsuite/gnat.dg/nested_proc1.adb
index 144533c..b3abf26 100644 (file)
@@ -2,7 +2,7 @@
 -- Test that a static link is correctly passed to a subprogram which is
 -- indirectly called through an aggregate.
 
-procedure Nested_Proc is
+procedure Nested_Proc1 is
 
   I : Integer := 0;
 
diff --git a/gcc/testsuite/gnat.dg/nested_proc2.adb b/gcc/testsuite/gnat.dg/nested_proc2.adb
new file mode 100644 (file)
index 0000000..b534956
--- /dev/null
@@ -0,0 +1,30 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Nested_Proc2 is
+
+   type Arr is array(1..2) of Integer;
+
+   type Rec is record
+      Data : Arr;
+   end record;
+
+   From  : Rec;
+   Index : Integer;
+
+   function F (X : Arr) return Integer is
+   begin
+      return 0;
+   end;
+
+   procedure Test is
+   begin
+      Index := F (From.Data);
+      If Index /= 0 then
+         raise Program_Error;
+      end if;
+   end;
+
+begin
+  Test;
+end;
index 706571c..0b5e732 100644 (file)
@@ -1307,6 +1307,12 @@ convert_nonlocal_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
       *handled_ops_p = false;
       return NULL_TREE;
 
+    case GIMPLE_COND:
+      wi->val_only = true;
+      wi->is_lhs = false;
+      *handled_ops_p = false;
+      return NULL_TREE;
+
     default:
       /* For every other statement that we are not interested in
         handling here, let the walker traverse the operands.  */
@@ -1707,6 +1713,12 @@ convert_local_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
                 info, gimple_omp_body (stmt));
       break;
 
+    case GIMPLE_COND:
+      wi->val_only = true;
+      wi->is_lhs = false;
+      *handled_ops_p = false;
+      return NULL_TREE;
+
     default:
       /* For every other statement that we are not interested in
         handling here, let the walker traverse the operands.  */