+2011-09-19 Robert Dewar <dewar@adacore.com>
+
+ * sem_aggr.adb, lib-writ.ads, s-restri.ads, sem_ch6.adb,
+ exp_aggr.adb: Minor reformatting.
+
+2011-09-19 Yannick Moy <moy@adacore.com>
+
+ * lib-xref.adb (Generate_Reference): Change entity referenced
+ to underlying object if any, or else reference to the HEAP.
+
2011-09-15 Arnaud Charlet <charlet@adacore.com>
* gcc-interface/Make-lang.in: Update dependencies.
and then Static_Elaboration_Desired (Current_Scope)
then
Convert_To_Positional (N, Max_Others_Replicate => 100);
-
else
Convert_To_Positional (N);
end if;
if Present (Component_Associations (N)) then
Convert_To_Positional
- (N, Max_Others_Replicate => 64, Handle_Bit_Packed => True);
+ (N, Max_Others_Replicate => 64, Handle_Bit_Packed => True);
return Nkind (N) /= N_Aggregate;
end if;
-- Subsequent R lines are present only if pragma Restriction No_Dependence
-- is used. There is one such line for each such pragma appearing in the
- -- extended main unit. The format is
+ -- extended main unit. The format is:
-- R unit_name
return;
end if;
+ -- In Alfa mode, consider the underlying entity renamed instead of
+ -- the renaming, which is needed to compute a valid set of effects
+ -- (reads, writes) for the enclosing subprogram.
+
+ if Alfa_Mode
+ and then Is_Object (Ent)
+ and then Present (Renamed_Object (Ent))
+ then
+ Ent := Get_Enclosing_Object (Renamed_Object (Ent));
+
+ -- If no enclosing object, then it could be a reference to any
+ -- location not tracked individually, like heap-allocated data.
+ -- Conservatively approximate this possibility by generating a
+ -- dereference, and return.
+
+ if No (Ent) then
+ if Actual_Typ = 'w' then
+ Alfa.Generate_Dereference (Nod, 'r');
+ Alfa.Generate_Dereference (Nod, 'w');
+ else
+ Alfa.Generate_Dereference (Nod, 'r');
+ end if;
+
+ return;
+ end if;
+ end if;
+
-- Record reference to entity
Ref := Original_Location (Sloc (Nod));
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2011, 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- --
package Rident is new System.Rident;
Run_Time_Restrictions : Rident.Restrictions_Info;
- -- Restrictions as set by the user, or detected by the binder.
+ -- Restrictions as set by the user, or detected by the binder. See details
+ -- in package System.Rident for what restrictions are included in the list
+ -- and the format of the information.
+ --
-- Note that a restriction which is both Set and Violated at run-time means
-- that the violation was detected as part of the Ada run-time and not
-- as part of user code.
begin
-- All the components of List are matched against Component and a count
- -- is maintained of possible misspellings. When at the end of the
- -- the analysis there are one or two (not more!) possible misspellings,
+ -- is maintained of possible misspellings. When at the end of the the
+ -- analysis there are one or two (not more!) possible misspellings,
-- these misspellings will be suggested as possible correction.
Component_Elmt := First_Elmt (Elements);
Make_Subprogram_Declaration (Loc,
Specification => Copy_Separate_Tree (Specification (N)));
- -- Do rewrite setting Comes_From_Source on the result if the original
- -- expression function came from source.
+ -- Do rewrite propagating the information that an expression function
+ -- comes from source (otherwise references to this entity are not
+ -- stored).
Rewrite (N, New_Decl);
Set_Comes_From_Source