[gfortran] Partial fix for PR 19575
Steve Kargl
sgk@troutmask.apl.washington.edu
Sat Jan 22 19:54:00 GMT 2005
In intrinsic.c, we were using make_alias() to add symbols
to the list of intrinsicis, but we were not probably honoring
the standard. Consider,
add_sym_1 ("cabs", 1, 1, BT_REAL, dr, GFC_STD_F77,
NULL, gfc_simplify_abs, gfc_resolve_abs,
a, BT_COMPLEX, dz, REQUIRED);
add_sym_1 ("zabs", 1, 1, BT_REAL, dd, GFC_STD_GNU,
NULL, gfc_simplify_abs, gfc_resolve_abs,
a, BT_COMPLEX, dd, REQUIRED);
make_alias ("cdabs");
if we set -std=f77, then cdabs would be aliased to cabs,
which is not the intended behavior. The attached fixes
this problem.
2005-01-22 Steven G. Kargl <kargls@comcast.net>
* intrinsic.c (make_alias): Add standard argument.
(add_functions): Update make_alias calls.
--
Steve
-------------- next part --------------
Index: intrinsic.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fortran/intrinsic.c,v
retrieving revision 1.36
diff -u -b -u -r1.36 intrinsic.c
--- intrinsic.c 18 Jan 2005 12:11:51 -0000 1.36
+++ intrinsic.c 22 Jan 2005 19:45:16 -0000
@@ -808,9 +808,14 @@
freed as a single block. */
static void
-make_alias (const char *name)
+make_alias (const char *name, int standard)
{
+ /* First check that the intrinsic belongs to the selected standard.
+ If not, don't add it to the symbol list. */
+ if (!(gfc_option.allow_std & standard))
+ return;
+
switch (sizing)
{
case SZ_FUNCS:
@@ -884,7 +889,7 @@
NULL, gfc_simplify_abs, gfc_resolve_abs,
a, BT_COMPLEX, dd, REQUIRED);
- make_alias ("cdabs");
+ make_alias ("cdabs", GFC_STD_GNU);
make_generic ("abs", GFC_ISYM_ABS, GFC_STD_F77);
@@ -1127,7 +1132,7 @@
NULL, gfc_simplify_cos, gfc_resolve_cos,
x, BT_COMPLEX, dd, REQUIRED);
- make_alias ("cdcos");
+ make_alias ("cdcos", GFC_STD_GNU);
make_generic ("cos", GFC_ISYM_COS, GFC_STD_F77);
@@ -1158,7 +1163,7 @@
gfc_check_dble, gfc_simplify_dble, gfc_resolve_dble,
a, BT_REAL, dr, REQUIRED);
- make_alias ("dfloat");
+ make_alias ("dfloat", GFC_STD_GNU);
make_generic ("dble", GFC_ISYM_DBLE, GFC_STD_F77);
@@ -1239,7 +1244,7 @@
gfc_check_etime, NULL, NULL,
x, BT_REAL, 4, REQUIRED);
- make_alias ("dtime");
+ make_alias ("dtime", GFC_STD_GNU);
make_generic ("etime", GFC_ISYM_ETIME, GFC_STD_GNU);
@@ -1259,7 +1264,7 @@
NULL, gfc_simplify_exp, gfc_resolve_exp,
x, BT_COMPLEX, dd, REQUIRED);
- make_alias ("cdexp");
+ make_alias ("cdexp", GFC_STD_GNU);
make_generic ("exp", GFC_ISYM_EXP, GFC_STD_F77);
@@ -1491,7 +1496,7 @@
NULL, gfc_simplify_log, gfc_resolve_log,
x, BT_COMPLEX, dd, REQUIRED);
- make_alias ("cdlog");
+ make_alias ("cdlog", GFC_STD_GNU);
make_generic ("log", GFC_ISYM_LOG, GFC_STD_F77);
@@ -1713,7 +1718,7 @@
/* Compatibility with HP FORTRAN 77/iX Reference. Note, rand() and ran()
use slightly different shoddy multiplicative congruential PRNG. */
- make_alias ("ran");
+ make_alias ("ran", GFC_STD_GNU);
make_generic ("rand", GFC_ISYM_RAND, GFC_STD_GNU);
@@ -1831,7 +1836,7 @@
NULL, gfc_simplify_sin, gfc_resolve_sin,
x, BT_COMPLEX, dd, REQUIRED);
- make_alias ("cdsin");
+ make_alias ("cdsin", GFC_STD_GNU);
make_generic ("sin", GFC_ISYM_SIN, GFC_STD_F77);
@@ -1880,7 +1885,7 @@
NULL, gfc_simplify_sqrt, gfc_resolve_sqrt,
x, BT_COMPLEX, dd, REQUIRED);
- make_alias ("cdsqrt");
+ make_alias ("cdsqrt", GFC_STD_GNU);
make_generic ("sqrt", GFC_ISYM_SQRT, GFC_STD_F77);
More information about the Fortran
mailing list