[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 19 Jan 2017 13:10:09 +0000 (14:10 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 19 Jan 2017 13:10:09 +0000 (14:10 +0100)
2017-01-19  Pierre-Marie de Rodat  <derodat@adacore.com>

* exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.
Emit GNAT encodings for object renamings involving record components
whose normalized bit offset is not null.
* uintp.h (UI_No_Uint): Declare.

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

* sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the
statements within an element iterator loop are only analyzed
agter the loop is rewritten. Within a generic the analysis must
be performed in any case to complete name capture.

2017-01-19  Bob Duff  <duff@adacore.com>

* sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first,
before checking for unrecognized pragmas.
Initialize Pname on its declarations; that's always good style.

From-SVN: r244630

gcc/ada/ChangeLog
gcc/ada/sem_ch5.adb
gcc/ada/sem_prag.adb

index 9743e60bf2c7b86e205772bca33114ee59f0dab6..8287640adb57eec48462cba1d401edcbb6c03800 100644 (file)
@@ -1,3 +1,23 @@
+2017-01-19  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+       * exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.
+       Emit GNAT encodings for object renamings involving record components
+       whose normalized bit offset is not null.
+       * uintp.h (UI_No_Uint): Declare.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the
+       statements within an element iterator loop are only analyzed
+       agter the loop is rewritten. Within a generic the analysis must
+       be performed in any case to complete name capture.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first,
+       before checking for unrecognized pragmas.
+       Initialize Pname on its declarations; that's always good style.
+
 2017-01-19  Claire Dross  <dross@adacore.com>
 
        * exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the
index 1a47be5a4cd01bf34987b5edb95d22793546ed3d..0a72320ecbbce65d824edd809a05f85d944a03ac 100644 (file)
@@ -3411,13 +3411,16 @@ package body Sem_Ch5 is
       --  expanded).
 
       --  In other cases in GNATprove mode then we want to analyze the loop
-      --  body now, since no rewriting will occur.
+      --  body now, since no rewriting will occur. Within a generic the
+      --  GNATprove mode is irrelevant, we must analyze the generic for
+      --  non-local name capture.
 
       if Present (Iter)
         and then Present (Iterator_Specification (Iter))
       then
          if GNATprove_Mode
            and then Is_Iterator_Over_Array (Iterator_Specification (Iter))
+           and then not Inside_A_Generic
          then
             null;
 
index 87228eb888b9856fc850b7a3fab3ccbca38b3ba9..9d2490fb9372d34cf2aa012a4922b517a1d5c6ec 100644 (file)
@@ -3416,7 +3416,7 @@ package body Sem_Prag is
       Loc     : constant Source_Ptr := Sloc (N);
       Prag_Id : Pragma_Id;
 
-      Pname : Name_Id;
+      Pname : Name_Id := Pragma_Name (N);
       --  Name of the source pragma, or name of the corresponding aspect for
       --  pragmas which originate in a source aspect. In the latter case, the
       --  name may be different from the pragma name.
@@ -10354,9 +10354,13 @@ package body Sem_Prag is
 
       Check_Restriction_No_Use_Of_Pragma (N);
 
-      --  Deal with unrecognized pragma
+      --  Ignore pragma if Ignore_Pragma applies
 
-      Pname := Pragma_Name (N);
+      if Get_Name_Table_Boolean3 (Pname) then
+         return;
+      end if;
+
+      --  Deal with unrecognized pragma
 
       if not Is_Pragma_Name (Pname) then
          if Warn_On_Unrecognized_Pragma then
@@ -10376,12 +10380,6 @@ package body Sem_Prag is
          return;
       end if;
 
-      --  Ignore pragma if Ignore_Pragma applies
-
-      if Get_Name_Table_Boolean3 (Pname) then
-         return;
-      end if;
-
       --  Here to start processing for recognized pragma
 
       Prag_Id := Get_Pragma_Id (Pname);