diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-03 11:51:09 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-03 11:51:09 +0200 |
commit | 170b298986d2a6f9b9069a43db89b273640ffd31 (patch) | |
tree | 7fe583828bc244e1722fc6eebfbbdbe98b2352ac | |
parent | e917aec294d1a0e602aaf31a70df3a784f7a48b9 (diff) | |
download | gcc-170b298986d2a6f9b9069a43db89b273640ffd31.zip gcc-170b298986d2a6f9b9069a43db89b273640ffd31.tar.gz gcc-170b298986d2a6f9b9069a43db89b273640ffd31.tar.bz2 |
[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
-rw-r--r-- | gcc/ada/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/ada/exp_ch4.adb | 5 | ||||
-rw-r--r-- | gcc/ada/exp_dist.adb | 15 | ||||
-rw-r--r-- | gcc/ada/inline.adb | 1 | ||||
-rw-r--r-- | gcc/ada/sem_ch4.adb | 3 | ||||
-rw-r--r-- | gcc/ada/sem_type.adb | 21 |
6 files changed, 58 insertions, 6 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 5cd400a..530d52b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,24 @@ 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, make.adb, lib-writ.adb, prj-part.adb, prj-part.ads, prj-ext.adb, fname-uf.adb, prj-ext.ads, prj.adb, prj.ads, sem_attr.adb, alfa.adb, diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 27e6279..1487f77 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -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 diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb index 82d5898..51cf49a 100644 --- a/gcc/ada/exp_dist.adb +++ b/gcc/ada/exp_dist.adb @@ -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 := diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb index d85e086..c508ef4 100644 --- a/gcc/ada/inline.adb +++ b/gcc/ada/inline.adb @@ -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); diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 82a6161..912e09b 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -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 diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb index dc98cc1..7f43699 100644 --- a/gcc/ada/sem_type.adb +++ b/gcc/ada/sem_type.adb @@ -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; |