summaryrefslogtreecommitdiff
path: root/gcc/ada/atree.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-06-23 06:50:13 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-06-23 06:50:13 +0000
commit1299d82443d00011e17d65cfd593f8a8acae22cb (patch)
tree2ec0a44a7df2f4c0418b8bc7e3d89f8f11b94c65 /gcc/ada/atree.adb
parente69fef85b86bbd792475d5bb41ecb91a0ee84390 (diff)
downloadgcc-1299d82443d00011e17d65cfd593f8a8acae22cb.tar.gz
2010-06-23 Javier Miranda <miranda@adacore.com>
* atree.ads (Set_Reporting_Proc): New subprogram. * atree.adb: Remove dependency on packages Opt and SCIL_LL. (Allocate_Initialize_Node, Replace, Rewrite): Replace direct calls to routines of package Scil_ll by indirect call to the registered subprogram. (Set_Reporting_Proc): New subprogram. Used to register a subprogram that is invoked when a node is allocated, replaced or rewritten. * scil_ll.adb (Copy_SCIL_Node): New routine that takes care of copying the SCIL node. Used as argument for Set_Reporting_Proc. (Initialize): Register Copy_SCIL_Node as the reporting routine that is invoked by atree. 2010-06-23 Thomas Quinot <quinot@adacore.com> * sem_ch3.ads: Minor reformatting. 2010-06-23 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb (Analyze_Package_Instantiation): In CodePeer mode, always analyze the generic body and instance, because it may be needed downstream. (Mark_Context): Prepend the with clauses for needed generic units, so they appear in a better order for CodePeer. * sem_util.adb, sem_util.ads: Prototype code for AI05-0144. 2010-06-23 Emmanuel Briot <briot@adacore.com> * prj.ads, prj-nmsc.adb (Error_Or_Warning): New subprogram. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161252 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/atree.adb')
-rw-r--r--gcc/ada/atree.adb33
1 files changed, 22 insertions, 11 deletions
diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb
index c0c5bd8dde9..807527230af 100644
--- a/gcc/ada/atree.adb
+++ b/gcc/ada/atree.adb
@@ -38,14 +38,15 @@ pragma Style_Checks (All_Checks);
with Debug; use Debug;
with Nlists; use Nlists;
-with Opt; use Opt;
with Output; use Output;
with Sinput; use Sinput;
-with SCIL_LL; use SCIL_LL;
with Tree_IO; use Tree_IO;
package body Atree is
+ Reporting_Proc : Report_Proc := null;
+ -- Record argument to last call to Set_Reporting_Proc
+
---------------
-- Debugging --
---------------
@@ -534,10 +535,10 @@ package body Atree is
Orig_Nodes.Set_Last (Nodes.Last);
Allocate_List_Tables (Nodes.Last);
- -- Update the SCIL_Node field (if available)
+ -- Invoke the reporting procedure (if available)
- if Generate_SCIL then
- Set_SCIL_Node (New_Id, Get_SCIL_Node (Src));
+ if Reporting_Proc /= null then
+ Reporting_Proc.all (Target => New_Id, Source => Src);
end if;
return New_Id;
@@ -925,6 +926,16 @@ package body Atree is
return Ekind_In (Ekind (E), V1, V2, V3, V4, V5, V6);
end Ekind_In;
+ ------------------------
+ -- Set_Reporting_Proc --
+ ------------------------
+
+ procedure Set_Reporting_Proc (P : Report_Proc) is
+ begin
+ pragma Assert (Reporting_Proc = null);
+ Reporting_Proc := P;
+ end Set_Reporting_Proc;
+
------------------
-- Error_Posted --
------------------
@@ -1580,10 +1591,10 @@ package body Atree is
Orig_Nodes.Table (Old_Node) := Old_Node;
- -- Update the SCIL_Node field (if available)
+ -- Invoke the reporting procedure (if available)
- if Generate_SCIL then
- Set_SCIL_Node (Old_Node, Get_SCIL_Node (New_Node));
+ if Reporting_Proc /= null then
+ Reporting_Proc.all (Target => Old_Node, Source => New_Node);
end if;
end Replace;
@@ -1644,10 +1655,10 @@ package body Atree is
Fix_Parents (Ref_Node => New_Node, Fix_Node => Old_Node);
- -- Update the SCIL_Node field (if available)
+ -- Invoke the reporting procedure (if available)
- if Generate_SCIL then
- Set_SCIL_Node (Old_Node, Get_SCIL_Node (New_Node));
+ if Reporting_Proc /= null then
+ Reporting_Proc.all (Target => Old_Node, Source => New_Node);
end if;
end Rewrite;