Update to 0.5.22-19970929.

From-SVN: r15818
This commit is contained in:
Jeff Law 1997-10-01 01:28:03 -06:00
parent d3878e4948
commit 82d109f263
19 changed files with 160 additions and 42 deletions

View File

@ -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.

View File

@ -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)

View File

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

View File

@ -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))

View File

@ -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.

View File

@ -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.

View File

@ -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>

View File

@ -15,7 +15,7 @@
#endif
#endif
float
double
#ifdef KR_headers
dtime_(tarray) float *tarray;
#else

View File

@ -15,7 +15,7 @@
#endif
#endif
float
double
#ifdef KR_headers
etime_(tarray) float *tarray;
#else

View File

@ -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>

View File

@ -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");

View File

@ -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))

View File

@ -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:' ')

View File

@ -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;

View File

@ -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;

View File

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

View File

@ -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

View File

@ -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;

View File

@ -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"