Skip to content

Commit f86d385

Browse files
author
Krzysztof Parzyszek
committed
[Hexagon] Explicitly reserve aliases of reserved registers
llvm-svn: 292836
1 parent 6bdd8fc commit f86d385

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,26 @@ BitVector HexagonRegisterInfo::getReservedRegs(const MachineFunction &MF)
139139
Reserved.set(Hexagon::R29);
140140
Reserved.set(Hexagon::R30);
141141
Reserved.set(Hexagon::R31);
142-
Reserved.set(Hexagon::PC);
143-
Reserved.set(Hexagon::D14);
144-
Reserved.set(Hexagon::D15);
145-
Reserved.set(Hexagon::LC0);
146-
Reserved.set(Hexagon::LC1);
147-
Reserved.set(Hexagon::SA0);
148-
Reserved.set(Hexagon::SA1);
149-
Reserved.set(Hexagon::UGP);
150-
Reserved.set(Hexagon::GP);
151-
Reserved.set(Hexagon::CS0);
152-
Reserved.set(Hexagon::CS1);
153-
Reserved.set(Hexagon::CS);
154-
Reserved.set(Hexagon::USR);
142+
Reserved.set(Hexagon::SA0); // C0
143+
Reserved.set(Hexagon::LC0); // C1
144+
Reserved.set(Hexagon::SA1); // C2
145+
Reserved.set(Hexagon::LC1); // C3
146+
Reserved.set(Hexagon::USR); // C8
147+
Reserved.set(Hexagon::PC); // C9
148+
Reserved.set(Hexagon::UGP); // C10
149+
Reserved.set(Hexagon::GP); // C11
150+
Reserved.set(Hexagon::CS0); // C12
151+
Reserved.set(Hexagon::CS1); // C13
152+
153+
// Out of the control registers, only C8 is explicitly defined in
154+
// HexagonRegisterInfo.td. If others are defined, make sure to add
155+
// them here as well.
156+
Reserved.set(Hexagon::C8);
157+
Reserved.set(Hexagon::USR_OVF);
158+
159+
for (int x = Reserved.find_first(); x >= 0; x = Reserved.find_next(x))
160+
markSuperRegs(Reserved, x);
161+
155162
return Reserved;
156163
}
157164

llvm/lib/Target/Hexagon/HexagonRegisterInfo.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ let Namespace = "Hexagon" in {
146146
def LC1 : Rc<3, "lc1", ["c3"]>, DwarfRegNum<[70]>;
147147
def P3_0 : Rc<4, "p3:0", ["c4"], [P0, P1, P2, P3]>,
148148
DwarfRegNum<[71]>;
149+
// When defining more Cn registers, make sure to explicitly mark them
150+
// as reserved in HexagonRegisterInfo.cpp.
149151
def C5 : Rc<5, "c5", ["c5"]>, DwarfRegNum<[72]>; // future use
150152
def C6 : Rc<6, "c6", [], [M0]>, DwarfRegNum<[73]>;
151153
def C7 : Rc<7, "c7", [], [M1]>, DwarfRegNum<[74]>;

0 commit comments

Comments
 (0)