[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 20 Apr 2016 10:10:32 +0000 (12:10 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 20 Apr 2016 10:10:32 +0000 (12:10 +0200)
2016-04-20  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Rep_Item_Too_Late): Better error message for
an illegal aspect that freezes the entity to which it applies.

2016-04-20  Bob Duff  <duff@adacore.com>

* a-stwibo.ads, a-stzbou.ads
("="): Add overriding keyword before function to avoid crash when
compiler is called with -gnatyO (check overriding indicators).

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Analyze_Pragma, case Check_Policy):  If this
is a configuration pragma and it uses the ARG syntax, insert
the rewritten pragma after the current one rather than using
Insert_Actions.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

* exp_aggr.adb (Backend_Processing_Possible): Add handling of
C back-end.

From-SVN: r235253

gcc/ada/ChangeLog
gcc/ada/a-stwibo.ads
gcc/ada/a-stzbou.ads
gcc/ada/exp_aggr.adb
gcc/ada/sem_ch13.adb
gcc/ada/sem_prag.adb

index 1c07d5e52bf30329ea1b26aa66fc43f55a6e29c5..c6f1e67ed9a369d174ee372533510d91d6034067 100644 (file)
@@ -1,3 +1,26 @@
+2016-04-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (Rep_Item_Too_Late): Better error message for
+       an illegal aspect that freezes the entity to which it applies.
+
+2016-04-20  Bob Duff  <duff@adacore.com>
+
+       * a-stwibo.ads, a-stzbou.ads
+       ("="): Add overriding keyword before function to avoid crash when
+       compiler is called with -gnatyO (check overriding indicators).
+
+2016-04-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_prag.adb (Analyze_Pragma, case Check_Policy):  If this
+       is a configuration pragma and it uses the ARG syntax, insert
+       the rewritten pragma after the current one rather than using
+       Insert_Actions.
+
+2016-04-20  Arnaud Charlet  <charlet@adacore.com>
+
+       * exp_aggr.adb (Backend_Processing_Possible): Add handling of
+       C back-end.
+
 2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * s-imgllu.adb, sem_util.adb, s-imgint.adb, s-imguns.adb,
index c5a54d14b1476d999187b9b9448f17dae71b4110..3d098b3d4d08ac56e3a1104ee37d3515e554ab34 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -609,7 +609,7 @@ package Ada.Strings.Wide_Bounded is
          High   : Natural)
          renames Super_Slice;
 
-      function "="
+      overriding function "="
         (Left  : Bounded_Wide_String;
          Right : Bounded_Wide_String) return Boolean
          renames Equal;
index 9574802f255fb526d3b2f85c2a3c509914b07e10..d7d3f52f2e7ce7666249832a338d6c92e55d67a2 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -618,7 +618,7 @@ package Ada.Strings.Wide_Wide_Bounded is
          High   : Natural)
          renames Super_Slice;
 
-      function "="
+      overriding function "="
         (Left  : Bounded_Wide_Wide_String;
          Right : Bounded_Wide_Wide_String) return Boolean
          renames Equal;
index 94f8e0745ec7039c0baa7e5e61b255301b5d13ec..bd757cd1040700954679c5b5dc70a92c579f3e5c 100644 (file)
@@ -545,6 +545,8 @@ package body Exp_Aggr is
 
    --   10. No controlled actions need to be generated for components
 
+   --   11. When generating C code, N must be part of a N_Object_Declaration
+
    function Backend_Processing_Possible (N : Node_Id) return Boolean is
       Typ : constant Entity_Id := Etype (N);
       --  Typ is the correct constrained array subtype of the aggregate
@@ -569,6 +571,17 @@ package body Exp_Aggr is
             return False;
          end if;
 
+         --  Checks 11: (part of an object declaration)
+
+         if Generate_C_Code
+           and then Nkind (Parent (N)) /= N_Object_Declaration
+           and then
+             (Nkind (Parent (N)) /= N_Qualified_Expression
+               or else Nkind (Parent (Parent (N))) /= N_Object_Declaration)
+         then
+            return False;
+         end if;
+
          --  Checks on components
 
          --  Recurse to check subaggregates, which may appear in qualified
index aa929bd442892b69bf061f2fd239805d214a1293..77909a6f542b2d95e12f5ba741589fa58e098abd 100644 (file)
@@ -12286,6 +12286,18 @@ package body Sem_Ch13 is
 
         and then Comes_From_Source (T)
       then
+         --  A self-referential aspect is illegal if it forces freezing the
+         --  entity before the corresponding pragma has been analyzed.
+
+         if Nkind_In (N, N_Attribute_Definition_Clause, N_Pragma)
+           and then From_Aspect_Specification (N)
+         then
+            Error_Msg_NE
+              ("aspect specification causes premature freezing of&", T, N);
+            Set_Has_Delayed_Freeze (T, False);
+            return True;
+         end if;
+
          Too_Late;
          S := First_Subtype (T);
 
index 22daf491148f26e966b493738d1ced3510303e68..c538cafa837ad7d3904da17b1e5d961eba8ed172 100644 (file)
@@ -12504,9 +12504,10 @@ package body Sem_Prag is
 
             else
                declare
-                  Arg  : Node_Id;
-                  Argx : Node_Id;
-                  LocP : Source_Ptr;
+                  Arg   : Node_Id;
+                  Argx  : Node_Id;
+                  LocP  : Source_Ptr;
+                  New_P : Node_Id;
 
                begin
                   Arg := Arg1;
@@ -12526,7 +12527,7 @@ package body Sem_Prag is
                      --  Construct equivalent old form syntax Check_Policy
                      --  pragma and insert it to get remaining checks.
 
-                     Insert_Action (N,
+                     New_P :=
                        Make_Pragma (LocP,
                          Chars                        => Name_Check_Policy,
                          Pragma_Argument_Associations => New_List (
@@ -12534,9 +12535,20 @@ package body Sem_Prag is
                              Expression =>
                                Make_Identifier (LocP, Chars (Arg))),
                            Make_Pragma_Argument_Association (Sloc (Argx),
-                             Expression => Argx))));
+                             Expression => Argx)));
 
                      Arg := Next (Arg);
+
+                     --  For a configuration pragma, insert old form in
+                     --  the corresponding file.
+
+                     if Is_Configuration_Pragma then
+                        Insert_After (N, New_P);
+                        Analyze (New_P);
+
+                     else
+                        Insert_Action (N, New_P);
+                     end if;
                   end loop;
 
                   --  Rewrite original Check_Policy pragma to null, since we