[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 30 Nov 2016 13:59:16 +0000 (14:59 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 30 Nov 2016 13:59:16 +0000 (14:59 +0100)
2016-11-30  Gary Dismukes  <dismukes@adacore.com>

* sem_prag.adb, sem_ch6.adb: Minor reformatting and typo fixes.
* g-sechas.adb: Minor reformatting.
* lib-xref.ads: minor grammar fix in comment.
* lib-xref-spark_specific.adb
(Is_SPARK_Reference): do not ignore references to concurrent
objects.
* sinfo.ads: Fix of unbalanced parens in comment

2016-11-30  Ed Schonberg  <schonberg@adacore.com>

* lib-xref.adb (Get_Type_Reference): If the entity is a function
returning a classwide type, the type reference is obtained right
away and does not need further unwinding.

2016-11-30  Javier Miranda  <miranda@adacore.com>

* sem_ch8.adb (Find_Renamed_Entity): For non-overloaded subprogram
actuals of generic units check that the spec of the renaming
and renamed entities match.

2016-11-30  Tristan Gingold  <gingold@adacore.com>

* raise-gcc.c: For CERT runtimes: do not use gcc includes, simplify
the handling.
* sem_attr.adb (Analyze_Attribute): Check No_Dynamic_Priorities
restriction for Priority Attribute.

From-SVN: r243022

gcc/ada/ChangeLog
gcc/ada/g-sechas.adb
gcc/ada/lib-xref-spark_specific.adb
gcc/ada/lib-xref.adb
gcc/ada/lib-xref.ads
gcc/ada/raise-gcc.c
gcc/ada/sem_attr.adb
gcc/ada/sem_ch6.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_prag.adb
gcc/ada/sinfo.ads

index ca438dbf626324dcbf11c660906871fbe87bb490..3f221d24ad5d8451fe7fe53ca093ba2d2c1e0a60 100644 (file)
@@ -1,3 +1,32 @@
+2016-11-30  Gary Dismukes  <dismukes@adacore.com>
+
+       * sem_prag.adb, sem_ch6.adb: Minor reformatting and typo fixes.
+       * g-sechas.adb: Minor reformatting.
+       * lib-xref.ads: minor grammar fix in comment.
+       * lib-xref-spark_specific.adb
+       (Is_SPARK_Reference): do not ignore references to concurrent
+       objects.
+       * sinfo.ads: Fix of unbalanced parens in comment
+
+2016-11-30  Ed Schonberg  <schonberg@adacore.com>
+
+       * lib-xref.adb (Get_Type_Reference): If the entity is a function
+       returning a classwide type, the type reference is obtained right
+       away and does not need further unwinding.
+
+2016-11-30  Javier Miranda  <miranda@adacore.com>
+
+       * sem_ch8.adb (Find_Renamed_Entity): For non-overloaded subprogram
+       actuals of generic units check that the spec of the renaming
+       and renamed entities match.
+
+2016-11-30  Tristan Gingold  <gingold@adacore.com>
+
+       * raise-gcc.c: For CERT runtimes: do not use gcc includes, simplify
+       the handling.
+       * sem_attr.adb (Analyze_Attribute): Check No_Dynamic_Priorities
+       restriction for Priority Attribute.
+
 2016-11-27  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR ada/78524
index f2e8d5d1a06ea8e78e370b08193bb9558b0892b3..59a598d74c84f0908472d8493d518e72931f963e 100644 (file)
@@ -253,7 +253,7 @@ package body GNAT.Secure_Hashes is
                if Index = First_Index then
 
                   --  Message_Length is in bytes, but we need to store it as
-                  --  a bit count).
+                  --  a bit count.
 
                   Pad (Index) := Character'Val
                                    (Shift_Left (Message_Length and 16#1f#, 3));
index 95056e09ace4a004e12c06fcb8f74d3c2859d36f..87d3942cbdfaaf320e99717fa669e469a7c10c3c 100644 (file)
@@ -527,13 +527,6 @@ package body SPARK_Specific is
          if Ekind (E) in Overloadable_Kind then
             return Typ = 's';
 
-         --  Objects of task or protected types are not SPARK references
-
-         elsif Present (Etype (E))
-           and then Ekind (Etype (E)) in Concurrent_Kind
-         then
-            return False;
-
          --  In all other cases, result is true for reference/modify cases,
          --  and false for all other cases.
 
index b1d5978549e9d4e58745baee8e27a5541a86c686..ea68232215358e435256644783c8ff802d0efd12 100644 (file)
@@ -1508,6 +1508,14 @@ package body Lib.Xref is
                           Entity (Original_Node (Object_Definition (Decl)));
                      end if;
                   end;
+
+               --  For a function that returns a class-wide type, Tref is
+               --  already correct.
+
+               elsif Is_Overloadable (Ent)
+                 and then Is_Class_Wide_Type (Tref)
+               then
+                  return;
                end if;
 
             --  For anything else, exit
index 5325fc0eadd15261e60e0e16bf168af492a96d70..46948537d6d3d9921418270de25d487f078aa099 100644 (file)
@@ -691,7 +691,7 @@ package Lib.Xref is
    --  the spec. The entity in the body is treated as a reference with type
    --  'b'. Similar handling for references to subprogram formals.
    --
-   --  The call has no effect if N is not in the extended main source unit
+   --  The call has no effect if N is not in the extended main source unit.
    --  This check is omitted for type 'e' references (where it is useful to
    --  have structural scoping information for other than the main source),
    --  and for 'p' (since we want to pick up inherited primitive operations
index 4a10fbff0d9e02c1de4b62089eafa9e39a2deaf1..a2b6f645db6db97c5a2c895bcb20d04c3aaef6d6 100644 (file)
@@ -6,7 +6,7 @@
  *                                                                          *
  *                          C Implementation File                           *
  *                                                                          *
- *             Copyright (C) 1992-2014, Free Software Foundation, Inc.      *
+ *             Copyright (C) 1992-2016, 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- *
 #error "RTS unit only"
 #endif
 
+#ifndef CERT
 #include "tconfig.h"
 #include "tsystem.h"
+#else
+#define ATTRIBUTE_UNUSED __attribute__((unused))
+#define HAVE_GETIPINFO 1
+#endif
 
 #include <stdarg.h>
 typedef char bool;
@@ -80,6 +85,15 @@ extern struct Exception_Occurrence *__gnat_setup_current_excep
  (_Unwind_Exception *);
 extern void __gnat_unhandled_except_handler (_Unwind_Exception *);
 
+#ifdef CERT
+#define abort() __gnat_raise_abort()
+static void __gnat_raise_abort(void)
+{
+  while (1)
+    ;
+}
+#endif
+
 #include "unwind-pe.h"
 
 /* The known and handled exception classes.  */
@@ -928,9 +942,13 @@ is_handled_by (_Unwind_Ptr choice, _GNAT_Exception *propagated_exception)
   /* All others and others choice match any foreign exception.  */
   if (choice == GNAT_ALL_OTHERS
       || choice == GNAT_OTHERS
-      || choice == (_Unwind_Ptr) &Foreign_Exception)
+#ifndef CERT
+      || choice == (_Unwind_Ptr) &Foreign_Exception
+#endif
+      )
     return handler;
 
+#ifndef CERT
   /* C++ exception occurrences.  */
   if (exception_class_eq (propagated_exception, CXX_EXCEPTION_CLASS)
       && Language_For (choice) == 'C')
@@ -947,6 +965,7 @@ is_handled_by (_Unwind_Ptr choice, _GNAT_Exception *propagated_exception)
       if (choice_typeinfo == except_typeinfo)
        return handler;
     }
+#endif
 
   return nothing;
 }
@@ -1172,6 +1191,7 @@ personality_body (_Unwind_Action uw_phases,
        }
       else
        {
+#ifndef CERT
          struct Exception_Occurrence *excep;
 
          /* Trigger the appropriate notification routines before the second
@@ -1182,6 +1202,7 @@ personality_body (_Unwind_Action uw_phases,
            __gnat_notify_unhandled_exception (excep);
          else
            __gnat_notify_handled_exception (excep);
+#endif
 
          return _URC_HANDLER_FOUND;
        }
@@ -1195,10 +1216,12 @@ personality_body (_Unwind_Action uw_phases,
   setup_to_install
     (uw_context, uw_exception, action.landing_pad, action.ttype_filter);
 
+#ifndef CERT
   /* Write current exception, so that it can be retrieved from Ada.  It was
      already done during phase 1 (just above), but in between, one or several
      exceptions may have been raised (in cleanup handlers).  */
   __gnat_setup_current_excep (uw_exception);
+#endif
 
   return _URC_INSTALL_CONTEXT;
 }
@@ -1338,6 +1361,7 @@ PERSONALITY_FUNCTION (_Unwind_State state,
 /* Callback routine called by Unwind_ForcedUnwind to execute all the cleanup
    before exiting the task.  */
 
+#ifndef CERT
 _Unwind_Reason_Code
 __gnat_cleanupunwind_handler (int version ATTRIBUTE_UNUSED,
                              _Unwind_Action phases,
@@ -1362,6 +1386,7 @@ __gnat_cleanupunwind_handler (int version ATTRIBUTE_UNUSED,
      and this hook will gain control again.  */
   return _URC_NO_REASON;
 }
+#endif
 
 /* Define the consistently named wrappers imported by Propagate_Exception.  */
 
index 7b31ca16ca3a1107eed7fbefa29f574cf9b029d4..669525316887f7109b96ad336cfac8687f5d344b 100644 (file)
@@ -5158,6 +5158,8 @@ package body Sem_Attr is
 
          Check_E0;
 
+         Check_Restriction (No_Dynamic_Priorities, N);
+
          --  The prefix must be a protected object (AARM D.5.2 (2/2))
 
          Analyze (P);
index 53ca284dc4da14ae9b63739d1a1a6053d95ea213..ade6f504a24f68e60729c539ce250fa6748acb8c 100644 (file)
@@ -393,7 +393,7 @@ package body Sem_Ch6 is
          Rewrite (N, New_Body);
 
          --  Remove any existing aspects from the original node because the act
-         --  of rewriting cases the list to be shared between the two nodes.
+         --  of rewriting causes the list to be shared between the two nodes.
 
          Orig_N := Original_Node (N);
          Remove_Aspects (Orig_N);
@@ -405,8 +405,8 @@ package body Sem_Ch6 is
          Relocate_Pragmas_To_Body (N);
          Analyze (N);
 
-         --  Once the aspects of the generated body has been analyzed, create a
-         --  copy for ASIS purposes and assciate it with the original node.
+         --  Once the aspects of the generated body have been analyzed, create
+         --  a copy for ASIS purposes and associate it with the original node.
 
          if Has_Aspects (N) then
             Set_Aspect_Specifications (Orig_N,
@@ -459,15 +459,15 @@ package body Sem_Ch6 is
          Rewrite (N, Make_Subprogram_Declaration (Loc, Specification => Spec));
 
          --  Remove any existing aspects from the original node because the act
-         --  of rewriting cases the list to be shared between the two nodes.
+         --  of rewriting causes the list to be shared between the two nodes.
 
          Orig_N := Original_Node (N);
          Remove_Aspects (Orig_N);
 
          Analyze (N);
 
-         --  Once the aspects of the generated spec has been analyzed, create a
-         --  copy for ASIS purposes and assciate it with the original node.
+         --  Once the aspects of the generated spec have been analyzed, create
+         --  a copy for ASIS purposes and associate it with the original node.
 
          if Has_Aspects (N) then
             Set_Aspect_Specifications (Orig_N,
index 45159c0e611b3ff36d37b1e6b9daae0afa78a517..54fca501f4888650294f0d683693b0e5d2478aa7 100644 (file)
@@ -6449,7 +6449,10 @@ package body Sem_Ch8 is
       --  Non-overloaded case
 
       else
-         if Is_Actual and then Present (Enclosing_Instance) then
+         if Is_Actual
+           and then Present (Enclosing_Instance)
+           and then Entity_Matches_Spec (Entity (Nam), New_S)
+         then
             Old_S := Entity (Nam);
 
          elsif Entity_Matches_Spec (Entity (Nam), New_S) then
@@ -7757,6 +7760,7 @@ package body Sem_Ch8 is
             Next_Formal (New_F);
             Next_Formal (Old_F);
          end loop;
+         pragma Assert (No (Old_F));
 
          if Ekind_In (Old_S, E_Function, E_Enumeration_Literal) then
             Set_Etype (New_S, Etype (Old_S));
index 26a4870032ed6fcc1c3deafe8ff78b9cc9cb452a..4351f32c3c28e23ae8786d07c7d43d2badfabf80 100644 (file)
@@ -7019,7 +7019,7 @@ package body Sem_Prag is
 
          function Check_Node (N : Node_Id) return Traverse_Result;
          --  Tree visitor that checks if N is an attribute reference that can
-         --  be statically computed by the backend. Validation_Needed is set
+         --  be statically computed by the back end. Validation_Needed is set
          --  to True if found.
 
          ----------------
@@ -7063,10 +7063,10 @@ package body Sem_Prag is
          if Compile_Time_Known_Value (Arg1x) then
             Process_Compile_Time_Warning_Or_Error (N, Sloc (Arg1));
 
-         --  Register the expression for its validation after the backend has
-         --  been called if it has occurrences of attributes size or alignment
-         --  (because they may be statically computed by the backend and hence
-         --  the whole expression needs to be re-evaluated).
+         --  Register the expression for its validation after the back end has
+         --  been called if it has occurrences of attributes Size or Alignment
+         --  (because they may be statically computed by the back end and hence
+         --  the whole expression needs to be reevaluated).
 
          else
             Check_Expression (Arg1x);
index 659e989d0a49bb8950f71f0fe71e995678d6e22e..75e0846526caa578638f2b9376a707da12aab549 100644 (file)
@@ -2008,7 +2008,7 @@ package Sinfo is
    --  Parent_Spec (Node4-Sem)
    --    For a library unit that is a child unit spec (package or subprogram
    --    declaration, generic declaration or instantiation, or library level
-   --    rename, this field points to the compilation unit node for the parent
+   --    rename) this field points to the compilation unit node for the parent
    --    package specification. This field is Empty for library bodies (the
    --    parent spec in this case can be found from the corresponding spec).