diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /support/regression/tests/bug-2357.c | |
| download | sdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'support/regression/tests/bug-2357.c')
| -rw-r--r-- | support/regression/tests/bug-2357.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/support/regression/tests/bug-2357.c b/support/regression/tests/bug-2357.c new file mode 100644 index 0000000..e66ef81 --- /dev/null +++ b/support/regression/tests/bug-2357.c @@ -0,0 +1,63 @@ +/* + bug-2357.c + */ + +#include <testfwk.h> +#include <string.h> + +#ifdef __SDCC +#pragma std_c99 +#endif + +#if defined (__SDCC) && !defined (__SDCC_pdk14) && !defined (__SDCC_pdk15) && (!defined (__SDCC_mcs51) || (!defined (__SDCC_MODEL_SMALL) && !defined (__SDCC_MODEL_MEDIUM) && !defined (__SDCC_STACK_AUTO))) + +short i = -1; +union { + short sv0[126]; + short sv1[132]; + long lv0[63]; + long lv1[66]; +} uv; + +short +foo2(void) +{ + return uv.sv1[132 + i]; +} + +long +foo3(void) +{ + return uv.lv1[66 + i]; +} + +short +foo4(void) +{ + return uv.sv0[126 + i]; +} + +long +foo5(void) +{ + return uv.lv0[63 + i]; +} + +#endif + +void +testBug (void) +{ +#if defined (__SDCC) && !defined (__SDCC_pdk14) && !defined (__SDCC_pdk15) && (!defined (__SDCC_mcs51) || (!defined (__SDCC_MODEL_SMALL) && !defined (__SDCC_MODEL_MEDIUM) && !defined (__SDCC_STACK_AUTO))) + + memset(&uv, 0x33, 128); + memset((char *) &uv + 128, 0x55, 136); + + ASSERT (foo2() == 0x5555); + ASSERT (foo3() == 0x55555555L); + + ASSERT (foo4() == 0x5555); + ASSERT (foo5() == 0x55555555L); + +#endif +} |
