From: Ed Schonberg Date: Tue, 27 Oct 2020 13:24:51 +0000 (-0400) Subject: [Ada] Crash on task declaration with Restriction_Warning (No_Tasking) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=52424b13d80af31b6004995c1910fb9ee0ab1939;p=gcc.git [Ada] Crash on task declaration with Restriction_Warning (No_Tasking) gcc/ada/ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): when the restriction is a configuration pragma and specifies No_Tasking, a global flag is set to reject task declarations, and to prevent the construction of Master entities. The flag must not be set if the pragma is a Restriction_Warning, in which case task declarationns are allowed. --- diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 9c57ee31c89..02cf0bc5648 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -10438,10 +10438,13 @@ package body Sem_Prag is Add_To_Config_Boolean_Restrictions (No_Elaboration_Code); end if; - -- Special processing for No_Tasking restriction placed in - -- a configuration pragmas file. + -- Special processing for No_Tasking restriction (not just a + -- warning) when it appears as a configuration pragmas. - elsif R_Id = No_Tasking and then No (Cunit (Main_Unit)) then + elsif R_Id = No_Tasking + and then No (Cunit (Main_Unit)) + and then not Warn + then Set_Global_No_Tasking; end if;