From bec140143ba6fc043b1901024ce03bf931af517c Mon Sep 17 00:00:00 2001 From: mrdudz Date: Mon, 13 Jul 2020 15:13:06 +0200 Subject: [PATCH] added testcase for issue #760 --- test/misc/bug264.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 test/misc/bug264.c diff --git a/test/misc/bug264.c b/test/misc/bug264.c new file mode 100644 index 000000000..a114939a4 --- /dev/null +++ b/test/misc/bug264.c @@ -0,0 +1,62 @@ +/* bug #264 - cc65 fails to warn about a function returning struct */ + +#include +#include +#include + +typedef uint16_t u16; +typedef uint8_t u8; + +typedef struct { + u16 quot; + u16 rem; +} udiv_t; + +udiv_t div3(u16 in) { + + udiv_t u; + u16 q = 0; + + while (in >= 300) { + in -= 300; + q += 100; + } + + while (in >= 30) { + in -= 30; + q += 10; + } + + while (in >= 3) { + in -= 3; + ++q; + } + + u.quot = q; + u.rem = in; + + return u; +} + +int res = 0; + +int main(void) { + + u16 i; + div_t d; + udiv_t u; + + for (i = 1024; i; i--) { + d = div(i, 3); + u = div3(i); + + if (d.quot != u.quot || d.rem != u.rem) { + printf("Mismatch at %u/3, div %u %u, div3 %u %u\n", i, + d.quot, d.rem, u.quot, u.rem); + res++; + } + } + + return res; +} +