version 1.29, 2002/08/28 17:50:29
|
version 1.30, 2002/09/14 08:34:03
|
Line 166 typedef Label *Xt;
|
Line 166 typedef Label *Xt;
|
#endif /* !defined(DOUBLY_INDIRECT) */ |
#endif /* !defined(DOUBLY_INDIRECT) */ |
|
|
#ifdef GFORTH_DEBUGGING |
#ifdef GFORTH_DEBUGGING |
/* #define NAME(string) saved_ip=ip;*/ |
#define NAME(string) { saved_ip=ip; asm(""); } |
#define NAME(string) *(Cell *)&saved_ip=(Cell)ip; |
/* the asm here is to avoid reordering of following stuff above the |
/* the casting is there to get aliasing with loads at the start of the |
assignment; this is an old-style asm (no operands), and therefore |
primitives, so the store is not moved down across them; does not |
is treated like "asm volatile ..."; i.e., it prevents most |
work for FP-stack loads; ideally the -fno-strict-aliasing flag |
reorderings across itself. We want the assignment above first, |
should do this for us, but at least in gcc-2.95 it does not */ |
because the stack loads may already cause a stack underflow. */ |
#elif DEBUG |
#elif DEBUG |
# define NAME(string) fprintf(stderr,"%08lx: "string"\n",(Cell)ip); |
# define NAME(string) fprintf(stderr,"%08lx: "string"\n",(Cell)ip); |
#else |
#else |