[pypy-svn] r64619 - in pypy/branch/pyjitpl5/pypy/jit/backend/x86: . test
fijal at codespeak.net
fijal at codespeak.net
Fri Apr 24 02:46:15 CEST 2009
Author: fijal
Date: Fri Apr 24 02:46:14 2009
New Revision: 64619
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
pypy/branch/pyjitpl5/pypy/jit/backend/x86/test/test_regalloc2.py
Log:
a test and a fix
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/regalloc.py Fri Apr 24 02:46:14 2009
@@ -707,8 +707,12 @@
self.Load(x, self.loc(x), res)
return res, argloc
loc = self.force_result_in_reg(op.result, x, op.args)
- argloc = self.loc(op.args[1])
- self.eventually_free_var(op.args[1])
+ if op.args[1] is x:
+ # this one is already gone by now
+ argloc = loc
+ else:
+ argloc = self.loc(op.args[1])
+ self.eventually_free_var(op.args[1])
return loc, argloc
def _consider_binop(self, op, ignored):
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/test/test_regalloc2.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/test/test_regalloc2.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/test/test_regalloc2.py Fri Apr 24 02:46:14 2009
@@ -150,3 +150,114 @@
assert v39.value == 18
assert v30.value == -1
assert v38.value == 0
+
+def test_bug_1():
+ v1 = BoxInt()
+ v2 = BoxInt()
+ v3 = BoxInt()
+ v4 = BoxInt()
+ v5 = BoxInt()
+ v6 = BoxInt()
+ v7 = BoxInt()
+ v8 = BoxInt()
+ v9 = BoxInt()
+ v10 = BoxInt()
+ v11 = BoxInt()
+ v12 = BoxInt()
+ v13 = BoxInt()
+ v14 = BoxInt()
+ v15 = BoxInt()
+ v16 = BoxInt()
+ v17 = BoxInt()
+ v18 = BoxInt()
+ v19 = BoxInt()
+ v20 = BoxInt()
+ v21 = BoxInt()
+ v22 = BoxInt()
+ v23 = BoxInt()
+ v24 = BoxInt()
+ v25 = BoxInt()
+ v26 = BoxInt()
+ v27 = BoxInt()
+ v28 = BoxInt()
+ v29 = BoxInt()
+ v30 = BoxInt()
+ v31 = BoxInt()
+ v32 = BoxInt()
+ v33 = BoxInt()
+ v34 = BoxInt()
+ v35 = BoxInt()
+ v36 = BoxInt()
+ v37 = BoxInt()
+ v38 = BoxInt()
+ v39 = BoxInt()
+ v40 = BoxInt()
+ tmp41 = BoxInt()
+ tmp42 = BoxInt()
+ tmp43 = BoxInt()
+ tmp44 = BoxInt()
+ tmp45 = BoxInt()
+ loop = TreeLoop('test')
+ loop.inputargs = [v1, v2, v3, v4, v5, v6, v7, v8, v9, v10]
+ loop.operations = [
+ ResOperation(rop.UINT_LT, [v6, ConstInt(0)], v11),
+ ResOperation(rop.INT_AND, [v3, ConstInt(31)], tmp41),
+ ResOperation(rop.INT_RSHIFT, [v3, tmp41], v12),
+ ResOperation(rop.INT_NEG, [v2], v13),
+ ResOperation(rop.INT_ADD, [v11, v7], v14),
+ ResOperation(rop.INT_OR, [v3, v2], v15),
+ ResOperation(rop.INT_OR, [v12, v12], v16),
+ ResOperation(rop.INT_NE, [v2, v5], v17),
+ ResOperation(rop.INT_AND, [v5, ConstInt(31)], tmp42),
+ ResOperation(rop.UINT_RSHIFT, [v14, tmp42], v18),
+ ResOperation(rop.INT_AND, [v14, ConstInt(31)], tmp43),
+ ResOperation(rop.INT_LSHIFT, [ConstInt(7), tmp43], v19),
+ ResOperation(rop.INT_ABS, [v19], v20),
+ ResOperation(rop.INT_MOD, [v3, ConstInt(1)], v21),
+ ResOperation(rop.UINT_GE, [v15, v1], v22),
+ ResOperation(rop.INT_AND, [v16, ConstInt(31)], tmp44),
+ ResOperation(rop.INT_LSHIFT, [v8, tmp44], v23),
+ ResOperation(rop.INT_IS_TRUE, [v17], v24),
+ ResOperation(rop.INT_AND, [v5, ConstInt(31)], tmp45),
+ ResOperation(rop.INT_LSHIFT, [v14, tmp45], v25),
+ ResOperation(rop.INT_LSHIFT, [v5, ConstInt(17)], v26),
+ ResOperation(rop.INT_EQ, [v9, v15], v27),
+ ResOperation(rop.INT_GE, [ConstInt(0), v6], v28),
+ ResOperation(rop.INT_NEG, [v15], v29),
+ ResOperation(rop.INT_ABS, [v22], v30),
+ ResOperation(rop.INT_ADD, [v7, v16], v31),
+ ResOperation(rop.UINT_LT, [v19, v19], v32),
+ ResOperation(rop.INT_ADD, [v2, ConstInt(1)], v33),
+ ResOperation(rop.INT_ABS, [v5], v34),
+ ResOperation(rop.INT_ADD, [v17, v24], v35),
+ ResOperation(rop.UINT_LT, [ConstInt(2), v16], v36),
+ ResOperation(rop.INT_ABS, [v9], v37),
+ ResOperation(rop.INT_GT, [v4, v11], v38),
+ ResOperation(rop.INT_LT, [v27, v22], v39),
+ ResOperation(rop.INT_ABS, [v27], v40),
+ ResOperation(rop.FAIL, [v40, v10, v36, v26, v13, v30, v21, v33, v18, v25, v31, v32, v28, v29, v35, v38, v20, v39, v34, v23, v37], None),
+ ]
+ cpu = CPU(None, None)
+ cpu.compile_operations(loop)
+ cpu.execute_operations(loop, [BoxInt(17), BoxInt(-20), BoxInt(-6), BoxInt(6), BoxInt(1), BoxInt(13), BoxInt(13), BoxInt(9), BoxInt(49), BoxInt(8)])
+ assert v40.value == 0
+ assert v10.value == 8
+ assert v36.value == 1
+ assert v26.value == 131072
+ assert v13.value == 20
+ assert v30.value == 1
+ assert v21.value == 0
+ assert v33.value == -19
+ assert v18.value == 6
+ assert v25.value == 26
+ assert v31.value == 12
+ assert v32.value == 0
+ assert v28.value == 0
+ assert v29.value == 2
+ assert v35.value == 2
+ assert v38.value == 1
+ assert v20.value == 57344
+ assert v39.value == 1
+ assert v34.value == 1
+ assert v23.value == -2147483648
+ assert v37.value == 49
More information about the Pypy-commit
mailing list