From a5226d6cf63c9e43cf34783278df4b803f6f5e1a Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Thu, 25 Apr 2013 12:19:59 +0200 Subject: [multiple changes] 2013-04-25 Gary Dismukes * 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 * 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 | 14 ++++++++++++++ gcc/ada/frontend.adb | 15 ++++++++++++++- gcc/ada/sem_util.adb | 12 +++++++++++- gcc/ada/system-vms-ia64.ads | 3 ++- gcc/ada/targparm.adb | 6 +++++- gcc/ada/targparm.ads | 3 +++ 6 files changed, 49 insertions(+), 4 deletions(-) (limited to 'gcc') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 71295d8..ec3f06c2 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,17 @@ +2013-04-25 Gary Dismukes + + * 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 + + * 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 * einfo.ads, einfo.adb: Remove with and use clauses for Namet. diff --git a/gcc/ada/frontend.adb b/gcc/ada/frontend.adb index 749e948..08536c4 100644 --- a/gcc/ada/frontend.adb +++ b/gcc/ada/frontend.adb @@ -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 diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 095510e..d95f69d 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -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 diff --git a/gcc/ada/system-vms-ia64.ads b/gcc/ada/system-vms-ia64.ads index bdf2b2c..2f1c27c 100644 --- a/gcc/ada/system-vms-ia64.ads +++ b/gcc/ada/system-vms-ia64.ads @@ -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; diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb index 5ed8408..ce3da1c 100644 --- a/gcc/ada/targparm.adb +++ b/gcc/ada/targparm.adb @@ -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; diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads index 52a6ee4..094c340 100644 --- a/gcc/ada/targparm.ads +++ b/gcc/ada/targparm.ads @@ -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 -- cgit v1.1