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
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.
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>
-- 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;
--- /dev/null
+-- { 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;
*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. */
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. */