1 /* 2 bug-2195.c 3 4 A peephole optimizer bug in calls to __z88dk_fastcall. 5 */ 6 7 #if !defined(__SDCC_z80) && !defined(__SDCC_z180) && !defined(__SDCC_r2k) && !defined(__SDCC_r3ka) && !defined(__SDCC_tlcs90) 8 #define __z88dk_fastcall 9 #endif 10 11 #include <string.h> 12 #include <testfwk.h> 13 14 char v[5]; 15 kputchar(unsigned char c)16void kputchar(unsigned char c) __z88dk_fastcall 17 { 18 static int i; 19 v[i++] = c; 20 } 21 kputs(const char * p)22void kputs(const char *p) __z88dk_fastcall 23 { 24 while(*p) 25 kputchar(*p++); /* The bug resulted in the peephole optimizer optimizing out the parameter to this call */ 26 } 27 testBug(void)28void testBug(void) 29 { 30 const char *s = "test"; 31 kputs(s); 32 ASSERT(!strcmp(s, v)); 33 } 34 35