summaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch9.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2015-05-12 09:20:50 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2015-05-12 09:20:50 +0000
commitb723448e32a8f5259b55a29687607895a5fdbd86 (patch)
treef574170fcc5fdc44f0efe2b011babaf336ca1431 /gcc/ada/sem_ch9.adb
parent515e45efdd8f0f5b7efb9711751e85ffe12f0d19 (diff)
downloadgcc-b723448e32a8f5259b55a29687607895a5fdbd86.tar.gz
2015-05-12 Ed Schonberg <schonberg@adacore.com>
* sem_ch9.adb (Collect_Interfaces): Initialize Direct_Primitive_Operations for a tagged synchronized type, so it can used in ASIS mode. * sem_disp.adb (Check_Dispatching_Operation): If expansion is disabled, attach subprogram to list of Direct_Primitive_Operations of synchronized type itself, for ASIS use, because in this case Corresponding_Record_Type is not built. * einfo.ads: Indicate use of Direct_Primitive_Operations on synchronized type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223051 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_ch9.adb')
-rw-r--r--gcc/ada/sem_ch9.adb7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index 48bee0b938d..0e1af32c678 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -3225,6 +3225,13 @@ package body Sem_Ch9 is
if Present (Interface_List (N)) then
Set_Is_Tagged_Type (T);
+ -- The primitive operations of a tagged synchronized type are
+ -- placed on the Corresponding_Record for proper dispatching,
+ -- but are attached to the synchronized type itself when
+ -- expansion is disabled, for ASIS use.
+
+ Set_Direct_Primitive_Operations (T, New_Elmt_List);
+
Iface := First (Interface_List (N));
while Present (Iface) loop
Iface_Typ := Find_Type_Of_Subtype_Indic (Iface);