X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2Fada%2Fpar-prag.adb;h=4cb9fd16ad4e5b8371a83ddb3db56b13e748b452;hb=8b58a060443a7a04f2e1fa854ec2f9fac1a7ff1c;hp=1a126759f6bb4ef9721abc1b0c02e8cd8e149e3e;hpb=a4901c083549b9173a1cb3e55741ef0dfc3a8472;p=gcc.git diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index 1a126759f6b..4cb9fd16ad4 100644 --- a/gcc/ada/par-prag.adb +++ b/gcc/ada/par-prag.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -155,9 +155,7 @@ function Prag (Pragma_Node : Node_Id; Semi : Source_Ptr) return Node_Id is begin if Nkind (Expression (Arg)) /= N_Identifier - or else (Chars (Argx) /= Name_On - and then - Chars (Argx) /= Name_Off) + or else not Nam_In (Chars (Argx), Name_On, Name_Off) then Error_Msg_Name_2 := Name_On; Error_Msg_Name_3 := Name_Off; @@ -234,18 +232,16 @@ function Prag (Pragma_Node : Node_Id; Semi : Source_Ptr) return Node_Id is Id := Chars (Arg); Expr := Expression (Arg); - if Id = No_Name - and then Nkind (Expr) = N_Identifier - then - case Get_Restriction_Id (Chars (Expr)) is - when No_Obsolescent_Features => + if Id = No_Name and then Nkind (Expr) = N_Identifier then + case Chars (Expr) is + when Name_No_Obsolescent_Features => Set_Restriction (No_Obsolescent_Features, Pragma_Node); Restriction_Warnings (No_Obsolescent_Features) := Prag_Id = Pragma_Restriction_Warnings; - when SPARK => - Set_Restriction (SPARK, Pragma_Node); - Restriction_Warnings (SPARK) := + when Name_SPARK | Name_SPARK_05 => + Set_Restriction (SPARK_05, Pragma_Node); + Restriction_Warnings (SPARK_05) := Prag_Id = Pragma_Restriction_Warnings; when others => @@ -310,7 +306,8 @@ begin when Pragma_Ada_83 => Ada_Version := Ada_83; - Ada_Version_Explicit := Ada_Version; + Ada_Version_Explicit := Ada_83; + Ada_Version_Pragma := Pragma_Node; ------------ -- Ada_95 -- @@ -322,7 +319,8 @@ begin when Pragma_Ada_95 => Ada_Version := Ada_95; - Ada_Version_Explicit := Ada_Version; + Ada_Version_Explicit := Ada_95; + Ada_Version_Pragma := Pragma_Node; --------------------- -- Ada_05/Ada_2005 -- @@ -337,6 +335,7 @@ begin if Arg_Count = 0 then Ada_Version := Ada_2005; Ada_Version_Explicit := Ada_2005; + Ada_Version_Pragma := Pragma_Node; end if; --------------------- @@ -352,6 +351,7 @@ begin if Arg_Count = 0 then Ada_Version := Ada_2012; Ada_Version_Explicit := Ada_2012; + Ada_Version_Pragma := Pragma_Node; end if; ----------- @@ -935,7 +935,10 @@ begin end if; if J = Slen then - Set_Style_Check_Options (Options, OK, Ptr); + if not Ignore_Style_Checks_Pragmas then + Set_Style_Check_Options (Options, OK, Ptr); + end if; + exit; else @@ -955,17 +958,23 @@ begin OK := False; elsif Chars (A) = Name_All_Checks then - if GNAT_Mode then - Stylesw.Set_GNAT_Style_Check_Options; - else - Stylesw.Set_Default_Style_Check_Options; + if not Ignore_Style_Checks_Pragmas then + if GNAT_Mode then + Stylesw.Set_GNAT_Style_Check_Options; + else + Stylesw.Set_Default_Style_Check_Options; + end if; end if; elsif Chars (A) = Name_On then - Style_Check := True; + if not Ignore_Style_Checks_Pragmas then + Style_Check := True; + end if; elsif Chars (A) = Name_Off then - Style_Check := False; + if not Ignore_Style_Checks_Pragmas then + Style_Check := False; + end if; else OK := False; @@ -1020,8 +1029,15 @@ begin -- set well before any semantic analysis is performed. Note that we -- ignore this pragma if debug flag -gnatd.i is set. + -- Also note that the "one argument" case may have two arguments if the + -- second one is a reason argument. + when Pragma_Warnings => - if Arg_Count = 1 and then not Debug_Flag_Dot_I then + if not Debug_Flag_Dot_I + and then (Arg_Count = 1 + or else (Arg_Count = 2 + and then Chars (Arg2) = Name_Reason)) + then Check_No_Identifier (Arg1); declare @@ -1092,23 +1108,29 @@ begin -- entirely in Sem_Prag, and no further checking is done by Par. when Pragma_Abort_Defer | + Pragma_Abstract_State | Pragma_Assertion_Policy | + Pragma_Assume | Pragma_Assume_No_Invalid_Values | Pragma_AST_Entry | Pragma_All_Calls_Remote | Pragma_Annotate | Pragma_Assert | + Pragma_Assert_And_Cut | Pragma_Asynchronous | Pragma_Atomic | Pragma_Atomic_Components | Pragma_Attach_Handler | + Pragma_Attribute_Definition | Pragma_Check | + Pragma_Check_Float_Overflow | Pragma_Check_Name | Pragma_Check_Policy | Pragma_CIL_Constructor | Pragma_Compile_Time_Error | Pragma_Compile_Time_Warning | Pragma_Compiler_Unit | + Pragma_Contract_Cases | Pragma_Convention_Identifier | Pragma_CPP_Class | Pragma_CPP_Constructor | @@ -1124,9 +1146,9 @@ begin Pragma_Controlled | Pragma_Convention | Pragma_Debug_Policy | + Pragma_Depends | Pragma_Detect_Blocking | Pragma_Default_Storage_Pool | - Pragma_Dimension | Pragma_Disable_Atomic_Synchronization | Pragma_Discard_Names | Pragma_Dispatching_Domain | @@ -1150,6 +1172,7 @@ begin Pragma_Fast_Math | Pragma_Finalize_Storage_Only | Pragma_Float_Representation | + Pragma_Global | Pragma_Ident | Pragma_Implementation_Defined | Pragma_Implemented | @@ -1162,7 +1185,9 @@ begin Pragma_Import_Valued_Procedure | Pragma_Independent | Pragma_Independent_Components | + Pragma_Initial_Condition | Pragma_Initialize_Scalars | + Pragma_Initializes | Pragma_Inline | Pragma_Inline_Always | Pragma_Inline_Generic | @@ -1183,13 +1208,18 @@ begin Pragma_Linker_Destructor | Pragma_Linker_Options | Pragma_Linker_Section | + Pragma_Lock_Free | Pragma_Locking_Policy | Pragma_Long_Float | + Pragma_Loop_Invariant | + Pragma_Loop_Optimize | + Pragma_Loop_Variant | Pragma_Machine_Attribute | Pragma_Main | Pragma_Main_Storage | Pragma_Memory_Size | Pragma_No_Body | + Pragma_No_Inline | Pragma_No_Return | Pragma_No_Run_Time | Pragma_No_Strict_Aliasing | @@ -1198,16 +1228,23 @@ begin Pragma_Ordered | Pragma_Optimize | Pragma_Optimize_Alignment | + Pragma_Overflow_Mode | + Pragma_Overriding_Renamings | Pragma_Pack | + Pragma_Partition_Elaboration_Policy | Pragma_Passive | Pragma_Preelaborable_Initialization | Pragma_Polling | Pragma_Persistent_BSS | + Pragma_Post | Pragma_Postcondition | + Pragma_Post_Class | + Pragma_Pre | Pragma_Precondition | Pragma_Predicate | Pragma_Preelaborate | Pragma_Preelaborate_05 | + Pragma_Pre_Class | Pragma_Priority | Pragma_Priority_Specific_Dispatching | Pragma_Profile | @@ -1219,10 +1256,16 @@ begin Pragma_Pure_12 | Pragma_Pure_Function | Pragma_Queuing_Policy | + Pragma_Refined_Depends | + Pragma_Refined_Global | + Pragma_Refined_Post | + Pragma_Refined_State | Pragma_Relative_Deadline | + Pragma_Remote_Access_Type | Pragma_Remote_Call_Interface | Pragma_Remote_Types | Pragma_Restricted_Run_Time | + Pragma_Rational | Pragma_Ravenscar | Pragma_Reviewable | Pragma_Share_Generic | @@ -1230,6 +1273,8 @@ begin Pragma_Shared_Passive | Pragma_Short_Circuit_And_Or | Pragma_Short_Descriptors | + Pragma_Simple_Storage_Pool_Type | + Pragma_SPARK_Mode | Pragma_Storage_Size | Pragma_Storage_Unit | Pragma_Static_Elaboration_Desired | @@ -1248,6 +1293,8 @@ begin Pragma_Thread_Local_Storage | Pragma_Time_Slice | Pragma_Title | + Pragma_Type_Invariant | + Pragma_Type_Invariant_Class | Pragma_Unchecked_Union | Pragma_Unimplemented_Unit | Pragma_Universal_Aliasing |