aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-06-13 08:00:17 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-06-13 08:00:17 +0000
commit42e77cbc7d5c00e637bca5614a8d688ad08a39c7 (patch)
treea050bf546eea4542eff56409c4ae815fac2beffd /gcc
parent7474dcc1fed2bbce551341798bd4d7e6e10a5aa5 (diff)
downloadgcc-42e77cbc7d5c00e637bca5614a8d688ad08a39c7.zip
gcc-42e77cbc7d5c00e637bca5614a8d688ad08a39c7.tar.gz
gcc-42e77cbc7d5c00e637bca5614a8d688ad08a39c7.tar.bz2
decl.c (gnat_to_gnu_entity): Deal with PLUS_EXPR in the expression of a renaming.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with PLUS_EXPR in the expression of a renaming. From-SVN: r237360
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/decl.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/renaming10.adb12
-rw-r--r--gcc/testsuite/gnat.dg/renaming10.ads9
5 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 41a6c61..4ab6648 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2016-06-13 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with
+ PLUS_EXPR in the expression of a renaming.
+
+2016-06-13 Eric Botcazou <ebotcazou@adacore.com>
+
* gcc-interface/utils2.c (known_alignment) <CALL_EXPR>: Deal specially
with calls to malloc.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 8d4ff3f..985527e 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -1003,6 +1003,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition)
&& !call_is_atomic_load (inner))
|| TREE_CODE (inner) == ADDR_EXPR
|| TREE_CODE (inner) == NULL_EXPR
+ || TREE_CODE (inner) == PLUS_EXPR
|| TREE_CODE (inner) == CONSTRUCTOR
|| CONSTANT_CLASS_P (inner)
/* We need to detect the case where a temporary is created to
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 506c7f7..803f9b0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2016-06-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/renaming10.ad[sb]: New test.
+
2016-06-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/70673
diff --git a/gcc/testsuite/gnat.dg/renaming10.adb b/gcc/testsuite/gnat.dg/renaming10.adb
new file mode 100644
index 0000000..07d4312
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/renaming10.adb
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+
+package body Renaming10 is
+
+ function F (Input : Rec) return Natural is
+ Position : Natural renames Input.Position;
+ Index : Natural renames Natural'Succ(Position);
+ begin
+ return Index;
+ end;
+
+end Renaming10;
diff --git a/gcc/testsuite/gnat.dg/renaming10.ads b/gcc/testsuite/gnat.dg/renaming10.ads
new file mode 100644
index 0000000..aeb9fc1
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/renaming10.ads
@@ -0,0 +1,9 @@
+package Renaming10 is
+
+ type Rec is record
+ Position : Natural;
+ end record;
+
+ function F (Input : Rec) return Natural;
+
+end Renaming10;