diff options
60 files changed, 194 insertions, 160 deletions
@@ -1,3 +1,11 @@ +2025-08-11 Philipp Klaus Krause <philipp@colecovision.eu> + + * support/regression/MakeList, + support/regression/fwk/lib/testfwk.c, + support/regression/tests/*.c.in, + support/regression/tests/*.c: + Disable some tests for pdk13 where they won't work due to lack of target memory. + 2025-08-10 Philipp Klaus Krause <philipp@colecovision.eu> * device/lib/pdk13/Makefile.in, diff --git a/support/regression/MakeList b/support/regression/MakeList index 166ebd2cf..da72f65d3 100644 --- a/support/regression/MakeList +++ b/support/regression/MakeList @@ -11,7 +11,45 @@ EXCLUDE_host += \ ############################################### -# Relies on feeatures of older C standards not supported by curent host compilers. +# Target doesn't have enough memory +EXCLUDE_pdk13 += \ + tst_bug1057979 \ + tst_bug1115321 \ + tst_bug1520966 \ + tst_bug1551947 \ + tst_frexpf \ + tst_lonesha256 \ + tst_sha3-256 \ + tst_wcsnlen \ + tst_wcsto +EXCLUDE_pdk14 += \ + tst_bug1057979 \ + tst_bug1115321 \ + tst_bug1520966 \ + tst_bug1551947 \ + tst_frexpf \ + tst_lonesha256 \ + tst_sha3-256 \ + tst_wcsnlen \ + tst_wcsto +EXCLUDE_pdk15 += \ + tst_bug1520966 \ + tst_bug1551947 \ + tst_lonesha256 \ + tst_sha3-256 \ + tst_wcsto +EXCLUDE_pdk15-stack-auto += \ + tst_bug1057979 \ + tst_bug1520966 \ + tst_bug1551947 \ + tst_lonesha256 \ + tst_sha3-256 \ + tst_wcsto + +################################################### +# GCC Tests + +# Relies on features of older C standards not supported by current host compilers. EXCLUDE_host += \ qct_0026-implicitret \ gte_920908-2 \ @@ -313,8 +351,10 @@ EXCLUDE_ARCH_mcs51 += \ qct_0051-inits # Target doesn't have enough memory +EXCLUDE_pdk13 += \ + qct_0057-duff \ + qct_0080-arrays EXCLUDE_pdk14 += \ - qct_0049-inits \ qct_0057-duff \ qct_0080-arrays EXCLUDE_pdk15 += \ diff --git a/support/regression/fwk/lib/testfwk.c b/support/regression/fwk/lib/testfwk.c index 715724a75..f0cc58121 100644 --- a/support/regression/fwk/lib/testfwk.c +++ b/support/regression/fwk/lib/testfwk.c @@ -51,16 +51,11 @@ __printNibble (unsigned char c) _putchar(c); } void -__printd (int n) +__printu (unsigned int n) { unsigned char chr; #define SWAP_BYTE(x) ((x) >> 4 | (x) << 4) - if (0 > n) - { - n = -n; - _putchar('-'); - } _putchar('x'); // This seems to be the most efficient way to do it for PDK (both in RAM & ROM) @@ -78,40 +73,6 @@ __printd (int n) } #else void -__printd (int n) -{ - if (0 == n) - { - _putchar('0'); - } - else - { - static char MEMSPACE_BUF buf[6]; - char MEMSPACE_BUF *p = &buf[sizeof (buf) - 1]; - char neg = 0; - - buf[sizeof(buf) - 1] = '\0'; - - if (0 > n) - { - n = -n; - neg = 1; - } - - while (0 != n) - { - *--p = '0' + __mod (n, 10); - n = __div (n, 10); - } - - if (neg) - _putchar('-'); - - __prints(p); - } -} - -void __printu (unsigned int n) { if (0 == n) @@ -223,7 +184,7 @@ __fail (__code const char *szMsg, __code const char *szCond, __code const char * __prints(" at "); __prints(szFile); _putchar(':'); - __printd(line); + __printu(line); _putchar('\n'); __numFailures++; @@ -241,19 +202,19 @@ main (void) __runSuite(); __prints("--- Summary: "); - __printd(__numFailures); + __printu(__numFailures); _putchar('/'); - __printd(__numTests); + __printu(__numTests); _putchar('/'); - __printd(__numCases); + __printu(__numCases); #ifndef TARGET_VERY_LOW_MEMORY __prints(": "); - __printd(__numFailures); + __printu(__numFailures); __prints(" failed of "); - __printd(__numTests); + __printu(__numTests); __prints(" tests in "); - __printd(__numCases); + __printu(__numCases); __prints(" cases.\n"); #else _putchar('\n'); diff --git a/support/regression/tests/absolute.c.in b/support/regression/tests/absolute.c.in index bcbfb2399..c311d6cb0 100644 --- a/support/regression/tests/absolute.c.in +++ b/support/regression/tests/absolute.c.in @@ -17,7 +17,7 @@ # define ADDRESS(x) (0xCA ## x) #endif -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // TODO: Make test suitable for pdk +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // TODO: Make test suitable for pdk typedef struct { int a, b; @@ -46,7 +46,7 @@ char z = 'z'; void testAbsolute(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // TODO: Make test suitable for pdk +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // TODO: Make test suitable for pdk #if !defined(PORT_HOST) static {mem} char __at(ADDRESS(B6)) s = 's'; char {mem} *pC = (char {mem} *)(ADDRESS(B0)); diff --git a/support/regression/tests/addsub.c.in b/support/regression/tests/addsub.c.in index 1d07d1499..2e0fe3b55 100644 --- a/support/regression/tests/addsub.c.in +++ b/support/regression/tests/addsub.c.in @@ -48,19 +48,20 @@ testAdd(void) result = left + right; ASSERT(result == ({type})(0x5500 + 0x0a00)); - +#if !defined (__SDCC_pdk13) // Not enough code memory - just a few bytes, this should work with more optimizations left = 0x550000ul; result = left + 0x0a0000ul; ASSERT(result == ({type})(0x550000ul + 0x0a0000ul)); ASSERT(add_func(0) == ({type})(5ul << 16)); +#endif } void testSub(void) { -#if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory +#if !defined (__SDCC_pdk13) && !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory {storage} {attr} {type} left, right, result; left = 5; @@ -91,3 +92,4 @@ testSub(void) ASSERT(result == ({type})(-39-(signed)0x1200)); #endif } + diff --git a/support/regression/tests/and_survive.c b/support/regression/tests/and_survive.c index b56049c6c..2056dab4b 100644 --- a/support/regression/tests/and_survive.c +++ b/support/regression/tests/and_survive.c @@ -50,7 +50,7 @@ int litbitchar2 (unsigned char a, unsigned char c, unsigned char e) else return(3); } - +#ifndef __SDCC_pdk13 // Lack of code memory /* Some architectures have non-destructive and when one operand is a literal with at most one bit per byte set (e.g. Z80) */ int litbitint (unsigned int a) { @@ -96,14 +96,14 @@ int regchar (unsigned char a, unsigned char c) else return(3); } - +#endif void testAndSurvive (void) { ASSERT (litbitchar (0x77u - 1) == 0); ASSERT (litbitchar (0x74u - 1) == 1); ASSERT (litbitchar (0x70u - 1) == 2); ASSERT (litbitchar (0x80u - 1) == 3); - +#ifndef __SDCC_pdk13 // Those tests would pass, we just don't have enough space in code memory to fit them in together with the others. ASSERT (litbitchar2 (0x01u - 1, 0x01u - 1, 0x01u) == 8); ASSERT (litbitchar2 (0x01u - 1, 0x80u - 1, 0x01u) == 10); ASSERT (litbitchar2 (0x74u - 1, 0x01u - 1, 0x01u) == 1); @@ -125,5 +125,6 @@ void testAndSurvive (void) ASSERT (regchar (0x80u - 1, 0x88u - 1) == 1); ASSERT (regchar (0x80u - 1, 0x08u - 1) == 3); #endif +#endif } diff --git a/support/regression/tests/array.c.in b/support/regression/tests/array.c.in index 4b29d7e4e..b71549e52 100644 --- a/support/regression/tests/array.c.in +++ b/support/regression/tests/array.c.in @@ -22,7 +22,7 @@ volatile unsigned {type} idx2; void testArrayAccess(void) { -#ifndef __SDCC_pdk14 // Not enough RAM for all the temporaries. +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Not enough RAM for all the temporaries. idx = 2; ASSERT(array_const_char[idx] == TC(2)); diff --git a/support/regression/tests/ast_constant_folding.c b/support/regression/tests/ast_constant_folding.c index 66767afe6..08edbc052 100644 --- a/support/regression/tests/ast_constant_folding.c +++ b/support/regression/tests/ast_constant_folding.c @@ -73,7 +73,10 @@ test_ast_cf(void) ASSERT(foo_ssl() == -67); ASSERT(foo_sa () == -37); ASSERT(foo_mul() == 54000); +#ifndef __SDCC_pdk13 // Those tests would pass, we just don't have enough space in code memory to fit them in together with the others. With a little bit more optimization, this should work - we lack only 15B i = 3; ASSERT(foo_div() == 20); i = 3; ASSERT(foo_or () == 15); i = 7; ASSERT(foo_and() == 4); +#endif } + diff --git a/support/regression/tests/ato.c b/support/regression/tests/ato.c index b8230e306..81714d7b5 100644 --- a/support/regression/tests/ato.c +++ b/support/regression/tests/ato.c @@ -13,7 +13,7 @@ testAto(void) ASSERT (atoi ("-32768") == -32768); ASSERT (atoi ("+32767") == +32767); -#ifndef __SDCC_pdk14 // Not enough RAM +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Not enough RAM #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory ASSERT (atol ("-2147483648") == -2147483648l); ASSERT (atol ("2147483647") == 2147483647l); diff --git a/support/regression/tests/bigstack.c.in b/support/regression/tests/bigstack.c.in index 2cd80b84b..a883925a2 100644 --- a/support/regression/tests/bigstack.c.in +++ b/support/regression/tests/bigstack.c.in @@ -13,7 +13,9 @@ volatile {type1} int1; volatile {type2} int2; -#ifdef __SDCC_pdk14 +#ifdef __SDCC_pdk13 +#define ARRAYSIZE 20 +#elif defined (__SDCC_pdk14) #define ARRAYSIZE 30 #elif defined (__SDCC_pdk15) || defined (__SDCC_mcs51) || defined (__SDCC_mos6502) || defined (__SDCC_mos65c02) #define ARRAYSIZE 60 diff --git a/support/regression/tests/bitfields-bits1.c.in b/support/regression/tests/bitfields-bits1.c.in index 286411f4c..f09876795 100644 --- a/support/regression/tests/bitfields-bits1.c.in +++ b/support/regression/tests/bitfields-bits1.c.in @@ -9,7 +9,7 @@ // Disable for ds390: bug #3211 // Absolute addressing has some issues for pdk. And if those are fixed, there might be alack of memory, still. // mcs51 fails tests. Don't know if that is a bug or just a bad choice for ABS_ADDR1 and ABS_ADDR2 below. -#if defined(__SDCC_ds390) || defined(__SDCC_pdk14) || defined(__SDCC_pdk15) || defined(__SDCC_mcs51) +#if defined(__SDCC_ds390) || defined(__SDCC_pdk13) || defined(__SDCC_pdk14) || defined(__SDCC_pdk15) || defined(__SDCC_mcs51) #define DUMMY_CASE #endif diff --git a/support/regression/tests/bitfields-bits2.c.in b/support/regression/tests/bitfields-bits2.c.in index 5dcdae6a9..5b58b7c04 100644 --- a/support/regression/tests/bitfields-bits2.c.in +++ b/support/regression/tests/bitfields-bits2.c.in @@ -62,7 +62,7 @@ bits_check_value_no_cast(const struct_8bits * var, const uint8_t value) #define CAST_TO_UINT8(x) ((uint8_t)(x))
// Lack of memory.
-#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15)
+#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15)
bool
bits_check_value(const struct_8bits * const var, const uint8_t value)
@@ -113,7 +113,7 @@ static void testBitfields(void)
{
// Lack of memory.
-#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15)
+#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15)
volatile struct_8bits volatileBits;
BITS_SET_AND_CHECK(0x00);
diff --git a/support/regression/tests/bitfields-checks.c.in b/support/regression/tests/bitfields-checks.c.in index ab7c48307..9b49873e6 100644 --- a/support/regression/tests/bitfields-checks.c.in +++ b/support/regression/tests/bitfields-checks.c.in @@ -9,7 +9,7 @@ // Disable for ds390: bug #3211 // Absolute addressing has some issues for pdk. And if those are fixed, there might be a lack of memory, still. // mcs51 creates invalid assembler. Don't know if that is a bug or just a bad choice for ABS_ADDR1 and ABS_ADDR2 below. -#if defined(__SDCC_ds390) || defined(__SDCC_pdk14) || defined(__SDCC_pdk15) || defined(__SDCC_mcs51) +#if defined(__SDCC_ds390) || defined(__SDCC_pdk13) || defined(__SDCC_pdk14) || defined(__SDCC_pdk15) || defined(__SDCC_mcs51) #define DUMMY_CASE #endif diff --git a/support/regression/tests/bitfields-nibbles.c.in b/support/regression/tests/bitfields-nibbles.c.in index 6ea1d206a..aab97d2a1 100644 --- a/support/regression/tests/bitfields-nibbles.c.in +++ b/support/regression/tests/bitfields-nibbles.c.in @@ -10,7 +10,7 @@ #pragma disable_warning 88 // cast of LITERAL value to 'generic' pointer
// Absolute addressing has some issues for pdk. And if those are fixed, there might be a lack of memory, still.
-#if defined(__SDCC_pdk14) || defined(__SDCC_pdk15)
+#if defined(__SDCC_pdk13) || defined(__SDCC_pdk14) || defined(__SDCC_pdk15)
#define DUMMY_CASE
#endif
diff --git a/support/regression/tests/bitfields.c b/support/regression/tests/bitfields.c index 29eebc00b..ffd2208eb 100644 --- a/support/regression/tests/bitfields.c +++ b/support/regression/tests/bitfields.c @@ -10,7 +10,7 @@ struct { char c3_5 : 5; } c_bf; -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !defined(__SDCC_pic16) struct { int i0_7 : 7; @@ -121,6 +121,7 @@ testBitfieldSizeof(void) ASSERT( sizeof(size3a_bf) >= 2); ASSERT( sizeof(size1a_bf) <= sizeof(size1b_bf)); #endif /* !__SDCC_pic16 */ +#if !defined (__SDCC_pdk13) // Lack of memory /* Some SDCC specific assertions. SDCC uses 8 bit storage units. Bitfields that are less than 8 bits, but would (due to earlier bitfield declarations) span a storage unit boundary are @@ -140,13 +141,14 @@ testBitfieldSizeof(void) ASSERT( sizeof(size3a_bf) == 3); #endif /* !__SDCC_pic16 */ #endif +#endif } void testBitfieldsSingleBitLiteral(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory #if !defined(__SDCC_pic16) size2b_bf.b0 = 0; @@ -204,7 +206,7 @@ testBitfieldsSingleBitLiteral(void) void testBitfieldsSingleBit(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory #if !defined(__SDCC_pic16) volatile unsigned char c; @@ -267,7 +269,7 @@ testBitfieldsSingleBit(void) void testBitfieldsMultibitLiteral(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined (__SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if !defined(__SDCC_pic16) size2c_bf.b0 = 0xff; /* should truncate to 0x0f */ size2c_bf.b1 = 0; @@ -325,7 +327,7 @@ testBitfieldsMultibitLiteral(void) void testBitfieldsMultibit(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined (__SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if !defined(__SDCC_pic16) volatile int allones = 0xffff; volatile int zero = 0; @@ -406,7 +408,7 @@ testBitfields(void) void testSignedBitfields(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined (__SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if !defined(__SDCC_pic16) s_bf.s0_7 = 0xf0; s_bf.s7_1 = 1; @@ -431,7 +433,7 @@ testSignedBitfields(void) } /* test case for enhancement request #2291335 : Unnamed bit-field initialization */ - +#if !defined (__SDCC_pdk13) // Lack of memory struct s2291335_1 { int a : 2; char : 2; @@ -446,10 +448,11 @@ struct s2291335_2 { struct s2291335_1 gs2291335_1 = {1, 2}; struct s2291335_2 gs2291335_2 = {1, 2}; - +#endif void __test2291335(void) { +#if !defined (__SDCC_pdk13) // Lack of memory struct s2291335_1 ls2291335_1 = {1, 2}; struct s2291335_2 ls2291335_2 = {1, 2}; @@ -462,6 +465,7 @@ __test2291335(void) ASSERT(ls2291335_1.b == 2); ASSERT(ls2291335_2.a == 1); ASSERT(ls2291335_2.b == 2); +#endif } /* test case for bug #2366757: segfault when initializing structure with bitfield */ @@ -474,7 +478,7 @@ struct /* test case for const struct with bitfields */ -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined (__SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #ifndef __SDCC_pic16 // TODO: enable when the pic16 ports supports bitfields of size greater than 8 bits! const struct { @@ -501,7 +505,7 @@ const struct void testCS(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined (__SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #ifndef __SDCC_pic16 // TODO: enable when the pic16 ports supports bitfields of size greater than 8 bits! ASSERT(cs.a == 1); ASSERT(cs.b == 2); diff --git a/support/regression/tests/bitint.c.in b/support/regression/tests/bitint.c.in index 2718d226a..f94cb37e1 100644 --- a/support/regression/tests/bitint.c.in +++ b/support/regression/tests/bitint.c.in @@ -55,7 +55,7 @@ void testBitInt(void) bitinttype b = 1; ASSERT(_Generic(++b, default: 1, bitinttype: 0) == 0); // ++a is not the same a += 1, but a += (bitinttype)1. - +#ifndef __SDCC_pdk13 // Lackof memory - with more optimization, we could enable a few more lines // Cast from int ASSERT((bitinttype)i == (bitinttype)42); // Explicit cast b = i; // Implicit cast @@ -78,5 +78,6 @@ void testBitInt(void) ASSERT((bitinttype)b6 == (bitinttype)(unsigned _BitInt(6))0x5aff); #endif #endif +#endif } diff --git a/support/regression/tests/bitintarith.c.in b/support/regression/tests/bitintarith.c.in index 6edb9e167..df7af98b5 100644 --- a/support/regression/tests/bitintarith.c.in +++ b/support/regression/tests/bitintarith.c.in @@ -27,6 +27,7 @@ volatile char c = 1; void testBitIntArith(void) { +#ifndef __SDCC_pdk13 // Lack of memory #ifndef __clang_major__ // clang 11 doesn't support == between _BitInt and int #if __SDCC_BITINT_MAXWIDTH >= {width} // TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! #if ({width} <= 40 || !defined (__SDCC_pdk14)) && ({width} <= 48 || !defined (__SDCC_pdk15)) // Lack of memory @@ -63,7 +64,7 @@ void testBitIntArith(void) ASSERT(ua + ub == (ubitinttype)(23) + (ubitinttype)(-42)); ASSERT(ua - ub == (ubitinttype)(23) - (ubitinttype)(-42)); -#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory #if {width} >= 11 // Signed overflow is undefined behaviour ASSERT(a * b == (bitinttype)(23) * (bitinttype)(-42)); @@ -101,5 +102,6 @@ void testBitIntArith(void) #endif #endif #endif +#endif } diff --git a/support/regression/tests/bitintbitfield.c b/support/regression/tests/bitintbitfield.c index 40743115e..d1d2ae38e 100644 --- a/support/regression/tests/bitintbitfield.c +++ b/support/regression/tests/bitintbitfield.c @@ -63,7 +63,7 @@ void testBitIntBitField(void) ASSERT (ubf2.b2 == 2); ASSERT (ubf2.b3 == 7); ASSERT (ubf2.b4 == 5); - +#if !defined (__SDCC_pdk13) // Lack of memory sbf.b3 = -1; sbf.b4 = 0; sbf.b = -1; @@ -71,5 +71,6 @@ void testBitIntBitField(void) ASSERT (sbf.b4 == 0); ASSERT (sbf.b == -1); #endif +#endif } diff --git a/support/regression/tests/bitintfromfloat.c.in b/support/regression/tests/bitintfromfloat.c.in index bf7ef9530..8ee774e3c 100644 --- a/support/regression/tests/bitintfromfloat.c.in +++ b/support/regression/tests/bitintfromfloat.c.in @@ -14,7 +14,7 @@ #define _BitInt _ExtInt #endif -#if __SDCC_BITINT_MAXWIDTH >= {width} && (32 >= {width} || !defined(__SDCC_pdk14)) // Lack of memory on pdk14 for wider types. Maybe some future optimization will help here. +#if __SDCC_BITINT_MAXWIDTH >= {width} && !defined(__SDCC_pdk13) && (32 >= {width} || !defined(__SDCC_pdk14)) // Lack of memory on pdk14 for wider types. Maybe some future optimization will help here. typedef {sign} _BitInt({width}) bitinttype; bitinttype from_float(float f) @@ -25,7 +25,7 @@ bitinttype from_float(float f) void testCast (void) { -#if __SDCC_BITINT_MAXWIDTH >= {width} && (32 >= {width} || !defined(__SDCC_pdk14)) // Lack of memory on pdk14 for wider types. Maybe some future optimization will help here. +#if __SDCC_BITINT_MAXWIDTH >= {width} && !defined(__SDCC_pdk13) && (32 >= {width} || !defined(__SDCC_pdk14)) // Lack of memory on pdk14 for wider types. Maybe some future optimization will help here. float f; f = 1; diff --git a/support/regression/tests/bitintrot.c.in b/support/regression/tests/bitintrot.c.in index e88d58c69..9651ff9a3 100644 --- a/support/regression/tests/bitintrot.c.in +++ b/support/regression/tests/bitintrot.c.in @@ -15,7 +15,7 @@ #define _BitInt _ExtInt #endif -#if __SDCC_BITINT_MAXWIDTH >= {width} && ({width} <= 8 || !defined(__SDCC_pdk14)) && ({width} <= 16 || !defined(__SDCC_pdk15)) // Lack of memory for pdk. TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! +#if __SDCC_BITINT_MAXWIDTH >= {width} && ({width} <= 8 || !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14)) && ({width} <= 16 || !defined(__SDCC_pdk15)) // Lack of memory for pdk. TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! typedef unsigned _BitInt({width}) bitinttype; #define WIDTH {width} #else @@ -46,7 +46,7 @@ testRot (void) ASSERT (NROL (t2) == NROL (TESTVECT2)); ASSERT (NROL2 (t1) == NROL2 (TESTVECT1)); ASSERT (NROL2 (t2) == NROL2 (TESTVECT2)); - +#ifndef __SDCC_pdk13 // Lack of memory t1 = ROL(t1); t2 = ROL(t2); ASSERT (t1 == ROL (TESTVECT1)); @@ -56,5 +56,6 @@ testRot (void) t2 = ROR(t2); ASSERT (t1 == TESTVECT1); ASSERT (t2 == TESTVECT2); +#endif } diff --git a/support/regression/tests/bitinttofloat.c.in b/support/regression/tests/bitinttofloat.c.in index 1645c5b3f..3384a63e6 100644 --- a/support/regression/tests/bitinttofloat.c.in +++ b/support/regression/tests/bitinttofloat.c.in @@ -18,14 +18,17 @@ typedef {sign} _BitInt({width}) bitinttype; +#ifndef __SDCC_pdk13 // Lack of memory; we are close, though - thiosmight work with more optimizations. float to_float(bitinttype b) { return(b); } #endif +#endif void testCast (void) { +#ifndef __SDCC_pdk13 // Lack of memory #if __SDCC_BITINT_MAXWIDTH >= {width} // TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! bitinttype b; @@ -40,5 +43,6 @@ void testCast (void) ASSERT (to_float (b) == (float)b); #endif #endif +#endif } diff --git a/support/regression/tests/bitwise.c.in b/support/regression/tests/bitwise.c.in index 411dad02f..c34bd82cd 100644 --- a/support/regression/tests/bitwise.c.in +++ b/support/regression/tests/bitwise.c.in @@ -19,7 +19,7 @@ testTwoOpBitwise(void) ASSERT(({type})(left & 0xc1ec) == ({type})0x1E4); ASSERT(({type})(0x3df7 & right) == ({type})0x1E4); -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory ASSERT(({type})(left | right) == ({type})0xFDFF); ASSERT(({type})(right | left) == ({type})0xFDFF); @@ -44,6 +44,7 @@ testTwoOpBitwise(void) void testAnd(void) { +#ifndef __SDCC_pdk13 // Lack of memory - with more optimization, a few more lines should be possible char res; {attr} int a; @@ -184,6 +185,7 @@ testAnd(void) * result: bit, left: var, right: literal */ #endif +#endif } void @@ -209,7 +211,7 @@ testOr(void) else res = 0; ASSERT(res == 0); -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory if (a | 0x4321) res = 1; @@ -278,7 +280,7 @@ testXor(void) else res = 0; ASSERT(res == 1); -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory if (!(a ^ 0x4321)) res = 1; diff --git a/support/regression/tests/bool.c b/support/regression/tests/bool.c index 862f9408f..1aa2bbbdb 100644 --- a/support/regression/tests/bool.c +++ b/support/regression/tests/bool.c @@ -82,7 +82,7 @@ testBool(void) ASSERT((E ? 1 : 0) == (!(!E))); ASSERT((E += 2) == 1); ASSERT((--E, --E, E) == E); - +#if !defined (__SDCC_pdk13) // Lack of memory E = 0; ASSERT(!E); // sets E to 0 E = 1; ASSERT(E); // sets E to 1 E = 4; ASSERT(E); // sets E to 1 @@ -101,5 +101,6 @@ testBool(void) fieldassign(); ASSERT(s2.b1); #endif +#endif } diff --git a/support/regression/tests/bp.c b/support/regression/tests/bp.c index 5ef54776f..9d946347d 100644 --- a/support/regression/tests/bp.c +++ b/support/regression/tests/bp.c @@ -20,7 +20,7 @@ spoil(int a) return a; } -#if defined(__SDCC_pic14) || defined(__SDCC_pdk14) +#if defined(__SDCC_pic14) || defined(__SDCC_pdk13) || defined(__SDCC_pdk14) // test devices with much less memory #define ABOVE_MEM_SIZE 20 diff --git a/support/regression/tests/bug1057979.c b/support/regression/tests/bug1057979.c index b16383fbf..c11844f7e 100644 --- a/support/regression/tests/bug1057979.c +++ b/support/regression/tests/bug1057979.c @@ -12,7 +12,6 @@ char s[12 + 1]; void test_sprintf (void) { -#if !defined( __SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_pic14) // Lack of memory #ifndef __SDCC_pic16 s[12] = 0x12; @@ -56,6 +55,5 @@ test_sprintf (void) ASSERT (s[12] == 0x12); #endif -#endif } diff --git a/support/regression/tests/bug1115321.c b/support/regression/tests/bug1115321.c index 7741caedc..c88493c0e 100644 --- a/support/regression/tests/bug1115321.c +++ b/support/regression/tests/bug1115321.c @@ -103,7 +103,6 @@ * as the buffer[end - 1] value. */ -#ifndef __SDCC_pdk14 // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory unsigned char SDCC_SNPRINTF( char *buffer, const unsigned char size, const char *format, ... ) @@ -216,11 +215,9 @@ clean_and_bail: return (buffer - start); } #endif -#endif void test_s( void ) { -#ifndef __SDCC_pdk14 // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory char buffer[32]; int ret; @@ -256,7 +253,6 @@ void test_s( void ) ASSERT (strcmp(buffer, "Hello, wo") == 0); ASSERT (ret == 10); #endif -#endif } #if defined SDCC diff --git a/support/regression/tests/bug1520966.c b/support/regression/tests/bug1520966.c index e30de0435..0fdf17a4b 100644 --- a/support/regression/tests/bug1520966.c +++ b/support/regression/tests/bug1520966.c @@ -7,7 +7,6 @@ void testFloatOp(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory volatile float a,b; float result; @@ -22,6 +21,5 @@ testFloatOp(void) result = a / b; ASSERT( result < a ); ASSERT( result >= 0.0 ); -#endif } diff --git a/support/regression/tests/bug1551947.c b/support/regression/tests/bug1551947.c index cf80edc97..ea9e86657 100644 --- a/support/regression/tests/bug1551947.c +++ b/support/regression/tests/bug1551947.c @@ -10,9 +10,7 @@ __xdata float x = 1.0; void testBug (void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory z = x * x; ASSERT (z == 1.0); -#endif } diff --git a/support/regression/tests/float.c.in b/support/regression/tests/float.c.in index 6a7cb6829..60da75609 100644 --- a/support/regression/tests/float.c.in +++ b/support/regression/tests/float.c.in @@ -32,7 +32,7 @@ # define XDATA #endif -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory XDATA volatile float left, right, result; struct { @@ -93,7 +93,7 @@ compare (float is, float should) void testFloatMath (void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory int i; int t = sizeof (cases) / sizeof (cases[0]); float result; @@ -139,7 +139,7 @@ testFloatMath (void) void testFloatMulRound (void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory right = 2.0 / 10.61; result = 10.61 * right; compare (result, 2.0); diff --git a/support/regression/tests/float_single.c.in b/support/regression/tests/float_single.c.in index a5b910b17..865296281 100644 --- a/support/regression/tests/float_single.c.in +++ b/support/regression/tests/float_single.c.in @@ -37,7 +37,7 @@ neg (float a) _FLOAT_FUNC_REENTRANT typedef float (*float_test_func)(float) _FLOAT_FUNC_REENTRANT; -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory /* the table with functions, their argument, expected result, tolerance. For most 8-bitters each testpoint uses 14 bytes so we could have a few:) */ @@ -188,7 +188,7 @@ static const testpoint[] = void testFloat (void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory unsigned char i; float result, rel_error; diff --git a/support/regression/tests/float_trans.c.in b/support/regression/tests/float_trans.c.in index 3db5d257e..539ba097b 100644 --- a/support/regression/tests/float_trans.c.in +++ b/support/regression/tests/float_trans.c.in @@ -13,7 +13,7 @@ void testTrans(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory #ifdef SQRTF ASSERT(fabsf (sqrtf (5.0) - 2.23606801) < 0.00001); #endif diff --git a/support/regression/tests/frexpf.c b/support/regression/tests/frexpf.c index d36a295fa..0ddc106ca 100644 --- a/support/regression/tests/frexpf.c +++ b/support/regression/tests/frexpf.c @@ -6,7 +6,6 @@ void testfrexpf(void) { -#if !defined(__SDCC_pdk14) // Lack of memory int e; int *p = &e; @@ -15,6 +14,5 @@ void testfrexpf(void) ASSERT (frexpf (0.75 * 4, p) == 0.75); ASSERT (frexpf (0.75 * 16, p) == 0.75); -#endif } diff --git a/support/regression/tests/iso646.c.in b/support/regression/tests/iso646.c.in index b8e0fab57..e4e5d4577 100644 --- a/support/regression/tests/iso646.c.in +++ b/support/regression/tests/iso646.c.in @@ -12,7 +12,7 @@ static void testTwoOpBitwise(void) { -#if !defined(__SDCC_pdk14) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory {storage} {attr} {type} left, right; left = ({type})0x3df7; diff --git a/support/regression/tests/itoa.c.in b/support/regression/tests/itoa.c.in index 28ad22e60..01979cfd9 100644 --- a/support/regression/tests/itoa.c.in +++ b/support/regression/tests/itoa.c.in @@ -7,7 +7,7 @@ #include <stdlib.h> #include <string.h> -#if !defined(PORT_HOST) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(PORT_HOST) && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory /* do not run tests for listed above platforms - out of memory */ #define TEST_{test} 1 diff --git a/support/regression/tests/libmullong.c.in b/support/regression/tests/libmullong.c.in index 3afb231e9..232610ddd 100644 --- a/support/regression/tests/libmullong.c.in +++ b/support/regression/tests/libmullong.c.in @@ -6,7 +6,7 @@ #ifndef PORT_HOST // No longer works -#if !defined(__SDCC_pdk14) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #define type_{type} #if defined(PORT_HOST) @@ -79,7 +79,7 @@ void testlibmullong(void) { #ifndef PORT_HOST -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory ASSERT(mullong ( 0, 0) == 0); ASSERT(mullong ( 0x100, 0x100) == 0x10000); ASSERT(mullong (0x01020304, 3) == 0x0306090c); @@ -120,3 +120,4 @@ testlibmullong(void) #endif #endif } + diff --git a/support/regression/tests/logic.c.in b/support/regression/tests/logic.c.in index e6b3aab37..33dbb8481 100644 --- a/support/regression/tests/logic.c.in +++ b/support/regression/tests/logic.c.in @@ -58,7 +58,7 @@ alwaysGetHere(void) static void testLogicalAnd(void) { -#if !defined(__SDCC_pdk14) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory {type} true = alwaysTrue(); {type} false = alwaysFalse(); @@ -92,7 +92,7 @@ testLogicalAnd(void) static void testLogicalOr(void) { -#if !defined(__SDCC_pdk14) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory {type} true = alwaysTrue(); {type} false = alwaysFalse(); @@ -137,3 +137,4 @@ testFlagToVariable(void) val = !!false; ASSERT(!false); } + diff --git a/support/regression/tests/lonesha256.c b/support/regression/tests/lonesha256.c index c7bec37bf..3285c3cff 100644 --- a/support/regression/tests/lonesha256.c +++ b/support/regression/tests/lonesha256.c @@ -9,7 +9,7 @@ #define LONESHA256_STATIC -#if !(defined(__SDCC_mcs51) && (defined(__SDCC_MODEL_SMALL) || defined(__SDCC_MODEL_MEDIUM) || defined(__SDCC_STACK_AUTO))) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // Lack of memory +#if !(defined(__SDCC_mcs51) && (defined(__SDCC_MODEL_SMALL) || defined(__SDCC_MODEL_MEDIUM) || defined(__SDCC_STACK_AUTO))) && !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // Lack of memory /* lonesha256.h - Portable, endian-proof, single-file, single-function sha256 implementation, originally based on LibTomCrypt @@ -194,7 +194,7 @@ void testSha (void) { #if !defined(__SDCC_ds390) // Fails for unknown reason -#if !(defined(__SDCC_mcs51) && (defined(__SDCC_MODEL_SMALL) || defined(__SDCC_MODEL_MEDIUM) || defined(__SDCC_STACK_AUTO))) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // Lack of memory +#if !(defined(__SDCC_mcs51) && (defined(__SDCC_MODEL_SMALL) || defined(__SDCC_MODEL_MEDIUM) || defined(__SDCC_STACK_AUTO))) && !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // Lack of memory int i; for (i = 0; i < sizeof(pairs)/sizeof(pairs[0]); i++) { diff --git a/support/regression/tests/longlong.c.in b/support/regression/tests/longlong.c.in index f0d1c6ff1..fa9f49d32 100644 --- a/support/regression/tests/longlong.c.in +++ b/support/regression/tests/longlong.c.in @@ -10,7 +10,7 @@ #define TEST_{test} -#if !(defined(__SDCC_mcs51) && !defined(__SDCC_STACK_AUTO) && defined(__SDCC_MODEL_SMALL) ) && !defined(__SDCC_pic14) && !defined(__SDCC_pic16) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !(defined(__SDCC_mcs51) && !defined(__SDCC_STACK_AUTO) && defined(__SDCC_MODEL_SMALL) ) && !defined(__SDCC_pic14) && !defined(__SDCC_pic16) && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory long long x; unsigned long long y; int i; @@ -326,7 +326,7 @@ LongLong_shift (void) void testLongLong (void) { -#if !(defined(__SDCC_mcs51) && !defined(__SDCC_STACK_AUTO) && defined(__SDCC_MODEL_SMALL) ) && !defined(__SDCC_pic14) && !defined(__SDCC_pic16) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !(defined(__SDCC_mcs51) && !defined(__SDCC_STACK_AUTO) && defined(__SDCC_MODEL_SMALL) ) && !defined(__SDCC_pic14) && !defined(__SDCC_pic16) && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory LongLong_{test}(); #endif } diff --git a/support/regression/tests/ltoa.c.in b/support/regression/tests/ltoa.c.in index a611c58fe..eb26a5faa 100644 --- a/support/regression/tests/ltoa.c.in +++ b/support/regression/tests/ltoa.c.in @@ -7,7 +7,7 @@ #include <stdlib.h> #include <string.h> -#if !defined(PORT_HOST) && !(defined(__SDCC_mcs51) && !defined(__SDCC_STACK_AUTO) && defined(__SDCC_MODEL_SMALL) ) && !defined(__SDCC_pic14) && !defined(__SDCC_pic16) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(PORT_HOST) && !(defined(__SDCC_mcs51) && !defined(__SDCC_STACK_AUTO) && defined(__SDCC_MODEL_SMALL) ) && !defined(__SDCC_pic14) && !defined(__SDCC_pic16) && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory /* do not run tests for listed above platforms - out of memory */ #define TEST_{test} 1 #define LTOA(num,base,res) check_l(num, base, res) diff --git a/support/regression/tests/muldiv.c.in b/support/regression/tests/muldiv.c.in index bd7dd71c9..d5e5dcbaa 100644 --- a/support/regression/tests/muldiv.c.in +++ b/support/regression/tests/muldiv.c.in @@ -9,7 +9,7 @@ void testUnsignedModDiv(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory {attr} {storage} unsigned {type} i; unsigned {type} result; @@ -34,7 +34,7 @@ testUnsignedModDiv(void) void testUnsignedMul(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory {attr} {storage} unsigned {type} i; unsigned {type} result; @@ -52,7 +52,7 @@ testUnsignedMul(void) void testMul(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory {attr} {storage} signed {type} i; signed {type} result; @@ -82,7 +82,7 @@ void mark(void) void testDiv(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory {attr} {storage} signed {type} i; i = 100; @@ -105,7 +105,7 @@ testDiv(void) void test16to32(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory {attr} {storage} int i, j; {attr} {storage} unsigned int ui, uj; @@ -146,7 +146,7 @@ test16to32(void) void testMod(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory {attr} {storage} signed {type} i; // Disabled the LOG functions due to a bug in sdcc involving diff --git a/support/regression/tests/reentrant.c.in b/support/regression/tests/reentrant.c.in index 9637eaddd..16fcf1ca4 100644 --- a/support/regression/tests/reentrant.c.in +++ b/support/regression/tests/reentrant.c.in @@ -6,7 +6,7 @@ #include <testfwk.h> #include <stdlib.h> -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if !defined( __SDCC_ds390) // Bug 3307 {type} sum({type} a) __reentrant @@ -39,7 +39,7 @@ void testReent(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if !defined( __SDCC_ds390) // Bug 3307 ASSERT(sum(9) == 45); ASSERT(fact(5) == 120); diff --git a/support/regression/tests/rotate.c.in b/support/regression/tests/rotate.c.in index 0a3954040..8aec83ad2 100644 --- a/support/regression/tests/rotate.c.in +++ b/support/regression/tests/rotate.c.in @@ -9,7 +9,7 @@ #include <stdint.h> #endif -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory #define SIZE ({size}) @@ -87,7 +87,7 @@ TYPE rol31(TYPE s){ return (s<<31) | (s>>(SIZE-31)); } void testRol(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory volatile TYPE t = TEST_VECT; TYPE u; @@ -125,3 +125,4 @@ testRol(void) #endif #endif } + diff --git a/support/regression/tests/rotate2.c.in b/support/regression/tests/rotate2.c.in index 33084ffe0..0223a15f7 100644 --- a/support/regression/tests/rotate2.c.in +++ b/support/regression/tests/rotate2.c.in @@ -122,7 +122,7 @@ TYPE rotate_test_1_xor2(TYPE value) return (((value ^ rotate_test_value_xor) << SHIFT_L) | ((value ^ rotate_test_value_xor) >> SHIFT_R)) AND_OPERATION;
}
-#if !(defined(__SDCC_pdk14) || defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of memory
+#if !(defined(__SDCC_pdk13) || defined(__SDCC_pdk14) || defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of memory
TYPE rotate_test_2(TYPE value)
{
@@ -217,7 +217,7 @@ TYPE rotate_test_5_xor2(TYPE value) static void
testSwaps(void)
{
-#if !(defined(__SDCC_pdk14) || defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of memory
+#if !(defined(__SDCC_pdk13) || defined(__SDCC_pdk14) || defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of memory
volatile TYPE t = TEST_VALUE;
TYPE u;
diff --git a/support/regression/tests/sha3-256.c b/support/regression/tests/sha3-256.c index 5698835b5..dcc6e3175 100644 --- a/support/regression/tests/sha3-256.c +++ b/support/regression/tests/sha3-256.c @@ -12,7 +12,7 @@ #if !defined(__SDCC_mos6502) && !defined(__SDCC_mos65c02) // mos6052/mos65c02 can't return struct this large yet. #if !defined(__SDCC_hc08) && !defined(__SDCC_s08) && !defined(__SDCC_ds390) // hc08/s08/ds390 can't return struct yet. -#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // Lack of memory +#if !defined(__SDCC_mcs51) && !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // Lack of memory #define SHA3_256_MD_LEN 32 // 256-bit digest length in bytes. #define SHA3_256_ROUNDS 24 // KECCAK rounds to perform for SHA3-256. @@ -213,7 +213,7 @@ testSha (void) #if __STDC_ENDIAN_NATIVE__ // The implementation assumes little-endian #if !defined(__SDCC_mos6502) && !defined(__SDCC_mos65c02) // mos6502/mos65c02 can't return struct this large yet #if !defined(__SDCC_ds390) // ds390 can't return struct yet. -#if !__SDCC_mcs51 && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_mcs51) // Lack of memory int i; for (i = 0; i < sizeof(pairs)/sizeof(pairs[0]); i++) { diff --git a/support/regression/tests/shifts.c.in b/support/regression/tests/shifts.c.in index 15cfefa9c..4f8250b68 100644 --- a/support/regression/tests/shifts.c.in +++ b/support/regression/tests/shifts.c.in @@ -35,7 +35,7 @@ test1ShiftClasses(void) void test2ShiftRight(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory {attr} {storage} signed {type} i, result; @@ -58,6 +58,7 @@ test2ShiftRight(void) void test3ShiftByteMultiples(void) { +#if !defined(__SDCC_pdk13) // Lack of memory; we are close, though, sowith a bit more optimization, this might work. {attr} {storage} {type} i; i = ({type}){vals}; @@ -69,12 +70,13 @@ test3ShiftByteMultiples(void) ASSERT( ({type})(i<<8) == ({type})({vals} << 8));; ASSERT((({type}) i<<16) == (({type}) {vals} << 16)); ASSERT((({type}) i<<24) == (({type}) {vals} << 24)); +#endif } void test4ShiftOne(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory {attr} {storage} {sign} {type} i; {sign} {type} result; @@ -98,7 +100,7 @@ test4ShiftOne(void) #endif } -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory static {type} ShiftLeftByParam ({type} count) { @@ -119,7 +121,7 @@ static {type} ShiftRightByParam ({type} count) void testShiftByParam(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory ASSERT(ShiftLeftByParam(2) == ({type})({vals} << 2)); ASSERT(ShiftRightByParam(2) == ({type})({vals} >> 2)); diff --git a/support/regression/tests/shifts2.c.in b/support/regression/tests/shifts2.c.in index ca1a3cecb..18322f0d9 100644 --- a/support/regression/tests/shifts2.c.in +++ b/support/regression/tests/shifts2.c.in @@ -63,7 +63,7 @@ static void testShift(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory TESTSHIFT(0); TESTSHIFT(1); diff --git a/support/regression/tests/shifts3.c.in b/support/regression/tests/shifts3.c.in index a595098bb..7ab31c7f9 100644 --- a/support/regression/tests/shifts3.c.in +++ b/support/regression/tests/shifts3.c.in @@ -7,6 +7,7 @@ */ #include <testfwk.h> +#if !defined(__SDCC_pdk13) // Lack of memory const int C0[] = {0,1,2}; int S0[] = {5,0,1}; @@ -138,9 +139,11 @@ int r3(void) } #endif #endif +#endif void testShift(void) { +#if !defined(__SDCC_pdk13) ASSERT (r0() == 0); #if !defined(__SDCC_pdk14) ASSERT (r1() == 2); @@ -149,5 +152,6 @@ void testShift(void) ASSERT (r3() == -2); #endif #endif +#endif } diff --git a/support/regression/tests/sizeof.c.in b/support/regression/tests/sizeof.c.in index f8da78772..59902df09 100644 --- a/support/regression/tests/sizeof.c.in +++ b/support/regression/tests/sizeof.c.in @@ -181,6 +181,8 @@ testSizeof(void) TEST_OP_NOPROMO ((TEST_VAR_OTHER++, TEST_VAR += 1));
#endif
+#ifndef __SDCC_pdk13 // Lack of memory
+
#ifdef TEST_POINTERS
TEST_OP_CHAR_PTR(VAR_TYPE *);
@@ -381,6 +383,8 @@ testSizeof(void) TEST_OP (0 || c);
#endif
+#endif // Lack of pdk13 memory
+
#endif //DUMMY_TEST
}
diff --git a/support/regression/tests/snprintf.c.in b/support/regression/tests/snprintf.c.in index 70dde1f04..623455255 100644 --- a/support/regression/tests/snprintf.c.in +++ b/support/regression/tests/snprintf.c.in @@ -167,7 +167,7 @@ struct void test_snprintf (void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory +#if !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory #ifndef __SDCC_pic16 unsigned char buf[32]; unsigned char i; diff --git a/support/regression/tests/stack-restore.c.in b/support/regression/tests/stack-restore.c.in index 5389b02e8..d0084c59e 100644 --- a/support/regression/tests/stack-restore.c.in +++ b/support/regression/tests/stack-restore.c.in @@ -39,7 +39,7 @@ stack_restore_test_byte(const char s) return 0;
}
-#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_pic14) // Lack of memory
+#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_pic14) // Lack of memory
#if !( (defined (__SDCC_mos6502) || defined(__SDCC_mos65c02 )) && defined(__SDCC_STACK_AUTO) ) // stack too msall
// Test for size = 2 bytes
// Big stack needed (>256 bytes)
diff --git a/support/regression/tests/stacks.c.in b/support/regression/tests/stacks.c.in index 3d15a7693..b215e9cb1 100644 --- a/support/regression/tests/stacks.c.in +++ b/support/regression/tests/stacks.c.in @@ -21,7 +21,7 @@ testStack(void) volatile char above; volatile char above2; /* pic14: Bank size limit */ -#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk14) && !defined(__SDCC_pic14) +#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pic14) volatile char ac[{size}]; #else volatile char ac[{size} - 100]; diff --git a/support/regression/tests/structparam.c.in b/support/regression/tests/structparam.c.in index ddc997a5f..2e1ddad73 100644 --- a/support/regression/tests/structparam.c.in +++ b/support/regression/tests/structparam.c.in @@ -19,7 +19,7 @@ struct s } // Caller -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) // Lack of memory {type} g({type} i, {type} j) { struct s s = {i, j}; @@ -29,7 +29,7 @@ struct s void testParam (void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) // Lack of memory ASSERT (g(23, 42) == 23 + 42); #endif } diff --git a/support/regression/tests/structreturn.c.in b/support/regression/tests/structreturn.c.in index dc153be5f..34354e79f 100644 --- a/support/regression/tests/structreturn.c.in +++ b/support/regression/tests/structreturn.c.in @@ -6,7 +6,7 @@ #include <testfwk.h> -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) // Lack of memory #if !defined(__SDCC_ds390) && !defined(__SDCC_ds390) && !defined(__SDCC_hc08) && !defined(__SDCC_s08) && !defined(__SDCC_mos6502) && !defined(__SDCC_mos65c02) // struct return not yet supported struct s { @@ -64,7 +64,7 @@ int h2(void) void testRet (void) { #if !defined(__SDCC_ds390) && !defined(__SDCC_ds390) && !defined(__SDCC_hc08) && !defined(__SDCC_s08) && !defined(__SDCC_mos6502) && !defined(__SDCC_mos65c02) // struct return not yet supported -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) // Lack of memory ASSERT (g1() == 3); ASSERT (g2() == 3); ASSERT (h1() == 2); diff --git a/support/regression/tests/switch.c.in b/support/regression/tests/switch.c.in index d1260e5f8..71233689b 100644 --- a/support/regression/tests/switch.c.in +++ b/support/regression/tests/switch.c.in @@ -48,7 +48,7 @@ testSparseSwitch(void) ASSERT(sparseSwitch(6) == 14); ASSERT(sparseSwitch(12) == 14); ASSERT(sparseSwitch(13) == 19); -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory - we are close though; with a bitmore optimization, this might work, even for pdk13. ASSERT(sparseSwitch(14) == 19); ASSERT(sparseSwitch(15) == 19); ASSERT(sparseSwitch(19) == 30); @@ -56,7 +56,7 @@ testSparseSwitch(void) #endif } -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory {sign} {type} denseSwitch({sign} {type} val) { @@ -92,7 +92,7 @@ denseSwitch({sign} {type} val) void testDenseSwitch(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory ASSERT(denseSwitch(0) == 1); ASSERT(denseSwitch(1) == 14); ASSERT(denseSwitch(2) == 15); @@ -106,7 +106,7 @@ testDenseSwitch(void) void testDenseIntSwitch(void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory volatile int val = 1000; volatile int ret = 0; @@ -154,3 +154,4 @@ testDenseIntSwitch(void) #endif #endif } + diff --git a/support/regression/tests/vaargs.c.in b/support/regression/tests/vaargs.c.in index 5f8004ec4..73553b114 100644 --- a/support/regression/tests/vaargs.c.in +++ b/support/regression/tests/vaargs.c.in @@ -47,7 +47,7 @@ returnSecondArg(int marker, ...) return i; } -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) // Lack of memory static {type2} returnSecondArgCopy(int marker, ...) { @@ -94,7 +94,7 @@ testArgs(void) LOG(("First arg: %u\n", returnFirstArg(marker, ({type1})123, ({type2})45, ({type3})67))); ASSERT(returnFirstArg(marker, ({type1})123, ({type2})45, ({type3})67) == ({type1})123); ASSERT(returnFirstArg(marker, ({type1})-123, ({type2})45, ({type3})67) == ({type1})-123); -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) // Lack of memory ASSERT(returnSecondArg(marker, ({type1})1, ({type2})-23, ({type3})64) == ({type2})-23); ASSERT(returnSecondArg(marker, ({type1})1, ({type2})8, ({type3})64) == ({type2})8); diff --git a/support/regression/tests/wchar.c.in b/support/regression/tests/wchar.c.in index 6145737d7..5e6c385b7 100644 --- a/support/regression/tests/wchar.c.in +++ b/support/regression/tests/wchar.c.in @@ -38,7 +38,7 @@ _Static_assert(WEOF <= WINT_MAX, "WEOF out of wint_t range"); static void wcharnorestart(void) { -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L && !defined(__SDCC_pdk14) // Not enough memory +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) // Not enough memory #if !(defined (__SDCC_pdk15) && defined(__SDCC_STACK_AUTO)) // Lack of code memory wchar_t w; char c[MB_LEN_MAX]; @@ -67,7 +67,7 @@ wcharnorestart(void) static void wcharstringnorestart(void) { -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Not enough memory +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L && !defined(__SDCC_pdk13) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Not enough memory wchar_t wcs1[5] = L"Test"; wchar_t wcs2[5]; char mbs[5 * MB_LEN_MAX]; @@ -106,7 +106,7 @@ wcharstringnorestart(void) static void wcharrestart(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L static mbstate_t ps; wchar_t w; @@ -134,7 +134,7 @@ wcharrestart(void) static void char16restart(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !(defined(__SDCC_mcs51) && defined(__SDCC_MODEL_SMALL)) #if !defined(__APPLE__) && !defined(__OpenBSD__) // As of 2023, macOS and OpenBSD are still not fully C11-compliant: they lack uchar.h. #if !defined(__FreeBSD__) || __FreeBSD_version >= 1302000 // Known FreeBSD 13.2 bug #272758. @@ -179,7 +179,7 @@ char16restart(void) static void char32restart(void) { -#if !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory +#if !defined( __SDCC_pdk13) && !defined( __SDCC_pdk14) && !defined( __SDCC_pdk15) // Lack of memory #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L #if !defined(__APPLE__) && !defined(__OpenBSD__) // As of 2023, macOS and OpenBSD are still not fully C11-compliant: they lack uchar.h. #if !defined(__FreeBSD__) || __FreeBSD_version >= 1302000 // Known FreeBSD 13.2 bug #272758. @@ -206,3 +206,4 @@ testwchar(void) { {test}(); } + diff --git a/support/regression/tests/wcsnlen.c b/support/regression/tests/wcsnlen.c index 062fb6c1b..5885d7a13 100644 --- a/support/regression/tests/wcsnlen.c +++ b/support/regression/tests/wcsnlen.c @@ -14,7 +14,6 @@ void testStr(void) { #if defined(__SDCC) || (_POSIX_C_SOURCE >= 200809L) || (__STDC_VERSION_STRING_H__ > 202311L) // wcsnlen is a C2Y function previously vailable in POSIX. -#ifndef __SDCC_pdk14 // lack of RAM const wchar_t hello4[] = L"hello4"; const wchar_t hello5[7]; @@ -50,6 +49,5 @@ testStr(void) ASSERT(wcsnlen(hello5, 7) == 6); #endif #endif -#endif } diff --git a/support/regression/tests/wcsto.c b/support/regression/tests/wcsto.c index c180db189..dc1bbc5cc 100644 --- a/support/regression/tests/wcsto.c +++ b/support/regression/tests/wcsto.c @@ -8,7 +8,7 @@ #include <errno.h> #include <wchar.h> -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_mcs51) // Lack of memory +#if !defined(__SDCC_mcs51) // Lack of memory wchar_t string0[] = L"-2"; wchar_t string1[] = L"-9999999999999999999999"; wchar_t string2[] = L"9999999999999999999999"; @@ -21,7 +21,7 @@ wchar_t string6[] = L"-0x23test"; void testWcsto(void) { -#if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_mcs51) // Lack of memory +#if !defined(__SDCC_mcs51) // Lack of memory wchar_t *e; ASSERT(wcstoul(L"", 0, 10) == 0); diff --git a/support/regression/tests/widebitintbitfield.c.in b/support/regression/tests/widebitintbitfield.c.in index a39e8450a..62211c85d 100644 --- a/support/regression/tests/widebitintbitfield.c.in +++ b/support/regression/tests/widebitintbitfield.c.in @@ -14,7 +14,7 @@ #define _BitInt _ExtInt #endif -#if __SDCC_BITINT_MAXWIDTH >= {width} // TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! +#if __SDCC_BITINT_MAXWIDTH >= {width} && ({width} <= 40 || !defined(__SDCC_pdk13)) // Lack of memory for pdk13. TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! typedef {sign} _BitInt({width}) bitinttype; struct { @@ -32,7 +32,7 @@ struct { void testWideBitIntBitField(void) { -#if __SDCC_BITINT_MAXWIDTH >= {width} // TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! +#if __SDCC_BITINT_MAXWIDTH >= {width} && ({width} <= 40 || !defined(__SDCC_pdk13)) // Lack of memory for pdk13. TODO: When we can regression-test in --std-c23 mode, use the standard macro from limits.h instead! #ifndef __clang_major__ // clang 11 doesn't support == between _BitInt and int, and does weird stuff when promoting bit-fields. ASSERT (_Generic(+bf2.bw, bitinttype: 1, default: 0) == 1); ASSERT (_Generic(+bf2.bw_1, bitinttype: 1, default: 0) == 1); diff --git a/support/regression/tests/zeropad.c.in b/support/regression/tests/zeropad.c.in index 158acbf6e..d6eed1313 100644 --- a/support/regression/tests/zeropad.c.in +++ b/support/regression/tests/zeropad.c.in @@ -23,7 +23,7 @@ #include <testfwk.h> #include <stddef.h> -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory #if defined (STORAGE_auto) void Zeropad(void) @@ -147,7 +147,7 @@ Zeropad (void) void testZeropad (void) { -#ifndef __SDCC_pdk14 // Lack of memory +#if !defined (__SDCC_pdk13) && !defined (__SDCC_pdk14) // Lack of memory Zeropad (); #if defined (STORAGE_auto) |