https://gcc.gnu.org/g:028dd931876d2bf7d9d38e3ca93f018d0b51ce6d
commit r16-1238-g028dd931876d2bf7d9d38e3ca93f018d0b51ce6d Author: Claire Dross <dr...@adacore.com> Date: Fri Jan 17 14:29:47 2025 +0100 ada: Add case for Program_Exit in Exit_Cases Extend the syntax for Exit_Cases to support exiting the program. gcc/ada/ChangeLog: * doc/gnat_rm/implementation_defined_pragmas.rst (Pragma Exit_Cases): Update the documentation for Exit_Cases. * sem_prag.adb (Anlayze_Pragma): Accept Program_Exit as an exit kind. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. Diff: --- gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst | 3 ++- gcc/ada/gnat_rm.texi | 1 + gcc/ada/gnat_ugn.texi | 2 +- gcc/ada/sem_prag.adb | 7 +++++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index 685bdde48a5d..cae8c168562b 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst @@ -1940,7 +1940,8 @@ Syntax: EXIT_CASE ::= GUARD => EXIT_KIND EXIT_KIND ::= Normal_Return | Exception_Raised - | (Exception_Raised => exception_name) + | (Exception_Raised => exception_name) + | Program_Exit GUARD ::= Boolean_expression For the semantics of this aspect, see the SPARK 2014 Reference Manual, section diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index c67c198b8c4b..4d984713e020 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -3474,6 +3474,7 @@ EXIT_CASE ::= GUARD => EXIT_KIND EXIT_KIND ::= Normal_Return | Exception_Raised | (Exception_Raised => exception_name) + | Program_Exit GUARD ::= Boolean_expression @end example diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 5331a318c0d8..ca1d7bcc1abf 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -29833,8 +29833,8 @@ to permit their use in free software. @printindex ge -@anchor{d2}@w{ } @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } +@anchor{d2}@w{ } @c %**end of body @bye diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 9964f70ce201..706812313296 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -2642,14 +2642,16 @@ package body Sem_Prag is end if; -- Check the exit kind. It shall be either an exception or the - -- identifiers Normal_Return or Any_Exception. + -- identifiers Normal_Return, Exception_Raised, or Program_Exit. if Nkind (Exit_Kind) = N_Identifier then if Chars (Exit_Kind) not in Name_Normal_Return | Name_Exception_Raised + | Name_Program_Exit then Error_Msg_N - ("exit kind should be Normal_Return or Exception_Raised", + ("exit kind should be Normal_Return, Exception_Raised, " & + "or Program_Exit", Exit_Kind); end if; @@ -17438,6 +17440,7 @@ package body Sem_Prag is -- -- EXIT_KIND ::= -- Normal_Return + -- | Program_Exit -- | Exception_Raised -- | (Exception_Raised => exception_name) --