X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=support%2Fregression%2Ftests%2Fbitopcse.c;h=23f0571266a84c07092db7b8042186b91b7574cd;hb=7e7397e33149e0a075535a1a19511b00827693eb;hp=e12dcc5658e3deef4582075d8fe20ee69f092fdc;hpb=1be09553e462c2fa9a3dbe2394d650d967b271c5;p=fw%2Fsdcc diff --git a/support/regression/tests/bitopcse.c b/support/regression/tests/bitopcse.c index e12dcc56..23f05712 100644 --- a/support/regression/tests/bitopcse.c +++ b/support/regression/tests/bitopcse.c @@ -1,57 +1,58 @@ /* Test CSE with |&^ - type: bit, char, short, long + type: bool, char, short, long */ #include +#include /* This is not only a regression test, the focus of this test is more on the generated code (volatile!). */ -#define _{type} +#define TYPE_{type} +#if defined(TYPE_bool) && !defined(SDCC) +# define UNSIGNED +#else +# define UNSIGNED unsigned +#endif -#if defined(PORT_HOST) || defined(SDCC_z80) || defined(SDCC_gbz80) -# define NO_BIT_TYPE +#if defined(TYPE_bool) +# define _data +#else +# define _data idata #endif -#if defined(_bit) && !defined(NO_BIT_TYPE) +#if defined(TYPE_bool) && defined(__bool_true_false_are_defined) # define MASK 1 -# define idata -#elif defined(_bit) && defined(NO_BIT_TYPE) +#elif defined(TYPE_bool) && !defined(__bool_true_false_are_defined) # if defined(PORT_HOST) # define MASK 0xffffffff # else # define MASK 0xffff # endif -# define idata -# define bit int -#elif defined(_char) +# define bool int +#elif defined(TYPE_char) # define MASK 0xff -#elif defined(_short) +#elif defined(TYPE_short) # define MASK 0xffff -#elif defined(_long) +#elif defined(TYPE_long) # define MASK 0xffffffff #else -# warning Unknow type -#endif - -#if defined(PORT_HOST) || defined(SDCC_z80) || defined(SDCC_gbz80) -# define idata -# define code +# warning Unknown type #endif /* the variable 'mask' is only defined to see if MASK is correctly set up */ -code unsigned long mask = MASK; +const unsigned long mask = MASK; volatile {type} v; - volatile unsigned {type} uv; + volatile UNSIGNED {type} uv; /* an array would be nicer, but an array of bits isn't possible */ -idata {type} a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, - a20; -idata unsigned {type} ua0, ua1, ua2, ua3, ua4, ua5, ua6; -idata {type} b; -idata volatile unsigned {type} ub = 0xbe; +_data {type} a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , + a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, + a20; +_data UNSIGNED {type} ua0, ua1, ua2, ua3, ua4, ua5, ua6; +_data {type} b; +_data volatile UNSIGNED {type} ub = 0xbe; void testcse(void) @@ -111,23 +112,17 @@ testcse(void) ASSERT( a0 == 0); ASSERT( a1 == 0); ASSERT( a2 == b); -#if defined(_bit) && !defined(NO_BIT_TYPE) +#if defined(TYPE_bool) && defined(__bool_true_false_are_defined) ASSERT( a3 == 1); -#else - ASSERT( a3 == ({type}) 0x33); -#endif - ASSERT(ua0 == ub); -#if defined(_bit) && !defined(NO_BIT_TYPE) ASSERT(ua1 == 1); -#else - ASSERT(ua1 == ({type}) 0x7b); -#endif - ASSERT( a4 == b); -#if defined(_bit) && !defined(NO_BIT_TYPE) ASSERT( a5 == 1); #else + ASSERT( a3 == ({type}) 0x33); + ASSERT(ua1 == ({type}) 0x7b); ASSERT( a5 == ({type}) 0x33); #endif + ASSERT(ua0 == ub); + ASSERT( a4 == b); ASSERT( a6 == 0); // ASSERT( a7 == ); // ASSERT(ua2 == );