aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/f/ChangeLog24
-rw-r--r--gcc/f/com-rt.def6
-rw-r--r--gcc/f/com.h1
-rw-r--r--gcc/f/expr.c12
-rw-r--r--gcc/f/runtime/ChangeLog31
-rw-r--r--gcc/f/runtime/changes.netlib11
-rw-r--r--gcc/f/runtime/libF77/Version.c4
-rw-r--r--gcc/f/runtime/libF77/dtime_.c2
-rw-r--r--gcc/f/runtime/libF77/etime_.c2
-rw-r--r--gcc/f/runtime/libI77/Version.c12
-rw-r--r--gcc/f/runtime/libI77/err.c3
-rw-r--r--gcc/f/runtime/libI77/fmt.c45
-rw-r--r--gcc/f/runtime/libI77/fmt.h8
-rw-r--r--gcc/f/runtime/libI77/lread.c2
-rw-r--r--gcc/f/runtime/libI77/rdfmt.c6
-rw-r--r--gcc/f/runtime/libI77/wrtfmt.c16
-rw-r--r--gcc/f/runtime/readme.netlib11
-rw-r--r--gcc/f/stu.c4
-rw-r--r--gcc/f/version.c2
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"