]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/ada/ChangeLog
[Ada] Elaboration order v4.0 and infinite loops
authorpmderodat <pmderodat@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Jul 2019 08:01:21 +0000 (08:01 +0000)
committerpmderodat <pmderodat@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Jul 2019 08:01:21 +0000 (08:01 +0000)
commit12b1c23bb8c87fe1d8f3d8ba104c10317011e71a
tree61fa6e8e97c43d5f61918800f2d506ef1e245aaa
parentd7569e0494cc7b409691478e01b3979fd992e29b
[Ada] Elaboration order v4.0 and infinite loops

This patch introduces binder switch -d_S which prompts the various
phases of the elaboration order mechanism to output a short message
concerning their commencement and completion. The output is useful when
trying to determine whether a phase is stuck in an infinite loop.

------------
-- Source --
------------

--  main.adb

procedure Main is begin null; end Main;

----------------------------
-- Compilation and output --
----------------------------

$ gnatmake -q main.adb -bargs -d_S -d_V
elaborating units...
collecting units...
units collected.
constructing library graph...
validating library graph...
library graph validated.
library graph constructed.
constructing invocation graph...
validating invocation graph...
invocation graph validated.
invocation graph constructed.
augmenting library graph...
library graph augmented.
discovering components...
components discovered.
validating elaboration order...
elaboration order validated.
units elaborated.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* bindo.adb: Update the section of switches and debugging
elaboration issues.
* bindo.ads: Add type Elaboration_Phase.
* bindo-augmentors.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Augment_Library_Graph): Signal the start and end of the
aubmentation phase.
* bindo-builders.adb: Add with and use clause for Bindo.Writers.
Add use clause for Bindo.Writers.Phase_Writers.
(Build_Invocation_Graph): Signal the start and end of the
invocation graph construction phase.
(Build_Library_Graph): Signal the start and end of the library
graph construction phase.
* bindo-diagnostics.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Diagnose_Cycle): Signal the start and end of the cycle
diagnostic phase.
* bindo-elaborators.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Elaborate_Units): Signal the start and end of the unit
elaboration phase.
* bindo-graphs.adb: Add use clause for
Bindo.Writers.Phase_Writers.
(Find_Components): Signal the start and end of the component
discovery phase.
(Find_Cycles): Signal the start and end of the cycle discovery
phase.
* bindo-units.adb: Add with and use clause for Bindo.Writers.
Add use clause for Bindo.Writers.Phase_Writers.
(Collect_Elaborable_Units): Signal the start and end of the unit
collection phase.
* bindo-validators.adb: Add with and use clause for
Bindo.Writers.  Add use clause for Bindo.Writers.Phase_Writers.
(Validate_Cycles, Validate_Elaboration_Order,
Validate_Invocation_Graph, Validate_Library_Graph): Signal the
start and end of the libray graph validation phase.
* bindo-writers.ads, bindo-writers.adb: Add new nested package
Phase_Writers.
* debug.adb: Update the documentation of switch d_S.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@273379 138bc75d-0d04-0410-961f-82ee72b054a4
13 files changed:
gcc/ada/ChangeLog
gcc/ada/bindo-augmentors.adb
gcc/ada/bindo-builders.adb
gcc/ada/bindo-diagnostics.adb
gcc/ada/bindo-elaborators.adb
gcc/ada/bindo-graphs.adb
gcc/ada/bindo-units.adb
gcc/ada/bindo-validators.adb
gcc/ada/bindo-writers.adb
gcc/ada/bindo-writers.ads
gcc/ada/bindo.adb
gcc/ada/bindo.ads
gcc/ada/debug.adb