diff mbox series

[Ada] Fix up handling of ghost units PR104027 #2

Message ID 20220131104732.GA2682710@adacore.com
State New
Headers show
Series [Ada] Fix up handling of ghost units PR104027 #2 | expand

Commit Message

Pierre-Marie de Rodat Jan. 31, 2022, 10:47 a.m. UTC
The previous change was short-circuiting too much, the regular
processing (in particular writing ALI files) was bypassed, causing
troubles with e.g. gnatmake or gprbuild down the road.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

	PR ada/104027
	* gnat1drv.adb (Gnat1drv): Only call Exit_Program when not
	generating code, otherwise instead go to End_Of_Program.
diff mbox series

Patch

diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -1504,11 +1504,19 @@  begin
          Namet.Finalize;
          Check_Rep_Info;
 
-         --  Exit the driver with an appropriate status indicator. This will
-         --  generate an empty object file for ignored Ghost units, otherwise
-         --  no object file will be generated.
+         if Ecode /= E_Success then
+            --  If we cannot generate code, exit the driver with an appropriate
+            --  status indicator.
 
-         Exit_Program (Ecode);
+            Exit_Program (Ecode);
+
+         else
+            --  Otherwise use a goto so that finalization occurs normally and
+            --  for instance any late processing in the GCC code can be
+            --  performed.
+
+            goto End_Of_Program;
+         end if;
       end if;
 
       --  In -gnatc mode we only do annotation if -gnatR is also set, or if