diff options
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/gnat1drv.adb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index f50feb2..f85bc13 100644 --- 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 |