2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-13 15:31:15 +08:00

[multiple changes]

2010-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb, sinput-l.adb: Minor reformatting.

2010-10-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate a tag
	check when the target object is an interface since the expression of
	the right hand side must only cover the interface.

From-SVN: r164935
This commit is contained in:
Arnaud Charlet 2010-10-04 15:38:32 +02:00
parent ea4ce0f777
commit 477bd73273
4 changed files with 25 additions and 8 deletions

@ -1,3 +1,13 @@
2010-10-04 Robert Dewar <dewar@adacore.com>
* sem_res.adb, sinput-l.adb: Minor reformatting.
2010-10-04 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate a tag
check when the target object is an interface since the expression of
the right hand side must only cover the interface.
2010-10-04 Vincent Celier <celier@adacore.com>
* frontend.adb: Set Lib.Parsing_Main_Extended_Source to True before

@ -1956,6 +1956,12 @@ package body Exp_Ch5 is
if Is_Class_Wide_Type (Typ)
and then Is_Tagged_Type (Typ)
and then Is_Tagged_Type (Underlying_Type (Etype (Rhs)))
-- Do not generate a tag check when the target object is
-- an interface since the expression of the right hand
-- side must only cover the interface.
and then not Is_Interface (Typ)
then
Append_To (L,
Make_Raise_Constraint_Error (Loc,

@ -8826,9 +8826,9 @@ package body Sem_Res is
(Etype (Entity (Orig_N)) = Orig_T
or else
(Ekind (Entity (Orig_N)) = E_Loop_Parameter
and then Covers (Orig_T, Etype (Entity (Orig_N))))))
and then Covers (Orig_T, Etype (Entity (Orig_N))))))
-- If not an entity, then type of expression must match
-- If not an entity, then type of expression must match
or else Etype (Orig_N) = Orig_T
then

@ -556,13 +556,14 @@ package body Sinput.L is
-- the source has been modified by the preprocessing. Only
-- do that for the main unit (spec, body and subunits).
if Generate_Processed_File and then
Modified and then
if Generate_Processed_File
and then Modified
and then
((Compiler_State = Parsing
and then Parsing_Main_Extended_Source)
or else
(Compiler_State = Analyzing
and then Analysing_Subunit_Of_Main))
and then Parsing_Main_Extended_Source)
or else
(Compiler_State = Analyzing
and then Analysing_Subunit_Of_Main))
then
declare
FD : File_Descriptor;