summaryrefslogtreecommitdiff
path: root/gcc/ada/atree.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/atree.adb')
-rw-r--r--gcc/ada/atree.adb9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb
index a44a247b896..e7d4b20741f 100644
--- a/gcc/ada/atree.adb
+++ b/gcc/ada/atree.adb
@@ -733,6 +733,7 @@ package body Atree is
Nodes.Table (Destination + 2) := Nodes.Table (Source + 2);
Nodes.Table (Destination + 3) := Nodes.Table (Source + 3);
Nodes.Table (Destination + 4) := Nodes.Table (Source + 4);
+ Nodes.Table (Destination + 5) := Nodes.Table (Source + 5);
else
pragma Assert (not Has_Extension (Source));
@@ -1105,19 +1106,27 @@ package body Atree is
Temp_Ent := Nodes.Table (E1);
Nodes.Table (E1) := Nodes.Table (E2);
Nodes.Table (E2) := Temp_Ent;
+
Temp_Ent := Nodes.Table (E1 + 1);
Nodes.Table (E1 + 1) := Nodes.Table (E2 + 1);
Nodes.Table (E2 + 1) := Temp_Ent;
+
Temp_Ent := Nodes.Table (E1 + 2);
Nodes.Table (E1 + 2) := Nodes.Table (E2 + 2);
Nodes.Table (E2 + 2) := Temp_Ent;
+
Temp_Ent := Nodes.Table (E1 + 3);
Nodes.Table (E1 + 3) := Nodes.Table (E2 + 3);
Nodes.Table (E2 + 3) := Temp_Ent;
+
Temp_Ent := Nodes.Table (E1 + 4);
Nodes.Table (E1 + 4) := Nodes.Table (E2 + 4);
Nodes.Table (E2 + 4) := Temp_Ent;
+ Temp_Ent := Nodes.Table (E1 + 5);
+ Nodes.Table (E1 + 5) := Nodes.Table (E2 + 5);
+ Nodes.Table (E2 + 5) := Temp_Ent;
+
-- That exchange exchanged the parent pointers as well, which is what
-- we want, but we need to patch up the defining identifier pointers
-- in the parent nodes (the child pointers) to match this switch