summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2018-03-10 10:15:01 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2018-03-10 10:15:01 +0000
commitd3406fff7b5376dafceb4a0921b3347792245644 (patch)
tree3959a02f2bef534a82ce481098dc2f107e42622a
parent0ff050a998827c27f216c373331d643b7875d5a7 (diff)
downloadgcc-d3406fff7b5376dafceb4a0921b3347792245644.tar.gz
* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
Consider only entities for objects. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@258413 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/trans.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/prot3.adb8
-rw-r--r--gcc/testsuite/gnat.dg/prot3_pkg.adb17
-rw-r--r--gcc/testsuite/gnat.dg/prot3_pkg.ads16
6 files changed, 53 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 73cd991166b..9a3ff505d58 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
+ Consider only entities for objects.
+
2018-03-06 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (convert_with_check): Fix typo in the condition
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index c42583a187a..eaad084959c 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -4059,6 +4059,8 @@ node_has_volatile_full_access (Node_Id gnat_node)
case N_Identifier:
case N_Expanded_Name:
gnat_entity = Entity (gnat_node);
+ if (!Is_Object (gnat_entity))
+ break;
return Is_Volatile_Full_Access (gnat_entity)
|| Is_Volatile_Full_Access (Etype (gnat_entity));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7b648b3dbeb..06c779e8a43 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/prot3.adb: New test.
+ * gnat.dg/prot3_pkg.ad[sb]: New helper.
+
2018-03-09 Kugan Vivekanandarajah <kuganv@linaro.org>
Backport from mainline
diff --git a/gcc/testsuite/gnat.dg/prot3.adb b/gcc/testsuite/gnat.dg/prot3.adb
new file mode 100644
index 00000000000..25390659238
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/prot3.adb
@@ -0,0 +1,8 @@
+-- { dg-do run }
+
+with Prot3_Pkg; use Prot3_Pkg;
+
+procedure Prot3 is
+begin
+ P.Foo (4);
+end;
diff --git a/gcc/testsuite/gnat.dg/prot3_pkg.adb b/gcc/testsuite/gnat.dg/prot3_pkg.adb
new file mode 100644
index 00000000000..07ae1829f60
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/prot3_pkg.adb
@@ -0,0 +1,17 @@
+package body Prot3_Pkg is
+
+ protected body Prot is
+ function Fn (J : Short_Integer) return Rec
+ is
+ begin
+ return (V1 => J * J,
+ V2 => J);
+ end;
+
+ procedure Foo (J : Short_Integer) is
+ begin
+ Val := Fn (J);
+ end;
+ end Prot;
+
+end Prot3_Pkg;
diff --git a/gcc/testsuite/gnat.dg/prot3_pkg.ads b/gcc/testsuite/gnat.dg/prot3_pkg.ads
new file mode 100644
index 00000000000..b4cce90a543
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/prot3_pkg.ads
@@ -0,0 +1,16 @@
+package Prot3_Pkg is
+
+ type Rec is record
+ V1 : Short_Integer;
+ V2 : Short_Integer;
+ end record with Volatile_Full_Access;
+
+ protected type Prot is
+ procedure Foo (J : Short_Integer);
+ private
+ Val : Rec;
+ end Prot;
+
+ P : Prot;
+
+end Prot3_Pkg;