From 53799506acf69e7f7137d91fa5a4451211621469 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 25 Jan 2019 14:24:03 +0100 Subject: bc: implement pass-by-reference code from upstream function old new delta zxc_program_popResultAndCopyToVar 298 493 +195 bc_vec_pushIndex - 75 +75 zxc_vm_process 859 928 +69 xc_program_dereference - 66 +66 bc_vec_npush - 65 +65 zbc_num_s 239 249 +10 zxc_program_num 1024 1032 +8 zbc_num_divmod 150 156 +6 xc_program_search 143 146 +3 zxc_program_assign 392 389 -3 zdc_program_execStr 520 517 -3 xc_program_pushVar 198 195 -3 zxc_program_exec 4101 4092 -9 zbc_program_call 318 308 -10 zbc_func_insert 120 104 -16 zbc_parse_stmt_possibly_auto 1460 1439 -21 bc_vec_push 53 12 -41 xc_parse_pushIndex 61 18 -43 ------------------------------------------------------------------------------ (add/remove: 3/0 grow/shrink: 6/9 up/down: 497/-149) Total: 348 bytes Signed-off-by: Denys Vlasenko --- testsuite/bc_references.bc | 106 ++++++++++++++++++ testsuite/bc_references_results.txt | 212 ++++++++++++++++++++++++++++++++++++ 2 files changed, 318 insertions(+) create mode 100644 testsuite/bc_references.bc create mode 100644 testsuite/bc_references_results.txt (limited to 'testsuite') diff --git a/testsuite/bc_references.bc b/testsuite/bc_references.bc new file mode 100644 index 0000000..fc48c1a --- /dev/null +++ b/testsuite/bc_references.bc @@ -0,0 +1,106 @@ +define printarray(a[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a[i] + } +} + +define a2(a[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a[i] = a[i] * a[i] + } + + printarray(a[], len) +} + +define a4(a__[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a__[i] = a__[i] * a__[i] + } + + printarray(a__[], len) +} + +define a6(*a__[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a__[i] = a__[i] * a__[i] + } + + printarray(a__[], len) +} + +define a1(*a[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a[i] = i + } + + a2(a[], len) + + printarray(a[], len) +} + +define a3(*a__[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a__[i] = i + } + + a4(a__[], len) + + printarray(a__[], len) +} + +define a5(*a__[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a__[i] = i + } + + a2(a__[], len) + + printarray(a__[], len) +} + +define a7(*a__[], len) { + + auto i + + for (i = 0; i < len; ++i) { + a__[i] = i + } + + a6(a__[], len) + + printarray(a__[], len) +} + +len = 16 + +a1(a[], len) +printarray(a[], len) +a3(a[], len) +printarray(a[], len) +a5(a[], len) +printarray(a[], len) +a7(a[], len) +printarray(a[], len) + +halt diff --git a/testsuite/bc_references_results.txt b/testsuite/bc_references_results.txt new file mode 100644 index 0000000..564b54a --- /dev/null +++ b/testsuite/bc_references_results.txt @@ -0,0 +1,212 @@ +0 +1 +4 +9 +16 +25 +36 +49 +64 +81 +100 +121 +144 +169 +196 +225 +0 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +0 +1 +4 +9 +16 +25 +36 +49 +64 +81 +100 +121 +144 +169 +196 +225 +0 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +0 +1 +4 +9 +16 +25 +36 +49 +64 +81 +100 +121 +144 +169 +196 +225 +0 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +0 +1 +4 +9 +16 +25 +36 +49 +64 +81 +100 +121 +144 +169 +196 +225 +0 +0 +0 +1 +4 +9 +16 +25 +36 +49 +64 +81 +100 +121 +144 +169 +196 +225 +0 +0 +0 +1 +4 +9 +16 +25 +36 +49 +64 +81 +100 +121 +144 +169 +196 +225 +0 -- cgit v1.1