From 0ca0cd9d0dac8c9f488e1bec37d8f4cc0ec7ee7d Mon Sep 17 00:00:00 2001
From: Yuriy Sydorov <jura@cp-lab.com>
Date: Mon, 6 Sep 2021 18:37:45 +0300
Subject: [PATCH] * Remove register allocations of coalesced registers if the
 alias   register is spilled.

(cherry picked from commit b96057adeb1513292dcfea664c8c4fe227abc442)
---
 compiler/rgobj.pas | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/compiler/rgobj.pas b/compiler/rgobj.pas
index 553d5ac949..86ef5316c5 100644
--- a/compiler/rgobj.pas
+++ b/compiler/rgobj.pas
@@ -2158,8 +2158,9 @@ unit rgobj;
                   begin
                     if (getregtype(reg)=regtype) then
                       begin
-                        {A register allocation of a spilled register can be removed.}
-                        supreg:=getsupreg(reg);
+                        {A register allocation of the spilled register (and all coalesced registers) 
+                         must be removed.}
+                        supreg:=get_alias(getsupreg(reg));
                         if supregset_in(regs_to_spill_set,supreg) then
                           begin
                             q:=Tai(p.next);