This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Small update to reversed_comparison_code
- To: jh at suse dot cz
- Subject: Re: Small update to reversed_comparison_code
- From: Jeffrey Oldham <oldham at codesourcery dot com>
- Date: Thu, 1 Mar 2001 11:20:31 -0800
- Cc: Jeffrey Oldham <oldham at codesourcery dot com>, gcc-patches at gcc dot gnu dot org
- Organization: CodeSourcery LLC
Your 2001-02-28 patch to gcc/jump.c:reversed_comparison_code_parts()
breaks gcc bootstrapping on mips-sgi-irix6.5 for "-O1 -mabi=64". To
reproduce the problem on a i686-pc-linux-gnu or similar configuration,
build a cross-compiler for mips-sgi-irix6.5. Then compile the
attached .i file using these commands: "cc1 -O1 wrtfmt.i -mabi=64".
wrtfmt.i is preprocessed code from libf2c/libI77/wrtfmt.c.
Debugging revealed that gcc/optabs.c:prepare_float_lib_cmp() is sent a
UNGE code with a DFmode mode. The UNGE is produced from reversing an
LT in gcc/loop.c:canonicalize_condition(). See a call to
reversed_comparison_code().
Backing out the patch still permits i686-pc-linux-gnu to bootstrap and
seems to permit mips-sgi-irix6.5 to finish its bootstrap compilation.
(A full Irix bootstrap from scratch is still running.)
(I did try leaving the first part of the patch, but invoking the
cross-compiler with -ffast-math caused the same problem.)
Thanks for your help in investigating this,
Jeffrey D. Oldham
oldham@codesourcery.com
Index: jump.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/jump.c,v
retrieving revision 1.155
retrieving revision 1.156
diff -c -p -r1.155 -r1.156
*** jump.c 2001/02/18 23:51:21 1.155
--- jump.c 2001/02/28 16:19:16 1.156
*************** reversed_comparison_code_parts (code, ar
*** 1782,1788 ****
case UNLE:
case UNGT:
case UNGE:
! /* We don't have safe way to reverse these yet. */
return UNKNOWN;
default:
break;
--- 1782,1792 ----
case UNLE:
case UNGT:
case UNGE:
! /* We don't have safe way to reverse these yet - we would need
! ordered compares that may not trap. */
! if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT
! || flag_fast_math)
! return reverse_condition_maybe_unordered (code);
return UNKNOWN;
default:
break;
*************** reversed_comparison_code_parts (code, ar
*** 1840,1845 ****
--- 1844,1855 ----
return UNKNOWN;
}
}
+
+ /* In case of floating point modes, we may reverse here, since
+ we will be always converting an ordered compare to unordered.
+ The unsafe code has been caught earlier. */
+ if (FLOAT_MODE_P (mode))
+ return reverse_condition_maybe_unordered (code);
/* An integer condition. */
if (GET_CODE (arg0) == CONST_INT
# 1 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/wrtfmt.c"
# 1 "/users/joldham/pooma/dev0/gcc/libf2c/f2c.h" 1
# 35 "/users/joldham/pooma/dev0/gcc/libf2c/f2c.h"
# 1 "../g2c.h" 1
# 21 "../g2c.h"
typedef __g77_integer integer;
typedef __g77_uinteger uinteger;
typedef char *address;
typedef short int shortint;
typedef float real;
typedef double doublereal;
typedef struct { real r, i; } complex;
typedef struct { doublereal r, i; } doublecomplex;
typedef __g77_integer logical;
typedef short int shortlogical;
typedef char logical1;
typedef char integer1;
typedef __g77_longint longint;
typedef __g77_ulongint ulongint;
# 55 "../g2c.h"
typedef __g77_integer flag;
typedef __g77_integer ftnlen;
typedef __g77_integer ftnint;
typedef struct
{ flag cierr;
ftnint ciunit;
flag ciend;
char *cifmt;
ftnint cirec;
} cilist;
typedef struct
{ flag icierr;
char *iciunit;
flag iciend;
char *icifmt;
ftnint icirlen;
ftnint icirnum;
} icilist;
typedef struct
{ flag oerr;
ftnint ounit;
char *ofnm;
ftnlen ofnmlen;
char *osta;
char *oacc;
char *ofm;
ftnint orl;
char *oblnk;
} olist;
typedef struct
{ flag cerr;
ftnint cunit;
char *csta;
} cllist;
typedef struct
{ flag aerr;
ftnint aunit;
} alist;
typedef struct
{ flag inerr;
ftnint inunit;
char *infile;
ftnlen infilen;
ftnint *inex;
ftnint *inopen;
ftnint *innum;
ftnint *innamed;
char *inname;
ftnlen innamlen;
char *inacc;
ftnlen inacclen;
char *inseq;
ftnlen inseqlen;
char *indir;
ftnlen indirlen;
char *infmt;
ftnlen infmtlen;
char *inform;
ftnint informlen;
char *inunf;
ftnlen inunflen;
ftnint *inrecl;
ftnint *innrec;
char *inblank;
ftnlen inblanklen;
} inlist;
union Multitype {
integer1 g;
shortint h;
integer i;
real r;
doublereal d;
complex c;
doublecomplex z;
};
typedef union Multitype Multitype;
struct Vardesc {
char *name;
char *addr;
ftnlen *dims;
int type;
};
typedef struct Vardesc Vardesc;
struct Namelist {
char *name;
Vardesc **vars;
int nvars;
};
typedef struct Namelist Namelist;
# 193 "../g2c.h"
typedef int (*U_fp)();
typedef shortint (*J_fp)();
typedef integer (*I_fp)();
typedef real (*R_fp)();
typedef doublereal (*D_fp)(), (*E_fp)();
typedef void (*C_fp)();
typedef void (*Z_fp)();
typedef logical (*L_fp)();
typedef shortlogical (*K_fp)();
typedef void (*H_fp)();
typedef int (*S_fp)();
typedef void C_f;
typedef void H_f;
typedef void Z_f;
typedef doublereal E_f;
# 36 "/users/joldham/pooma/dev0/gcc/libf2c/f2c.h" 2
# 2 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/wrtfmt.c" 2
# 1 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fio.h" 1
# 1 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 1 3
# 14 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
# 1 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdarg.h" 1 3
# 43 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 15 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 2 3
#ident "$Revision: 1.75 $"
# 50 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
# 1 "/usr/include/standards.h" 1 3
# 19 "/usr/include/standards.h" 3
#ident "$Id: standards.h,v 1.19 1997/12/15 21:30:25 jph Exp $"
# 51 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 2 3
# 1 "/usr/include/sgidefs.h" 1 3
# 19 "/usr/include/sgidefs.h" 3
#ident "$Revision: 1.11 $"
# 136 "/usr/include/sgidefs.h" 3
typedef int __int32_t;
typedef unsigned __uint32_t;
typedef long __int64_t;
typedef unsigned long __uint64_t;
# 224 "/usr/include/sgidefs.h" 3
typedef __int64_t __psint_t;
typedef __uint64_t __psunsigned_t;
# 235 "/usr/include/sgidefs.h" 3
typedef __int64_t __scint_t;
typedef __uint64_t __scunsigned_t;
# 52 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 2 3
# 60 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
typedef unsigned long size_t;
# 70 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
typedef long ssize_t;
typedef long fpos_t;
typedef __int64_t off64_t;
# 98 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
typedef long off_t;
# 117 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
typedef char *__not_va_list__;
# 187 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
typedef struct
# 199 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
{
long _cnt;
unsigned char *_ptr;
unsigned char *_base;
unsigned char _reserved[2];
unsigned short _flag;
unsigned int _file;
# 220 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
} FILE;
extern FILE __iob[100];
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);
extern int fprintf(FILE *, const char *, ...);
extern int fscanf(FILE *, const char *, ...);
extern int printf(const char *, ...);
extern int scanf(const char *, ...);
extern int sprintf(char *, const char *, ...);
extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, char *);
extern int vprintf(const char *, char *);
extern int vsprintf(char *, const char *, char *);
# 271 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);
extern int getc(FILE *);
extern int getchar(void);
extern char *gets(char *);
extern int putc(int, FILE *);
extern int putchar(int);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
#pragma int_to_unsigned fread
extern size_t fwrite(const void *, size_t, size_t, FILE *);
#pragma int_to_unsigned fwrite
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);
extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);
extern void perror(const char *);
extern int __filbuf(FILE *);
extern int __flsbuf(int, FILE *);
extern FILE *fdopen(int, const char *);
extern int fileno(FILE *);
# 317 "/users/joldham/pooma/dev0/gcc/objdir/gcc/include/stdio.h" 3
extern FILE *popen(const char *, const char *);
extern int pclose(FILE *);
# 2 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fio.h" 2
# 1 "/usr/include/errno.h" 1 3
#ident "$Revision: 1.28 $"
# 36 "/usr/include/errno.h" 3
# 1 "/usr/include/sys/errno.h" 1 3
# 13 "/usr/include/sys/errno.h" 3
#ident "$Revision: 3.44 $"
# 35 "/usr/include/sys/errno.h" 3
# 1 "/usr/include/standards.h" 1 3
# 36 "/usr/include/sys/errno.h" 2 3
# 37 "/usr/include/errno.h" 2 3
# 60 "/usr/include/errno.h" 3
extern int errno;
# 3 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fio.h" 2
# 1 "/usr/include/string.h" 1 3
#ident "$Revision: 1.41 $"
# 38 "/usr/include/string.h" 3
# 1 "/usr/include/standards.h" 1 3
# 39 "/usr/include/string.h" 2 3
# 67 "/usr/include/string.h" 3
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern char *strcpy(char *, const char *);
extern char *strncpy(char *, const char *, size_t);
extern char *strcat(char *, const char *);
extern char *strncat(char *, const char *, size_t);
extern void *memccpy(void *, const void *, int, size_t);
extern int memcmp(const void *, const void *, size_t);
extern int strcmp(const char *, const char *);
extern int strcoll(const char *, const char *);
extern int strncmp(const char *, const char *, size_t);
extern size_t strxfrm(char *, const char *, size_t);
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern size_t strcspn(const char *, const char *);
#pragma int_to_unsigned strcspn
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern size_t strspn(const char *, const char *);
#pragma int_to_unsigned strspn
extern char *strstr(const char *, const char *);
extern char *strtok(char *, const char *);
extern void *memset(void *, int, size_t);
extern char *strerror(int);
extern size_t strlen(const char *);
#pragma int_to_unsigned strlen
# 9 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fio.h" 2
# 26 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fio.h"
typedef long uiolen;
typedef struct
{ FILE *ufd;
char *ufnm;
long uinode;
int udev;
int url;
flag useek;
flag ufmt;
flag urw;
flag ublnk;
flag uend;
flag uwrt;
flag uscrtch;
} unit;
extern int f__init;
extern cilist *f__elist;
extern flag f__reading,f__external,f__sequential,f__formatted;
# 65 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fio.h"
extern int (*f__getn)(void);
extern void (*f__putn)(int);
extern void x_putc(int);
extern long f__inode(char*,int*);
extern void sig_die(char*,int);
extern void f__fatal(int,char*);
extern int t_runc(alist*);
extern int f__nowreading(unit*), f__nowwriting(unit*);
extern int fk_open(int,int,ftnint);
extern int en_fio(void);
extern void f_init(void);
extern int (*f__donewrec)(void), t_putc(int), x_wSL(void);
extern void b_char(char*,char*,ftnlen), g_char(char*,ftnlen,char*);
extern int c_sfe(cilist*), z_rnew(void);
extern int isatty(int);
extern int err__fl(int,int,char*);
extern int xrd_SL(void);
extern int f__putbuf(int);
extern int (*f__doend)(void);
extern FILE *f__cf;
extern unit *f__curunit;
extern unit f__units[];
extern int f__recpos;
extern int f__cursor;
extern int f__hiwater;
# 3 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/wrtfmt.c" 2
# 1 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fmt.h" 1
struct syl
{ int op;
int p1;
union { int i[2]; char *s;} p2;
};
# 42 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fmt.h"
extern int f__pc,f__parenlvl,f__revloc;
typedef union
{ real pf;
doublereal pd;
} ufloat;
typedef union
{ short is;
signed
char ic;
integer il;
longint ili;
} Uint;
# 67 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fmt.h"
extern int (*f__doed)(struct syl*, char*, ftnlen),(*f__doned)(struct syl*);
extern int (*f__dorevert)(void);
extern void fmt_bg(void);
extern int pars_f(char*);
extern int rd_ed(struct syl*, char*, ftnlen),rd_ned(struct syl*);
extern int w_ed(struct syl*, char*, ftnlen),w_ned(struct syl*);
extern int wrt_E(ufloat*, int, int, int, ftnlen);
extern int wrt_F(ufloat*, int, int, ftnlen);
extern int wrt_L(Uint*, int, ftnlen);
extern flag f__cblank,f__cplus,f__workdone, f__nonl;
extern char *f__fmtbuf;
extern int f__fmtlen;
extern int f__scale;
extern int f__cursor;
# 100 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/fmt.h"
extern char *f__icvt(longint, int*, int*, int);
# 4 "/users/joldham/pooma/dev0/gcc/libf2c/libI77/wrtfmt.c" 2
extern icilist *f__svic;
extern char *f__icptr;
static int
mv_cur(void)
{
int cursor = f__cursor;
f__cursor = 0;
if(f__external == 0) {
if(cursor < 0) {
if(f__hiwater < f__recpos)
f__hiwater = f__recpos;
f__recpos += cursor;
f__icptr += cursor;
if(f__recpos < 0)
do {if(f__elist->cierr) {f__init &= ~2; errno= 110;} else f__fatal(110,"left off"); return(110);} while(0);
}
else if(cursor > 0) {
if(f__recpos + cursor >= f__svic->icirlen)
do {if(f__elist->cierr) {f__init &= ~2; errno= 110;} else f__fatal(110,"recend"); return(110);} while(0);
if(f__hiwater <= f__recpos)
for(; cursor > 0; cursor--)
(*f__putn)(' ');
else if(f__hiwater <= f__recpos + cursor) {
cursor -= f__hiwater - f__recpos;
f__icptr += f__hiwater - f__recpos;
f__recpos = f__hiwater;
for(; cursor > 0; cursor--)
(*f__putn)(' ');
}
else {
f__icptr += cursor;
f__recpos += cursor;
}
}
return(0);
}
if (cursor > 0) {
if(f__hiwater <= f__recpos)
for(;cursor>0;cursor--) (*f__putn)(' ');
else if(f__hiwater <= f__recpos + cursor) {
cursor -= f__hiwater - f__recpos;
f__recpos = f__hiwater;
for(; cursor > 0; cursor--)
(*f__putn)(' ');
}
else {
f__recpos += cursor;
}
}
else if (cursor < 0)
{
if(cursor + f__recpos < 0)
do {if(f__elist->cierr) {f__init &= ~2; errno= 110;} else f__fatal(110,"left off"); return(110);} while(0);
if(f__hiwater < f__recpos)
f__hiwater = f__recpos;
f__recpos += cursor;
}
return(0);
}
static int
wrt_Z(Uint *n, int w, int minlen, ftnlen len)
{
register char *s, *se;
register int i, w1;
static int one = 1;
static char hex[] = "0123456789ABCDEF";
s = (char *)n;
--len;
if (*(char *)&one) {
se = s;
s += len;
i = -1;
}
else {
se = s + len;
i = 1;
}
for(;; s += i)
if (s == se || *s)
break;
w1 = (i*(se-s) << 1) + 1;
if (*s & 0xf0)
w1++;
if (w1 > w)
for(i = 0; i < w; i++)
(*f__putn)('*');
else {
if ((minlen -= w1) > 0)
w1 += minlen;
while(--w >= w1)
(*f__putn)(' ');
while(--minlen >= 0)
(*f__putn)('0');
if (!(*s & 0xf0)) {
(*f__putn)(hex[*s & 0xf]);
if (s == se)
return 0;
s += i;
}
for(;; s += i) {
(*f__putn)(hex[*s >> 4 & 0xf]);
(*f__putn)(hex[*s & 0xf]);
if (s == se)
break;
}
}
return 0;
}
static int
wrt_I(Uint *n, int w, ftnlen len, register int base)
{ int ndigit,sign,spare,i;
longint x;
char *ans;
if(len==sizeof(integer)) x=n->il;
else if(len == sizeof(char)) x = n->ic;
else if (len == sizeof(longint)) x = n->ili;
else x=n->is;
ans=f__icvt(x,&ndigit,&sign, base);
spare=w-ndigit;
if(sign || f__cplus) spare--;
if(spare<0)
for(i=0;i<w;i++) (*f__putn)('*');
else
{ for(i=0;i<spare;i++) (*f__putn)(' ');
if(sign) (*f__putn)('-');
else if(f__cplus) (*f__putn)('+');
for(i=0;i<ndigit;i++) (*f__putn)(*ans++);
}
return(0);
}
static int
wrt_IM(Uint *n, int w, int m, ftnlen len, int base)
{ int ndigit,sign,spare,i,xsign;
longint x;
char *ans;
if(sizeof(integer)==len) x=n->il;
else if(len == sizeof(char)) x = n->ic;
else if (len == sizeof(longint)) x = n->ili;
else x=n->is;
ans=f__icvt(x,&ndigit,&sign, base);
if(sign || f__cplus) xsign=1;
else xsign=0;
if(ndigit+xsign>w || m+xsign>w)
{ for(i=0;i<w;i++) (*f__putn)('*');
return(0);
}
if(x==0 && m==0)
{ for(i=0;i<w;i++) (*f__putn)(' ');
return(0);
}
if(ndigit>=m)
spare=w-ndigit-xsign;
else
spare=w-m-xsign;
for(i=0;i<spare;i++) (*f__putn)(' ');
if(sign) (*f__putn)('-');
else if(f__cplus) (*f__putn)('+');
for(i=0;i<m-ndigit;i++) (*f__putn)('0');
for(i=0;i<ndigit;i++) (*f__putn)(*ans++);
return(0);
}
static int
wrt_AP(char *s)
{ char quote;
int i;
if(f__cursor && (i = mv_cur()))
return i;
quote = *s++;
for(;*s;s++)
{ if(*s!=quote) (*f__putn)(*s);
else if(*++s==quote) (*f__putn)(*s);
else return(1);
}
return(1);
}
static int
wrt_H(int a, char *s)
{
int i;
if(f__cursor && (i = mv_cur()))
return i;
while(a--) (*f__putn)(*s++);
return(1);
}
wrt_L(Uint *n, int len, ftnlen sz)
{ int i;
long x;
if(sizeof(long)==sz) x=n->il;
else if(sz == sizeof(char)) x = n->ic;
else x=n->is;
for(i=0;i<len-1;i++)
(*f__putn)(' ');
if(x) (*f__putn)('T');
else (*f__putn)('F');
return(0);
}
static int
wrt_A(char *p, ftnlen len)
{
while(len-- > 0) (*f__putn)(*p++);
return(0);
}
static int
wrt_AW(char * p, int w, ftnlen len)
{
while(w>len)
{ w--;
(*f__putn)(' ');
}
while(w-- > 0)
(*f__putn)(*p++);
return(0);
}
static int
wrt_G(ufloat *p, int w, int d, int e, ftnlen len)
{ double up = 1,x;
int i=0,oldscale,n,j;
x = len==sizeof(real)?p->pf:p->pd;
if(x < 0 ) x = -x;
if(x<.1) {
if (x != 0.)
return(wrt_E(p,w,d,e,len));
i = 1;
goto have_i;
}
for(;i<=d;i++,up*=10)
{ if(x>=up) continue;
have_i:
oldscale = f__scale;
f__scale = 0;
if(e==0) n=4;
else n=e+2;
i=wrt_F(p,w-n,d-i,len);
for(j=0;j<n;j++) (*f__putn)(' ');
f__scale=oldscale;
return(i);
}
return(wrt_E(p,w,d,e,len));
}
w_ed(struct syl *p, char *ptr, ftnlen len)
{
int i;
if(f__cursor && (i = mv_cur()))
return i;
switch(p->op)
{
default:
fprintf((&__iob[2]),"w_ed, unexpected code: %d\n", p->op);
sig_die(f__fmtbuf, 1);
case 7: return(wrt_I((Uint *)ptr,p->p1,len, 10));
case 10:
return(wrt_IM((Uint *)ptr,p->p1,p->p2.i[0],len,10));
case 32: return(wrt_I((Uint *)ptr, p->p1, len, 8));
case 34:
return(wrt_IM((Uint *)ptr,p->p1,p->p2.i[0],len,8));
case 29: return(wrt_L((Uint *)ptr,p->p1, len));
case 30: return(wrt_A(ptr,len));
case 31:
return(wrt_AW(ptr,p->p1,len));
case 26:
case 24:
case 25:
return(wrt_E((ufloat *)ptr,p->p1,p->p2.i[0],p->p2.i[1],len));
case 27:
case 28:
return(wrt_G((ufloat *)ptr,p->p1,p->p2.i[0],p->p2.i[1],len));
case 23: return(wrt_F((ufloat *)ptr,p->p1,p->p2.i[0],len));
case 35: return(wrt_Z((Uint *)ptr,p->p1,0,len));
case 36:
return(wrt_Z((Uint *)ptr,p->p1,p->p2.i[0],len));
}
}
w_ned(struct syl *p)
{
switch(p->op)
{
default: fprintf((&__iob[2]),"w_ned, unexpected code: %d\n", p->op);
sig_die(f__fmtbuf, 1);
case 5:
return((*f__donewrec)());
case 15: f__cursor = p->p1-f__recpos - 1;
return(1);
case 13: f__cursor -= p->p1;
if(f__cursor < -f__recpos)
f__cursor = -f__recpos;
return(1);
case 14:
case 4:
f__cursor += p->p1;
return(1);
case 11:
return(wrt_AP(p->p2.s));
case 12:
return(wrt_H(p->p1,p->p2.s));
}
}