diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-13 10:02:31 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-13 10:02:31 +0000 |
commit | 218532897724b04c21abc44420b6d3f19f583ff7 (patch) | |
tree | 5763142f34ae94b7103a174f78d7a22414f8261f /gcc | |
parent | c238835e8beea12f3f6c76fd0a221646042f3c35 (diff) | |
download | gcc-218532897724b04c21abc44420b6d3f19f583ff7.tar.gz |
2014-06-13 Robert Dewar <dewar@adacore.com>
* lib.ads, lib.adb, lib-writ.adb, lib-load.adb (Is_Compiler_Unit):
Removed.
* opt.ads (Compiler_Unit): New flag.
* par-ch5.adb (Test_Statement_Required): Call Check_Compiler_Unit
for null statement sequence (not allowed in compiler unit).
* par-prag.adb (Prag): Handle Compiler_Unit[_Warning] during
parsing.
* restrict.ads, restrict.adb (Check_Compiler_Unit): New version and new
calling sequence.
* sem_ch11.adb, sem_ch3.adb, sem_ch4.adb: New calling sequence for
Check_Compiler_Unit.
* sem_ch6.adb (Analyze_Extended_Return_Statement): Call
Check_Compiler_Unit (this construct is not allowed in compiler
units).
* sem_prag.adb (Analyze_Pragma, case Compiler_Unit[_Warning]):
Set Opt.Compiler_Unit.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211617 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/ada/lib-load.adb | 8 | ||||
-rw-r--r-- | gcc/ada/lib-writ.adb | 6 | ||||
-rw-r--r-- | gcc/ada/lib.adb | 15 | ||||
-rw-r--r-- | gcc/ada/lib.ads | 13 | ||||
-rw-r--r-- | gcc/ada/opt.ads | 9 | ||||
-rw-r--r-- | gcc/ada/par-ch5.adb | 6 | ||||
-rw-r--r-- | gcc/ada/par-prag.adb | 18 | ||||
-rw-r--r-- | gcc/ada/restrict.adb | 13 | ||||
-rw-r--r-- | gcc/ada/restrict.ads | 13 | ||||
-rw-r--r-- | gcc/ada/sem_ch11.adb | 4 | ||||
-rw-r--r-- | gcc/ada/sem_ch3.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_ch4.adb | 8 | ||||
-rw-r--r-- | gcc/ada/sem_ch6.adb | 1 | ||||
-rw-r--r-- | gcc/ada/sem_prag.adb | 9 |
15 files changed, 94 insertions, 50 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9abc47cf2c9..595d430cb53 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,22 @@ +2014-06-13 Robert Dewar <dewar@adacore.com> + + * lib.ads, lib.adb, lib-writ.adb, lib-load.adb (Is_Compiler_Unit): + Removed. + * opt.ads (Compiler_Unit): New flag. + * par-ch5.adb (Test_Statement_Required): Call Check_Compiler_Unit + for null statement sequence (not allowed in compiler unit). + * par-prag.adb (Prag): Handle Compiler_Unit[_Warning] during + parsing. + * restrict.ads, restrict.adb (Check_Compiler_Unit): New version and new + calling sequence. + * sem_ch11.adb, sem_ch3.adb, sem_ch4.adb: New calling sequence for + Check_Compiler_Unit. + * sem_ch6.adb (Analyze_Extended_Return_Statement): Call + Check_Compiler_Unit (this construct is not allowed in compiler + units). + * sem_prag.adb (Analyze_Pragma, case Compiler_Unit[_Warning]): + Set Opt.Compiler_Unit. + 2014-06-13 Geert Bosch <bosch@adacore.com> * gnat_rm.texi, s-tasinf-solaris.ads, sem_prag.adb, gnat_ugn.texi, diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb index 540bd63043c..eecf2a72498 100644 --- a/gcc/ada/lib-load.adb +++ b/gcc/ada/lib-load.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, 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- -- @@ -216,7 +216,7 @@ package body Lib.Load is Generate_Code => False, Has_Allocator => False, Has_RACW => False, - Is_Compiler_Unit => False, + Filler => False, Ident_String => Empty, Loading => False, Main_Priority => Default_Main_Priority, @@ -323,7 +323,7 @@ package body Lib.Load is Generate_Code => False, Has_Allocator => False, Has_RACW => False, - Is_Compiler_Unit => False, + Filler => False, Ident_String => Empty, Loading => True, Main_Priority => Default_Main_Priority, @@ -687,7 +687,7 @@ package body Lib.Load is Generate_Code => False, Has_Allocator => False, Has_RACW => False, - Is_Compiler_Unit => False, + Filler => False, Ident_String => Empty, Loading => True, Main_Priority => Default_Main_Priority, diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb index 48adf70c97a..f030c515673 100644 --- a/gcc/ada/lib-writ.adb +++ b/gcc/ada/lib-writ.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, 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- -- @@ -84,7 +84,7 @@ package body Lib.Writ is Generate_Code => False, Has_Allocator => False, Has_RACW => False, - Is_Compiler_Unit => False, + Filler => False, Ident_String => Empty, Loading => False, Main_Priority => -1, @@ -142,7 +142,7 @@ package body Lib.Writ is Generate_Code => False, Has_Allocator => False, Has_RACW => False, - Is_Compiler_Unit => False, + Filler => False, Ident_String => Empty, Loading => False, Main_Priority => -1, diff --git a/gcc/ada/lib.adb b/gcc/ada/lib.adb index 9ea496f3d26..826fcc99683 100644 --- a/gcc/ada/lib.adb +++ b/gcc/ada/lib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, 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- -- @@ -126,11 +126,6 @@ package body Lib is return Units.Table (U).Has_RACW; end Has_RACW; - function Is_Compiler_Unit (U : Unit_Number_Type) return Boolean is - begin - return Units.Table (U).Is_Compiler_Unit; - end Is_Compiler_Unit; - function Ident_String (U : Unit_Number_Type) return Node_Id is begin return Units.Table (U).Ident_String; @@ -221,14 +216,6 @@ package body Lib is Units.Table (U).Has_RACW := B; end Set_Has_RACW; - procedure Set_Is_Compiler_Unit - (U : Unit_Number_Type; - B : Boolean := True) - is - begin - Units.Table (U).Is_Compiler_Unit := B; - end Set_Is_Compiler_Unit; - procedure Set_Ident_String (U : Unit_Number_Type; N : Node_Id) is begin Units.Table (U).Ident_String := N; diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads index 1b6898db60e..b5499df96f3 100644 --- a/gcc/ada/lib.ads +++ b/gcc/ada/lib.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, 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- -- @@ -326,10 +326,6 @@ package Lib is -- (RACW) object. This is used for controlling generation of the RA -- attribute in the ali file. - -- Is_Compiler_Unit - -- A Boolean flag, initially set False by default, set to True if a - -- pragma Compiler_Unit_Warning appears in the unit. - -- Ident_String -- N_String_Literal node from a valid pragma Ident that applies to -- this unit. If no Ident pragma applies to the unit, then Empty. @@ -415,7 +411,6 @@ package Lib is function Ident_String (U : Unit_Number_Type) return Node_Id; function Has_Allocator (U : Unit_Number_Type) return Boolean; function Has_RACW (U : Unit_Number_Type) return Boolean; - function Is_Compiler_Unit (U : Unit_Number_Type) return Boolean; function Loading (U : Unit_Number_Type) return Boolean; function Main_CPU (U : Unit_Number_Type) return Int; function Main_Priority (U : Unit_Number_Type) return Int; @@ -434,7 +429,6 @@ package Lib is procedure Set_Generate_Code (U : Unit_Number_Type; B : Boolean := True); procedure Set_Has_RACW (U : Unit_Number_Type; B : Boolean := True); procedure Set_Has_Allocator (U : Unit_Number_Type; B : Boolean := True); - procedure Set_Is_Compiler_Unit (U : Unit_Number_Type; B : Boolean := True); procedure Set_Ident_String (U : Unit_Number_Type; N : Node_Id); procedure Set_Loading (U : Unit_Number_Type; B : Boolean := True); procedure Set_Main_CPU (U : Unit_Number_Type; P : Int); @@ -734,7 +728,6 @@ private pragma Inline (Generate_Code); pragma Inline (Has_Allocator); pragma Inline (Has_RACW); - pragma Inline (Is_Compiler_Unit); pragma Inline (Increment_Serial_Number); pragma Inline (Loading); pragma Inline (Main_CPU); @@ -774,8 +767,8 @@ private Fatal_Error : Boolean; Generate_Code : Boolean; Has_RACW : Boolean; - Is_Compiler_Unit : Boolean; Dynamic_Elab : Boolean; + Filler : Boolean; Loading : Boolean; Has_Allocator : Boolean; OA_Setting : Character; @@ -805,7 +798,7 @@ private Generate_Code at 57 range 0 .. 7; Has_RACW at 58 range 0 .. 7; Dynamic_Elab at 59 range 0 .. 7; - Is_Compiler_Unit at 60 range 0 .. 7; + Filler at 60 range 0 .. 7; OA_Setting at 61 range 0 .. 7; Loading at 62 range 0 .. 7; Has_Allocator at 63 range 0 .. 7; diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index a082389ae6f..cbd1045d822 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -375,6 +375,15 @@ package Opt is -- set to True to delete only the files produced by the compiler but not -- the library files or the executable files. + Compiler_Unit : Boolean := False; + -- GNAT1 + -- Set True by an occurrence of pragma Compiler_Unit_Warning (or of the + -- obsolete pragma Compiler_Unit) in the main unit. Once set True, stays + -- True, since any units that are with'ed directly or indirectly by + -- a Compiler_Unit_Warning main unit are subject to the same restrictions. + -- Such units really should have their own pragmas, but we do not bother to + -- check for that, so this transitivity provides extra checking. + Config_File : Boolean := True; -- GNAT -- Set to False to inhibit reading and processing of gnat.adc file diff --git a/gcc/ada/par-ch5.adb b/gcc/ada/par-ch5.adb index 517e58a3d4e..1d5504df922 100644 --- a/gcc/ada/par-ch5.adb +++ b/gcc/ada/par-ch5.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, 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- -- @@ -240,6 +240,10 @@ package body Ch5 is and then Statement_Seen) or else All_Pragmas) then + -- This Ada 2012 construct not allowed in a compiler unit + + Check_Compiler_Unit ("null statement list", Token_Ptr); + declare Null_Stm : constant Node_Id := Make_Null_Statement (Token_Ptr); diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index f120963b677..61ba85903e8 100644 --- a/gcc/ada/par-prag.adb +++ b/gcc/ada/par-prag.adb @@ -354,6 +354,22 @@ begin Ada_Version_Pragma := Pragma_Node; end if; + --------------------------- + -- Compiler_Unit_Warning -- + --------------------------- + + -- This pragma must be processed at parse time, since the resulting + -- status may be tested during the parsing of the program. + + when Pragma_Compiler_Unit | Pragma_Compiler_Unit_Warning => + Check_Arg_Count (0); + + -- Only recognized in main unit + + if Current_Source_Unit = Main_Unit then + Compiler_Unit := True; + end if; + ----------- -- Debug -- ----------- @@ -1153,8 +1169,6 @@ begin Pragma_CIL_Constructor | Pragma_Compile_Time_Error | Pragma_Compile_Time_Warning | - Pragma_Compiler_Unit | - Pragma_Compiler_Unit_Warning | Pragma_Contract_Cases | Pragma_Convention_Identifier | Pragma_CPP_Class | diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb index a376efe4fb0..8983f78ee1c 100644 --- a/gcc/ada/restrict.adb +++ b/gcc/ada/restrict.adb @@ -168,10 +168,17 @@ package body Restrict is -- Check_Compiler_Unit -- ------------------------- - procedure Check_Compiler_Unit (N : Node_Id) is + procedure Check_Compiler_Unit (Feature : String; N : Node_Id) is begin - if Is_Compiler_Unit (Get_Source_Unit (N)) then - Error_Msg_N ("use of construct not allowed in compiler!!??", N); + if Compiler_Unit then + Error_Msg_N (Feature & " not allowed in compiler unit!!??", N); + end if; + end Check_Compiler_Unit; + + procedure Check_Compiler_Unit (Feature : String; Loc : Source_Ptr) is + begin + if Compiler_Unit then + Error_Msg (Feature & " not allowed in compiler unit!!??", Loc); end if; end Check_Compiler_Unit; diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads index 882cb84b44e..b6c93f8a7d7 100644 --- a/gcc/ada/restrict.ads +++ b/gcc/ada/restrict.ads @@ -192,10 +192,15 @@ package Restrict is -- For abort to be allowed, either No_Abort_Statements must be False, -- or Max_Asynchronous_Select_Nesting must be non-zero. - procedure Check_Compiler_Unit (N : Node_Id); - -- If unit N is in a unit that has a pragma Compiler_Unit, then a message - -- is posted on node N noting use of a construct that is not permitted in - -- the compiler. + procedure Check_Compiler_Unit (Feature : String; N : Node_Id); + -- If unit N is in a unit that has a pragma Compiler_Unit_Warning, then + -- a message is posted on node N noting use of the given feature is not + -- permitted in the compiler (bootstrap considerations). + + procedure Check_Compiler_Unit (Feature : String; Loc : Source_Ptr); + -- If unit N is in a unit that has a pragma Compiler_Unit_Warning, then a + -- message is posted at location Loc noting use of the given feature is not + -- permitted in the compiler (bootstrap considerations). procedure Check_Restricted_Unit (U : Unit_Name_Type; N : Node_Id); -- Checks if loading of unit U is prohibited by the setting of some diff --git a/gcc/ada/sem_ch11.adb b/gcc/ada/sem_ch11.adb index a712fedd83f..c4a148f0cd5 100644 --- a/gcc/ada/sem_ch11.adb +++ b/gcc/ada/sem_ch11.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, 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- -- @@ -436,7 +436,7 @@ package body Sem_Ch11 is begin if Comes_From_Source (N) then - Check_Compiler_Unit (N); + Check_Compiler_Unit ("raise expression", N); end if; Check_SPARK_Restriction ("raise expression is not allowed", N); diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 684b0a4e0c5..2748a838d44 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -836,7 +836,7 @@ package body Sem_Ch3 is -- the runtime library but must also be compilable in Ada 95 mode -- (when bootstrapping the compiler). - Check_Compiler_Unit (N); + Check_Compiler_Unit ("anonymous access to subprogram", N); Access_Subprogram_Declaration (T_Name => Anon_Type, diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index b3da4adf9da..52ff590c521 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -1392,7 +1392,7 @@ package body Sem_Ch4 is begin if Comes_From_Source (N) then - Check_Compiler_Unit (N); + Check_Compiler_Unit ("case expression", N); end if; Analyze_And_Resolve (Expr, Any_Discrete); @@ -2077,7 +2077,7 @@ package body Sem_Ch4 is Else_Expr := Next (Then_Expr); if Comes_From_Source (N) then - Check_Compiler_Unit (N); + Check_Compiler_Unit ("if expression", N); end if; Analyze_Expression (Condition); @@ -2669,7 +2669,7 @@ package body Sem_Ch4 is begin if Comes_From_Source (N) then - Check_Compiler_Unit (N); + Check_Compiler_Unit ("set membership", N); end if; Analyze (L); @@ -7038,7 +7038,7 @@ package body Sem_Ch4 is -- a dereference operation. if Comes_From_Source (N) then - Check_Compiler_Unit (N); + Check_Compiler_Unit ("generalized indexing", N); end if; declare diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 4da9220a3d5..207f70e3107 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -525,6 +525,7 @@ package body Sem_Ch6 is procedure Analyze_Extended_Return_Statement (N : Node_Id) is begin + Check_Compiler_Unit ("extended return statement", N); Analyze_Return_Statement (N); end Analyze_Extended_Return_Statement; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 797840ff977..279c7333fec 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -12409,7 +12409,12 @@ package body Sem_Prag is when Pragma_Compiler_Unit | Pragma_Compiler_Unit_Warning => GNAT_Pragma; Check_Arg_Count (0); - Set_Is_Compiler_Unit (Get_Source_Unit (N)); + + -- Only recognized in main unit + + if Current_Sem_Unit = Main_Unit then + Compiler_Unit := True; + end if; ----------------------------- -- Complete_Representation -- @@ -21346,7 +21351,7 @@ package body Sem_Prag is -- Not allowed in compiler units (bootstrap issues) - Check_Compiler_Unit (N); + Check_Compiler_Unit ("Reason for pragma Warnings", N); -- No REASON string, set null string as reason |