Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
411d4e28
Commit
411d4e28
authored
Mar 05, 1999
by
Craig Burley
Committed by
Craig Burley
Mar 05, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Warn about invoking non-Y2K-compliant intrinsics
From-SVN: r25609
parent
40ae436b
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
278 additions
and
21 deletions
+278
-21
gcc/f/ChangeLog
+19
-0
gcc/f/bad.def
+2
-0
gcc/f/com-rt.def
+2
-2
gcc/f/g77.texi
+133
-1
gcc/f/intdoc.c
+11
-0
gcc/f/intrin.c
+31
-2
gcc/f/intrin.def
+8
-2
gcc/f/intrin.h
+7
-0
gcc/f/news.texi
+11
-1
gcc/f/version.c
+1
-1
libf2c/ChangeLog
+14
-0
libf2c/Makefile.in
+3
-2
libf2c/f2cext.c
+32
-6
libf2c/libU77/Version.c
+1
-1
libf2c/libU77/date_.c
+1
-1
libf2c/libU77/vxtidate_.c
+2
-2
No files found.
gcc/f/ChangeLog
View file @
411d4e28
Sat Mar 6 02:28:35 1999 Craig Burley <craig@jcb-sc.com>
Warn about non-Y2K-compliant intrinsics:
* bad.def (FFEBAD_INTRINSIC_Y2KBAD): New diagnostic.
* intrin.def (FFEINTRIN_impDATE, FFEINTRIN_impIDATE_vxt):
Use new DEFIMPY macro to flag these as non-Y2K-compliant.
* intdoc.c (DEFIMPY): Support new Y2K macro.
* intrin.h (DEFIMPY): Ditto.
* intrin.c (DEFIMPY): Ditto.
(ffeintrin_fulfill_generic, ffeintrin_fulfill_specific):
Warn about invocation of non-Y2K-compliant intrinsic.
* com-rt.def (FFECOM_gfrtDATE, FFECOM_gfrtVXTIDATE):
Rename external procedure names, to keep previously-
compiled (sans-new-warnings) code from linking to
new library.
* g77.texi: Document all this stuff.
* news.texi: Spread the joy.
* version.c: Bump version.
Fri Mar 5 13:22:44 1999 Craig Burley <craig@jcb-sc.com>
Fri Mar 5 13:22:44 1999 Craig Burley <craig@jcb-sc.com>
* news.texi: Relocate IDATE (VXT) fix: we put it in 1.1.2
* news.texi: Relocate IDATE (VXT) fix: we put it in 1.1.2
...
...
gcc/f/bad.def
View file @
411d4e28
...
@@ -700,6 +700,8 @@ FFEBAD_MSGS1 (FFEBAD_ARRAY_LARGE, FATAL,
...
@@ -700,6 +700,8 @@ FFEBAD_MSGS1 (FFEBAD_ARRAY_LARGE, FATAL,
"Array `%A' at %0 is too large to handle")
"Array `%A' at %0 is too large to handle")
FFEBAD_MSGS1 (FFEBAD_SFUNC_UNUSED, WARN,
FFEBAD_MSGS1 (FFEBAD_SFUNC_UNUSED, WARN,
"Statement function `%A' defined at %0 is not used")
"Statement function `%A' defined at %0 is not used")
FFEBAD_MSGS1 (FFEBAD_INTRINSIC_Y2KBAD, WARN,
"Intrinsic `%A', invoked at %0, known to be non-Y2K-compliant [info -f g77 M Y2KBAD]")
#undef INFORM
#undef INFORM
#undef TRIVIAL
#undef TRIVIAL
...
...
gcc/f/com-rt.def
View file @
411d4e28
...
@@ -142,7 +142,7 @@ DEFGFRT (FFECOM_gfrtDACOS, "d_acos", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
...
@@ -142,7 +142,7 @@ DEFGFRT (FFECOM_gfrtDACOS, "d_acos", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDASIN, "d_asin", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDASIN, "d_asin", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATAN, "d_atan", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATAN, "d_atan", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATAN2, "d_atn2", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATAN2, "d_atn2", FFECOM_rttypeDOUBLE_, "&d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATE, "G77_date_0", FFECOM_rttypeVOID_, "&a", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATE, "G77_date_
y2kbug_
0", FFECOM_rttypeVOID_, "&a", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATE_AND_TIME, "G77_date_and_time_0", FFECOM_rttypeVOID_, "&a&a&a&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtDATE_AND_TIME, "G77_date_and_time_0", FFECOM_rttypeVOID_, "&a&a&a&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtL_BESJ0, "j0", FFECOM_rttypeDOUBLE_, "d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtL_BESJ0, "j0", FFECOM_rttypeDOUBLE_, "d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtL_BESJ1, "j1", FFECOM_rttypeDOUBLE_, "d", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtL_BESJ1, "j1", FFECOM_rttypeDOUBLE_, "d", FALSE, FALSE)
...
@@ -242,7 +242,7 @@ DEFGFRT (FFECOM_gfrtTIME, "G77_time_0", FFECOM_rttypeLONGINT_, 0, FALSE, FALSE)
...
@@ -242,7 +242,7 @@ DEFGFRT (FFECOM_gfrtTIME, "G77_time_0", FFECOM_rttypeLONGINT_, 0, FALSE, FALSE)
DEFGFRT (FFECOM_gfrtTTYNAM, "G77_ttynam_0", FFECOM_rttypeCHARACTER_, "&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtTTYNAM, "G77_ttynam_0", FFECOM_rttypeCHARACTER_, "&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtUNLINK, "G77_unlink_0", FFECOM_rttypeINTEGER_, "&a", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtUNLINK, "G77_unlink_0", FFECOM_rttypeINTEGER_, "&a", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtUMASK, "G77_umask_0", FFECOM_rttypeINTEGER_, "&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtUMASK, "G77_umask_0", FFECOM_rttypeINTEGER_, "&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtVXTIDATE, "G77_vxtidate_0", FFECOM_rttypeVOID_, "&i&i&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtVXTIDATE, "G77_vxtidate_
y2kbug_
0", FFECOM_rttypeVOID_, "&i&i&i", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtVXTTIME, "G77_vxttime_0", FFECOM_rttypeVOID_, "&a", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtVXTTIME, "G77_vxttime_0", FFECOM_rttypeVOID_, "&a", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtCDABS, "z_abs", FFECOM_rttypeDOUBLE_, "&e", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtCDABS, "z_abs", FFECOM_rttypeDOUBLE_, "&e", FALSE, FALSE)
DEFGFRT (FFECOM_gfrtCDCOS, "z_cos", FFECOM_rttypeDBLCMPLX_F2C_, "&e", FALSE, TRUE)
DEFGFRT (FFECOM_gfrtCDCOS, "z_cos", FFECOM_rttypeDBLCMPLX_F2C_, "&e", FALSE, TRUE)
...
...
gcc/f/g77.texi
View file @
411d4e28
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
@c
%**
start
of
header
@c
%**
start
of
header
@setfilename
g77
.
info
@setfilename
g77
.
info
@set
last
-
up
-
date
1999
-
03
-
0
3
@set
last
-
up
-
date
1999
-
03
-
0
6
@set
version
-
g77
0
.
5
.
24
@set
version
-
g77
0
.
5
.
24
@set
email
-
general
egcs
@@egcs
.
cygnus
.
com
@set
email
-
general
egcs
@@egcs
.
cygnus
.
com
@set
email
-
bugs
egcs
-
bugs
@@egcs
.
cygnus
.
com
@set
email
-
bugs
egcs
-
bugs
@@egcs
.
cygnus
.
com
...
@@ -8145,6 +8145,119 @@ on at least some systems:
...
@@ -8145,6 +8145,119 @@ on at least some systems:
@ref{Date Intrinsic},
@ref{Date Intrinsic},
@ref{IDate Intrinsic (VXT)}.
@ref{IDate Intrinsic (VXT)}.
@cindex y2kbuggy
@cindex date_y2kbuggy_0
@cindex vxtidate_y2kbuggy_0
@cindex G77_date_y2kbuggy_0
@cindex G77_vxtidate_y2kbuggy_0
The @code{libg2c} library
shipped with any @code{g77} that warns
about invocation of a non-Y2K-compliant intrinsic
has renamed the @samp{EXTERNAL} procedure names
of those intrinsics.
This is done so that
the @code{libg2c} implementations of these intrinsics
cannot be directly linked to
as @samp{EXTERNAL} names
(which normally would avoid the non-Y2K-intrinsic warning).
The renamed forms of the @samp{EXTERNAL} names
of these renamed procedures
may be linked to
by appending the string @samp{_y2kbug}
to the name of the procedure
in the source code.
For example:
@smallexample
CHARACTER*20 STR
INTEGER YY, MM, DD
EXTERNAL DATE_Y2KBUG, VXTIDATE_Y2KBUG
CALL DATE_Y2KBUG (STR)
CALL VXTIDATE_Y2KBUG (MM, DD, YY)
@end smallexample
(Note that the @samp{EXTERNAL} statement
is not actually required,
since the modified names are not recognized as intrinsics
by the current version of @code{g77}.
But it is shown in this specific case,
for purposes of illustration.)
The renaming of @samp{EXTERNAL} procedure names of these intrinsics
causes unresolved references at link time.
For example, @samp{EXTERNAL DATE; CALL DATE(STR)}
is normally compiled by @code{g77}
as, in C, @samp{date_(&str, 20);}.
This, in turn, links to the @samp{date_} procedure
in the @samp{libE77} portion of @code{libg2c},
which purposely calls a nonexistent procedure
named @samp{G77_date_y2kbuggy_0}.
The resulting link-time error is designed, via this name,
to encourage the programmer to look up the
index entries to this portion of the @code{g77} documentation.
Generally, we recommend that the @samp{EXTERNAL} method
of invoking procedures in @code{libg2c}
@emph{not} be used.
When used, some of the correctness checking
normally performed by @code{g77}
is skipped.
In particular, it is probably better to use the
@samp{INTRINSIC} method of invoking
non-Y2K-compliant procedures,
so anyone compiling the code
can quickly notice the potential Y2K problems
(via the warnings printing by @code{g77})
without having to even look at the code itself.
If there are problems linking @code{libg2c}
to code compiled by @code{g77}
that involve the string @samp{y2kbug},
and these are not explained above,
that probably indicates
that a version of @code{libg2c}
older than @code{g77}
is being linked to,
or that the new library is being linked
to code compiled by an older version of @code{g77}.
That's because, as of the version that warns about
non-Y2K-compliant intrinsic invocation,
@code{g77} references the @code{libg2c} implementations
of those intrinsics
using new names, containing the string @samp{y2kbug}.
So, linking newly-compiled code
(invoking one of the intrinsics in question)
to an old library
might yield an unresolved reference
to @samp{G77_date_y2kbug_0}.
(The old library calls it @samp{G77_date_0}.)
Similarly, linking previously-compiled code
to a new library
might yield an unresolved reference
to @samp{G77_vxtidate_0}.
(The new library calls it @samp{G77_vxtidate_y2kbug_0}.)
The proper fix for the above problems
is to obtain the latest release of @code{g77}
and related products
(including @code{libg2c})
and install them on all systems,
then recompile, relink, and install
(as appropriate)
all existing Fortran programs.
(Normally, this sort of renaming is steadfastly avoided.
In this case, however, it seems more important to highlight
potential Y2K problems
than to ease the transition
of potentially non-Y2K-compliant code
to new versions of @code{g77} and @code{libg2c}.)
@node Array Size
@node Array Size
@subsection Array Size
@subsection Array Size
@cindex limits, array size
@cindex limits, array size
...
@@ -14756,6 +14869,7 @@ as the above is just a sample, no such section exists.
...
@@ -14756,6 +14869,7 @@ as the above is just a sample, no such section exists.
* LEX:: Various lexer messages
* LEX:: Various lexer messages
* GLOBALS:: Disagreements about globals.
* GLOBALS:: Disagreements about globals.
* LINKFAIL:: When linking @samp{f771} fails.
* LINKFAIL:: When linking @samp{f771} fails.
* Y2KBAD:: Use of non-Y2K-compliant intrinsic.
@end menu
@end menu
@node CMPAMBIG
@node CMPAMBIG
...
@@ -15327,6 +15441,24 @@ might solve this problem, e.g.@: by adding
...
@@ -15327,6 +15441,24 @@ might solve this problem, e.g.@: by adding
BOOT_CFLAGS='-mminimal-toc -O2 -g'
BOOT_CFLAGS='-mminimal-toc -O2 -g'
@end smallexample
@end smallexample
to the @code{make bootstrap} command line.
to the @code{make bootstrap} command line.
@node Y2KBAD
@section @code{Y2KBAD}
@cindex Y2K compliance
@cindex Year 2000 compliance
@noindent
@smallexample
Intrinsic `@var{name}', invoked at (^), known to be non-Y2K-compliant@dots{}
@end smallexample
This diagnostic indicates that
the specific intrinsic invoked by the name @var{name}
is known to have an interface
that is not Year-2000 (Y2K) compliant.
@xref{Year 2000 (Y2K) Problems}.
@end ifset
@end ifset
@node Index
@node Index
...
...
gcc/f/intdoc.c
View file @
411d4e28
...
@@ -124,11 +124,13 @@ static struct _ffeintrin_name_ names[] = {
...
@@ -124,11 +124,13 @@ static struct _ffeintrin_name_ names[] = {
#define DEFGEN(CODE,NAME,SPEC1,SPEC2)
#define DEFGEN(CODE,NAME,SPEC1,SPEC2)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
static
struct
_ffeintrin_gen_
gens
[]
=
{
static
struct
_ffeintrin_gen_
gens
[]
=
{
...
@@ -137,11 +139,13 @@ static struct _ffeintrin_gen_ gens[] = {
...
@@ -137,11 +139,13 @@ static struct _ffeintrin_gen_ gens[] = {
{ NAME, { SPEC1, SPEC2, }, },
{ NAME, { SPEC1, SPEC2, }, },
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
static
struct
_ffeintrin_imp_
imps
[]
=
{
static
struct
_ffeintrin_imp_
imps
[]
=
{
...
@@ -151,9 +155,13 @@ static struct _ffeintrin_imp_ imps[] = {
...
@@ -151,9 +155,13 @@ static struct _ffeintrin_imp_ imps[] = {
#if 0 /* FFECOM_targetCURRENT == FFECOM_targetGCC */
#if 0 /* FFECOM_targetCURRENT == FFECOM_targetGCC */
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
{ NAME, FFECOM_gfrt ## GFRT, CONTROL },
{ NAME, FFECOM_gfrt ## GFRT, CONTROL },
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD) \
{ NAME, FFECOM_gfrt ## GFRT, CONTROL },
#elif
1
/* FFECOM_targetCURRENT == FFECOM_targetFFE */
#elif
1
/* FFECOM_targetCURRENT == FFECOM_targetFFE */
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
{ NAME, CONTROL },
{ NAME, CONTROL },
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD) \
{ NAME, CONTROL },
#else
#else
#error
#error
#endif
#endif
...
@@ -162,6 +170,7 @@ static struct _ffeintrin_imp_ imps[] = {
...
@@ -162,6 +170,7 @@ static struct _ffeintrin_imp_ imps[] = {
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
static
struct
_ffeintrin_spec_
specs
[]
=
{
static
struct
_ffeintrin_spec_
specs
[]
=
{
...
@@ -170,10 +179,12 @@ static struct _ffeintrin_spec_ specs[] = {
...
@@ -170,10 +179,12 @@ static struct _ffeintrin_spec_ specs[] = {
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) \
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) \
{ NAME, CALLABLE, FAMILY, IMP, },
{ NAME, CALLABLE, FAMILY, IMP, },
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
struct
cc_pair
{
ffeintrinImp
imp
;
char
*
text
;
};
struct
cc_pair
{
ffeintrinImp
imp
;
char
*
text
;
};
...
...
gcc/f/intrin.c
View file @
411d4e28
...
@@ -64,6 +64,7 @@ struct _ffeintrin_imp_
...
@@ -64,6 +64,7 @@ struct _ffeintrin_imp_
ffecomGfrt
gfrt_gnu
;
/* library routine, gnu-callable form. */
ffecomGfrt
gfrt_gnu
;
/* library routine, gnu-callable form. */
#endif
/* FFECOM_targetCURRENT == FFECOM_targetGCC */
#endif
/* FFECOM_targetCURRENT == FFECOM_targetGCC */
char
*
control
;
char
*
control
;
char
y2kbad
;
};
};
static
ffebad
ffeintrin_check_
(
ffeintrinImp
imp
,
ffebldOp
op
,
static
ffebad
ffeintrin_check_
(
ffeintrinImp
imp
,
ffebldOp
op
,
...
@@ -84,11 +85,13 @@ static struct _ffeintrin_name_ ffeintrin_names_[]
...
@@ -84,11 +85,13 @@ static struct _ffeintrin_name_ ffeintrin_names_[]
#define DEFGEN(CODE,NAME,SPEC1,SPEC2)
#define DEFGEN(CODE,NAME,SPEC1,SPEC2)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
static
struct
_ffeintrin_gen_
ffeintrin_gens_
[]
static
struct
_ffeintrin_gen_
ffeintrin_gens_
[]
...
@@ -99,11 +102,13 @@ static struct _ffeintrin_gen_ ffeintrin_gens_[]
...
@@ -99,11 +102,13 @@ static struct _ffeintrin_gen_ ffeintrin_gens_[]
{ NAME, { SPEC1, SPEC2, }, },
{ NAME, { SPEC1, SPEC2, }, },
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
static
struct
_ffeintrin_imp_
ffeintrin_imps_
[]
static
struct
_ffeintrin_imp_
ffeintrin_imps_
[]
...
@@ -115,10 +120,15 @@ static struct _ffeintrin_imp_ ffeintrin_imps_[]
...
@@ -115,10 +120,15 @@ static struct _ffeintrin_imp_ ffeintrin_imps_[]
#if FFECOM_targetCURRENT == FFECOM_targetGCC
#if FFECOM_targetCURRENT == FFECOM_targetGCC
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
{ NAME, FFECOM_gfrt ## GFRTDIRECT, FFECOM_gfrt ## GFRTF2C, \
{ NAME, FFECOM_gfrt ## GFRTDIRECT, FFECOM_gfrt ## GFRTF2C, \
FFECOM_gfrt ## GFRTGNU, CONTROL },
FFECOM_gfrt ## GFRTGNU, CONTROL, FALSE },
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD) \
{ NAME, FFECOM_gfrt ## GFRTDIRECT, FFECOM_gfrt ## GFRTF2C, \
FFECOM_gfrt ## GFRTGNU, CONTROL, Y2KBAD },
#elif FFECOM_targetCURRENT == FFECOM_targetFFE
#elif FFECOM_targetCURRENT == FFECOM_targetFFE
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
{ NAME, CONTROL },
{ NAME, CONTROL, FALSE },
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD) \
{ NAME, CONTROL, Y2KBAD },
#else
#else
#error
#error
#endif
#endif
...
@@ -127,6 +137,7 @@ static struct _ffeintrin_imp_ ffeintrin_imps_[]
...
@@ -127,6 +137,7 @@ static struct _ffeintrin_imp_ ffeintrin_imps_[]
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
static
struct
_ffeintrin_spec_
ffeintrin_specs_
[]
static
struct
_ffeintrin_spec_
ffeintrin_specs_
[]
...
@@ -137,10 +148,12 @@ static struct _ffeintrin_spec_ ffeintrin_specs_[]
...
@@ -137,10 +148,12 @@ static struct _ffeintrin_spec_ ffeintrin_specs_[]
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) \
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) \
{ NAME, CALLABLE, FAMILY, IMP, },
{ NAME, CALLABLE, FAMILY, IMP, },
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
};
};
...
@@ -1374,6 +1387,14 @@ ffeintrin_fulfill_generic (ffebld *expr, ffeinfo *info, ffelexToken t)
...
@@ -1374,6 +1387,14 @@ ffeintrin_fulfill_generic (ffebld *expr, ffeinfo *info, ffelexToken t)
ffebad_string
(
ffeintrin_gens_
[
gen
].
name
);
ffebad_string
(
ffeintrin_gens_
[
gen
].
name
);
ffebad_finish
();
ffebad_finish
();
}
}
if
(
ffeintrin_imps_
[
imp
].
y2kbad
)
{
ffebad_start
(
FFEBAD_INTRINSIC_Y2KBAD
);
ffebad_here
(
0
,
ffelex_token_where_line
(
t
),
ffelex_token_where_column
(
t
));
ffebad_string
(
ffeintrin_gens_
[
gen
].
name
);
ffebad_finish
();
}
}
}
}
}
...
@@ -1489,6 +1510,14 @@ ffeintrin_fulfill_specific (ffebld *expr, ffeinfo *info,
...
@@ -1489,6 +1510,14 @@ ffeintrin_fulfill_specific (ffebld *expr, ffeinfo *info,
ffebad_string
(
name
);
ffebad_string
(
name
);
ffebad_finish
();
ffebad_finish
();
}
}
if
(
ffeintrin_imps_
[
imp
].
y2kbad
)
{
ffebad_start
(
FFEBAD_INTRINSIC_Y2KBAD
);
ffebad_here
(
0
,
ffelex_token_where_line
(
t
),
ffelex_token_where_column
(
t
));
ffebad_string
(
name
);
ffebad_finish
();
}
}
}
}
}
...
...
gcc/f/intrin.def
View file @
411d4e28
...
@@ -3006,6 +3006,12 @@ DEFSPEC (NONE,
...
@@ -3006,6 +3006,12 @@ DEFSPEC (NONE,
CONTROL -- A control string, described below.
CONTROL -- A control string, described below.
The DEFIMPY macro specifies the above, plus:
Y2KBAD -- TRUE if the intrinsic is known to be non-Y2K-compliant,
FALSE if it is known to be Y2K-compliant. (In terms of
interface and libg2c implementation.)
*/
*/
/* The control string has the following format:
/* The control string has the following format:
...
@@ -3232,7 +3238,7 @@ DEFIMP (COMPLEX, "COMPLEX", ,,, "C=:*:Real=S*,Imag=S*")
...
@@ -3232,7 +3238,7 @@ DEFIMP (COMPLEX, "COMPLEX", ,,, "C=:*:Real=S*,Imag=S*")
DEFIMP (CPU_TIME, "CPU_TIME", SECOND,,, "--:-:Seconds=R*w")
DEFIMP (CPU_TIME, "CPU_TIME", SECOND,,, "--:-:Seconds=R*w")
DEFIMP (CTIME_func, "CTIME_func", CTIME,,, "A1*:-:STime=I*")
DEFIMP (CTIME_func, "CTIME_func", CTIME,,, "A1*:-:STime=I*")
DEFIMP (CTIME_subr, "CTIME_subr", CTIME,,, "--:-:Result=A1w,STime=I*")
DEFIMP (CTIME_subr, "CTIME_subr", CTIME,,, "--:-:Result=A1w,STime=I*")
DEFIMP
(DATE, "DATE", DATE,,, "--:-:Date=A1w"
)
DEFIMP
Y (DATE, "DATE", DATE,,, "--:-:Date=A1w", TRUE
)
DEFIMP (DATE_AND_TIME, "DATE_AND_TIME", DATE_AND_TIME,,, "--:-:Date=A1w,Time=?A1w,Zone=?A1w,Values=?I1(8)w")
DEFIMP (DATE_AND_TIME, "DATE_AND_TIME", DATE_AND_TIME,,, "--:-:Date=A1w,Time=?A1w,Zone=?A1w,Values=?I1(8)w")
DEFIMP (DBESJ0, "DBESJ0", L_BESJ0,,, "R2:-:X=R2")
DEFIMP (DBESJ0, "DBESJ0", L_BESJ0,,, "R2:-:X=R2")
DEFIMP (DBESJ1, "DBESJ1", L_BESJ1,,, "R2:-:X=R2")
DEFIMP (DBESJ1, "DBESJ1", L_BESJ1,,, "R2:-:X=R2")
...
@@ -3289,7 +3295,7 @@ DEFIMP (IBCLR, "IBCLR", ,,, "I=:0:I=I*,Pos=I*")
...
@@ -3289,7 +3295,7 @@ DEFIMP (IBCLR, "IBCLR", ,,, "I=:0:I=I*,Pos=I*")
DEFIMP (IBITS, "IBITS", ,,, "I=:0:I=I*,Pos=I*,Len=I*")
DEFIMP (IBITS, "IBITS", ,,, "I=:0:I=I*,Pos=I*,Len=I*")
DEFIMP (IBSET, "IBSET", ,,, "I=:0:I=I*,Pos=I*")
DEFIMP (IBSET, "IBSET", ,,, "I=:0:I=I*,Pos=I*")
DEFIMP (IDATE_unix, "IDATE_unix", IDATE,,, "--:-:TArray=I1(3)w")
DEFIMP (IDATE_unix, "IDATE_unix", IDATE,,, "--:-:TArray=I1(3)w")
DEFIMP
(IDATE_vxt, "IDATE_vxt", VXTIDATE,,, "--:-:M=I1w,D=I1w,Y=I1w"
)
DEFIMP
Y (IDATE_vxt, "IDATE_vxt", VXTIDATE,,, "--:-:M=I1w,D=I1w,Y=I1w", TRUE
)
DEFIMP (IEOR, "IEOR", ,,, "I=:*:I=I*,J=I*")
DEFIMP (IEOR, "IEOR", ,,, "I=:*:I=I*,J=I*")
DEFIMP (IOR, "IOR", ,,, "I=:*:I=I*,J=I*")
DEFIMP (IOR, "IOR", ,,, "I=:*:I=I*,J=I*")
DEFIMP (IERRNO, "IERRNO", IERRNO,,, "I1:-:")
DEFIMP (IERRNO, "IERRNO", IERRNO,,, "I1:-:")
...
...
gcc/f/intrin.h
View file @
411d4e28
...
@@ -51,11 +51,13 @@ typedef enum
...
@@ -51,11 +51,13 @@ typedef enum
#define DEFGEN(CODE,NAME,SPEC1,SPEC2) FFEINTRIN_gen ## CODE,
#define DEFGEN(CODE,NAME,SPEC1,SPEC2) FFEINTRIN_gen ## CODE,
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
FFEINTRIN_gen
FFEINTRIN_gen
}
ffeintrinGen
;
}
ffeintrinGen
;
...
@@ -65,11 +67,13 @@ typedef enum
...
@@ -65,11 +67,13 @@ typedef enum
#define DEFGEN(CODE,NAME,SPEC1,SPEC2)
#define DEFGEN(CODE,NAME,SPEC1,SPEC2)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) FFEINTRIN_spec ## CODE,
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) FFEINTRIN_spec ## CODE,
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL)
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD)
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
FFEINTRIN_spec
FFEINTRIN_spec
}
ffeintrinSpec
;
}
ffeintrinSpec
;
...
@@ -80,11 +84,14 @@ typedef enum
...
@@ -80,11 +84,14 @@ typedef enum
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
#define DEFIMP(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL) \
FFEINTRIN_imp ## CODE,
FFEINTRIN_imp ## CODE,
#define DEFIMPY(CODE,NAME,GFRTDIRECT,GFRTF2C,GFRTGNU,CONTROL,Y2KBAD) \
FFEINTRIN_imp ## CODE,
#include "intrin.def"
#include "intrin.def"
#undef DEFNAME
#undef DEFNAME
#undef DEFGEN
#undef DEFGEN
#undef DEFSPEC
#undef DEFSPEC
#undef DEFIMP
#undef DEFIMP
#undef DEFIMPY
FFEINTRIN_imp
FFEINTRIN_imp
}
ffeintrinImp
;
}
ffeintrinImp
;
...
...
gcc/f/news.texi
View file @
411d4e28
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
@c
The
text
of
this
file
appears
in
the
file
BUGS
@c
The
text
of
this
file
appears
in
the
file
BUGS
@c
in
the
G77
distribution
,
as
well
as
in
the
G77
manual
.
@c
in
the
G77
distribution
,
as
well
as
in
the
G77
manual
.
@c
1999
-
03
-
0
3
@c
1999
-
03
-
0
6
@ifclear
NEWSONLY
@ifclear
NEWSONLY
@node
News
@node
News
...
@@ -82,6 +82,16 @@ now are recognized by @code{g77}
...
@@ -82,6 +82,16 @@ now are recognized by @code{g77}
as
if
they
ended
in
@samp
{.
for
}
and
@samp
{.
fpp
},
respectively
.
as
if
they
ended
in
@samp
{.
for
}
and
@samp
{.
fpp
},
respectively
.
@item
@item
@code
{
g77
}
now
warns
about
a
reference
to
an
intrinsic
that
has
an
interface
that
is
not
Year
2000
(
Y2K
)
compliant
.
Also
,
the
@code
{
libg2c
}
has
been
changed
to
increase
the
likelihood
of
catching
references
to
the
implementations
of
these
intrinsics
using
the
@samp
{
EXTERNAL
}
mechanism
(
which
would
avoid
the
new
warnings
).
@xref
{
Year
2000
(
Y2K
)
Problems
},
for
more
information
.
@item
@code
{
g77
}
now
warns
about
a
reference
to
a
function
@code
{
g77
}
now
warns
about
a
reference
to
a
function
when
the
corresponding
@emph
{
subsequent
}
function
program
unit
when
the
corresponding
@emph
{
subsequent
}
function
program
unit
disagrees
with
the
reference
concerning
the
type
of
the
function
.
disagrees
with
the
reference
concerning
the
type
of
the
function
.
...
...
gcc/f/version.c
View file @
411d4e28
char
*
ffe_version_string
=
"0.5.24-19990
219
"
;
char
*
ffe_version_string
=
"0.5.24-19990
306
"
;
libf2c/ChangeLog
View file @
411d4e28
1999-03-06 Craig Burley <craig@jcb-sc.com>
Rename non-Y2K-compliant intrinsics:
* Makefile.in (F2CEXT): Now two versions each of
`date' and `vxtidt'.
* f2cext.c (date_, vxtidate_): Split into two versions,
the existing one calling a new "y2kbuggy" routine that
does not exist, and a new one named with "y2kbug" that
calls the newly renamed underlying routine.
* libU77/date_.c (G77_date_y2kbug_0): Rename from G77_date_0.
* libU77/vxtidate_.c (G77_vxtidate_y2kbug_0): Rename from
G77_vxtidate_0.
* libU77/Version.c: Bump version.
1999-03-03 Craig Burley <craig@jcb-sc.com>
1999-03-03 Craig Burley <craig@jcb-sc.com>
* libU77/vxtidate_.c (G77_vxtidate_0): Truncate
* libU77/vxtidate_.c (G77_vxtidate_0): Truncate
...
...
libf2c/Makefile.in
View file @
411d4e28
...
@@ -75,12 +75,13 @@ SUBDIRS = libI77 libF77 libU77
...
@@ -75,12 +75,13 @@ SUBDIRS = libI77 libF77 libU77
F2CEXT
=
abort derf derfc ef1asc ef1cmc erf erfc
exit
getarg getenv iargc
\
F2CEXT
=
abort derf derfc ef1asc ef1cmc erf erfc
exit
getarg getenv iargc
\
signal system flush ftell fseek access besj0 besj1 besjn besy0 besy1
\
signal system flush ftell fseek access besj0 besj1 besjn besy0 besy1
\
besyn chdir chmod ctime d
ate d
besj0 dbesj1 dbesjn dbesy0 dbesy1 dbesyn
\
besyn chdir chmod ctime dbesj0 dbesj1 dbesjn dbesy0 dbesy1 dbesyn
\
dtime etime fdate fgetc fget flush1 fnum fputc fput fstat gerror
\
dtime etime fdate fgetc fget flush1 fnum fputc fput fstat gerror
\
getcwd getgid getlog getpid getuid gmtime hostnm idate ierrno irand
\
getcwd getgid getlog getpid getuid gmtime hostnm idate ierrno irand
\
isatty itime
kill
link lnblnk lstat ltime mclock perror rand rename
\
isatty itime
kill
link lnblnk lstat ltime mclock perror rand rename
\
secnds second sleep srand stat symlnk
time
ttynam
umask
unlink
\
secnds second sleep srand stat symlnk
time
ttynam
umask
unlink
\
vxtidt vxttim alarm
vxttim alarm
\
date_y2kbuggy date_y2kbug vxtidt_y2kbuggy vxtidt_y2kbug
.SUFFIXES
:
.SUFFIXES
:
...
...
libf2c/f2cext.c
View file @
411d4e28
...
@@ -203,10 +203,23 @@ void ctime_ (char *chtime, const ftnlen Lchtime, longint *xstime) {
...
@@ -203,10 +203,23 @@ void ctime_ (char *chtime, const ftnlen Lchtime, longint *xstime) {
}
}
#endif
#endif
#ifdef Ldate
#ifdef Ldate
_y2kbuggy
int
date_
(
char
*
buf
,
ftnlen
buf_len
)
{
int
date_
(
char
*
buf
,
ftnlen
buf_len
)
{
extern
int
G77_date_0
(
char
*
buf
,
ftnlen
buf_len
);
/* Fail to link, so user sees attempt to invoke non-Y2K-compliant
return
G77_date_0
(
buf
,
buf_len
);
routine. */
extern
int
G77_date_y2kbuggy_0
(
char
*
buf
,
ftnlen
buf_len
);
return
G77_date_y2kbuggy_0
(
buf
,
buf_len
);
}
#endif
#ifdef Ldate_y2kbug
int
date_y2kbug__
(
char
*
buf
,
ftnlen
buf_len
)
{
/* If user wants to invoke the non-Y2K-compliant routine via
an `EXTERNAL' interface, avoiding the warning via g77's
`INTRINSIC' interface, force coding of "y2kbug" string in
user's program. */
extern
int
G77_date_y2kbug_0
(
char
*
buf
,
ftnlen
buf_len
);
return
G77_date_y2kbug_0
(
buf
,
buf_len
);
}
}
#endif
#endif
...
@@ -540,10 +553,23 @@ integer unlink_ (const char *str, const ftnlen Lstr) {
...
@@ -540,10 +553,23 @@ integer unlink_ (const char *str, const ftnlen Lstr) {
}
}
#endif
#endif
#ifdef Lvxtidt
#ifdef Lvxtidt
_y2kbuggy
int
vxtidate_
(
integer
*
m
,
integer
*
d
,
integer
*
y
)
{
int
vxtidate_
(
integer
*
m
,
integer
*
d
,
integer
*
y
)
{
extern
int
G77_vxtidate_0
(
integer
*
m
,
integer
*
d
,
integer
*
y
);
/* Fail to link, so user sees attempt to invoke non-Y2K-compliant
return
G77_vxtidate_0
(
m
,
d
,
y
);
routine. */
extern
int
G77_vxtidate_y2kbuggy_0
(
integer
*
m
,
integer
*
d
,
integer
*
y
);
return
G77_vxtidate_y2kbuggy_0
(
m
,
d
,
y
);
}
#endif
#ifdef Lvxtidt_y2kbug
int
vxtidate_y2kbug__
(
integer
*
m
,
integer
*
d
,
integer
*
y
)
{
/* If user wants to invoke the non-Y2K-compliant routine via
an `EXTERNAL' interface, avoiding the warning via g77's
`INTRINSIC' interface, force coding of "y2kbug" string in
user's program. */
extern
int
G77_vxtidate_y2kbug_0
(
integer
*
m
,
integer
*
d
,
integer
*
y
);
return
G77_vxtidate_y2kbug_0
(
m
,
d
,
y
);
}
}
#endif
#endif
...
...
libf2c/libU77/Version.c
View file @
411d4e28
static
char
junk
[]
=
"
\n
@(#) LIBU77 VERSION 19980709
\n
"
;
static
char
junk
[]
=
"
\n
@(#) LIBU77 VERSION 19980709
\n
"
;
char
__G77_LIBU77_VERSION__
[]
=
"0.5.24-19990
115
"
;
char
__G77_LIBU77_VERSION__
[]
=
"0.5.24-19990
306
"
;
#include <stdio.h>
#include <stdio.h>
...
...
libf2c/libU77/date_.c
View file @
411d4e28
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
static
integer
c__5
=
5
;
static
integer
c__5
=
5
;
/* Subroutine */
int
G77_date_0
(
char
*
buf
,
ftnlen
buf_len
)
/* Subroutine */
int
G77_date_
y2kbug_
0
(
char
*
buf
,
ftnlen
buf_len
)
{
{
/* System generated locals */
/* System generated locals */
address
a__1
[
5
];
address
a__1
[
5
];
...
...
libf2c/libU77/vxtidate_.c
View file @
411d4e28
...
@@ -38,10 +38,10 @@ Boston, MA 02111-1307, USA. */
...
@@ -38,10 +38,10 @@ Boston, MA 02111-1307, USA. */
/* Subroutine */
/* Subroutine */
#ifdef KR_headers
#ifdef KR_headers
int
G77_vxtidate_0
(
m
,
d
,
y
)
int
G77_vxtidate_
y2kbug_
0
(
m
,
d
,
y
)
integer
*
y
,
*
m
,
*
d
;
integer
*
y
,
*
m
,
*
d
;
#else
#else
int
G77_vxtidate_0
(
integer
*
m
,
integer
*
d
,
integer
*
y
)
int
G77_vxtidate_
y2kbug_
0
(
integer
*
m
,
integer
*
d
,
integer
*
y
)
#endif
#endif
{
{
struct
tm
*
lt
;
struct
tm
*
lt
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment