Hi,

On Wed, 3 Jul 2019, pmdero...@gcc.gnu.org wrote:

> Author: pmderodat
> Date: Wed Jul  3 08:14:57 2019
> New Revision: 272976
> 
> URL: https://gcc.gnu.org/viewcvs?rev=272976&root=gcc&view=rev
> Log:
> [Ada] ABE checks v3.0, foundations of Elaboration order v4.0
> 
> ------------------------
> -- Elaboration checks --
> ------------------------
> 
> The dynamic ABE checks model now emits the same diagnostics as those of the
> static ABE checks model.
> 
> The ABE checks mechanism has been redesigned and refactored in the face of
> increasing requirements. Most of the functionality can now be toggled, thus
> allowing for various combinations of behavior. The combinations are defined
> as "initial states" and may be further altered.
> 
> Scenarios and targets have been distinctly separated at the higher level,
> instead of directly working with nodes and entitites. Scenarios and targets
> now carry a representation which removes the need to constantly recompute
> relevant attributes, and offers a common interface for the various processors.
> 
> Most processing has now been refactored into "services" which perform a single
> ABE-related function.
> 
> -----------------------
> -- Elaboration order --
> -----------------------
> 
> A new elaboration order mechanism based on the use of an invocation graph to
> provide extra information about the flow of execution at elaboration time has
> been introduced.
> 
> The ABE checks mechanism has been altered to encode pieces of the invocation
> graph in the associated ALI files of units.
> 
> The new elaboration order mechanism reconstructs the full invocation graph at
> bind time, and coupled with the library item graph, determines the elaboration
> order of units.
> 
> The new elaboration order mechanism is currently inaccessible.

 This change (not posted to `gcc-patches' for some reason) has caused a 
regression in the form of a build failure with the `riscv-linux-gnu' 
target (and for the record the `x86_64-linux-gnu' build/host running GCC 
8.3.0):

ali.adb:34:28: warning: use clause for package "GNAT" has no effect
ali.adb:35:28: warning: use clause for package "Dynamic_HTables" has no effect
ali.adb:155:52: "Bucket_Range_Type" is undefined (more references follow)
ali.adb:158:27: "Dynamic_Hash_Tables" is undefined
ali.adb:173:30: "Sig_Map" is undefined (more references follow)
gnatmake: ".../gcc/ada/ali.adb" compilation error
make[3]: *** [../gcc-interface/Makefile:469: gnatmake-re] Error 4
make[3]: Leaving directory '.../gcc/ada/tools'
make[2]: *** [Makefile:216: gnattools-cross] Error 2
make[2]: Leaving directory '.../gnattools'
make[1]: *** [Makefile:11224: all-gnattools] Error 2

-- that has persisted ever since.

 I have noticed that the `Bucket_Range_Type' data type has only been added 
after GCC 8 has branched, so I tried GCC 9 instead, Debian 9.2.1 20190821 
specifically, but that still fails:

ali.adb:35:28: warning: use clause for package "Dynamic_HTables" has no effect
ali.adb:158:27: "Dynamic_Hash_Tables" is undefined
ali.adb:173:30: "Sig_Map" is undefined (more references follow)
gnatmake: ".../gcc/ada/ali.adb" compilation error
../gcc-interface/Makefile:468: recipe for target 'gnatmake-re' failed

-- likely due to r272860, which renamed the `Dynamic_HTable' package to 
`Dynamic_Hash_Tables' (r272860 is earlier than r272976, but it is only 
r272976 that has made GNAT proper use `Dynamic_Hash_Tables'; previously 
only `libgnat' used that package).

 This means that no released GCC version can be used to build trunk GNAT, 
which would provide a clean upgrade path, and there is only a narrow 
window between r272860 and r272975 inclusive that lets one move on to GNAT 
10.  I find this rather unfortunate.

 Can you please look into it?

  Maciej



Reply via email to