From 30f1ae4c7e0c07a722f1fa4d770409246ed9788c Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Sun, 9 Feb 2020 12:51:50 -0500 Subject: made cgen pass arrays by value --- std/io.toc | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'std') diff --git a/std/io.toc b/std/io.toc index 51cfd76..fac4921 100644 --- a/std/io.toc +++ b/std/io.toc @@ -38,16 +38,20 @@ puti ::= fn(x: int) { toc_putchar('-'); // NOTE: don't do x = -x; here to make sure I64_MIN works } - abs ::= fn(x: int) int { if x < 0 { -x } else { x } }; - scan_digit := 1000000000000000000; - started := false; - while scan_digit > 0 { - digit := abs((x / scan_digit) % 10); - if digit > 0 { started = true; } - if started { - toc_putchar((('0' as int) + digit) as char); + if x == 0 { + toc_putchar('0'); + } else { + abs ::= fn(x: int) int { if x < 0 { -x } else { x } }; + scan_digit := 1000000000000000000; + started := false; + while scan_digit > 0 { + digit := abs((x / scan_digit) % 10); + if digit > 0 { started = true; } + if started { + toc_putchar((('0' as int) + digit) as char); + } + scan_digit /= 10; } - scan_digit /= 10; } toc_putchar('\n'); -}; \ No newline at end of file +}; -- cgit v1.2.3