This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Small update to reversed_comparison_code


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));
        }
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]