diff options
author | Jeff Law <law@gcc.gnu.org> | 1997-10-01 01:28:03 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-10-01 01:28:03 -0600 |
commit | 82d109f263f6ebca5c7e3b5e2c9588fe49e14651 (patch) | |
tree | b37636d8e5ed1cb0322283cf70df5e61024d5e21 /gcc/f | |
parent | d3878e494800f87eb4db2cc00a1f46d0703d7468 (diff) | |
download | gcc-82d109f263f6ebca5c7e3b5e2c9588fe49e14651.zip gcc-82d109f263f6ebca5c7e3b5e2c9588fe49e14651.tar.gz gcc-82d109f263f6ebca5c7e3b5e2c9588fe49e14651.tar.bz2 |
Update to 0.5.22-19970929.
From-SVN: r15818
Diffstat (limited to 'gcc/f')
-rw-r--r-- | gcc/f/ChangeLog | 24 | ||||
-rw-r--r-- | gcc/f/com-rt.def | 6 | ||||
-rw-r--r-- | gcc/f/com.h | 1 | ||||
-rw-r--r-- | gcc/f/expr.c | 12 | ||||
-rw-r--r-- | gcc/f/runtime/ChangeLog | 31 | ||||
-rw-r--r-- | gcc/f/runtime/changes.netlib | 11 | ||||
-rw-r--r-- | gcc/f/runtime/libF77/Version.c | 4 | ||||
-rw-r--r-- | gcc/f/runtime/libF77/dtime_.c | 2 | ||||
-rw-r--r-- | gcc/f/runtime/libF77/etime_.c | 2 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/Version.c | 12 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/err.c | 3 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/fmt.c | 45 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/fmt.h | 8 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/lread.c | 2 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/rdfmt.c | 6 | ||||
-rw-r--r-- | gcc/f/runtime/libI77/wrtfmt.c | 16 | ||||
-rw-r--r-- | gcc/f/runtime/readme.netlib | 11 | ||||
-rw-r--r-- | gcc/f/stu.c | 4 | ||||
-rw-r--r-- | gcc/f/version.c | 2 |
19 files changed, 160 insertions, 42 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index a50466e..9831a67 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,27 @@ +Mon Sep 29 16:18:21 1997 Craig Burley <burley@gnu.ai.mit.edu> + + * stu.c (ffestu_list_exec_transition_, + ffestu_dummies_transition_): Specify `bool' type for + `in_progress' variables. + + * com.h (assemble_string): Declare this routine (instead + of #include'ing "output.h" from gcc) to eliminate warnings + from lex.c. + +Fri Sep 19 01:12:27 1997 Craig Burley <burley@gnu.ai.mit.edu> + + * expr.c (ffeexpr_reduced_eqop2_): + (ffeexpr_reduced_relop2_): Minor fixes to diagnostic code. + + * fini.c (main): Change return type to `int'. + +Wed Sep 17 10:47:08 1997 Craig Burley <burley@gnu.ai.mit.edu> + + * com-rt.def (FFECOM_gfrtDSIGN, FFECOM_gfrtISIGN, + FFECOM_gfrtSIGN): Add second argument. + + * expr.c (ffeexpr_cb_comma_c_): Trivial fixes. + Tue Sep 9 01:59:35 1997 Craig Burley <burley@gnu.ai.mit.edu> * Version 0.5.21 released. diff --git a/gcc/f/com-rt.def b/gcc/f/com-rt.def index 1c1be60..bbf6c7b 100644 --- a/gcc/f/com-rt.def +++ b/gcc/f/com-rt.def @@ -162,7 +162,7 @@ DEFGFRT (FFECOM_gfrtDLOG10, "d_lg10", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) DEFGFRT (FFECOM_gfrtDMOD, "d_mod", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) DEFGFRT (FFECOM_gfrtDNINT, "d_nint", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) DEFGFRT (FFECOM_gfrtDPROD, "d_prod", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) -DEFGFRT (FFECOM_gfrtDSIGN, "d_sign", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) +DEFGFRT (FFECOM_gfrtDSIGN, "d_sign", FFECOM_rttypeDOUBLE_, "&d&d", FALSE, FALSE) DEFGFRT (FFECOM_gfrtDSIN, "d_sin", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) DEFGFRT (FFECOM_gfrtDSINH, "d_sinh", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) DEFGFRT (FFECOM_gfrtDSQRT, "d_sqrt", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE) @@ -203,7 +203,7 @@ DEFGFRT (FFECOM_gfrtIDNINT, "i_dnnt", FFECOM_rttypeINTEGER_, "&i", FALSE, FALSE) DEFGFRT (FFECOM_gfrtIERRNO, "G77_ierrno_0", FFECOM_rttypeINTEGER_, 0, FALSE, FALSE) DEFGFRT (FFECOM_gfrtINDEX, "i_indx", FFECOM_rttypeINTEGER_, "&a&a", FALSE, FALSE) DEFGFRT (FFECOM_gfrtIRAND, "G77_irand_0", FFECOM_rttypeINTEGER_, "&i", FALSE, FALSE) -DEFGFRT (FFECOM_gfrtISIGN, "i_sign", FFECOM_rttypeINTEGER_, "&i", FALSE, FALSE) +DEFGFRT (FFECOM_gfrtISIGN, "i_sign", FFECOM_rttypeINTEGER_, "&i&i", FALSE, FALSE) DEFGFRT (FFECOM_gfrtISATTY, "G77_isatty_0", FFECOM_rttypeINTEGER_, "&i", FALSE, FALSE) DEFGFRT (FFECOM_gfrtITIME, "G77_itime_0", FFECOM_rttypeVOID_, "&i", FALSE, FALSE) DEFGFRT (FFECOM_gfrtKILL, "G77_kill_0", FFECOM_rttypeINTEGER_, "&i&i", FALSE, FALSE) @@ -224,7 +224,7 @@ DEFGFRT (FFECOM_gfrtRAND, "G77_rand_0", FFECOM_rttypeREAL_F2C_, "&i", FALSE, FAL DEFGFRT (FFECOM_gfrtRENAME, "G77_rename_0", FFECOM_rttypeINTEGER_, "&a&a", FALSE, FALSE) DEFGFRT (FFECOM_gfrtSECNDS, "G77_secnds_0", FFECOM_rttypeREAL_F2C_, "&f", FALSE, FALSE) DEFGFRT (FFECOM_gfrtSECOND, "G77_second_0", FFECOM_rttypeREAL_F2C_, 0, FALSE, FALSE) -DEFGFRT (FFECOM_gfrtSIGN, "r_sign", FFECOM_rttypeREAL_F2C_, "&f", FALSE, FALSE) +DEFGFRT (FFECOM_gfrtSIGN, "r_sign", FFECOM_rttypeREAL_F2C_, "&f&f", FALSE, FALSE) DEFGFRT (FFECOM_gfrtL_SIGNAL, "G77_signal_0", FFECOM_rttypeFTNINT_, "&i0", FALSE, FALSE) DEFGFRT (FFECOM_gfrtSIN, "r_sin", FFECOM_rttypeREAL_F2C_, "&f", FALSE, FALSE) DEFGFRT (FFECOM_gfrtSINH, "r_sinh", FFECOM_rttypeREAL_F2C_, "&f", FALSE, FALSE) diff --git a/gcc/f/com.h b/gcc/f/com.h index 477e086..946e8a5 100644 --- a/gcc/f/com.h +++ b/gcc/f/com.h @@ -348,6 +348,7 @@ extern int flag_pedantic_errors; void emit_nop (void); void announce_function (tree decl); extern FILE *asm_out_file; +void assemble_string (char *, int); void assemble_variable (tree decl, int top_level, int at_end, int dont_output_data); void assemble_zeros (int size); diff --git a/gcc/f/expr.c b/gcc/f/expr.c index 057293b..86b1509 100644 --- a/gcc/f/expr.c +++ b/gcc/f/expr.c @@ -7504,15 +7504,17 @@ static ffelexHandler ffeexpr_cb_comma_c_ (ffelexToken ft, ffebld expr, ffelexToken t) { ffeexprExpr_ e; - ffeinfoBasictype lty = ffeinfo_basictype (ffebld_info (ffeexpr_stack_->expr)); - ffeinfoBasictype rty = ffeinfo_basictype (ffebld_info (expr)); + ffeinfoBasictype lty = (ffeexpr_stack_->expr == NULL) + ? FFEINFO_basictypeNONE : ffeinfo_basictype (ffebld_info (ffeexpr_stack_->expr)); + ffeinfoBasictype rty = (expr == NULL) + ? FFEINFO_basictypeNONE : ffeinfo_basictype (ffebld_info (expr)); ffeinfoKindtype lkt; ffeinfoKindtype rkt; ffeinfoKindtype nkt; bool ok = TRUE; ffebld orig; - if ((expr == NULL) + if ((ffeexpr_stack_->expr == NULL) || (ffebld_op (ffeexpr_stack_->expr) != FFEBLD_opCONTER) || (((orig = ffebld_conter_orig (ffeexpr_stack_->expr)) != NULL) && (((ffebld_op (orig) != FFEBLD_opUMINUS) @@ -10589,7 +10591,7 @@ ffeexpr_reduced_eqop2_ (ffebld reduced, ffeexprExpr_ l, ffeexprExpr_ op, && (lbt != FFEINFO_basictypeCOMPLEX) && (lbt != FFEINFO_basictypeCHARACTER)) { if ((rbt != FFEINFO_basictypeINTEGER) && (rbt != FFEINFO_basictypeREAL) - && (rbt != FFEINFO_basictypeCOMPLEX) && (lbt != FFEINFO_basictypeCHARACTER)) + && (rbt != FFEINFO_basictypeCOMPLEX) && (rbt != FFEINFO_basictypeCHARACTER)) { if ((lbt != FFEINFO_basictypeANY) && (rbt != FFEINFO_basictypeANY) && ffebad_start (FFEBAD_EQOP_ARGS_TYPE)) @@ -11206,7 +11208,7 @@ ffeexpr_reduced_relop2_ (ffebld reduced, ffeexprExpr_ l, ffeexprExpr_ op, && (lbt != FFEINFO_basictypeCHARACTER)) { if ((rbt != FFEINFO_basictypeINTEGER) && (rbt != FFEINFO_basictypeREAL) - && (lbt != FFEINFO_basictypeCHARACTER)) + && (rbt != FFEINFO_basictypeCHARACTER)) { if ((lbt != FFEINFO_basictypeANY) && (rbt != FFEINFO_basictypeANY) && ffebad_start (FFEBAD_RELOP_ARGS_TYPE)) diff --git a/gcc/f/runtime/ChangeLog b/gcc/f/runtime/ChangeLog index 57b175e..c6c0dd3 100644 --- a/gcc/f/runtime/ChangeLog +++ b/gcc/f/runtime/ChangeLog @@ -1,3 +1,34 @@ +Tue Sep 30 00:41:39 1997 Craig Burley <burley@gnu.ai.mit.edu> + + Do a better job of printing the offending FORMAT string + when producing a diagnostic: + * libI77/err.c (f__fmtlen): New variable to hold operating + length of format string. + (f__fatal): Use new variable to limit length of printed string. + * libI77/fmt.c (f_s): Don't skip spaces after closing paren, + so nicer message results (and nested case already skips them). + (pars_f): Record operating length of format string as indicated + by a successful call to f_s, or ad-hoc-calculate it if failure, + limiting the length to 80 characters (and stopping at NUL). + (do_fio): Use new variable to limit length of printed string. + * libI77/fmt.h (f__fmtlen): Declare new variable. + * libI77/lread.c (c_le): Set new variable to known length. + +Mon Sep 29 16:30:31 1997 Craig Burley <burley@gnu.ai.mit.edu> + + Update to Netlib version of 1997-09-23: + * libF77/dtime_.c (dtime_), libF77/etime_.c (dtime_): + Return `double' instead of `float' (these are not used + in g77's version of libf2c). + * libI77/fmt.c, libI77/fmt.h, libI77/rdfmt.c, libI77/wrtfmt.c: + Support machines with 64-bit pointers and 32-bit ints (e.g. + Linux on DEC Alpha). + +1997-09-19 Dave Love <d.love@dl.ac.uk> + + * libU77/dtime_.c (G77_dtime_0): Fix types in HAVE_GETRUSAGE case + so as not to truncate results to integer values. + Tue Sep 9 00:33:24 1997 Craig Burley <burley@gnu.ai.mit.edu> * Version 0.5.21 released. diff --git a/gcc/f/runtime/changes.netlib b/gcc/f/runtime/changes.netlib index 1827154..78dba86 100644 --- a/gcc/f/runtime/changes.netlib +++ b/gcc/f/runtime/changes.netlib @@ -2836,6 +2836,15 @@ with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print the right number of 0's for zero under G format. Sat Aug 16 05:45:32 EDT 1997 - libI77: iio.c: fix bug in internal writes to an array of character + libi77: iio.c: fix bug in internal writes to an array of character strings that sometimes caused one more array element than required by the format to be blank-filled. Example: format(1x). + +Wed Sep 17 00:39:29 EDT 1997 + libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines +with 64-bit pointers and 32-bit ints that did not 64-bit align +struct syl (e.g., Linux on the DEC Alpha). This change should be +invisible on other machines. + +Sun Sep 21 22:05:19 EDT 1997 + libf77: [de]time_.c (Unix systems only): change return type to double. diff --git a/gcc/f/runtime/libF77/Version.c b/gcc/f/runtime/libF77/Version.c index 8644f3f..7bb0972 100644 --- a/gcc/f/runtime/libF77/Version.c +++ b/gcc/f/runtime/libF77/Version.c @@ -1,4 +1,4 @@ -static char junk[] = "\n@(#)LIBF77 VERSION 19970404\n"; +static char junk[] = "\n@(#)LIBF77 VERSION 19970919\n"; /* */ @@ -53,6 +53,8 @@ char __G77_LIBF77_VERSION__[] = "0.5.21"; benefit of g77.) 4 April 1997: [cz]_div.c: tweaks invisible on most systems (that may affect systems using gratuitous extra precision). + 19 Sept. 1997: [de]time_.c (Unix systems only): change return + type to double. */ #include <stdio.h> diff --git a/gcc/f/runtime/libF77/dtime_.c b/gcc/f/runtime/libF77/dtime_.c index 2e775c6..79b6735 100644 --- a/gcc/f/runtime/libF77/dtime_.c +++ b/gcc/f/runtime/libF77/dtime_.c @@ -15,7 +15,7 @@ #endif #endif - float + double #ifdef KR_headers dtime_(tarray) float *tarray; #else diff --git a/gcc/f/runtime/libF77/etime_.c b/gcc/f/runtime/libF77/etime_.c index 0fb658a..04528b5 100644 --- a/gcc/f/runtime/libF77/etime_.c +++ b/gcc/f/runtime/libF77/etime_.c @@ -15,7 +15,7 @@ #endif #endif - float + double #ifdef KR_headers etime_(tarray) float *tarray; #else diff --git a/gcc/f/runtime/libI77/Version.c b/gcc/f/runtime/libI77/Version.c index cbb63c9..d80ea39 100644 --- a/gcc/f/runtime/libI77/Version.c +++ b/gcc/f/runtime/libI77/Version.c @@ -1,9 +1,9 @@ -static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 19970816\n"; +static char junk[] = "\n@(#) LIBI77 VERSION pjw,dmg-mods 19970916\n"; /* */ -char __G77_LIBI77_VERSION__[] = "0.5.21"; +char __G77_LIBI77_VERSION__[] = "0.5.22-19970930"; /* 2.01 $ format added @@ -264,6 +264,14 @@ wrtfmt.c: strings that sometimes caused one more array element than required by the format to be blank-filled. Example: format(1x). */ +/* 16 Sept. 1997:fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines + with 64-bit pointers and 32-bit ints that did not 64-bit + align struct syl (e.g., Linux on the DEC Alpha). */ + + + +/* Changes for GNU Fortran (g77) version of libf2c: */ + /* 17 June 1997: detect recursive I/O and call f__fatal explaining it. */ #include <stdio.h> diff --git a/gcc/f/runtime/libI77/err.c b/gcc/f/runtime/libI77/err.c index 1d01887..12eb9ee 100644 --- a/gcc/f/runtime/libI77/err.c +++ b/gcc/f/runtime/libI77/err.c @@ -27,6 +27,7 @@ icilist *f__svic; /*active internal io list*/ flag f__reading; /*1 if reading, 0 if writing*/ flag f__cplus,f__cblank; char *f__fmtbuf; +int f__fmtlen; flag f__external; /*1 if external io, 0 if internal */ #ifdef KR_headers int (*f__doed)(),(*f__doned)(); @@ -167,7 +168,7 @@ f__fatal(int n, char *s) else fprintf(stderr,"apparent state: internal I/O\n"); if (f__fmtbuf) - fprintf(stderr,"last format: %s\n",f__fmtbuf); + fprintf(stderr,"last format: %.*s\n",f__fmtlen,f__fmtbuf); fprintf(stderr,"lately %s %s %s %s",f__reading?"reading":"writing", f__sequential?"sequential":"direct",f__formatted?"formatted":"unformatted", f__external?"external":"internal"); diff --git a/gcc/f/runtime/libI77/fmt.c b/gcc/f/runtime/libI77/fmt.c index a82f821..8f08952 100644 --- a/gcc/f/runtime/libI77/fmt.c +++ b/gcc/f/runtime/libI77/fmt.c @@ -18,7 +18,7 @@ /* special quote character for stu */ extern int f__cursor,f__scale; extern flag f__cblank,f__cplus; /*blanks in I and compulsory plus*/ -struct syl f__syl[SYLMX]; +static struct syl f__syl[SYLMX]; int f__parenlvl,f__pc,f__revloc; static @@ -53,8 +53,8 @@ op_gen(int a, int b, int c, int d) } p->op=a; p->p1=b; - p->p2=c; - p->p3=d; + p->p2.i[0]=c; + p->p2.i[1]=d; return(f__pc++); } #ifdef KR_headers @@ -103,7 +103,6 @@ char *f_s(char *s, int curloc) { return(NULL); } - skip(s); return(s); } @@ -160,7 +159,7 @@ ne_d(char *s, char **p) case 'H': case 'h': sp = &f__syl[op_gen(H,n,0,0)]; - *(char **)&sp->p2 = s + 1; + sp->p2.s = s + 1; s+=n; break; } @@ -169,7 +168,7 @@ ne_d(char *s, char **p) case '"': case '\'': sp = &f__syl[op_gen(APOS,0,0,0)]; - *(char **)&sp->p2 = s; + sp->p2.s = s; if((*p = ap_end(s)) == NULL) return(0); return(1); @@ -365,11 +364,39 @@ pars_f(s) char *s; pars_f(char *s) #endif { + char *e; + f__parenlvl=f__revloc=f__pc=0; - if(f_s(s,0) == NULL) + if((e=f_s(s,0)) == NULL) { + /* Try and delimit the format string. Parens within + hollerith and quoted strings have to match for this + to work, but it's probably adequate for most needs. + Note that this is needed because a valid CHARACTER + variable passed for FMT= can contain '(I)garbage', + where `garbage' is billions and billions of junk + characters, and it's up to the run-time library to + know where the format string ends by counting parens. + Meanwhile, still treat NUL byte as "hard stop", since + f2c still appends that at end of FORMAT-statement + strings. */ + + int level=0; + + for (f__fmtlen=0; + ((*s!=')') || (--level > 0)) + && (*s!='\0') + && (f__fmtlen<80); + ++s, ++f__fmtlen) + { + if (*s=='(') + ++level; + } + if (*s==')') + ++f__fmtlen; return(-1); } + f__fmtlen = e - s; return(0); } #define STKSZ 10 @@ -421,8 +448,8 @@ integer do_fio(ftnint *number, char *ptr, ftnlen len) loop: switch(type_f((p= &f__syl[f__pc])->op)) { default: - fprintf(stderr,"unknown code in do_fio: %d\n%s\n", - p->op,f__fmtbuf); + fprintf(stderr,"unknown code in do_fio: %d\n%.*s\n", + p->op,f__fmtlen,f__fmtbuf); err(f__elist->cierr,100,"do_fio"); case NED: if((*f__doned)(p)) diff --git a/gcc/f/runtime/libI77/fmt.h b/gcc/f/runtime/libI77/fmt.h index 509746e..6197e76 100644 --- a/gcc/f/runtime/libI77/fmt.h +++ b/gcc/f/runtime/libI77/fmt.h @@ -1,6 +1,8 @@ struct syl -{ int op,p1,p2,p3; -}; +{ int op; + int p1; + union { int i[2]; char *s;} p2; + }; #define RET1 1 #define REVERT 2 #define GOTO 3 @@ -37,7 +39,6 @@ struct syl #define OM 34 #define Z 35 #define ZM 36 -extern struct syl f__syl[]; extern int f__pc,f__parenlvl,f__revloc; typedef union { real pf; @@ -78,6 +79,7 @@ extern int wrt_L(Uint*, int, ftnlen); #endif extern flag f__cblank,f__cplus,f__workdone, f__nonl; extern char *f__fmtbuf; +extern int f__fmtlen; extern int f__scale; #define GET(x) if((x=(*f__getn)())<0) return(x) #define VAL(x) (x!='\n'?x:' ') diff --git a/gcc/f/runtime/libI77/lread.c b/gcc/f/runtime/libI77/lread.c index 3f0642c..4fb14ee 100644 --- a/gcc/f/runtime/libI77/lread.c +++ b/gcc/f/runtime/libI77/lread.c @@ -8,6 +8,7 @@ extern char *f__fmtbuf; +extern int f__fmtlen; #ifdef Allow_TYQUAD static longint f__llx; @@ -518,6 +519,7 @@ c_le(cilist *a) if(f__init != 1) f_init(); f__init = 3; f__fmtbuf="list io"; + f__fmtlen=7; if(a->ciunit>=MXUNIT || a->ciunit<0) err(a->cierr,101,"stler"); f__scale=f__recpos=0; diff --git a/gcc/f/runtime/libI77/rdfmt.c b/gcc/f/runtime/libI77/rdfmt.c index 0d8c2b4..b03bcc5 100644 --- a/gcc/f/runtime/libI77/rdfmt.c +++ b/gcc/f/runtime/libI77/rdfmt.c @@ -433,7 +433,7 @@ rd_ed(struct syl *p, char *ptr, ftnlen len) case D: case G: case GE: - case F: ch = rd_F((ufloat *)ptr,p->p1,p->p2,len); + case F: ch = rd_F((ufloat *)ptr,p->p1,p->p2.i[0],len); break; /* Z and ZM assume 8-bit bytes. */ @@ -460,8 +460,8 @@ rd_ned(struct syl *p) default: fprintf(stderr,"rd_ned, unexpected code: %d\n", p->op); sig_die(f__fmtbuf, 1); case APOS: - return(rd_POS(*(char **)&p->p2)); - case H: return(rd_H(p->p1,*(char **)&p->p2)); + return(rd_POS(p->p2.s)); + case H: return(rd_H(p->p1,p->p2.s)); case SLASH: return((*f__donewrec)()); case TR: case X: f__cursor += p->p1; diff --git a/gcc/f/runtime/libI77/wrtfmt.c b/gcc/f/runtime/libI77/wrtfmt.c index e14efa8..4350fc9 100644 --- a/gcc/f/runtime/libI77/wrtfmt.c +++ b/gcc/f/runtime/libI77/wrtfmt.c @@ -326,7 +326,7 @@ w_ed(struct syl *p, char *ptr, ftnlen len) sig_die(f__fmtbuf, 1); case I: return(wrt_I((Uint *)ptr,p->p1,len, 10)); case IM: - return(wrt_IM((Uint *)ptr,p->p1,p->p2,len,10)); + return(wrt_IM((Uint *)ptr,p->p1,p->p2.i[0],len,10)); /* O and OM don't work right for character, double, complex, */ /* or doublecomplex, and they differ from Fortran 90 in */ @@ -334,7 +334,7 @@ w_ed(struct syl *p, char *ptr, ftnlen len) case O: return(wrt_I((Uint *)ptr, p->p1, len, 8)); case OM: - return(wrt_IM((Uint *)ptr,p->p1,p->p2,len,8)); + return(wrt_IM((Uint *)ptr,p->p1,p->p2.i[0],len,8)); case L: return(wrt_L((Uint *)ptr,p->p1, len)); case A: return(wrt_A(ptr,len)); case AW: @@ -342,17 +342,17 @@ w_ed(struct syl *p, char *ptr, ftnlen len) case D: case E: case EE: - return(wrt_E((ufloat *)ptr,p->p1,p->p2,p->p3,len)); + return(wrt_E((ufloat *)ptr,p->p1,p->p2.i[0],p->p2.i[1],len)); case G: case GE: - return(wrt_G((ufloat *)ptr,p->p1,p->p2,p->p3,len)); - case F: return(wrt_F((ufloat *)ptr,p->p1,p->p2,len)); + return(wrt_G((ufloat *)ptr,p->p1,p->p2.i[0],p->p2.i[1],len)); + case F: return(wrt_F((ufloat *)ptr,p->p1,p->p2.i[0],len)); /* Z and ZM assume 8-bit bytes. */ case Z: return(wrt_Z((Uint *)ptr,p->p1,0,len)); case ZM: - return(wrt_Z((Uint *)ptr,p->p1,p->p2,len)); + return(wrt_Z((Uint *)ptr,p->p1,p->p2.i[0],len)); } } #ifdef KR_headers @@ -378,8 +378,8 @@ w_ned(struct syl *p) f__cursor += p->p1; return(1); case APOS: - return(wrt_AP(*(char **)&p->p2)); + return(wrt_AP(p->p2.s)); case H: - return(wrt_H(p->p1,*(char **)&p->p2)); + return(wrt_H(p->p1,p->p2.s)); } } diff --git a/gcc/f/runtime/readme.netlib b/gcc/f/runtime/readme.netlib index 5d2ac98..e748987 100644 --- a/gcc/f/runtime/readme.netlib +++ b/gcc/f/runtime/readme.netlib @@ -521,10 +521,19 @@ with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print the right number of 0's for zero under G format. Sat Aug 16 05:45:32 EDT 1997 - libI77: iio.c: fix bug in internal writes to an array of character + libi77: iio.c: fix bug in internal writes to an array of character strings that sometimes caused one more array element than required by the format to be blank-filled. Example: format(1x). +Wed Sep 17 00:39:29 EDT 1997 + libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines +with 64-bit pointers and 32-bit ints that did not 64-bit align +struct syl (e.g., Linux on the DEC Alpha). This change should be +invisible on other machines. + +Sun Sep 21 22:05:19 EDT 1997 + libf77: [de]time_.c (Unix systems only): change return type to double. + Current timestamps of files in "all from f2c/src", sorted by time, appear below (mm/dd/year hh:mm:ss). To bring your source up to date, obtain source files with a timestamp later than the time shown in your diff --git a/gcc/f/stu.c b/gcc/f/stu.c index 239456c..a11f00c 100644 --- a/gcc/f/stu.c +++ b/gcc/f/stu.c @@ -924,7 +924,7 @@ ffestu_sym_exec_transition (ffesymbol s) static void ffestu_list_exec_transition_ (ffebld list) { - static in_progress = FALSE; + static bool in_progress = FALSE; ffebld item; ffesymbol symbol; @@ -1116,7 +1116,7 @@ tail: /* :::::::::::::::::::: */ static bool ffestu_dummies_transition_ (ffesymbol (*symfunc) (), ffebld list) { - static in_progress = FALSE; + static bool in_progress = FALSE; ffebld item; ffesymbol symbol; bool uncertain = FALSE; diff --git a/gcc/f/version.c b/gcc/f/version.c index 65eaed3..dd56aeb7 100644 --- a/gcc/f/version.c +++ b/gcc/f/version.c @@ -31,4 +31,4 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "version.h" -char *ffe_version_string = "0.5.21-19970909"; +char *ffe_version_string = "0.5.22-19970929" |