1 /* 2 bug-2912.c a bug in handling non-spilt register parameters in __z88dk_fastcall functions. 3 */ 4 5 #include <testfwk.h> 6 7 #if !defined(__SDCC_z80) && !defined(__SDCC_z180) && !defined(__SDCC_r2k) && !defined(__SDCC_r3ka) && !defined(__SDCC_tlcs90) && !defined(__SDCC_ez80_z80) 8 #define __z88dk_fastcall 9 #endif 10 11 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // lack of memory 12 float y, z; 13 m32_sinf(float x)14float m32_sinf (float x) __z88dk_fastcall 15 { 16 y = x; 17 } 18 m32_cosf(float x)19float m32_cosf (float x) __z88dk_fastcall 20 { 21 z = y; 22 } 23 m32_tanf(float x)24float m32_tanf (float x) __z88dk_fastcall 25 { 26 return m32_sinf(x)/m32_cosf(x); 27 } 28 #endif 29 testBug(void)30void testBug(void) 31 { 32 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // lack of memory 33 volatile float x = 23.0f; 34 35 m32_tanf(x); 36 37 ASSERT(y == x); 38 ASSERT(z == x); 39 #endif 40 } 41 42