aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHristian Kirtchev <kirtchev@adacore.com>2017-10-14 17:17:41 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2017-10-14 17:17:41 +0000
commit0fcd7270b6fb2fbb5ec72671374b17d3db531151 (patch)
treee6e189f31ec835d26709dbdbb664de99cc3a592a
parent92b751fdc698c7b2040f986aaa125e4163003a2d (diff)
downloadgcc-0fcd7270b6fb2fbb5ec72671374b17d3db531151.zip
gcc-0fcd7270b6fb2fbb5ec72671374b17d3db531151.tar.gz
gcc-0fcd7270b6fb2fbb5ec72671374b17d3db531151.tar.bz2
sem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Interface is not a suitable...
gcc/ada/ 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * sem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Interface is not a suitable preelaboratd context when the call appears in the package body. gcc/testsuite/ 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * gnat.dg/remote_call_iface.ads, gnat.dg/remote_call_iface.adb: New testcase. From-SVN: r253758
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_elab.adb2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/remote_call_iface.adb7
-rw-r--r--gcc/testsuite/gnat.dg/remote_call_iface.ads5
5 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index d0d17ba..7708c58 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-14 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_elab.adb (In_Preelaborated_Context): A generic package subject to
+ Remote_Call_Interface is not a suitable preelaboratd context when the
+ call appears in the package body.
+
2017-10-14 Eric Botcazou <ebotcazou@adacore.com>
* layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0.
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index 7f5a3d6..7f9ce08 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -1808,7 +1808,7 @@ package body Sem_Elab is
-- be on another machine.
if Ekind (Body_Id) = E_Package_Body
- and then Ekind (Spec_Id) = E_Package
+ and then Ekind_In (Spec_Id, E_Generic_Package, E_Package)
and then (Is_Remote_Call_Interface (Spec_Id)
or else Is_Remote_Types (Spec_Id))
then
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c48f8a6..909ca73 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-14 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * gnat.dg/remote_call_iface.ads, gnat.dg/remote_call_iface.adb: New
+ testcase.
+
2017-10-14 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/81423
diff --git a/gcc/testsuite/gnat.dg/remote_call_iface.adb b/gcc/testsuite/gnat.dg/remote_call_iface.adb
new file mode 100644
index 0000000..6816ad9
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/remote_call_iface.adb
@@ -0,0 +1,7 @@
+-- { dg-do compile }
+
+package body Remote_Call_Iface is
+ procedure Proc is begin null; end;
+begin
+ Proc;
+end Remote_Call_Iface;
diff --git a/gcc/testsuite/gnat.dg/remote_call_iface.ads b/gcc/testsuite/gnat.dg/remote_call_iface.ads
new file mode 100644
index 0000000..ce12fef
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/remote_call_iface.ads
@@ -0,0 +1,5 @@
+generic
+package Remote_Call_Iface is
+ pragma Remote_Call_Interface;
+ procedure Proc;
+end Remote_Call_Iface;