[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 30 Jul 2014 15:01:55 +0000 (17:01 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 30 Jul 2014 15:01:55 +0000 (17:01 +0200)
2014-07-30  Robert Dewar  <dewar@adacore.com>

* exp_ch7.adb, checks.adb, makeutl.adb, makeutl.ads: Minor reformatting.

2014-07-30  Yannick Moy  <moy@adacore.com>

* checks.ads: Fix typo in comment.

2014-07-30  Pierre-Marie Derodat  <derodat@adacore.com>

* sem_util.adb (Set_Debug_Info_Needed): For scalar types, recurse on
entities that materialize range bounds, if any.

2014-07-30  Vincent Celier  <celier@adacore.com>

* projects.texi: Minor spelling fix.

From-SVN: r213292

gcc/ada/ChangeLog
gcc/ada/checks.adb
gcc/ada/checks.ads
gcc/ada/exp_ch7.adb
gcc/ada/makeutl.adb
gcc/ada/makeutl.ads
gcc/ada/projects.texi
gcc/ada/sem_util.adb

index 8d00c1b6676417625f89301585f92baa09d439a4..0ec4d21f0162b1c685b2e5e28e1b118e784f74aa 100644 (file)
@@ -1,3 +1,20 @@
+2014-07-30  Robert Dewar  <dewar@adacore.com>
+
+       * exp_ch7.adb, checks.adb, makeutl.adb, makeutl.ads: Minor reformatting.
+
+2014-07-30  Yannick Moy  <moy@adacore.com>
+
+       * checks.ads: Fix typo in comment.
+
+2014-07-30  Pierre-Marie Derodat  <derodat@adacore.com>
+
+       * sem_util.adb (Set_Debug_Info_Needed): For scalar types, recurse on
+       entities that materialize range bounds, if any.
+
+2014-07-30  Vincent Celier  <celier@adacore.com>
+
+       * projects.texi: Minor spelling fix.
+
 2014-07-30  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * checks.adb (Make_Bignum_Block): Use the new secondary stack
index aea726c5f713142d7986db66ca4f3646ed6caeb0..7d8935b0555e92f283e441bbdb33d40cd8f64e6d 100644 (file)
@@ -7473,13 +7473,11 @@ package body Checks is
 
    function Make_Bignum_Block (Loc : Source_Ptr) return Node_Id is
       M : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uM);
-
    begin
       return
         Make_Block_Statement (Loc,
           Declarations               =>
             New_List (Build_SS_Mark_Call (Loc, M)),
-
           Handled_Statement_Sequence =>
             Make_Handled_Sequence_Of_Statements (Loc,
               Statements => New_List (Build_SS_Release_Call (Loc, M))));
index 56dcbf50da23d7f9c404b37e09053ad23f9ce09a..d231e3dfe3ecb34af96ea5bc4fa1970d142a94de 100644 (file)
@@ -312,8 +312,10 @@ package Checks is
    --  Similar to Determine_Range, but for a node N of floating-point type. OK
    --  is True on return only for IEEE floating-point types and only if we do
    --  not have to worry about extended precision (i.e. on the x86, we must be
-   --  using -msse2 -mfpmath=sse. At the current time, this is used only in
+   --  using -msse2 -mfpmath=sse). At the current time, this is used only in
    --  GNATprove, though we could consider using it more generally in future.
+   --  For that to happen, the possibility of arguments of infinite or NaN
+   --  value should be taken into account, which is not the case currently.
 
    procedure Install_Null_Excluding_Check (N : Node_Id);
    --  Determines whether an access node requires a runtime access check and
index 687ac1fa55a7531b3582c503db85c2ab5aef9c2c..e4ca02aab15e301a8bad98763b9d8cf8612b80c6 100644 (file)
@@ -875,9 +875,7 @@ package body Exp_Ch7 is
       --  types where the designated type is explicitly derived from [Limited_]
       --  Controlled.
 
-      elsif VM_Target /= No_VM
-        and then not Is_Controlled (Desig_Typ)
-      then
+      elsif VM_Target /= No_VM and then not Is_Controlled (Desig_Typ) then
          return;
 
       --  Do not create finalization masters in SPARK mode because they result
@@ -1609,7 +1607,7 @@ package body Exp_Ch7 is
             --  When the finalizer acts solely as a clean up routine, the body
             --  is inserted right after the spec.
 
-            if Acts_As_Clean and then not Has_Ctrl_Objs then
+            if Acts_As_Clean and not Has_Ctrl_Objs then
                Insert_After (Fin_Spec, Fin_Body);
 
             --  In all other cases the body is inserted after either:
@@ -1817,7 +1815,7 @@ package body Exp_Ch7 is
                elsif Is_Access_Type (Obj_Typ)
                  and then Present (Status_Flag_Or_Transient_Decl (Obj_Id))
                  and then Nkind (Status_Flag_Or_Transient_Decl (Obj_Id)) =
-                                   N_Object_Declaration
+                                                       N_Object_Declaration
                then
                   Processing_Actions (Has_No_Init => True);
 
@@ -1867,9 +1865,8 @@ package body Exp_Ch7 is
 
                elsif Ekind (Obj_Id) = E_Variable
                  and then not In_Library_Level_Package_Body (Obj_Id)
-                 and then
-                   (Is_Simple_Protected_Type (Obj_Typ)
-                     or else Has_Simple_Protected_Object (Obj_Typ))
+                 and then (Is_Simple_Protected_Type (Obj_Typ)
+                            or else Has_Simple_Protected_Object (Obj_Typ))
                then
                   Processing_Actions (Is_Protected => True);
                end if;
@@ -2205,7 +2202,7 @@ package body Exp_Ch7 is
 
             --  For constrained or tagged results escalate the condition to
             --  include the allocation format. Generate:
-            --
+
             --    if BIPallocform > Secondary_Stack'Pos
             --      and then BIPfinalizationmaster /= null
             --    then
@@ -2941,13 +2938,13 @@ package body Exp_Ch7 is
         and then
           (not Is_Library_Level_Entity (Spec_Id)
 
-             --  Nested packages are considered to be library level entities,
-             --  but do not need to be processed separately. True library level
-             --  packages have a scope value of 1.
+            --  Nested packages are considered to be library level entities,
+            --  but do not need to be processed separately. True library level
+            --  packages have a scope value of 1.
 
-             or else Scope_Depth_Value (Spec_Id) /= Uint_1
-             or else (Is_Generic_Instance (Spec_Id)
-                       and then Package_Instantiation (Spec_Id) /= N))
+            or else Scope_Depth_Value (Spec_Id) /= Uint_1
+            or else (Is_Generic_Instance (Spec_Id)
+                      and then Package_Instantiation (Spec_Id) /= N))
       then
          return;
       end if;
@@ -3456,8 +3453,7 @@ package body Exp_Ch7 is
    begin
       if Has_Discriminants (U_Typ)
         and then Nkind (Parent (U_Typ)) = N_Full_Type_Declaration
-        and then
-          Nkind (Type_Definition (Parent (U_Typ))) = N_Record_Definition
+        and then Nkind (Type_Definition (Parent (U_Typ))) = N_Record_Definition
         and then
           Present
             (Variant_Part (Component_List (Type_Definition (Parent (U_Typ)))))
@@ -4967,8 +4963,8 @@ package body Exp_Ch7 is
       --  it is not part of a statement list. The actions must be inserted
       --  before the select itself, which is part of some list of statements.
       --  Note that the triggering alternative includes the triggering
-      --  statement and an optional statement list. If the node to be wrapped
-      --  is part of that list, the normal insertion applies.
+      --  statement and an optional statement list. If the node to be
+      --  wrapped is part of that list, the normal insertion applies.
 
       if Nkind (Parent (Node_To_Wrap)) = N_Triggering_Alternative
         and then not Is_List_Member (Node_To_Wrap)
@@ -7004,9 +7000,7 @@ package body Exp_Ch7 is
 
          --    Deep_Finalize (Obj._parent, False);
 
-         if Is_Tagged_Type (Typ)
-           and then Is_Derived_Type (Typ)
-         then
+         if Is_Tagged_Type (Typ) and then Is_Derived_Type (Typ) then
             declare
                Par_Typ  : constant Entity_Id := Parent_Field_Type (Typ);
                Call     : Node_Id;
@@ -7061,9 +7055,7 @@ package body Exp_Ch7 is
          --  Finalize the object. This action must be performed first before
          --  all components have been finalized.
 
-         if Is_Controlled (Typ)
-           and then not Is_Local
-         then
+         if Is_Controlled (Typ) and then not Is_Local then
             declare
                Fin_Stmt : Node_Id;
                Proc     : Entity_Id;
@@ -7761,9 +7753,7 @@ package body Exp_Ch7 is
 
       --  Deal with non-tagged derivation of private views
 
-      if Is_Untagged_Derivation (Typ)
-        and then not Is_Conc
-      then
+      if Is_Untagged_Derivation (Typ) and then not Is_Conc then
          Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
          Ref  := Unchecked_Convert_To (Utyp, Ref);
 
@@ -8226,11 +8216,11 @@ package body Exp_Ch7 is
       --    declare
       --       M : constant Mark_Id := SS_Mark;
       --       procedure Finalizer is ...  (See Build_Finalizer)
-      --
+
       --    begin
       --       Temp := <Expr>;                           --  general case
       --       Temp := (if <Expr> then True else False); --  boolean case
-      --
+
       --    at end
       --       Finalizer;
       --    end;
index 51f95692f76b558e96d9a0bdc46cd1d2eef541c4..88826c73af85921436d021049331b5f0862096c1 100644 (file)
@@ -624,13 +624,11 @@ package body Makeutl is
                   end if;
 
                elsif Sw'Length >= 4
-                 and then (Sw (2 .. 3) = "aL"
-                             or else
-                           Sw (2 .. 3) = "aO"
-                             or else
-                           Sw (2 .. 3) = "aI"
-                             or else
-                               (For_Gnatbind and then Sw (2 .. 3) = "A="))
+                 and then
+                   (Sw (2 .. 3) = "aL" or else
+                    Sw (2 .. 3) = "aO" or else
+                    Sw (2 .. 3) = "aI"
+                      or else (For_Gnatbind and then Sw (2 .. 3) = "A="))
                then
                   Start := 4;
 
@@ -2562,7 +2560,7 @@ package body Makeutl is
                if Source.Id.Path.Name = Q.Table (J).Info.Id.Path.Name
                  and then Source.Id.Index = Q.Table (J).Info.Id.Index
                  and then Source.Id.Project.Path.Name =
-                          Q.Table (J).Info.Id.Project.Path.Name
+                            Q.Table (J).Info.Id.Project.Path.Name
                then
                   --  No need to insert this source in the queue, but still
                   --  return True as we may need to insert its roots.
@@ -3193,9 +3191,8 @@ package body Makeutl is
          else
             Data.Closure_Needed   :=
               Has_Mains
-              or else
-                (Root_Project.Library
-                 and then Root_Project.Standalone_Library /= No);
+                or else (Root_Project.Library
+                          and then Root_Project.Standalone_Library /= No);
             Data.Need_Compilation := All_Phases or Option_Compile_Only;
             Data.Need_Binding     := All_Phases or Option_Bind_Only;
             Data.Need_Linking     := (All_Phases or Option_Link_Only)
index 77f0f04976d94f4410fbf9d4e5acfee5c948bde9..ab8068bd22cc9d0bb36669b892be910a5f92cabd 100644 (file)
@@ -506,7 +506,7 @@ package Makeutl is
       --  project-based files (in which case we have a full Source_Id record).
 
       No_Source_Info : constant Source_Info :=
-                                  (Format_Gprbuild, null, null, False);
+                         (Format_Gprbuild, null, null, False);
 
       procedure Initialize
         (Queue_Per_Obj_Dir : Boolean;
index d66ed9affbd880c8c648dba5cc054b6b388f3338..65df6f732046093774811800a42b2baff7832134 100644 (file)
@@ -1767,6 +1767,10 @@ Other library-related attributes can be used to change the defaults:
   This attribute may be used to specify additional switches (last switches)
   when linking a shared library.
 
+  It may also be used to add foreign object files in a static library.
+  Each string in Library_Options is an absolute or relative path of an object
+  file. When a relative path, it is relative to the object directory.
+
 @item @b{Leading_Library_Options}:
 @cindex @code{Leading_Library_Options}
   This attribute, that is taken into account only by @command{gprbuild}, may be
@@ -2889,7 +2893,7 @@ static library named @file{libagg.a} into the @file{lagg}
 directory. An aggregate library project has the same set of
 restriction as a standard library project.
 
-Note that a shared aggregate library project cannot aggregates a
+Note that a shared aggregate library project cannot aggregate a
 static library project. In platforms where a compiler option is
 required to create relocatable object files, a Builder package in the
 aggregate library project may be used:
index 487ac3a57fa1242dc4024a7fa04c733123691f9d..9759a6236841a30fba1f97b721e58112e8a67b3d 100644 (file)
@@ -15997,6 +15997,30 @@ package body Sem_Util is
 
          elsif Is_Protected_Type (T) then
             Set_Debug_Info_Needed_If_Not_Set (Corresponding_Record_Type (T));
+
+         elsif Is_Scalar_Type (T) then
+
+            --  If the subrange bounds are materialized by dedicated constant
+            --  objects, also include them to the debug info to make sure the
+            --  debugger can properly use them.
+
+            if Present (Scalar_Range (T))
+              and then Nkind (Scalar_Range (T)) = N_Range
+            then
+               declare
+                  Low_Bnd  : constant Node_Id := Type_Low_Bound (T);
+                  High_Bnd : constant Node_Id := Type_High_Bound (T);
+
+               begin
+                  if Is_Entity_Name (Low_Bnd) then
+                     Set_Debug_Info_Needed_If_Not_Set (Entity (Low_Bnd));
+                  end if;
+
+                  if Is_Entity_Name (High_Bnd) then
+                     Set_Debug_Info_Needed_If_Not_Set (Entity (High_Bnd));
+                  end if;
+               end;
+            end if;
          end if;
       end if;
    end Set_Debug_Info_Needed;