blob: 374d336b98d8e144f83843cbca911056fd9c6174 [file] [edit]
[case testLowerVecI64GetItem_64bit]
from librt.vecs import vec
from mypy_extensions import i64
def f(i: i64) -> i64:
v = vec[i64]()
return v[i]
[out]
def f(i):
i :: i64
r0, v :: vec[i64]
r1 :: native_int
r2 :: bit
r3 :: i64
r4 :: bit
r5 :: bool
r6 :: i64
r7 :: ptr
r8 :: i64
r9 :: ptr
r10, r11 :: i64
L0:
r0 = VecI64Api.alloc(0, 0)
if is_error(r0) goto L8 (error at f:5) else goto L1
L1:
v = r0
r1 = v.len
r2 = i < r1 :: unsigned
if r2 goto L6 else goto L2 :: bool
L2:
r3 = i + r1
r4 = r3 < r1 :: unsigned
if r4 goto L5 else goto L9 :: bool
L3:
r5 = raise IndexError
if not r5 goto L8 (error at f:6) else goto L4 :: bool
L4:
unreachable
L5:
r6 = r3
goto L7
L6:
r6 = i
L7:
r7 = v.items
r8 = r6 * 8
r9 = r7 + r8
r10 = load_mem r9 :: i64*
dec_ref v
return r10
L8:
r11 = <error> :: i64
return r11
L9:
dec_ref v
goto L3
[case testLowerVecNestedGetItem_64bit]
from librt.vecs import vec
from mypy_extensions import i64
def f(i: i64, j: i64) -> str:
v = vec[vec[str]]([])
return v[i][j]
[out]
def f(i, j):
i, j :: i64
r0 :: object
r1 :: ptr
r2 :: vec[vec[str]]
r3 :: ptr
v :: vec[vec[str]]
r4 :: native_int
r5 :: bit
r6 :: i64
r7 :: bit
r8 :: bool
r9 :: i64
r10 :: ptr
r11 :: i64
r12 :: ptr
r13 :: vec[str]
r14 :: native_int
r15 :: bit
r16 :: i64
r17 :: bit
r18 :: bool
r19 :: i64
r20 :: ptr
r21 :: i64
r22 :: ptr
r23, r24 :: str
L0:
r0 = load_address PyUnicode_Type
r1 = r0
r2 = VecNestedApi.alloc(0, 0, r1, 1)
if is_error(r2) goto L14 (error at f:5) else goto L1
L1:
r3 = r2.items
v = r2
r4 = v.len
r5 = i < r4 :: unsigned
if r5 goto L6 else goto L2 :: bool
L2:
r6 = i + r4
r7 = r6 < r4 :: unsigned
if r7 goto L5 else goto L15 :: bool
L3:
r8 = raise IndexError
if not r8 goto L14 (error at f:6) else goto L4 :: bool
L4:
unreachable
L5:
r9 = r6
goto L7
L6:
r9 = i
L7:
r10 = v.items
r11 = r9 * 16
r12 = r10 + r11
r13 = borrow load_mem r12 :: vec[str]*
r14 = r13.len
r15 = j < r14 :: unsigned
if r15 goto L12 else goto L8 :: bool
L8:
r16 = j + r14
r17 = r16 < r14 :: unsigned
if r17 goto L11 else goto L16 :: bool
L9:
r18 = raise IndexError
if not r18 goto L14 (error at f:6) else goto L10 :: bool
L10:
unreachable
L11:
r19 = r16
goto L13
L12:
r19 = j
L13:
r20 = r13.items
r21 = r19 * 8
r22 = r20 + r21
r23 = load_mem r22 :: builtins.str*
dec_ref v
return r23
L14:
r24 = <error> :: str
return r24
L15:
dec_ref v
goto L3
L16:
dec_ref v
goto L9