Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r69452:1e265793f593 Date: 2014-02-26 09:16 +0100 http://bitbucket.org/pypy/pypy/changeset/1e265793f593/
Log: Test and fix for "[None] * some_r_uint_number". diff --git a/rpython/rtyper/test/test_rlist.py b/rpython/rtyper/test/test_rlist.py --- a/rpython/rtyper/test/test_rlist.py +++ b/rpython/rtyper/test/test_rlist.py @@ -1619,3 +1619,17 @@ rgc.ll_arraycopy = old_arraycopy # assert 2 <= res <= 10 + + def test_alloc_and_set(self): + def fn(i): + lst = [0] * r_uint(i) + return lst + t, rtyper, graph = self.gengraph(fn, [int]) + block = graph.startblock + seen = 0 + for op in block.operations: + if op.opname in ['cast_int_to_uint', 'cast_uint_to_int']: + continue + assert op.opname == 'direct_call' + seen += 1 + assert seen == 1 diff --git a/rpython/translator/transform.py b/rpython/translator/transform.py --- a/rpython/translator/transform.py +++ b/rpython/translator/transform.py @@ -30,7 +30,7 @@ # [a] * b # --> # c = newlist(a) -# d = mul(c, int b) +# d = mul(c, b) # --> # d = alloc_and_set(b, a) @@ -44,8 +44,7 @@ len(op.args) == 1): length1_lists[op.result] = op.args[0] elif (op.opname == 'mul' and - op.args[0] in length1_lists and - self.gettype(op.args[1]) is int): + op.args[0] in length1_lists): new_op = SpaceOperation('alloc_and_set', (op.args[1], length1_lists[op.args[0]]), op.result) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit