]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2014-02-04 Gary Dismukes <dismukes@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 2014 14:25:46 +0000 (14:25 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 2014 14:25:46 +0000 (14:25 +0000)
* g-comlin.adb: Minor typo fix.

2014-02-04  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Freeze_All): Types derived from a formal
access_to_classwide type do not have a finalization master.

2014-02-04  Robert Dewar  <dewar@adacore.com>

* sprint.adb: Minor reformatting.

2014-02-04  Robert Dewar  <dewar@adacore.com>

* exp_ch4.adb (Expand_N_Expression_With_Actions): Eliminate
cases where Actions is a null list.
* sinfo.ads (N_Expression_With_Actions): Actions can be
temporarily empty during semantic analysis, but must be non-empty
in the final expanded tree.

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

gcc/ada/ChangeLog
gcc/ada/exp_ch4.adb
gcc/ada/freeze.adb
gcc/ada/g-comlin.adb
gcc/ada/sinfo.ads
gcc/ada/sprint.adb

index d17dbbc322362e406f3a707e13d7d644caa7d454..507b318a659dda60b7789e5471f0c3f577c035d5 100644 (file)
@@ -1,3 +1,24 @@
+2014-02-04  Gary Dismukes  <dismukes@adacore.com>
+
+       * g-comlin.adb: Minor typo fix.
+
+2014-02-04  Ed Schonberg  <schonberg@adacore.com>
+
+       * freeze.adb (Freeze_All): Types derived from a formal
+       access_to_classwide type do not have a finalization master.
+
+2014-02-04  Robert Dewar  <dewar@adacore.com>
+
+       * sprint.adb: Minor reformatting.
+
+2014-02-04  Robert Dewar  <dewar@adacore.com>
+
+       * exp_ch4.adb (Expand_N_Expression_With_Actions): Eliminate
+       cases where Actions is a null list.
+       * sinfo.ads (N_Expression_With_Actions): Actions can be
+       temporarily empty during semantic analysis, but must be non-empty
+       in the final expanded tree.
+
 2014-01-31  Robert Dewar  <dewar@adacore.com>
 
        * exp_ch9.adb: Minor reformatting.
index 06c69b1fc369c5523ab6e8763ee4a71a7acaa927..39a80d3ad461fb627c4282b6221210ffed265a9d 100644 (file)
@@ -5111,11 +5111,23 @@ package body Exp_Ch4 is
 
    begin
       Act := First (Actions (N));
-      while Present (Act) loop
-         Process_Single_Action (Act);
 
-         Next (Act);
-      end loop;
+      --  Deal with case where there are no actions. In this case we simply
+      --  replace the node by its expression since we don't need the actions
+      --  and the specification of this node does not allow a null action list.
+
+      if No (Act) then
+         Replace (N, Relocate_Node (Expression (N)));
+
+      --  Otherwise process the actions as described above
+
+      else
+         loop
+            Process_Single_Action (Act);
+            Next (Act);
+            exit when No (Act);
+         end loop;
+      end if;
    end Expand_N_Expression_With_Actions;
 
    ----------------------------
index 3b5f01b9ec6b6c4e32a685d33adfb728f39e51c3..440d562ce5ce57cdc36e3702305a89eb28bdd550 100644 (file)
@@ -1647,13 +1647,13 @@ package body Freeze is
          --  where a component type is private and the controlled full type
          --  occurs after the access type is frozen. Cases that don't need a
          --  finalization master are generic formal types (the actual type will
-         --  have it) and types with Java and CIL conventions, since those are
-         --  used for API bindings. (Are there any other cases that should be
-         --  excluded here???)
+         --  have it) and types derived from them,  and types with Java and CIL
+         --  conventions, since those are used for API bindings.
+         --  (Are there any other cases that should be excluded here???)
 
          elsif Is_Access_Type (E)
            and then Comes_From_Source (E)
-           and then not Is_Generic_Type (E)
+           and then not Is_Generic_Type (Root_Type (E))
            and then Needs_Finalization (Designated_Type (E))
          then
             Build_Finalization_Master (E);
index 4f84bd9e2821a218c41ea6f8124e32f857641573..0f74bbfdc6027c7b8dd3e8ce611ee6c490500bef 100644 (file)
@@ -1683,7 +1683,7 @@ package body GNAT.Command_Line is
 
                   --  Note: When a Command_Line object is associated with a
                   --  Command_Line_Config (which is mostly the case for tools
-                  --  that let users chose the command line before spawning
+                  --  that let users choose the command line before spawning
                   --  other tools, for instance IDEs), the configuration of
                   --  the switches must be taken from the Command_Line_Config.
 
index 6aa28f2153a1592264ad14c1701377297c7a23cd..2885523512ecf37d9888065addcfd6cc6a514d8b 100644 (file)
@@ -7355,8 +7355,11 @@ package Sinfo is
       --  Expression (Node3)
       --  plus fields for expression
 
-      --  Note: the actions list is always non-null, since we would never have
-      --  created this node if there weren't some actions.
+      --  Note: In the final generated tree presented to the code generator,
+      --  the actions list is always non-null, since there is no point in this
+      --  node if the actions are Empty. During semantic analysis there are
+      --  cases where it is convenient to temporarily generate an empty actions
+      --  list, but the Expander removes such cases.
 
       --  Note: Expression may be a Null_Statement, in which case the
       --  N_Expression_With_Actions has type Standard_Void_Type. However some
index 1f88158ea643dbf056524a067d1eb52ebeb86745..e90947432bb9af739ef0c9e01def4262d902223f 100644 (file)
@@ -1131,7 +1131,7 @@ package body Sprint is
 
             if Present (Identifier (Node))
               and then (not Has_Created_Identifier (Node)
-                          or else not Dump_Original_Only)
+                         or else not Dump_Original_Only)
             then
                Write_Rewrite_Str ("<<<");
                Write_Id (Identifier (Node));