# HG changeset patch # User Mike Pavone # Date 1377669117 25200 # Node ID 3606a7cb39998e218b15876e2f9529f14f8a47ab # Parent 1417f13f219ce3d0f890d5046f63e180cc0d238c Fix ireg upper, regSource returnAll and regSource needSaveForCall in x86 module diff -r 1417f13f219c -r 3606a7cb3999 modules/x86.tp --- a/modules/x86.tp Tue Aug 27 22:50:48 2013 -0700 +++ b/modules/x86.tp Tue Aug 27 22:51:57 2013 -0700 @@ -11,7 +11,7 @@ isInteger? <- { false } register? <- { true } label? <- { false } - upper? <- { true } + upper? <- { false } needsRex? <- { regnum >= 8u8 } rexBitReg <- { if: needsRex? { @@ -582,7 +582,7 @@ return <- :reg { _used <- _used and (0xF xor (lshift: 1 by: (reg num))) } - returnAll <- { _used = 0 } + returnAll <- { _used <- 0 } needSaveProlog <- { retval <- #[] foreach: _calleesave :idx reg { @@ -595,9 +595,12 @@ } needSaveForCall <- { retval <- #[] - foreach: #[_tempregs _argregs] :_ regs { + print: "Used: " . (hex: _used) . "\n" + foreach: #[(_tempregs) (_argregs)] :_ regs { foreach: regs :_ reg { + print: "Checking bit: " . (hex: (lshift: 1 by: (reg num))) . "\n" if: (_used and (lshift: 1 by: (reg num))) != 0 { + print: (string: reg) . " needs saving for call\n" retval append: reg } }