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-2304.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-2304.c')
| -rw-r--r-- | support/regression/tests/bug-2304.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/support/regression/tests/bug-2304.c b/support/regression/tests/bug-2304.c new file mode 100644 index 0000000..10e1671 --- /dev/null +++ b/support/regression/tests/bug-2304.c @@ -0,0 +1,40 @@ +/* + bug-2304.c a literal address bug for operands bigger than 2 bytes. + */ + +#include <testfwk.h> + +void testBug(void) +{ +#ifdef __SDCC_pic16 + signed long *l = (signed long *) 0x02b0; + float *f = (float *) 0x02b0; +#elif defined (__SDCC_mcs51) || defined (__SDCC_ds390) + __xdata signed long *l = (__xdata signed long *) 0xcab0; + __xdata float *f = (__xdata float *) 0xcab0; +#elif defined (__SDCC_stm8) + signed long *l = (signed long *) 0x1000; + float *f = (float *) 0x1000; +#elif defined (__SDCC_pdk14) || defined (__SDCC_pdk15) + signed long *l = (signed long *) 0x78; + float *f = (float *) 0x78; +#elif defined (__SDCC) + signed long *l = (signed long *) 0xcab0; + float *f = (float *) 0xcab0; +#else // host test + char buf[16]; + signed long *l = (signed long *) buf; + float *f = (float *) buf; +#endif + + *l++ = -2; + *l = 2; + ASSERT(*(l - 1) == -2); + ASSERT(*l == 2); + + *f++ = 10; + *f = 20; + ASSERT(*(f - 1) == 10); + ASSERT(*f == 20); +} + |
