ソースを参照

Rewrote reserved register sets.

Taddeus Kroes 14 年 前
コミット
8eef47bdde
1 ファイル変更8 行追加4 行削除
  1. 8 4
      src/liveness.py

+ 8 - 4
src/liveness.py

@@ -1,10 +1,14 @@
 from copy import copy
 
 
+RETURN_REGS = ['$2', '$3']
+ARGUMENT_REGISTERS = ['$4', '$5', '$6', '$7']
+FLOATING_POINT_REGS = ['$f%d' % i  for i in range(32)]
+
 RESERVED_REGISTERS = ['$fp', '$sp', '$31']
-RESERVED_USE = ['$%d' % i  for i in range(2, 8)] \
-               + ['$f%d' % i  for i in range(32)]
-RESERVED_DEF = ['$2', '$3']
+RESERVED_USE = RETURN_REGS + ARGUMENT_REGISTERS + FLOATING_POINT_REGS
+RESERVED_DEF = RETURN_REGS
+RESERVED_OUT = RETURN_REGS + FLOATING_POINT_REGS
 
 
 def is_reg_dead_after(reg, block, index, known_jump_targets=[]):
@@ -34,7 +38,7 @@ def is_reg_dead_after(reg, block, index, known_jump_targets=[]):
 
     # If dead within the same block, check if the register is in the block's
     # live_out set
-    return reg not in RESERVED_DEF and reg not in block.live_out
+    return reg not in RESERVED_OUT and reg not in block.live_out
 
 
 def create_use_def(block):