[Ada] Expanded names in ghost assignments
authorBob Duff <duff@adacore.com>
Tue, 7 Jul 2020 21:29:44 +0000 (17:29 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 19 Oct 2020 09:53:39 +0000 (05:53 -0400)
commit2bb7741fbeee2f4fd472cd7e9791ae0b54e7a2b4
treee44af8ff8c94c46657a321a5050f7c367f367855
parent08b0a5e2002f7f43d7f5aa3b55e7c6c22ec3926d
[Ada] Expanded names in ghost assignments

gcc/ada/

* ghost.adb (Whole_Object_Ref): New function to compute the name
of the whole object.
(Mark_And_Set_Ghost_Assignment): Rewrite to use
Whole_Object_Ref.  We need to partly analyze the left-hand side
in order to distinguish expanded names and record components.
* lib-xref.ads, lib-xref.adb (Deferred_References): Move table
to body, and add Defer_Reference to update the table, avoiding
duplicates.
(Generate_Reference): Avoid duplicates.
* sem_ch8.ads, sem_ch8.adb (Find_Direct_Name): Remove _OK
parameters, which are no longer needed. Ignore errors in
Ignore_Errors mode.
* sem_util.ads, sem_util.adb (Preanalyze_Without_Errors): Make
this public, so we can call it from Ghost.
* errout.ads, scng.adb, sem_prag.adb: Minor.
gcc/ada/errout.ads
gcc/ada/ghost.adb
gcc/ada/lib-xref.adb
gcc/ada/lib-xref.ads
gcc/ada/scng.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_ch8.ads
gcc/ada/sem_prag.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads