* 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
+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.
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;
----------------------------
-- 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);
-- 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.
-- 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
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));