[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 23 Oct 2014 10:14:28 +0000 (12:14 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 23 Oct 2014 10:14:28 +0000 (12:14 +0200)
2014-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_util.ads, checks.ads: Minor comment reformatting.

2014-10-23  Javier Miranda  <miranda@adacore.com>

* sem_eval (Test_In_Range): Disable removal of range_check for
VM targets.

2014-10-23  Robert Dewar  <dewar@adacore.com>

* erroutc.adb (Validate_Specific_Warnings): Fix test for -W
messages, which got disabled when we unconditionally added an
asterisk at the start of the string.

2014-10-23  Vincent Celier  <celier@adacore.com>

* gnatls.adb: Ensure that "gnatls -l" works even when there is
no default runtime.

2014-10-23  Eric Botcazou  <ebotcazou@adacore.com>

* sem_ch3.adb (Build_Derived_Private_Type): When the parent is
untagged and has discriminants, build the implicit full view after
building the derived type. Capture original declaration and type
here instead of...
(Copy_And_Build): ...here.
* sem_type.adb (Full_View_Covers): Handle the Underlying_Full_View.

From-SVN: r216582

gcc/ada/ChangeLog
gcc/ada/checks.ads
gcc/ada/erroutc.adb
gcc/ada/exp_util.ads
gcc/ada/gnatls.adb
gcc/ada/sem_ch3.adb
gcc/ada/sem_eval.adb
gcc/ada/sem_type.adb

index 85917acb087e18d22ca6c4c567582f6a9d477b6f..32777f6617e29bd0ff069b2b5d9cf670cf830f00 100644 (file)
@@ -1,3 +1,32 @@
+2014-10-23  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_util.ads, checks.ads: Minor comment reformatting.
+
+2014-10-23  Javier Miranda  <miranda@adacore.com>
+
+       * sem_eval (Test_In_Range): Disable removal of range_check for
+       VM targets.
+
+2014-10-23  Robert Dewar  <dewar@adacore.com>
+
+       * erroutc.adb (Validate_Specific_Warnings): Fix test for -W
+       messages, which got disabled when we unconditionally added an
+       asterisk at the start of the string.
+
+2014-10-23  Vincent Celier  <celier@adacore.com>
+
+       * gnatls.adb: Ensure that "gnatls -l" works even when there is
+       no default runtime.
+
+2014-10-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * sem_ch3.adb (Build_Derived_Private_Type): When the parent is
+       untagged and has discriminants, build the implicit full view after
+       building the derived type. Capture original declaration and type
+       here instead of...
+       (Copy_And_Build): ...here.
+       * sem_type.adb (Full_View_Covers): Handle the Underlying_Full_View.
+
 2014-10-23  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * checks.adb (Ensure_Valid): Update the subprogram
index 15a456b111748fbfe6f5d8cf0d79ca9612d66655..d3e002cf18aeff601f3491d482067511c9e74b0a 100644 (file)
@@ -875,7 +875,8 @@ package Checks is
    --  Is_Low_Bound and Is_High_Bound specify whether the expression to check
    --  is the low or the high bound of a range. These three optional arguments
    --  signal Remove_Side_Effects to create an external symbol of the form
-   --  Chars (Related_Id)_FIRST/_LAST.
+   --  Chars (Related_Id)_FIRST/_LAST. For suggested use of these parameters
+   --  see the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
 
    function Expr_Known_Valid (Expr : Node_Id) return Boolean;
    --  This function tests it the value of Expr is known to be valid in the
@@ -900,7 +901,8 @@ package Checks is
    --  Is_Low_Bound and Is_High_Bound specify whether the expression to check
    --  is the low or the high bound of a range. These three optional arguments
    --  signal Remove_Side_Effects to create an external symbol of the form
-   --  Chars (Related_Id)_FIRST/_LAST.
+   --  Chars (Related_Id)_FIRST/_LAST. For suggested use of these parameters
+   --  see the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
 
    procedure Null_Exclusion_Static_Checks (N : Node_Id);
    --  Ada 2005 (AI-231): Check bad usages of the null-exclusion issue
index 11eef8a9593ab82228e65b28497f3a8a7b4505a6..f4f1dfd1c8d4d1f0c4cd324b552d4597b5afb695 100644 (file)
@@ -1537,10 +1537,11 @@ package body Erroutc is
                elsif not SWE.Used
 
                  --  Do not issue this warning for -Wxxx messages since the
-                 --  back-end doesn't report the information.
+                 --  back-end doesn't report the information. Note that there
+                 --  is always an asterisk at the start of every message.
 
                  and then not
-                   (SWE.Msg'Length > 2 and then SWE.Msg (1 .. 2) = "-W")
+                   (SWE.Msg'Length > 3 and then SWE.Msg (2 .. 3) = "-W")
                then
                   Eproc.all
                     ("?W?no warning suppressed by this pragma", SWE.Start);
index ef319fd56c4c845bf0c41caca06ff354d8f201e0..770b23c2c03ad6b808ba8fc92ae0958df926ddf2 100644 (file)
@@ -388,7 +388,8 @@ package Exp_Util is
    --  Is_Low_Bound and Is_High_Bound specify whether the expression to check
    --  is the low or the high bound of a range. These three optional arguments
    --  signal Remove_Side_Effects to create an external symbol of the form
-   --  Chars (Related_Id)_FIRST/_LAST.
+   --  Chars (Related_Id)_FIRST/_LAST. For suggested use of these parameters
+   --  see the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
 
    function Duplicate_Subexpr_Move_Checks
      (Exp          : Node_Id;
@@ -858,7 +859,8 @@ package Exp_Util is
    --  is the low or the high bound of a range. These three optional arguments
    --  signal Remove_Side_Effects to create an external symbol of the form
    --  Chars (Related_Id)_FIRST/_LAST. If Related_Id is set, the exactly one
-   --  of the Is_xxx_Bound flags must be set.
+   --  of the Is_xxx_Bound flags must be set. For use of these parameters see
+   --  the warning in the body of Sem_Ch3.Process_Range_Expr_In_Decl.
 
    function Represented_As_Scalar (T : Entity_Id) return Boolean;
    --  Returns True iff the implementation of this type in code generation
index 3db4d617be95696c90cf1cdcc2db7e81001f861e..05ff3aee886cc23c433caa25f04f0e0ba965a4c7 100644 (file)
@@ -1595,12 +1595,18 @@ begin
 
    --  If -l (output license information) is given, it must be the only switch
 
-   if License and then Arg_Count /= 2 then
-      Set_Standard_Error;
-      Write_Str ("Can't use -l with another switch");
-      Write_Eol;
-      Try_Help;
-      Exit_Program (E_Fatal);
+   if License then
+      if Arg_Count = 2 then
+         Output_License_Information;
+         Exit_Program (E_Success);
+
+      else
+         Set_Standard_Error;
+         Write_Str ("Can't use -l with another switch");
+         Write_Eol;
+         Try_Help;
+         Exit_Program (E_Fatal);
+      end if;
    end if;
 
    --  Handle --RTS switch
@@ -1739,13 +1745,6 @@ begin
       Usage;
    end if;
 
-   --  Output license information when requested
-
-   if License then
-      Output_License_Information;
-      Exit_Program (E_Success);
-   end if;
-
    if not More_Lib_Files then
       if not Print_Usage and then not Verbose_Mode then
          if Argument_Count = 0 then
index 2f0f194e71b11bcfaf274512248c3b9277db6638..aab006c478e5eb1530041b9465788dad9d5bc687 100644 (file)
@@ -6671,7 +6671,8 @@ package body Sem_Ch3 is
       Loc       : constant Source_Ptr := Sloc (N);
       Par_Base  : constant Entity_Id  := Base_Type (Parent_Type);
       Par_Scope : constant Entity_Id  := Scope (Par_Base);
-      Full_Der  : Entity_Id           := Empty;
+      Full_N    : constant Node_Id    := New_Copy_Tree (N);
+      Full_Der  : Entity_Id           := New_Copy (Derived_Type);
       Full_P    : Entity_Id;
 
       procedure Build_Full_Derivation;
@@ -6718,7 +6719,6 @@ package body Sem_Ch3 is
       --------------------
 
       procedure Copy_And_Build is
-         Full_N      : Node_Id;
          Full_Parent : Entity_Id := Parent_Type;
 
       begin
@@ -6755,8 +6755,6 @@ package body Sem_Ch3 is
             --  is originally a private declaration. Indicate that full view
             --  is internally generated.
 
-            Full_N := New_Copy_Tree (N);
-            Full_Der := New_Copy (Derived_Type);
             Set_Comes_From_Source (Full_N, False);
             Set_Comes_From_Source (Full_Der, False);
             Set_Parent (Full_Der, Full_N);
@@ -6944,6 +6942,15 @@ package body Sem_Ch3 is
          return;
 
       elsif Has_Discriminants (Parent_Type) then
+         --  Build partial view of derived type from partial view of parent.
+         --  This must be done before building the full derivation because the
+         --  second derivation will modify the discriminants of the first and
+         --  the discriminants are chained with the rest of the components in
+         --  the full derivation.
+
+         Build_Derived_Record_Type
+           (N, Parent_Type, Derived_Type, Derive_Subps);
+
          --  Build the full derivation if this is not the anonymous derived
          --  base type created by Build_Derived_Record_Type in the constrained
          --  case (see point 5. of its head comment) since we build it for the
@@ -6954,15 +6961,6 @@ package body Sem_Ch3 is
            and then not Is_Itype (Derived_Type)
            and then not (Ekind (Full_View (Parent_Type)) in Protected_Kind)
          then
-            Build_Full_Derivation;
-         end if;
-
-         --  Build partial view of derived type from partial view of parent
-
-         Build_Derived_Record_Type
-           (N, Parent_Type, Derived_Type, Derive_Subps);
-
-         if Present (Full_Der) then
             declare
                Der_Base   : constant Entity_Id := Base_Type (Derived_Type);
                Discr      : Entity_Id;
@@ -6975,6 +6973,8 @@ package body Sem_Ch3 is
                --  being built is a full view and the full derivation can
                --  only be its underlying full view.
 
+               Build_Full_Derivation;
+
                if not Is_Completion then
                   Set_Full_View (Derived_Type, Full_Der);
                else
index e49c51c86718bce4dd3b634206166fb5a7d2c14a..43db1c74cf18f04efae4500a2102257f0560b6f3 100644 (file)
@@ -52,6 +52,7 @@ with Sinfo;    use Sinfo;
 with Snames;   use Snames;
 with Stand;    use Stand;
 with Stringt;  use Stringt;
+with Targparm; use Targparm;
 with Tbuild;   use Tbuild;
 
 package body Sem_Eval is
@@ -6197,6 +6198,12 @@ package body Sem_Eval is
         and then Is_Known_Valid (Typ)
         and then Esize (Etype (N)) <= Esize (Typ)
         and then not Has_Biased_Representation (Etype (N))
+
+        --  This check cannot be disabled under VM targets because in some
+        --  unusual cases the backend of the native compiler raises a run-time
+        --  exception but the virtual machines do not raise any exception.
+
+        and then VM_Target = No_VM
       then
          return In_Range;
 
index be2b4c19daf25fbf6d81ef51c3b3a9f799074d6a..4f83aaed4038bafd66c86e9bf70c3a7d25293e60 100644 (file)
@@ -766,6 +766,8 @@ package body Sem_Type is
              and then
               ((Present (Full_View (Typ1))
                   and then Covers (Full_View (Typ1), Typ2))
+                or else (Present (Underlying_Full_View (Typ1))
+                           and then Covers (Underlying_Full_View (Typ1), Typ2))
                 or else Base_Type (Typ1) = Typ2
                 or else Base_Type (Typ2) = Typ1);
       end Full_View_Covers;