[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 25 Apr 2013 10:19:59 +0000 (12:19 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 25 Apr 2013 10:19:59 +0000 (12:19 +0200)
2013-04-25  Gary Dismukes  <dismukes@adacore.com>

* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test
for case of selecting from an unexpanded implicit dereference
and do not make a recursive call on such a prefix.

2013-04-25  Doug Rupp  <rupp@adacore.com>

* targparm.adb (VXF{_Str}): New tag for vaxfloat.
(Get_Target_Parameters): Handle VXF tag.
* targparm.ads (VAX_Float_On_Target): New boolean.
* system-vms-ia64.ads (VAX_Float): New boolean.
* frontend.adb (Frontend): Handle VAX float boolean.

From-SVN: r198284

gcc/ada/ChangeLog
gcc/ada/frontend.adb
gcc/ada/sem_util.adb
gcc/ada/system-vms-ia64.ads
gcc/ada/targparm.adb
gcc/ada/targparm.ads

index 71295d8..ec3f06c 100644 (file)
@@ -1,3 +1,17 @@
+2013-04-25  Gary Dismukes  <dismukes@adacore.com>
+
+       * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test
+       for case of selecting from an unexpanded implicit dereference
+       and do not make a recursive call on such a prefix.
+
+2013-04-25  Doug Rupp  <rupp@adacore.com>
+
+       * targparm.adb (VXF{_Str}): New tag for vaxfloat.
+       (Get_Target_Parameters): Handle VXF tag.
+       * targparm.ads (VAX_Float_On_Target): New boolean.
+       * system-vms-ia64.ads (VAX_Float): New boolean.
+       * frontend.adb (Frontend): Handle VAX float boolean.
+
 2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * einfo.ads, einfo.adb: Remove with and use clauses for Namet.
index 749e948..08536c4 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2013, 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- --
@@ -56,6 +56,7 @@ with Sem_Ch8;  use Sem_Ch8;
 with Sem_SCIL;
 with Sem_Elab; use Sem_Elab;
 with Sem_Prag; use Sem_Prag;
+with Sem_VFpt; use Sem_VFpt;
 with Sem_Warn; use Sem_Warn;
 with Sinfo;    use Sinfo;
 with Sinput;   use Sinput;
@@ -181,6 +182,18 @@ begin
          Config_Pragmas := Empty_List;
       end if;
 
+      --  Check for VAX Float
+
+      if Targparm.VAX_Float_On_Target then
+         --  pragma Float_Representation (VAX_Float);
+         Opt.Float_Format := 'V';
+
+         --  pragma Long_Float (G_Float);
+         Opt.Float_Format_Long := 'G';
+
+         Set_Standard_Fpt_Formats;
+      end if;
+
       --  Now deal with specified config pragmas files if there are any
 
       if Opt.Config_File_Names /= null then
index 095510e..d95f69d 100644 (file)
@@ -8089,10 +8089,20 @@ package body Sem_Util is
             then
                return True;
 
+            --  If the prefix is of an access type at this point, then we want
+            --  to return False, rather than calling this function recursively
+            --  on the access object (which itself might be a discriminant-
+            --  dependent component of some other object, but that isn't
+            --  relevant to checking the object passed to us). This avoids
+            --  issuing wrong errors when compiling with -gnatc, where there
+            --  can be implicit dereferences that have not been expanded.
+
+            elsif Is_Access_Type (Etype (Prefix (Object))) then
+               return False;
+
             else
                return
                  Is_Dependent_Component_Of_Mutable_Object (Prefix (Object));
-
             end if;
 
          elsif Nkind (Object) = N_Indexed_Component
index bdf2b2c..2f1c27c 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --            (OpenVMS 64bit Itanium GCC_ZCX DEC Threads Version)           --
 --                                                                          --
---          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -144,6 +144,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := True;
+   VAX_Float                 : constant Boolean := False;
    Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := True;
index 5ed8408..ce3da1c 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1999-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1999-2013, 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- --
@@ -68,6 +68,7 @@ package body Targparm is
       SSL,  --   Suppress_Standard_Library
       UAM,  --   Use_Ada_Main_Program_Name
       VMS,  --   OpenVMS
+      VXF,  --   VAX Float
       ZCD); --   ZCX_By_Default
 
    Targparm_Flags : array (Targparm_Tags) of Boolean := (others => False);
@@ -105,6 +106,7 @@ package body Targparm is
    SSL_Str : aliased constant Source_Buffer := "Suppress_Standard_Library";
    UAM_Str : aliased constant Source_Buffer := "Use_Ada_Main_Program_Name";
    VMS_Str : aliased constant Source_Buffer := "OpenVMS";
+   VXF_Str : aliased constant Source_Buffer := "VAX_Float";
    ZCD_Str : aliased constant Source_Buffer := "ZCX_By_Default";
 
    --  The following defines a set of pointers to the above strings,
@@ -142,6 +144,7 @@ package body Targparm is
       SSL_Str'Access,
       UAM_Str'Access,
       VMS_Str'Access,
+      VXF_Str'Access,
       ZCD_Str'Access);
 
    -----------------------
@@ -600,6 +603,7 @@ package body Targparm is
                      when SNZ => Signed_Zeros_On_Target              := Result;
                      when UAM => Use_Ada_Main_Program_Name_On_Target := Result;
                      when VMS => OpenVMS_On_Target                   := Result;
+                     when VXF => VAX_Float_On_Target                 := Result;
                      when ZCD => ZCX_By_Default_On_Target            := Result;
 
                      goto Line_Loop_Continue;
index 52a6ee4..094c340 100644 (file)
@@ -206,6 +206,9 @@ package Targparm is
    OpenVMS_On_Target : Boolean := False;
    --  Set to True if target is OpenVMS
 
+   VAX_Float_On_Target : Boolean := False;
+   --  Set to True if target float format is VAX Float
+
    RTX_RTSS_Kernel_Module_On_Target : Boolean := False;
    --  Set to True if target is RTSS module for RTX