[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 13 Jan 2017 10:38:56 +0000 (11:38 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 13 Jan 2017 10:38:56 +0000 (11:38 +0100)
2017-01-13  Yannick Moy  <moy@adacore.com>

* inline.adb: Code cleanup.
* sem_util.adb (Is_OK_Volatile_Context): Add
expression in delay statement as OK for volatile context.

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

* sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
mode a choice that is a subtype with a static predicate is
replaced by the values it covers. This transformation must not
be performed in ASIS mode, to preserve the source for analysis.

2017-01-13  Justin Squirek  <squirek@adacore.com>

* nlists.ads: Correct minor typo.

From-SVN: r244411

gcc/ada/ChangeLog
gcc/ada/inline.adb
gcc/ada/nlists.ads
gcc/ada/sem_aggr.adb
gcc/ada/sem_util.adb

index 1ec581c459ef97be7501852404cc5998223b90ba..d4e330180a649cc72bb736b90a7d3b80c1cbb730 100644 (file)
@@ -1,3 +1,20 @@
+2017-01-13  Yannick Moy  <moy@adacore.com>
+
+       * inline.adb: Code cleanup.
+       * sem_util.adb (Is_OK_Volatile_Context): Add
+       expression in delay statement as OK for volatile context.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
+       mode a choice that is a subtype with a static predicate is
+       replaced by the values it covers. This transformation must not
+       be performed in ASIS mode, to preserve the source for analysis.
+
+2017-01-13  Justin Squirek  <squirek@adacore.com>
+
+       * nlists.ads: Correct minor typo.
+
 2017-01-13  Gary Dismukes  <dismukes@adacore.com>
 
        * sem_ch13.adb: Minor reformatting and typo fix.
index 7389105966a93a31ed45734279b6a152f7e9df26..d0f8a8c363f7f917b220b4e3ac03088e2a722e99 100644 (file)
@@ -3200,17 +3200,12 @@ package body Inline is
                then
                   pragma Assert (not (Is_By_Reference_Type (Etype (A))));
                   pragma Assert (not (Is_Limited_Type (Etype (A))));
-                  Decl :=
+                  Append_To (Decls,
                     Make_Object_Declaration (Loc,
-                      Defining_Identifier => Temp,
+                      Defining_Identifier => Make_Temporary (Loc, 'C'),
                       Constant_Present    => True,
                       Object_Definition   => New_Occurrence_Of (Temp_Typ, Loc),
-                      Expression          => New_Copy_Tree (New_A));
-                  Append (Decl, Decls);
-
-                  --  Create another name for the renaming
-
-                  Temp := Make_Temporary (Loc, 'C');
+                      Expression          => New_Copy_Tree (New_A)));
                end if;
 
                Decl :=
index 1cdcee6aff07d45a3a5d86bcbd8f948a6b5c1251..90d5e7edf7f870390b4ed56f6f4cf509d64ccb83 100644 (file)
@@ -302,13 +302,13 @@ package Nlists is
    --  Like Prepend_List, but arguments are the other way round
 
    procedure Prepend_New (Node : Node_Or_Entity_Id; To : in out List_Id);
-   pragma Inline (Append_New);
+   pragma Inline (Prepend_New);
    --  Prepends Node at the end of node list To. If To is non-existent list, a
    --  list is created. Node must be a non-empty node that is not already a
    --  member of a node list, and To must be a node list.
 
    procedure Prepend_New_To (To : in out List_Id; Node : Node_Or_Entity_Id);
-   pragma Inline (Append_New_To);
+   pragma Inline (Prepend_New_To);
    --  Like Prepend_New, but the arguments are in reverse order
 
    procedure Prepend_To
index 1b9f0affa8d4bbd2e57adda5af7e898538f3afd8..9481c455b8ca77940f120f740f8df9c79e228389 100644 (file)
@@ -1809,8 +1809,13 @@ package body Sem_Aggr is
                         --  If the subtype has a static predicate, replace the
                         --  original choice with the list of individual values
                         --  covered by the predicate.
+                        --  Do not perform this transformation if we need to
+                        --  preserve the source for ASIS use.
+                        --  This should be deferred to expansion time ???
 
-                        if Present (Static_Discrete_Predicate (E)) then
+                        if Present (Static_Discrete_Predicate (E))
+                          and then not ASIS_Mode
+                        then
                            Delete_Choice := True;
 
                            New_Cs := New_List;
index 3b90fe82c7e79b94e9075008d2cf5a29d82d2144..b90b00791f52ec196ebf04832a0d75761d0a3e99 100644 (file)
@@ -13726,6 +13726,11 @@ package body Sem_Util is
       then
          return True;
 
+      --  The volatile object appears as the expression in a delay statement
+
+      elsif Nkind (Context) in N_Delay_Statement then
+         return True;
+
       --  Allow references to volatile objects in various checks. This is not a
       --  direct SPARK 2014 requirement.