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: Request Reversal


On Mon, Mar 12, 2001 at 04:40:53PM +0100, Jan Hubicka wrote:
> > On Mon, Mar 12, 2001 at 04:29:48PM +0100, Jan Hubicka wrote:
> > > > May we just have the patch reversed until the problems are fixed?  The
> > > > patch is an optimization that breaks correctness; bootstrapping on
> > > > mips-sig-irix6.5 and arm-linux have been broken since 01March.  OtherQ
> > > Would be possible to review instead the patch fixing the real problem I've
> > > sent to list some time ago?
> > 
> > Please send a reference, with a carbon copy to the appropriate email
> > list.
> 
> http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00465.html
>   - Make mips to not abort on unordered conditional moves
> http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00462.html
>   - Re: [patches] Unordered compares and backends lacking them</a>
> 
> I am willing to investigate the ARM problems as well. I really believe that
> we should make gcc working well with unordered compares and if we reverse
> such patch, we just keep the problems unnoticed.

The goal of optimizing gcc to work well with unordered compares is
admirable, but an overriding goal is to have gcc work correctly.

> I can test the i386 code, but other backends I can't.  Only problematic
> ones are those having conditional moves, so just few modern backends needs
> investigating.

I understand you cannot check all backends, but you can check that
cross compilers to the known problem cases of arm-linux and
mips-sgi-irix6.5 compile.  You can also check that the .i files we
have provided compile correctly using these cross compilers.

After you submit your change, I will do what I can, i.e., notify you
if it fails on Irix, providing you with evidence.  If it fails, you
will then need to work on the code to ensure correctness.

(I have again attached the files demonstrating a failure on
mips-sgi-irix6.5.  

(On Fri, Mar 02, 2001 at 11:59:37AM +0100, Jan Hubicka wrote:
> > 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.
> OK, I am getting crash in code you pointed out.)

Thanks,
Jeffrey D. Oldham
oldham@codesourcery.com
# 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]