diff options
Diffstat (limited to 'gcc/ada/atree.adb')
-rw-r--r-- | gcc/ada/atree.adb | 9 |
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 |