aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2015-10-23 13:01:23 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2015-10-23 13:01:23 +0000
commite4192fd67c61a0661c59bd8f18d01227881a5a9d (patch)
tree1037042989730774aecb88482c90ea06c6ea176f
parentc90564bd6c68e83cd79342fa831bd8f8ea3a5c7c (diff)
2015-10-23 Tristan Gingold <gingold@adacore.com>
* gcc-interface/utils2.c (build_call_alloc_dealloc): Check no implicit task and protected object restrictions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229252 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/utils2.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 941ce252c76..28cc00cf8e0 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-23 Tristan Gingold <gingold@adacore.com>
+
+ * gcc-interface/utils2.c (build_call_alloc_dealloc): Check no implicit
+ task and protected object restrictions.
+
2015-10-23 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch12.adb, exp_ch6.adb: Minor reformatting.
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index 13421b4f051..ce1a2f2dcb3 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -2329,8 +2329,13 @@ build_call_alloc_dealloc (tree gnu_obj, tree gnu_size, tree gnu_type,
/* Check that we aren't violating the associated restriction. */
if (!(Nkind (gnat_node) == N_Allocator && Comes_From_Source (gnat_node)))
- Check_No_Implicit_Heap_Alloc (gnat_node);
-
+ {
+ Check_No_Implicit_Heap_Alloc (gnat_node);
+ if (Has_Task (Etype (gnat_node)))
+ Check_No_Implicit_Task_Alloc (gnat_node);
+ if (Has_Protected (Etype (gnat_node)))
+ Check_No_Implicit_Protected_Alloc (gnat_node);
+ }
return maybe_wrap_malloc (gnu_size, gnu_type, gnat_node);
}
}