diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-12 09:20:50 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-12 09:20:50 +0000 |
commit | b723448e32a8f5259b55a29687607895a5fdbd86 (patch) | |
tree | f574170fcc5fdc44f0efe2b011babaf336ca1431 /gcc/ada/sem_ch9.adb | |
parent | 515e45efdd8f0f5b7efb9711751e85ffe12f0d19 (diff) | |
download | gcc-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.adb | 7 |
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); |