Commit 7e22a38c by Arnaud Charlet

[multiple changes]

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
parent b83dd5ec
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> 2016-04-20 Hristian Kirtchev <kirtchev@adacore.com>
* s-imgllu.adb, sem_util.adb, s-imgint.adb, s-imguns.adb, * s-imgllu.adb, sem_util.adb, s-imgint.adb, s-imguns.adb,
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- 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 -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -609,7 +609,7 @@ package Ada.Strings.Wide_Bounded is ...@@ -609,7 +609,7 @@ package Ada.Strings.Wide_Bounded is
High : Natural) High : Natural)
renames Super_Slice; renames Super_Slice;
function "=" overriding function "="
(Left : Bounded_Wide_String; (Left : Bounded_Wide_String;
Right : Bounded_Wide_String) return Boolean Right : Bounded_Wide_String) return Boolean
renames Equal; renames Equal;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- 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 -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
...@@ -618,7 +618,7 @@ package Ada.Strings.Wide_Wide_Bounded is ...@@ -618,7 +618,7 @@ package Ada.Strings.Wide_Wide_Bounded is
High : Natural) High : Natural)
renames Super_Slice; renames Super_Slice;
function "=" overriding function "="
(Left : Bounded_Wide_Wide_String; (Left : Bounded_Wide_Wide_String;
Right : Bounded_Wide_Wide_String) return Boolean Right : Bounded_Wide_Wide_String) return Boolean
renames Equal; renames Equal;
......
...@@ -545,6 +545,8 @@ package body Exp_Aggr is ...@@ -545,6 +545,8 @@ package body Exp_Aggr is
-- 10. No controlled actions need to be generated for components -- 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 function Backend_Processing_Possible (N : Node_Id) return Boolean is
Typ : constant Entity_Id := Etype (N); Typ : constant Entity_Id := Etype (N);
-- Typ is the correct constrained array subtype of the aggregate -- Typ is the correct constrained array subtype of the aggregate
...@@ -569,6 +571,17 @@ package body Exp_Aggr is ...@@ -569,6 +571,17 @@ package body Exp_Aggr is
return False; return False;
end if; 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 -- Checks on components
-- Recurse to check subaggregates, which may appear in qualified -- Recurse to check subaggregates, which may appear in qualified
......
...@@ -12286,6 +12286,18 @@ package body Sem_Ch13 is ...@@ -12286,6 +12286,18 @@ package body Sem_Ch13 is
and then Comes_From_Source (T) and then Comes_From_Source (T)
then 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; Too_Late;
S := First_Subtype (T); S := First_Subtype (T);
......
...@@ -12507,6 +12507,7 @@ package body Sem_Prag is ...@@ -12507,6 +12507,7 @@ package body Sem_Prag is
Arg : Node_Id; Arg : Node_Id;
Argx : Node_Id; Argx : Node_Id;
LocP : Source_Ptr; LocP : Source_Ptr;
New_P : Node_Id;
begin begin
Arg := Arg1; Arg := Arg1;
...@@ -12526,7 +12527,7 @@ package body Sem_Prag is ...@@ -12526,7 +12527,7 @@ package body Sem_Prag is
-- Construct equivalent old form syntax Check_Policy -- Construct equivalent old form syntax Check_Policy
-- pragma and insert it to get remaining checks. -- pragma and insert it to get remaining checks.
Insert_Action (N, New_P :=
Make_Pragma (LocP, Make_Pragma (LocP,
Chars => Name_Check_Policy, Chars => Name_Check_Policy,
Pragma_Argument_Associations => New_List ( Pragma_Argument_Associations => New_List (
...@@ -12534,9 +12535,20 @@ package body Sem_Prag is ...@@ -12534,9 +12535,20 @@ package body Sem_Prag is
Expression => Expression =>
Make_Identifier (LocP, Chars (Arg))), Make_Identifier (LocP, Chars (Arg))),
Make_Pragma_Argument_Association (Sloc (Argx), Make_Pragma_Argument_Association (Sloc (Argx),
Expression => Argx)))); Expression => Argx)));
Arg := Next (Arg); 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; end loop;
-- Rewrite original Check_Policy pragma to null, since we -- Rewrite original Check_Policy pragma to null, since we
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment