[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 3 Aug 2011 09:51:09 +0000 (11:51 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 3 Aug 2011 09:51:09 +0000 (11:51 +0200)
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

gcc/ada/ChangeLog
gcc/ada/exp_ch4.adb
gcc/ada/exp_dist.adb
gcc/ada/inline.adb
gcc/ada/sem_ch4.adb
gcc/ada/sem_type.adb

index 5cd400aea4df986fc1248cd49d781fd5465e4b2f..530d52bd82cccad8af16b3ae421ef655dbdf2c06 100644 (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,
index 27e6279764eec20342e5a937b00c49ac630a794f..1487f770abd94758555628a7950902f77a21637d 100644 (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
index 82d5898bd8d5ef88d97f5247ca51ccc3a6783a28..51cf49a98bd46c4fb96bd032a201ed73bdf44e63 100644 (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 :=
index d85e0866a48bda7796e3f4a9b47a8556d16d7900..c508ef4bb96a77099212a27ab01c1b1f784ddd2f 100644 (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);
index 82a6161533d7279f2dca3aeb757007ae4ccdffb0..912e09b643dd716a3491de6153cc339ab7ec7aa5 100644 (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
index dc98cc168f3356e5fea723b9b5d6d17ec4be5704..7f43699d84e2d26befb5094646bc90a940774dd0 100644 (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;