]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2014-01-31 Hristian Kirtchev <kirtchev@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Jan 2014 15:51:51 +0000 (15:51 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Jan 2014 15:51:51 +0000 (15:51 +0000)
* sem_res.adb (Resolve_Entity_Name): Comment
reformatting. Allow volatile objects in various generated checks.

2014-01-31  Ed Schonberg  <schonberg@adacore.com>

* sem_attr.adb (Analyze_Attribute, case 'Update): For a record
component association, set the etype of the identifier, for
SPARK use.

2014-01-31  Ed Schonberg  <schonberg@adacore.com>

* exp_ch6.adb (Has_Visibility_Of_Subprogram): If type is not
declared in a package, not checks can apply to the subprogram.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207353 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/exp_ch6.adb
gcc/ada/sem_attr.adb
gcc/ada/sem_res.adb

index 12f5d5a70bf4f3f8ef219417cf67ae1316324c5a..23cfa54c86ad660e6ffc7fa233177890fb927ad6 100644 (file)
@@ -1,3 +1,19 @@
+2014-01-31  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_res.adb (Resolve_Entity_Name): Comment
+       reformatting. Allow volatile objects in various generated checks.
+
+2014-01-31  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_attr.adb (Analyze_Attribute, case 'Update): For a record
+       component association, set the etype of the identifier, for
+       SPARK use.
+
+2014-01-31  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch6.adb (Has_Visibility_Of_Subprogram): If type is not
+       declared in a package, not checks can apply to the subprogram.
+
 2014-01-31  Robert Dewar  <dewar@adacore.com>
 
        * erroutc.adb (Validate_Specific_Warnings): Warnings are
index 494f11efdee84e09651659e315a7f44e4933ed13..d4b0cc0a4e8c4525399b277e5af1ae7c2d07bc1f 100644 (file)
@@ -8697,9 +8697,7 @@ package body Exp_Ch6 is
 
             function Has_Public_Visibility_Of_Subprogram return Boolean is
                Subp_Decl : constant Node_Id := Unit_Declaration_Node (Subp_Id);
-               Vis_Decls : constant List_Id :=
-                             Visible_Declarations (Specification
-                               (Unit_Declaration_Node (Scope (Typ))));
+
             begin
                --  An Initialization procedure must be considered visible even
                --  though it is internally generated.
@@ -8707,6 +8705,9 @@ package body Exp_Ch6 is
                if Is_Init_Proc (Defining_Entity (Subp_Decl)) then
                   return True;
 
+               elsif Ekind (Scope (Typ)) /= E_Package then
+                  return False;
+
                --  Internally generated code is never publicly visible except
                --  for a subprogram that is the implementation of an expression
                --  function. In that case the visibility is determined by the
@@ -8724,7 +8725,9 @@ package body Exp_Ch6 is
                --  declarations of the package containing the type.
 
                else
-                  return List_Containing (Subp_Decl) = Vis_Decls;
+                  return List_Containing (Subp_Decl) =
+                    Visible_Declarations
+                      (Specification (Unit_Declaration_Node (Scope (Typ))));
                end if;
             end Has_Public_Visibility_Of_Subprogram;
 
index b69c1b241a7dd5d112a724db79f44eeede25e701..5770144f2a252a861ccbce55e5c4c679f0623add 100644 (file)
@@ -6014,10 +6014,11 @@ package body Sem_Attr is
             while Present (Comp_Or_Discr) loop
                if Chars (Comp_Or_Discr) = Comp_Name then
 
-                  --  Record component entity in the given aggregate choice,
-                  --  for subsequent resolution.
+                  --  Record component entity and type in the given aggregate
+                  --  choice, for subsequent resolution.
 
                   Set_Entity (Comp, Comp_Or_Discr);
+                  Set_Etype  (Comp, Etype (Comp_Or_Discr));
                   exit;
                end if;
 
index a01c20a73170ec5b34d77abab7ee9d7231abe1e7..7cb47f23de40d8e4abdcb3aa567cbed22dd6b890 100644 (file)
@@ -6523,15 +6523,15 @@ package body Sem_Res is
          Prev := N;
          while Present (Par) loop
 
-            --  The variable can appear on either side of an assignment
+            --  The volatile object can appear on either side of an assignment
 
             if Nkind (Par) = N_Assignment_Statement then
                Usage_OK := True;
                exit;
 
-            --  The variable is part of the initialization expression of an
-            --  object. Ensure that the climb of the parent chain came from the
-            --  expression side and not from the name side.
+            --  The volatile object is part of the initialization expression of
+            --  another object. Ensure that the climb of the parent chain came
+            --  from the expression side and not from the name side.
 
             elsif Nkind (Par) = N_Object_Declaration
               and then Present (Expression (Par))
@@ -6540,8 +6540,8 @@ package body Sem_Res is
                Usage_OK := True;
                exit;
 
-            --  The variable appears as an actual parameter in a call to an
-            --  instance of Unchecked_Conversion whose result is renamed.
+            --  The volatile object appears as an actual parameter in a call to
+            --  an instance of Unchecked_Conversion whose result is renamed.
 
             elsif Nkind (Par) = N_Function_Call
               and then Is_Unchecked_Conversion_Instance (Entity (Name (Par)))
@@ -6558,6 +6558,12 @@ package body Sem_Res is
                Usage_OK := True;
                exit;
 
+            --  Allow references to volatile objects in various checks
+
+            elsif Nkind (Par) in N_Raise_xxx_Error then
+               Usage_OK := True;
+               exit;
+
             --  Prevent the search from going too far
 
             elsif Is_Body_Or_Package_Declaration (Par) then