root@SUN.COM (Operator) (12/17/88)
Richard, Sorry about not including the MH file with gcc -E output. Hopefully this is better. The problem is that, for this file, -O, -fstrength-reduce, and -finline-functions appear to be mutually exclusive. First, a transcript of the attempted compilations, both unsuccessful and successful; then followed by the gcc -E output at the end. I squeezed as many blank lines as I could ... - Greg Earle Sun Los Angeles Consulting earle@Sun.COM Script started on Tue Dec 6 11:26:10 1988 poseur:2:21 # pwd /usr/share/src/local/mh-6.6/uip poseur:2:22 # make DESTDIR= CC=gcc sortm.o gcc -O -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE='"/usr/local/bin/less"' -DMSGPROT='"0600"' -DSBACKUP='"\043"' -DSENDMTS -traditional -v -fstrength-reduce -finline-functions -fcombine-regs -W -sun3 -c sortm.c gcc version 1.31 /usr/local/lib/gcc-cpp -v -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE="/usr/local/bin/less" -DMSGPROT="0600" -DSBACKUP="\043" -DSENDMTS -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -traditional -D__HAVE_68881__ -Dmc68020 s ortm.c /tmp/cca08435.cpp GNU CPP version 1.31 /usr/local/lib/gcc-cc1 /tmp/cca08435.cpp -quiet -dumpbase sortm.c -fstrength-reduce -finline-functions -fcombine-regs -O -W -traditional -version -o /tmp/cca08435.s GNU C version 1.31 (68k, MIT syntax) compiled by GNU C version 1.31. [ Warnings deleted ] gcc: Program cc1 got fatal signal 11. *** Error code 1 make: Fatal error: Command failed for target `sortm.o' poseur:2:23 # dbx -I/usr/share/src/local/gcc-1.31 /usr/local/lib/gcc-cc1 Reading symbolic information... Read 47504 symbols (dbx) where record_giv(v = 0xeffccba, insn = 0xa6730, src_regno = 58, dest_regno = 136, mult_val = 0xa6a14, add_val = 0x87a3c, benefit = 2, forces = (nil), forces2 = (nil), type = DEST_REG, maybe_never = 1, location = (nil)), line 2766 in "loop.c" strength_reduce(scan_start = 0xa3832, end = 0xa65b0, loop_top = 0xa64f8, insn_count = 160, loop_start = 0xa38a2, loop_end = 0xa65b0, nregs = 141), line 2274 in "loop.c" scan_loop(loop_start = 0xa38a2, end = 0xa65b0, nregs = 141), line 714 in "loop.c" loop_optimize(f = 0x1, dumpfile = (nil)), line 272 in "loop.c" rest_of_compilation(decl = 0xa6730), line 1223 in "toplev.c" finish_function(), line 3331 in "c-decl.c" yyparse(), line 245 in "c-parse.y" compile_file(name = 0xa6a14 ""), line 919 in "toplev.c" main(argc = 555580, argv = 0xa6730, envp = 0xefff9dc), line 1640 in "toplev.c" (dbx) quit poseur:2:25 # rm -rf sortm.o poseur:2:26 # make DESTDIR= CC=gcc sortm.o gcc -O -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE='"/usr/local/bin/less"' -DMSGPROT='"0600"' -DSBACKUP='"\043"' -DSENDMTS -v -fstrength-reduce -finline-functions -fcombine-regs -W -sun3 -c sortm.c gcc version 1.31 /usr/local/lib/gcc-cpp -v -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE="/usr/local/bin/less" -DMSGPROT="0600" -DSBACKUP="\043" -DSENDMTS -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -D__HAVE_68881__ -Dmc68020 sortm.c /tmp/c ca08455.cpp GNU CPP version 1.31 ../h/mh.h:20: warning: garbage at end of #ifndef argument /usr/local/lib/gcc-cc1 /tmp/cca08455.cpp -quiet -dumpbase sortm.c -fstrength-reduce -finline-functions -fcombine-regs -O -W -version -o /tmp/cca08455.s GNU C version 1.31 (68k, MIT syntax) compiled by GNU C version 1.31. [ More warnings deleted ] gcc: Program cc1 got fatal signal 11. *** Error code 1 make: Fatal error: Command failed for target `sortm.o' poseur:2:28 # rm -rf sortm.o poseur:2:29 # make DESTDIR= CC=gcc sortm.o gcc -O -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE='"/usr/local/bin/less"' -DMSGPROT='"0600"' -DSBACKUP='"\043"' -DSENDMTS -v -fstrength-reduce -finline-functions -W -sun3 -c sortm.c gcc version 1.31 /usr/local/lib/gcc-cpp -v -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE="/usr/local/bin/less" -DMSGPROT="0600" -DSBACKUP="\043" -DSENDMTS -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -D__HAVE_68881__ -Dmc68020 sortm.c /tmp/c ca08470.cpp GNU CPP version 1.31 ../h/mh.h:20: warning: garbage at end of #ifndef argument /usr/local/lib/gcc-cc1 /tmp/cca08470.cpp -quiet -dumpbase sortm.c -fstrength-reduce -finline-functions -O -W -version -o /tmp/cca08470.s GNU C version 1.31 (68k, MIT syntax) compiled by GNU C version 1.31. [ Warnings deleted again ... ] gcc: Program cc1 got fatal signal 11. *** Error code 1 make: Fatal error: Command failed for target `sortm.o' poseur:2:32 # !make make DESTDIR= CC=gcc sortm.o gcc -O -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE='"/usr/local/bin/less"' -DMSGPROT='"0600"' -DSBACKUP='"\043"' -DSENDMTS -v -fstrength-reduce -fcombine-regs -W -sun3 -c sortm.c gcc version 1.31 /usr/local/lib/gcc-cpp -v -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE="/usr/local/bin/less" -DMSGPROT="0600" -DSBACKUP="\043" -DSENDMTS -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -D__HAVE_68881__ -Dmc68020 sortm.c /tmp/c ca08485.cpp GNU CPP version 1.31 ../h/mh.h:20: warning: garbage at end of #ifndef argument /usr/local/lib/gcc-cc1 /tmp/cca08485.cpp -quiet -dumpbase sortm.c -fstrength-reduce -fcombine-regs -O -W -version -o /tmp/cca08485.s GNU C version 1.31 (68k, MIT syntax) compiled by GNU C version 1.31. as -mc68020 /tmp/cca08485.s -o sortm.o [ WORKED! ] poseur:2:36 # rm -rf sortm.o poseur:2:37 # !make make DESTDIR= CC=gcc sortm.o gcc -O -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE='"/usr/local/bin/less"' -DMSGPROT='"0600"' -DSBACKUP='"\043"' -DSENDMTS -v -finline-functions -fcombine-regs -W -sun3 -c sortm.c gcc version 1.31 /usr/local/lib/gcc-cpp -v -DMHE -DBSD42 -DBSD43 -DBERK -DRPATHS -DNETWORK -DMORE="/usr/local/bin/less" -DMSGPROT="0600" -DSBACKUP="\043" -DSENDMTS -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -D__HAVE_68881__ -Dmc68020 sortm.c /tmp/c ca08503.cpp GNU CPP version 1.31 ../h/mh.h:20: warning: garbage at end of #ifndef argument /usr/local/lib/gcc-cc1 /tmp/cca08503.cpp -quiet -dumpbase sortm.c -finline-functions -fcombine-regs -O -W -version -o /tmp/cca08503.s GNU C version 1.31 (68k, MIT syntax) compiled by GNU C version 1.31. as -mc68020 /tmp/cca08503.s -o sortm.o poseur:2:38 # cat sortm.E # 1 "sortm.c" # 1 "../h/mh.h" struct node { char *n_name; char *n_field; char n_context; struct node *n_next; }; struct swit { char *sw; int minchars; }; extern struct swit anoyes[]; struct msgs { int hghmsg; int nummsg; int lowmsg; int curmsg; int lowsel; int hghsel; int numsel; char *foldpath; char msgflags; char pad1[sizeof (int) - sizeof (char)]; char *msgattrs[10 + 1]; short attrstats; char pad2[sizeof (int) - sizeof (short)]; int lowoff; int hghoff; short msgstats[1]; }; extern int msg_count; extern int msg_style; extern char *msg_delim; extern char *components; extern char *context; extern char *current; extern char *defalt; extern char *digestcomps; extern char *distcomps; extern char *draft; extern char *faceproc; extern char *fileproc; extern char *foldprot; extern char *forwcomps; extern char *incproc; extern char *installproc; extern char *lproc; extern char *mailproc; extern char *mh_defaults; extern char *mh_profile; extern char *mh_seq; extern char *mhlformat; extern char *mhlforward; extern char *mhlproc; extern char *moreproc; extern char *msgprot; extern char *mshproc; extern char *nsequence; extern char *packproc; extern char *postproc; extern char *pfolder; extern char *psequence; extern char *rcvdistcomps; extern char *replcomps; extern char *rmfproc; extern char *rmmproc; extern char *sendproc; extern char *showproc; extern char *slocalproc; extern char *sysed; extern char *usequence; extern char *version; extern char *vmhproc; extern char *whatnowproc; extern char *whomproc; extern char ctxflags; extern char *invo_name; extern char *mypath; extern char *defpath; extern char *ctxpath; extern struct node *m_defs; char *add (); void adios (); void admonish (); void advise (); void advertise (); void ambigsw (); int atooi (); char **brkstring (); void closefds (); char *concat (); char *copy (); char **copyip (); void cpydata (); void cpydgst (); void discard (); void done (); int fdcompare (); int gans (); char **getans (); int getanswer (); char *getcpy (); void help (); char *libpath (); int m_atoi (); char *m_backup (); int m_convert (); int m_delete (); char *m_draft (); void m_eomsbr (); int m_file (); char *m_find (); void m_fmsg (); void m_foil (); void m_getdefs (); int m_getfld (); char *m_getfolder (); int m_gmprot (); struct msgs *m_gmsg (); char *m_maildir (); char *m_mailpath (); char *m_name (); void m_readefs (); struct msgs *m_remsg (); void m_replace (); char *m_scratch (); char *m_seq (); int m_seqadd (); char *m_seqbits (); int m_seqdel (); int m_seqflag (); int m_seqnew (); void m_setcur (); void m_setseq (); void m_setvis (); void m_sync (); char *m_tmpfil (); void m_unknown (); void m_update (); int m_whatnow (); int makedir (); char *path (); int peekc (); int pidwait (); int pidstatus (); void printsw (); void push (); int putenv (); char *pwd (); char *r1bindex (); int refile (); int remdir (); int showfile (); int smatch (); char *sprintb(); int ssequal (); int stringdex (); char *trimcpy (); int type (); int uleq (); int unputenv (); int uprf (); int vfgets (); # 1 "../h/../h/strings.h" char *index (); char *mktemp (); char *rindex (); char *sprintf (); char *strcat (); int strcmp (); char *strcpy (); int strlen (); char *strncat (); int strncmp (); char *strncpy (); char *getenv (); char *calloc (), *malloc (), *realloc (); # 327 "../h/mh.h" typedef struct _iobuf *FP; FP popen (); # 3 "sortm.c" # 1 "../zotnet/tws.h" struct tws { int tw_sec; int tw_min; int tw_hour; int tw_mday; int tw_mon; int tw_year; int tw_wday; int tw_yday; int tw_zone; long tw_clock; int tw_flags; }; void twscopy (); int twsort (); long twclock (); char *dasctime (), *dtimezone (), *dctime (), *dtimenow (); struct tws *dgmtime(), *dlocaltime (), *dparsetime (), *dtwstime (); extern char *tw_dotw[], *tw_ldotw[], *tw_moty[]; # 4 "sortm.c" # 1 "/usr/local/lib/gcc-include/stdio.h" extern struct _iobuf { int _cnt; unsigned char *_ptr; unsigned char *_base; int _bufsiz; short _flag; char _file; } _iob[]; extern struct _iobuf *fopen(); extern struct _iobuf *fdopen(); extern struct _iobuf *freopen(); extern struct _iobuf *popen(); extern struct _iobuf *tmpfile(); extern long ftell(); extern char *fgets(); extern char *gets(); extern char *ctermid(); extern char *cuserid(); extern char *tempnam(); extern char *tmpnam(); # 5 "sortm.c" static struct swit switches[] = { "datefield field", 0, "verbose", 0, "noverbose", 0, "help", 4, 0, 0 }; struct smsg { int s_msg; struct tws s_tws; }; static struct smsg *smsgs; int msgsort (); struct tws *getws (); long time (); main (argc, argv) int argc; char **argv; { int verbosw = 0, msgp = 0, i, msgnum; char *cp, *maildir, *datesw = 0, *folder = 0, buf[100], **ap, **argp, *arguments[ 1000 ], *msgs[ 1000 ]; struct msgs *mp; invo_name = r1bindex (argv[0], '/'); if ((cp = m_find (invo_name)) != 0) { ap = brkstring (cp = getcpy (cp), " ", "\n"); ap = copyip (ap, arguments); } else ap = arguments; (void) copyip (argv + 1, ap); argp = arguments; while (cp = *argp++) { if (*cp == '-') switch (smatch (++cp, switches)) { case (-2) : ambigsw (cp, switches); done (1); case (-1) : adios ( ((char *) 0), "-%s unknown", cp); case 3: (void) sprintf (buf, "%s [+folder] [msgs] [switches]", invo_name); help (buf, switches); done (1); case 0: if (datesw) adios ( ((char *) 0), "only one date field at a time!"); if (!(datesw = *argp++) || *datesw == '-') adios ( ((char *) 0), "missing argument to %s", argp[-2]); continue; case 1: verbosw++; continue; case 2: verbosw = 0; continue; } if (*cp == '+' || *cp == '@') { if (folder) adios ( ((char *) 0), "only one folder at a time!"); else folder = path (cp + 1, *cp == '+' ? 0 : 2 ); } else msgs[msgp++] = cp; } if (!m_find ("path")) free (path ("./", 0 )); if (!msgp) msgs[msgp++] = "all"; if (!datesw) datesw = "Date"; if (!folder) folder = m_getfolder (); maildir = m_maildir (folder); if (chdir (maildir) == (-1) ) adios (maildir, "unable to change directory to"); if (!(mp = m_gmsg (folder))) adios ( ((char *) 0), "unable to read folder %s", folder); if (mp -> hghmsg == 0) adios ( ((char *) 0), "no messages in %s", folder); for (msgnum = 0; msgnum < msgp; msgnum++) if (!m_convert (mp, msgs[msgnum])) done (1); m_setseq (mp); if ((i = read_dates (mp, datesw)) <= 0) adios ( ((char *) 0), "no messages to sort"); qsort ((char *) smsgs, i, sizeof *smsgs, msgsort); file_dates (mp, verbosw); m_replace (pfolder, folder); m_sync (mp); m_update (); done (0); } static int read_dates (mp, datesw) register struct msgs *mp; register char *datesw; { int msgnum; struct tws tb; register struct smsg *s; register struct tws *tw; twscopy (&tb, dtwstime ()); smsgs = (struct smsg *) calloc ((unsigned) (mp -> hghsel - mp -> lowsel + 2), sizeof *smsgs); if (smsgs == 0) adios ( ((char *) 0), "unable to allocate sort storage"); s = smsgs; for (msgnum = mp -> lowsel; msgnum <= mp -> hghsel; msgnum++) { tw = 0; if (mp -> msgstats[msgnum] & 0x0004 ) { if ((tw = getws (datesw, msgnum)) == 0) tw = msgnum != mp -> lowsel ? &((s - 1) -> s_tws) : &tb; } else if (mp -> msgstats[msgnum] & 0x0001 ) tw = &tb; if (tw) { s -> s_msg = msgnum; twscopy (&s -> s_tws, tw); s++; } } s -> s_msg = 0; return (s - smsgs); } static struct tws *getws (datesw, msg) register char *datesw; int msg; { int compnum, state; register char *hp, *msgnam; char buf[1024], nam[ 128 ]; register struct tws *tw; register struct _iobuf *in; if ((in = fopen (msgnam = m_name (msg), "r")) == 0) { admonish (msgnam, "unable to read message"); return 0; } for (compnum = 1, state = 0 , hp = 0;;) { switch (state = m_getfld (state, nam, buf, sizeof buf, in)) { case 0 : case 2 : case 1 : compnum++; if (hp != 0) free (hp), hp = 0; hp = add (buf, ((char *) 0)); while (state == 1 ) { state = m_getfld (state, nam, buf, sizeof buf, in); hp = add (buf, hp); } if (uleq (nam, datesw)) break; if (state != 2 ) continue; case 3 : case 4 : case 5 : admonish ( ((char *) 0), "no %s field in message %d", datesw, msg); case (-2) : case (-3) : if (state == (-2) || state == (-3) ) admonish ( ((char *) 0), "format error in message %d(header #%d)", msg, compnum); if (hp != 0) free (hp); (void) fclose (in); return 0; default: adios ( ((char *) 0), "internal error -- you lose"); } break; } if ((tw = dparsetime (hp)) == 0) admonish ( ((char *) 0), "unable to parse %s field in message %d", datesw, msg); if (hp != 0) free (hp); (void) fclose (in); return tw; } static int msgsort (a, b) register struct smsg *a, *b; { return twsort (&a -> s_tws, &b -> s_tws); } static file_dates (mp, verbosw) register struct msgs *mp; int verbosw; { register int i, j, k; short stats; char f1[1024], f2[1024], tmpfil[1024]; (void) strcpy (tmpfil, m_scratch ("", invo_name)); for (i = 0; j = smsgs[i++].s_msg;) if (i != j) { (void) strcpy (f1, m_name (i)); (void) strcpy (f2, m_name (j)); if (mp -> msgstats[i] & 0x0001 ) { if (verbosw) printf ("swap messages %s and %s\n", f2, f1); if (rename (f1, tmpfil) == (-1) ) { admonish (tmpfil, "unable to rename %s to ", f1); continue; } if (rename (f2, f1) == (-1) ) { admonish (f1, "unable to rename %s to", f2); continue; } if (rename (tmpfil, f2) == (-1) ) { admonish (f2, "unable to rename %s to", tmpfil); continue; } for (k = i; smsgs[k].s_msg; k++) if (smsgs[k].s_msg == i) { smsgs[k].s_msg = j; break; } } else { if (verbosw) printf ("message %s becomes message %s\n", f2, f1); if (rename (f2, f1) == (-1) ) { admonish (f1, "unable to rename %s to ", f2); continue; } } smsgs[i - 1].s_msg = i; stats = mp -> msgstats[i]; mp -> msgstats[i] = mp -> msgstats[j]; mp -> msgstats[j] = stats; if (mp -> curmsg == j) m_setcur (mp, i); mp -> msgflags |= 0x02 ; } } poseur:2:41 # exit poseur:2:42 # script done on Tue Dec 6 11:33:33 1988