diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2015-05-26 12:29:25 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2015-05-26 12:29:25 +0200 |
commit | 596b25f9a110b88d8c7e5fb1fa6cae5819b21691 (patch) | |
tree | 5089f66e930abb4b53e1d7f2bee15a14da92a0ff /gcc/ada/sem_ch13.adb | |
parent | 1b961de9db0b7ffb8d7f4614ddf61faf31a544a5 (diff) | |
download | gcc-596b25f9a110b88d8c7e5fb1fa6cae5819b21691.zip gcc-596b25f9a110b88d8c7e5fb1fa6cae5819b21691.tar.gz gcc-596b25f9a110b88d8c7e5fb1fa6cae5819b21691.tar.bz2 |
[multiple changes]
2015-05-26 Robert Dewar <dewar@adacore.com>
* sem_aggr.adb (Resolve_Array_Aggregate): Defend against
bad bounds.
* debug.adb: Document -gnatd.k.
* erroutc.adb (Set_Msg_Insertion_Line_Number): Implement -gnatd.k.
2015-05-26 Robert Dewar <dewar@adacore.com>
* gnat1drv.adb (Gnat1drv): Provide new arguments for
Get_Target_Parameters.
* restrict.adb (Set_Restriction_No_Specification_Of_Aspect):
new procedure.
(Set_Restriction_No_Use_Of_Attribute): new procedure.
* restrict.ads (Set_Restriction_No_Specification_Of_Aspect):
new procedure.
(Set_Restriction_No_Use_Of_Attribute): new procedure.
* s-rident.ads (Integer_Parameter_Restrictions): New subtype.
* targparm.adb (Get_Target_Parameters): Allow new restriction
pragmas No_Specification_Of_Aspect No_Use_Of_Attribute
No_Use_Of_Pragma.
* targparm.ads: New parameters for Get_Target_Parameters.
* tbuild.adb (Set_NOD): New name for Set_RND.
(Set_NSA): New procedure.
(Set_NUA): New procedure.
(Set_NUP): New procedure.
* tbuild.ads (Make_SC): Minor reformatting.
(Set_NOD): New name for Set_RND.
(Set_NSA, Set_NUA, Set_NUP): New procedure.
2015-05-26 Ed Schonberg <schonberg@adacore.com>
* a-stwise.adb (Find_Token): If source'first is not positive,
an exception must be raised, as specified by RM 2005 A.4.3
(68/1). This must be checked explicitly, given that run-time
files are normally compiled without constraint checks.
* a-stzsea.adb (Find_Token): Ditto.
2015-05-26 Ed Schonberg <schonberg@adacore.com>
* sem_util.ads sem_util.adb (Is_Current_Instance): New predicate
to fully implement RM 8.6 (17/3). which earlier only applied
to synchronized types. Used to preanalyze aspects that include
current instances of types, such as Predicate and Invariant.
* sem_res.adb (Resolve_Entity_Name): Use Is_Current_Instance.
* sem_ch13.adb (Add_Predicates): In ASIS mode, preserve original
expression of aspect and analyze it to provide proper type
information.
2015-05-26 Robert Dewar <dewar@adacore.com>
* rtsfind.ads: Add entries for RE_Exn[_Long]_Float.
* s-exnllf.adb (Exn_Float): New function.
(Exn_Long_Float): New function.
(Exn_Long_Long_Float): Rewritten interface.
(Exp): New name for what used to be Exn_Long_Long_Float.
* s-exnllf.ads (Exn_Float): New function.
(Exn_Long_Float): New function.
2015-05-26 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Find_Selected_Component): Do not emit an error
on a selected component when the prefix is a type name that is
a Current_Instance.
* einfo.ads: Minor grammar fix.
2015-05-26 Doug Rupp <rupp@adacore.com>
* init.c [vxworks] (sysLib.h): Only for x86.
From-SVN: r223678
Diffstat (limited to 'gcc/ada/sem_ch13.adb')
-rw-r--r-- | gcc/ada/sem_ch13.adb | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 8e1dcc13d..cc0248a 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -8437,17 +8437,20 @@ package body Sem_Ch13 is begin Ritem := First_Rep_Item (Typ); + while Present (Ritem) loop if Nkind (Ritem) = N_Pragma and then Pragma_Name (Ritem) = Name_Predicate then - -- Acquire arguments + -- Acquire arguments. The expression itself is copied for use + -- in the predicate function, to preserve the orignal version + -- for ASIS use. Arg1 := First (Pragma_Argument_Associations (Ritem)); Arg2 := Next (Arg1); Arg1 := Get_Pragma_Arg (Arg1); - Arg2 := Get_Pragma_Arg (Arg2); + Arg2 := New_Copy_Tree (Get_Pragma_Arg (Arg2)); -- See if this predicate pragma is for the current type or for -- its full view. A predicate on a private completion is placed @@ -8472,9 +8475,20 @@ package body Sem_Ch13 is if From_Aspect_Specification (Ritem) then declare - Aitem : Node_Id; + Aitem : Node_Id; + Orig_Expr : constant Node_Id := + Expression (Corresponding_Aspect (Ritem)); begin + + -- For ASIS use, perform semantic analysis of the + -- original predicate expression, which is otherwise + -- not utilized. + + if ASIS_Mode then + Preanalyze_And_Resolve (Orig_Expr); + end if; + -- Loop to find corresponding aspect, note that this -- must be present given the pragma is marked delayed. |