diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-06 10:24:40 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-06 10:24:40 +0000 |
commit | 8d9921953c68ea93e2bdcfcb0207c2d8a80b3772 (patch) | |
tree | c928df246f8400dd4a71f7151bc3fefb4bb99800 /gcc/ada/exp_ch2.adb | |
parent | 64aad6124f7e9b6385f266e4fb7640146f4d0b25 (diff) | |
download | gcc-8d9921953c68ea93e2bdcfcb0207c2d8a80b3772.tar.gz |
2007-04-20 Hristian Kirtchev <kirtchev@adacore.com>
Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* exp_ch2.adb: Remove "with" and "use" clauses for Namet and Snames.
Add "with" and "use" clauses for Sem_Attr.
(Expand_Current_Value): Do not replace occurences of attribute
references where the prefix must be a simple name.
* sem_attr.ads, sem_attr.adb: Remove "with" and "use" clauses for
Namet. Add new arrays Attribute_Name_Modifies_Prefix and
Attribute_Requires_Simple_Name_Prefix.
(Name_Modifies_Prefix): Body of new function.
(Requires_Simple_Name_Prefix): Body of new function.
(Resolve_Attribute, case Access): Improve error message for case of
mismatched conventions.
(Analyze_Attribute, case 'Tag): The prefix the attribute cannot be of an
incomplete type.
(Analyze_Attribute, case 'Access): If the type of the prefix is a
constrained subtype for a nominal unconstrained type, use its base type
to check for conformance with the context.
(Resolve_Attribute): Remove test of the access type being associated
with a return statement from condition for performing accessibility
checks on access attributes, since this case is now captured by
Is_Local_Anonymous_Access.
(Analyze_Access_Attribute): Set Address_Taken on entity
(Analyze_Attribute, case Address): Set Address_Taken on entity
(OK_Self_Reference): Traverse tree to locate enclosing aggregate when
validating an access attribute whose prefix is a current instance.
(Resolve_Attribute): In case of attributes 'Code_Address and 'Address
applied to dispatching operations, if freezing is required then we set
the attribute Has_Delayed_Freeze in the prefix's entity.
(Check_Local_Access): Set flag Suppress_Value_Tracking_On_Call in
current scope if access of local subprogram taken
(Analyze_Access_Attribute): Check legality of self-reference even if the
expression comes from source, as when a single component association in
an aggregate has a box association.
(Resolve_Attribute, case 'Access): Do not apply accessibility checks to
the prefix if it is a protected operation and the attribute is
Unrestricted_Access.
(Resolve_Attribute, case 'Access): Set the Etype of the attribute
reference to the base type of the context, to force a constraint check
when the context is an access subtype with an explicit constraint.
(Analyze_Attribute, case 'Class): If the prefix is an interface and the
node is rewritten as an interface conversion. leave unanalyzed after
resolution, to ensure that type checking against the context will take
place.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125395 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_ch2.adb')
-rw-r--r-- | gcc/ada/exp_ch2.adb | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/gcc/ada/exp_ch2.adb b/gcc/ada/exp_ch2.adb index 291d172a42e..f486d0270de 100644 --- a/gcc/ada/exp_ch2.adb +++ b/gcc/ada/exp_ch2.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2006, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2007, 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- -- @@ -35,12 +35,12 @@ with Exp_VFpt; use Exp_VFpt; with Nmake; use Nmake; with Opt; use Opt; with Sem; use Sem; +with Sem_Attr; use Sem_Attr; with Sem_Eval; use Sem_Eval; with Sem_Res; use Sem_Res; with Sem_Util; use Sem_Util; with Sem_Warn; use Sem_Warn; with Sinfo; use Sinfo; -with Snames; use Snames; with Tbuild; use Tbuild; with Uintp; use Uintp; @@ -156,13 +156,12 @@ package body Exp_Ch2 is and then Nkind (Parent (N)) /= N_Pragma_Argument_Association - -- Same for Asm_Input and Asm_Output attribute references + -- Same for attribute references that require a simple name prefix and then not (Nkind (Parent (N)) = N_Attribute_Reference - and then - (Attribute_Name (Parent (N)) = Name_Asm_Input - or else - Attribute_Name (Parent (N)) = Name_Asm_Output)) + and then Requires_Simple_Name_Prefix ( + Attribute_Name (Parent (N)))) + then -- Case of Current_Value is a compile time known value |