From 713125282e264e5203f725ec969468d26cc966a1 Mon Sep 17 00:00:00 2001 From: Justin Squirek Date: Tue, 8 Jan 2019 09:52:32 +0000 Subject: [PATCH] [Ada] Revert recent changes in the generation of deps in ali files Following the discovery of regressions in GPRbuild, this reverts both r263100 and r264608: 2019-01-08 Justin Squirek Revert: 2018-07-31 Justin Squirek gcc/ada/ * lib-writ.adb (Write_With_Lines): Modfiy the generation of dependencies within ali files so that source unit bodies are properly listed even if said bodies are missing. Perform legacy behavior in GNATprove mode. * lib-writ.ads: Modify documentation to reflect current behavior. and: 2018-09-26 Justin Squirek gcc/ada/ * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add documentation and an extra conditional check for RCI units so that generated ali files will list the spec only instead of a body when a body is not found. From-SVN: r267680 --- gcc/ada/ChangeLog | 26 ++++++++++++++++++++++++++ gcc/ada/lib-writ.adb | 43 +++++++++---------------------------------- gcc/ada/lib-writ.ads | 15 +++++++-------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0341a2bc532..7995c202ee1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,29 @@ +2019-01-08 Justin Squirek + + Revert: + + 2018-07-31 Justin Squirek + + gcc/ada/ + + * lib-writ.adb (Write_With_Lines): Modfiy the generation + of dependencies within ali files so that source unit + bodies are properly listed even if said bodies are + missing. Perform legacy behavior in GNATprove mode. + * lib-writ.ads: Modify documentation to reflect current + behavior. + + and: + + 2018-09-26 Justin Squirek + + gcc/ada/ + + * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add + documentation and an extra conditional check for RCI + units so that generated ali files will list the spec + only instead of a body when a body is not found. + 2019-01-04 Eric Botcazou * gnatvsn.ads: Bump copyright year. diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb index ce35c9e8fa5..759f8479c80 100644 --- a/gcc/ada/lib-writ.adb +++ b/gcc/ada/lib-writ.adb @@ -953,42 +953,17 @@ package body Lib.Writ is Write_Info_Tab (25); if Is_Spec_Name (Uname) then + Body_Fname := + Get_File_Name + (Uname => Get_Body_Name (Uname), + Subunit => False, + May_Fail => True); - -- In GNATprove mode we must write the spec of a unit which - -- requires a body if that body is not found. This will - -- allow partial analysis on incomplete sources. Also, in - -- the case of a unit that is a remote call interface, the - -- bodies of packages may not exist but still may form a - -- valid program - so we handle that here as well. - - if GNATprove_Mode - or else Is_Remote_Call_Interface (Cunit_Entity (Unum)) - then - Body_Fname := - Get_File_Name - (Uname => Get_Body_Name (Uname), - Subunit => False, - May_Fail => True); - - Body_Index := Get_Unit_Index (Get_Body_Name (Uname)); - - if Body_Fname = No_File then - Body_Fname := Get_File_Name (Uname, Subunit => False); - Body_Index := Get_Unit_Index (Uname); - end if; - - -- In the normal path we don't allow failure in fetching the - -- name of the desired body unit so that it may be properly - -- referenced in the output ali - even if it is missing. - - else - Body_Fname := - Get_File_Name - (Uname => Get_Body_Name (Uname), - Subunit => False, - May_Fail => False); + Body_Index := Get_Unit_Index (Get_Body_Name (Uname)); - Body_Index := Get_Unit_Index (Get_Body_Name (Uname)); + if Body_Fname = No_File then + Body_Fname := Get_File_Name (Uname, Subunit => False); + Body_Index := Get_Unit_Index (Uname); end if; else Body_Fname := Get_File_Name (Uname, Subunit => False); diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads index 9c7c270d109..b8e92a35e50 100644 --- a/gcc/ada/lib-writ.ads +++ b/gcc/ada/lib-writ.ads @@ -629,14 +629,13 @@ package Lib.Writ is -- by the current unit. One Z line is present for each unit that is -- only implicitly withed by the current unit. The first parameter is -- the unit name in internal format. The second parameter is the file - -- name of the body unit on which the current compilation unit depends, - -- except when in GNATprove mode or when the unit is a remote call - -- interface. In these cases, when packages that require a body have - -- no associated source file, the file name of the spec is used instead - -- to allow partial analysis of incomplete sources. The third parameter - -- is the file name of the library information file that contains the - -- results of compiling this unit. The optional modifiers are used as - -- follows: + -- name of the file that must be compiled to compile this unit. It is + -- usually the file for the body, except for packages which have no + -- body. For units that need a body, if the source file for the body + -- cannot be found, the file name of the spec is used instead. The + -- third parameter is the file name of the library information file + -- that contains the results of compiling this unit. The optional + -- modifiers are used as follows: -- E pragma Elaborate applies to this unit -- 2.30.2