aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/prj.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2009-04-15 12:46:56 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2009-04-15 12:46:56 +0200
commit1f6821b4dcdcc3bf95f6aa4551cc755e113162be (patch)
tree10bddee8ce636cf702726cb420bef283041bab7d /gcc/ada/prj.adb
parent507ed3fd5bb9f377bade052259a61d53d3a7bedc (diff)
downloadgcc-1f6821b4dcdcc3bf95f6aa4551cc755e113162be.zip
gcc-1f6821b4dcdcc3bf95f6aa4551cc755e113162be.tar.gz
gcc-1f6821b4dcdcc3bf95f6aa4551cc755e113162be.tar.bz2
[multiple changes]
2009-04-15 Robert Dewar <dewar@adacore.com> * frontend.adb (Frontend): Set proper default for Warn_On_Non_Local_Exception. * opt.ads (Exception_Handler_Encountered): New flag (No_Warn_On_Non_Local_Exception): New flag * par-ch11.adb (P_Exception_Handler): Set Exception_Handler_Encountered * sem_warn.adb (Set_Warning_Switch): Set No_Warn_On_Non_Local_Exception (Set_Dot_Warning_Switch): Set No_Warn_On_Non_Local_Exception 2009-04-15 Cyrille Comar <comar@adacore.com> * s-tassta.adb, a-exextr.adb, a-elchha.adb (Ada.Exception.Last_Chance_Handler): Do not print unhandled exception message when exception traces are active since it would generate redundant information. (Exception_Traces.Notify_Exception): put message output by a critical section to avoid unsynchronized output. (Trace_Unhandled_Exception_In_Task): put message output by a critical section to avoid unsynchronized output. 2009-04-15 Emmanuel Briot <briot@adacore.com> * g-comlin.adb, prj-tree.adb, prj-tree.ads, prj.adb, prj.ads (Free): New subprogram. From-SVN: r146100
Diffstat (limited to 'gcc/ada/prj.adb')
-rw-r--r--gcc/ada/prj.adb47
1 files changed, 41 insertions, 6 deletions
diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb
index ca804d9..6c26bc1 100644
--- a/gcc/ada/prj.adb
+++ b/gcc/ada/prj.adb
@@ -24,6 +24,7 @@
------------------------------------------------------------------------------
with Ada.Characters.Handling; use Ada.Characters.Handling;
+with Ada.Unchecked_Deallocation;
with Debug;
with Output; use Output;
@@ -826,17 +827,51 @@ package body Prj is
end if;
end Register_Default_Naming_Scheme;
+ ----------
+ -- Free --
+ ----------
+
+ procedure Free (Tree : in out Project_Tree_Ref) is
+ procedure Unchecked_Free is new Ada.Unchecked_Deallocation
+ (Project_Tree_Data, Project_Tree_Ref);
+ begin
+ if Tree /= null then
+ Language_Data_Table.Free (Tree.Languages_Data);
+ Name_List_Table.Free (Tree.Name_Lists);
+ String_Element_Table.Free (Tree.String_Elements);
+ Variable_Element_Table.Free (Tree.Variable_Elements);
+ Array_Element_Table.Free (Tree.Array_Elements);
+ Array_Table.Free (Tree.Arrays);
+ Package_Table.Free (Tree.Packages);
+ Project_List_Table.Free (Tree.Project_Lists);
+ Project_Table.Free (Tree.Projects);
+ Source_Data_Table.Free (Tree.Sources);
+ Alternate_Language_Table.Free (Tree.Alt_Langs);
+ Unit_Table.Free (Tree.Units);
+ Units_Htable.Reset (Tree.Units_HT);
+ Files_Htable.Reset (Tree.Files_HT);
+ Source_Paths_Htable.Reset (Tree.Source_Paths_HT);
+ Unit_Sources_Htable.Reset (Tree.Unit_Sources_HT);
+
+ -- Private part
+
+ Naming_Table.Free (Tree.Private_Part.Namings);
+ Path_File_Table.Free (Tree.Private_Part.Path_Files);
+ Source_Path_Table.Free (Tree.Private_Part.Source_Paths);
+ Object_Path_Table.Free (Tree.Private_Part.Object_Paths);
+
+ -- Naming data (nothing to free ?)
+ null;
+
+ Unchecked_Free (Tree);
+ end if;
+ end Free;
+
-----------
-- Reset --
-----------
procedure Reset (Tree : Project_Tree_Ref) is
-
- -- Def_Lang : constant Name_Node :=
- -- (Name => Name_Ada,
- -- Next => No_Name_List);
- -- Why is the above commented out ???
-
begin
Prj.Env.Initialize;