diff --git a/mypyc/test-data/refcount.test b/mypyc/test-data/refcount.test index 4e5f1a51cc73..733d23d3dd6c 100644 --- a/mypyc/test-data/refcount.test +++ b/mypyc/test-data/refcount.test @@ -1867,6 +1867,83 @@ L6: dec_ref r2 goto L2 +[case testVecNestedGetItemBorrow_64bit] +from librt.vecs import vec +from mypy_extensions import i64 + +def f(v: vec[vec[i64]], n: i64, m: i64) -> i64: + return v[n][m] +[out] +def f(v, n, m): + v :: vec[vec[i64]] + n, m :: i64 + r0 :: native_int + r1 :: bit + r2 :: i64 + r3 :: bit + r4 :: bool + r5 :: i64 + r6 :: object + r7 :: ptr + r8 :: i64 + r9 :: ptr + r10 :: vec[i64] + r11 :: native_int + r12 :: bit + r13 :: i64 + r14 :: bit + r15 :: bool + r16 :: i64 + r17 :: object + r18 :: ptr + r19 :: i64 + r20 :: ptr + r21 :: i64 +L0: + r0 = v.len + r1 = n < r0 :: unsigned + if r1 goto L4 else goto L1 :: bool +L1: + r2 = n + r0 + r3 = r2 < r0 :: unsigned + if r3 goto L3 else goto L2 :: bool +L2: + r4 = raise IndexError + unreachable +L3: + r5 = r2 + goto L5 +L4: + r5 = n +L5: + r6 = v.buf + r7 = get_element_ptr r6 items :: VecNestedBufObject + r8 = r5 * 16 + r9 = r7 + r8 + r10 = borrow load_mem r9 :: vec[i64]* + r11 = r10.len + r12 = m < r11 :: unsigned + if r12 goto L9 else goto L6 :: bool +L6: + r13 = m + r11 + r14 = r13 < r11 :: unsigned + if r14 goto L8 else goto L7 :: bool +L7: + r15 = raise IndexError + unreachable +L8: + r16 = r13 + goto L10 +L9: + r16 = m +L10: + r17 = r10.buf + r18 = get_element_ptr r17 items :: VecI64BufObject + r19 = r16 * 8 + r20 = r18 + r19 + r21 = load_mem r20 :: i64* + return r21 + [case testVecPop] from librt.vecs import vec, pop, append from mypy_extensions import i64