X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2Fada%2Fpar-prag.adb;h=4cb9fd16ad4e5b8371a83ddb3db56b13e748b452;hb=8b58a060443a7a04f2e1fa854ec2f9fac1a7ff1c;hp=5bbf914d84549690c060cee60e6b64fe5641d290;hpb=54f471f02471d0e135ad1d9683b89afe92ff3a15;p=gcc.git diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index 5bbf914d845..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-2012, 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 => @@ -311,6 +307,7 @@ begin when Pragma_Ada_83 => Ada_Version := Ada_83; Ada_Version_Explicit := Ada_83; + Ada_Version_Pragma := Pragma_Node; ------------ -- Ada_95 -- @@ -323,6 +320,7 @@ begin when Pragma_Ada_95 => Ada_Version := Ada_95; 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,7 +1108,9 @@ 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 | @@ -1103,14 +1121,16 @@ begin 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_Case | + Pragma_Contract_Cases | Pragma_Convention_Identifier | Pragma_CPP_Class | Pragma_CPP_Constructor | @@ -1126,6 +1146,7 @@ begin Pragma_Controlled | Pragma_Convention | Pragma_Debug_Policy | + Pragma_Depends | Pragma_Detect_Blocking | Pragma_Default_Storage_Pool | Pragma_Disable_Atomic_Synchronization | @@ -1151,6 +1172,7 @@ begin Pragma_Fast_Math | Pragma_Finalize_Storage_Only | Pragma_Float_Representation | + Pragma_Global | Pragma_Ident | Pragma_Implementation_Defined | Pragma_Implemented | @@ -1163,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 | @@ -1187,11 +1211,15 @@ begin 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 | @@ -1200,18 +1228,23 @@ begin Pragma_Ordered | Pragma_Optimize | Pragma_Optimize_Alignment | - Pragma_Overflow_Checks | + 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 | @@ -1223,11 +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 | @@ -1236,6 +1274,7 @@ begin 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 | @@ -1254,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 |