[Ada] Fix up handling of ghost units PR104027 #2
authorArnaud Charlet <charlet@adacore.com>
Mon, 24 Jan 2022 19:16:27 +0000 (14:16 -0500)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 31 Jan 2022 10:46:27 +0000 (10:46 +0000)
gcc/ada/

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

gcc/ada/gnat1drv.adb

index f50feb2..f85bc13 100644 (file)
@@ -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