1
# backport bug fixes about address clauses and timed entry calls
4
# http://gcc.gnu.org/ml/gcc-patches/2011-08/msg02277.html
5
# Thanks to Arnaud Charlet
7
--- a/src/gcc/ada/exp_ch9.adb
8
+++ b/src/gcc/ada/exp_ch9.adb
10
------------------------------------------------------------------------------
12
with Atree; use Atree;
13
+with Atree.Copy_Separate_List;
14
with Checks; use Checks;
15
with Einfo; use Einfo;
16
with Elists; use Elists;
17
@@ -10908,6 +10909,11 @@
22
+ -- The triggering statement and the timed statements have not been
23
+ -- analyzed yet (see Analyzed_Timed_Entry_Call). They may contain local
24
+ -- declarations, and therefore the copies that are made during expansion
25
+ -- must be disjoint, as for any other inlining.
27
procedure Expand_N_Timed_Entry_Call (N : Node_Id) is
28
Loc : constant Source_Ptr := Sloc (N);
29
@@ -11199,7 +11205,7 @@
33
- N_Stats := New_Copy_List_Tree (E_Stats);
34
+ N_Stats := Copy_Separate_List (E_Stats);
37
Make_If_Statement (Loc,
38
@@ -11242,7 +11248,7 @@
39
-- <dispatching-call>;
40
-- <triggering-statements>
42
- Lim_Typ_Stmts := New_Copy_List_Tree (E_Stats);
43
+ Lim_Typ_Stmts := Copy_Separate_List (E_Stats);
44
Prepend_To (Lim_Typ_Stmts, New_Copy_Tree (E_Call));
48
+++ b/src/gcc/ada/atree-copy_separate_list.adb
52
+function Atree.Copy_Separate_List (Source : List_Id) return List_Id is
53
+ use Atree.Atree_Private_Part.Nodes;
55
+ Result : constant List_Id := New_List;
58
+ Nod := Nlists.First (Source);
59
+ while Present (Nod) loop
60
+ Append (Copy_Separate_Tree (Nod), Result);
64
+end Atree.Copy_Separate_List;
66
+++ b/src/gcc/ada/atree-copy_separate_list.ads
68
+function Atree.Copy_Separate_List (Source : List_Id) return List_Id;
69
--- a/src/gcc/ada/gcc-interface/Make-lang.in
70
+++ b/src/gcc/ada/gcc-interface/Make-lang.in
75
+ ada/atree-copy_separate_list.o \
79
@@ -1371,6 +1372,17 @@
80
ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
81
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
83
+ada/atree-copy_separate_list.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
84
+ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
85
+ ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
86
+ ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
87
+ ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
88
+ ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
89
+ ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
90
+ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
91
+ ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
92
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
94
ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
95
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
96
ada/atree.adb ada/back_end.ads ada/back_end.adb ada/casing.ads \
98
ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
99
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
100
ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
101
+ ada/atree-copy_separate_list.ads ada/atree-copy_separate_list.adb \
102
ada/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
103
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_aggr.ads \
104
ada/exp_ch11.ads ada/exp_ch3.ads ada/exp_ch6.ads ada/exp_ch7.ads \