Skip to content

Commit 0c6ae67

Browse files
committed
perf(function): optimize saving and loading caller save reg logic
1 parent 73fa0e5 commit 0c6ae67

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

backend/reg/bruteregalloc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def localAlloc(self, bb: BasicBlock, subEmitter: SubroutineEmitter):
103103

104104
# 2. save callerSave regs
105105
for reg in Riscv.CallerSaved:
106-
if reg.occupied:
106+
if reg.occupied and reg.temp.index in loc.liveOut:
107107
subEmitter.emitStoreToStack(reg)
108108

109109
# 3. call
@@ -128,7 +128,7 @@ def localAlloc(self, bb: BasicBlock, subEmitter: SubroutineEmitter):
128128

129129
# 5. restore callerSave regs
130130
for reg in Riscv.CallerSaved:
131-
if reg.occupied:
131+
if reg.occupied and reg.temp.index in loc.liveOut:
132132
subEmitter.emitLoadFromStack(reg, reg.temp)
133133

134134
if bind2A0:

0 commit comments

Comments
 (0)