aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2015-12-10 14:06:15 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2015-12-10 14:06:15 +0000
commitd747d0057c694f600da48ff11a0cf6b10aea9dbf (patch)
tree6b85bdf8dd69f0b774a2373b3cacb5e86e94d32a
parent6b4f890601a9bb1ff803cef04ee5779d49befb97 (diff)
downloadgcc-d747d0057c694f600da48ff11a0cf6b10aea9dbf.zip
gcc-d747d0057c694f600da48ff11a0cf6b10aea9dbf.tar.gz
gcc-d747d0057c694f600da48ff11a0cf6b10aea9dbf.tar.bz2
trans.c (Call_to_gnu): Remove guard for NULL_EXPR.
* gcc-interface/trans.c (Call_to_gnu): Remove guard for NULL_EXPR. * gcc-interface/utils2.c (gnat_rewrite_reference) <ERROR_MARK>: Return the reference unmodified. <NULL_EXPR>: New case. Likewise. From-SVN: r231513
-rw-r--r--gcc/ada/ChangeLog7
-rw-r--r--gcc/ada/gcc-interface/trans.c4
-rw-r--r--gcc/ada/gcc-interface/utils2.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/array25.adb11
-rw-r--r--gcc/testsuite/gnat.dg/array25_pkg.adb15
-rw-r--r--gcc/testsuite/gnat.dg/array25_pkg.ads19
7 files changed, 60 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 955f036..10758ff 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,12 @@
2015-12-10 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/trans.c (Call_to_gnu): Remove guard for NULL_EXPR.
+ * gcc-interface/utils2.c (gnat_rewrite_reference) <ERROR_MARK>: Return
+ the reference unmodified.
+ <NULL_EXPR>: New case. Likewise.
+
+2015-12-10 Eric Botcazou <ebotcazou@adacore.com>
+
* gcc-interface/gigi.h (create_var_decl): Adjust comment.
(create_subprog_decl): Likewise.
* gcc-interface/utils.c (create_var_decl): Likewise.
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index d565854..d8d5ce2 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -4407,9 +4407,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
/* If it's possible we may need to use this expression twice, make sure
that any side-effects are handled via SAVE_EXPRs; likewise if we need
to force side-effects before the call. */
- if (Ekind (gnat_formal) != E_In_Parameter
- && !is_by_ref_formal_parm
- && TREE_CODE (gnu_name) != NULL_EXPR)
+ if (Ekind (gnat_formal) != E_In_Parameter && !is_by_ref_formal_parm)
{
tree init = NULL_TREE;
gnu_name = gnat_stabilize_reference (gnu_name, true, &init);
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index ca307f3..8af121e 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -2733,7 +2733,8 @@ gnat_rewrite_reference (tree ref, rewrite_fn func, void *data, tree *init)
break;
case ERROR_MARK:
- return error_mark_node;
+ case NULL_EXPR:
+ return ref;
default:
gcc_unreachable ();
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bb785c6..c4f66a8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array25.adb: New test.
+ * gnat.dg/array25_pkg.ad[sb]: New helper.
+
2015-12-10 Claudiu Zissulescu <claziss@synopsys.com>
* lib/target-supports.exp (check_effective_target_arc_atomic): New
diff --git a/gcc/testsuite/gnat.dg/array25.adb b/gcc/testsuite/gnat.dg/array25.adb
new file mode 100644
index 0000000..68dd3cb
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array25.adb
@@ -0,0 +1,11 @@
+-- { dg-do compile }
+
+with Array25_Pkg;
+
+procedure Array25 is
+
+ package My_Pkg is new Array25_Pkg (0, 0);
+
+begin
+ null;
+end;
diff --git a/gcc/testsuite/gnat.dg/array25_pkg.adb b/gcc/testsuite/gnat.dg/array25_pkg.adb
new file mode 100644
index 0000000..9bb2fa5
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array25_pkg.adb
@@ -0,0 +1,15 @@
+package body Array25_Pkg is
+
+ procedure Get_Inner (A : out Arr1) is
+ begin
+ null;
+ end;
+
+ procedure Get (A : out Arr2) is
+ begin
+ for I in Arr2'Range loop
+ Get_Inner (A (I).Data);
+ end loop;
+ end;
+
+end Array25_Pkg;
diff --git a/gcc/testsuite/gnat.dg/array25_pkg.ads b/gcc/testsuite/gnat.dg/array25_pkg.ads
new file mode 100644
index 0000000..1965bab
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/array25_pkg.ads
@@ -0,0 +1,19 @@
+generic
+
+ UB1 : Natural;
+
+ UB2 : Natural;
+
+package Array25_Pkg is
+
+ type Arr1 is array (1 .. UB1) of Integer;
+
+ type Rec is record
+ Data : Arr1;
+ end record;
+
+ type Arr2 is array (1 .. UB2) of Rec;
+
+ procedure Get (A : out Arr2);
+
+end Array25_Pkg;