[multiple changes]

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor code cleanup.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb: Do not generate distribution stubs if serious errors
	have been diagnosed.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Primitive_Operation): when checking the validity of
	the first formal of a primitive operation, go to the base type to
	handle properly an access to a derived type with constrained
	discriminants.
	* sem_type.adb (Disambiguate): an immediately visible operator hides a
	user-defined function that is only use-visible.
	* inline.adb: init procs are inlineable.

From-SVN: r177253
This commit is contained in:
Arnaud Charlet 2011-08-03 11:51:09 +02:00
parent e917aec294
commit 170b298986
6 changed files with 58 additions and 6 deletions

View File

@ -1,3 +1,22 @@
2011-08-03 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb: Minor code cleanup.
2011-08-03 Thomas Quinot <quinot@adacore.com>
* exp_dist.adb: Do not generate distribution stubs if serious errors
have been diagnosed.
2011-08-03 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Primitive_Operation): when checking the validity of
the first formal of a primitive operation, go to the base type to
handle properly an access to a derived type with constrained
discriminants.
* sem_type.adb (Disambiguate): an immediately visible operator hides a
user-defined function that is only use-visible.
* inline.adb: init procs are inlineable.
2011-08-03 Robert Dewar <dewar@adacore.com>
* sem_aggr.adb, sem_ch3.adb, lib.ads, gnatcmd.adb, prj-proc.adb,

View File

@ -7764,9 +7764,8 @@ package body Exp_Ch4 is
if Disc = Entity (Selector_Name (N))
and then (Is_Entity_Name (Dval)
or else Nkind (Dval) = N_Integer_Literal
or else Is_Subtype_Declaration
or else Is_Static_Expression (Dval))
or else Compile_Time_Known_Value (Dval)
or else Is_Subtype_Declaration)
then
-- Here we have the matching discriminant. Check for
-- the case of a discriminant of a component that is

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -26,6 +26,7 @@
with Atree; use Atree;
with Einfo; use Einfo;
with Elists; use Elists;
with Errout; use Errout;
with Exp_Atag; use Exp_Atag;
with Exp_Disp; use Exp_Disp;
with Exp_Strm; use Exp_Strm;
@ -1029,6 +1030,10 @@ package body Exp_Dist is
pragma Warnings (Off, Subp_Str);
begin
if Serious_Errors_Detected /= 0 then
return;
end if;
Assign_Subprogram_Identifier
(Defining_Unit_Name (Spec), Current_Subprogram_Number, Subp_Str);
@ -3836,6 +3841,10 @@ package body Exp_Dist is
pragma Warnings (Off, Subp_Val);
begin
if Serious_Errors_Detected /= 0 then
return;
end if;
-- Build receiving stub
Current_Stubs :=
@ -6840,6 +6849,10 @@ package body Exp_Dist is
Proxy_Obj_Addr : Entity_Id;
begin
if Serious_Errors_Detected /= 0 then
return;
end if;
-- Build receiving stub
Current_Stubs :=

View File

@ -344,6 +344,7 @@ package body Inline is
elsif not Is_Inlined (Pack)
and then
(not Has_Completion (E)
or else Is_Init_Proc (E)
or else Is_Expression_Function (E))
then
Set_Is_Inlined (Pack);

View File

@ -7260,7 +7260,8 @@ package body Sem_Ch4 is
or else
(Ekind (Typ) = E_Anonymous_Access_Type
and then Designated_Type (Typ) = Base_Type (Corr_Type));
and then
Base_Type (Designated_Type (Typ)) = Base_Type (Corr_Type));
end Valid_First_Argument_Of;
-- Start of processing for Try_Primitive_Operation

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -1908,6 +1908,25 @@ package body Sem_Type is
end if;
end;
-- An immediately visible operator hides a use-visible user-
-- defined operation. This disambiguation cannot take place
-- earlier because the visibility of the predefined operator
-- can only be established when operand types are known.
elsif Ekind (User_Subp) = E_Function
and then Ekind (Predef_Subp) = E_Operator
and then Nkind (N) in N_Op
and then not Is_Overloaded (Right_Opnd (N))
and then
Is_Immediately_Visible (Base_Type (Etype (Right_Opnd (N))))
and then Is_Potentially_Use_Visible (User_Subp)
then
if It2.Nam = Predef_Subp then
return It1;
else
return It2;
end if;
else
return No_Interp;
end if;