diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2009-07-11 20:52:28 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2009-07-11 20:52:28 +0000 |
commit | f4cd2542becd2e4a9b648587693906a0e64531dd (patch) | |
tree | 5f43f396f64c2d468fbd26fc6394ff8b2d0734e9 /gcc/ada/sem_util.ads | |
parent | 97c281dacf21dcec5ed4f75f089960c8bfa81b0a (diff) | |
download | gcc-f4cd2542becd2e4a9b648587693906a0e64531dd.zip gcc-f4cd2542becd2e4a9b648587693906a0e64531dd.tar.gz gcc-f4cd2542becd2e4a9b648587693906a0e64531dd.tar.bz2 |
checks.adb (Apply_Address_Clause_Check): Remove Size_Warning_Output local variable and do not test it in...
* checks.adb (Apply_Address_Clause_Check): Remove Size_Warning_Output
local variable and do not test it in Compile_Time_Bad_Alignment.
Do not issue size or alignment warnings for the X'Address form.
* sem_util.ads (Find_Overlaid_Object): Delete.
(Find_Overlaid_Entity): New procedure.
* sem_util.adb (Find_Overlaid_Object): Rename to...
(Find_Overlaid_Entity): ...this and turn into a procedure. Report
whether the address is offseted within the overlaid entity.
(Has_Compatible_Alignment): Track the offset globally instead of
passing it to Check_Offset. For an indexed component, compute the
full offset when possible. If the resulting offset is zero, only
check the prefix.
(Check_Offset): Delete.
* sem_ch13.adb (Address_Clause_Check_Record): Add Off field.
(Address_Aliased_Entity): Delete.
(Analyze_Attribute_Definition_Clause) <Attribute_Address>: Call
Find_Overlaid_Entity to find the overlaid entity and the offset.
Adjust throughout for above change.
(Validate_Address_Clauses): Always use attributes of entities, not of
their type. Tweak message for warning. Call Has_Compatible_Alignment
if the address is offseted to warn about incompatible alignments.
* gcc-interface/gigi.h (annotate_object): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Annotate renaming
entity. Call annotate_object instead of annotating manually objects.
(annotate_object): New function.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Annotate parameters
at the end.
From-SVN: r149520
Diffstat (limited to 'gcc/ada/sem_util.ads')
-rw-r--r-- | gcc/ada/sem_util.ads | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index b4adabf..1d83684 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -320,12 +320,16 @@ package Sem_Util is -- denotes when analyzed. Subsequent uses of this id on a different -- type denote the discriminant at the same position in this new type. - function Find_Overlaid_Object (N : Node_Id) return Entity_Id; - -- The node N should be an address representation clause. This function - -- checks if the target expression is the address of some stand alone - -- object (variable or constant), and if so, returns its entity. If N is - -- not an address representation clause, or if it is not possible to - -- determine that the address is of this form, then Empty is returned. + procedure Find_Overlaid_Entity + (N : Node_Id; + Ent : out Entity_Id; + Off : out Boolean); + -- The node N should be an address representation clause. Determines if + -- the target expression is the address of an entity with an optional + -- offset. If so, set Ent to the entity and, if there is an offset, set + -- Off to True, otherwise to False. If N is not an address representation + -- clause, or if it is not possible to determine that the address is of + -- this form, then set Ent to Empty. function Find_Parameter_Type (Param : Node_Id) return Entity_Id; -- Return the type of formal parameter Param as determined by its |