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/staticinit.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/staticinit.c')
| -rw-r--r-- | support/regression/tests/staticinit.c | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/support/regression/tests/staticinit.c b/support/regression/tests/staticinit.c new file mode 100644 index 0000000..25fa411 --- /dev/null +++ b/support/regression/tests/staticinit.c @@ -0,0 +1,151 @@ +/** Tests that the static initialiser code works. + As the init code is now clever we have to be careful. + + type: char, int, long +*/ + +#include <testfwk.h> + +#if !defined(__SDCC_pdk14) // Lack of memory +/*-------------------------------------------------- + regression test for #1864582: + multiple definition of char cons w. --model-large + compile-time test only */ +const char *c = (const char *) "Booting"; +/*------------------------------------------------*/ + +static {type} smallDense[] = { + 1, 2, 3, 4, 5, 6 +}; +#endif + +static void +testSmallDense (void) +{ +#if !defined(__SDCC_pdk14) // Lack of memory + ASSERT (smallDense[0] == 1); + ASSERT (smallDense[1] == 2); + ASSERT (smallDense[2] == 3); + ASSERT (smallDense[3] == 4); + ASSERT (smallDense[4] == 5); + ASSERT (smallDense[5] == 6); +#endif +} + +#ifdef __SDCC_mcs51 +__idata +#elif defined(__SDCC_pdk14) +const +#endif +static {type} smallSparse[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +static void +testSmallSparse (void) +{ +#if !defined(__SDCC_pdk14) // Lack of memory + ASSERT (smallSparse[0] == 1); + ASSERT (smallSparse[1] == 1); + ASSERT (smallSparse[2] == 1); + ASSERT (smallSparse[3] == 1); + ASSERT (smallSparse[4] == 1); + ASSERT (smallSparse[5] == 1); + ASSERT (smallSparse[6] == 1); + ASSERT (smallSparse[7] == 1); + ASSERT (smallSparse[8] == 1); +#endif +} + +#ifdef __SDCC_mcs51 +__idata +#elif defined(__SDCC_pdk14) || defined(__SDCC_pdk15) +const +#endif +static {type} smallSparseZero[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static {type} smallSparseZeroTail[] = { + 1, 2, 3 +}; + +static void +testSmallSparseZero (void) +{ +#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory + ASSERT (smallSparseZero[0] == 0); + ASSERT (smallSparseZero[1] == 0); + ASSERT (smallSparseZero[2] == 0); + ASSERT (smallSparseZero[3] == 0); + ASSERT (smallSparseZero[4] == 0); + ASSERT (smallSparseZero[5] == 0); + ASSERT (smallSparseZero[6] == 0); + ASSERT (smallSparseZero[7] == 0); + ASSERT (smallSparseZero[8] == 0); + // Make the compiler happy + ASSERT (smallSparseZeroTail[0] == 1); +#endif +} + +#ifdef __SDCC_mcs51 +__xdata +#elif __SDCC_pic16 +__code +#elif defined(__SDCC_pdk14) || defined(__SDCC_pdk15) +const +#endif +static {type} largeMixed[] = { + 1, 2, 3, 4, 5, 6, 7, /* 0-6 */ + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, /* 8*12 = 96+7 = -102 */ + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 3, 4, 5, 6, 3, 4, 5, 6, /* 8*17 = 136+7 */ + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6, + 3, 4, 5, 6, 3, 4, 5, 6 +}; + +static void +testLargeMixed (void) +{ +#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory + ASSERT (largeMixed[0] == 1); + ASSERT (largeMixed[1] == 2); + ASSERT (largeMixed[7] == 1); + ASSERT (largeMixed[102] == 1); + ASSERT (largeMixed[143] == 3); + ASSERT (largeMixed[143+8] == 3); + ASSERT (largeMixed[143+16] == 3); + ASSERT (largeMixed[143+1] == 4); + ASSERT (largeMixed[143+8+1] == 4); + ASSERT (largeMixed[143+16+1] == 4); +#endif +} |
