File f08_intrins.patch of Package ftnchek
--- ftnchek/intrins.c.4 2020-10-28 22:57:15.181064742 +0100
+++ ftnchek/intrins.c 2020-11-15 10:48:17.566426317 +0100
@@ -552,6 +552,56 @@ SYSTEM_CLOCK ([COUNT, Obtai
{"SELECTED_CHAR_KIND", 1, STR, type_INTEGER, I_F95,NULL}, /* TODO: write ii_selected_char_kind */
+ /* F2008 intrinsics, at the moment treated as F95 */
+{"ACOSH", 1, R|D|C|Z, type_GENERIC, I_F95|I_ELEM,NULL},
+{"ASINH", 1, R|D|C|Z, type_GENERIC, I_F95|I_ELEM,NULL},
+{"ATANH", 1, R|D|C|Z, type_GENERIC, I_F95|I_ELEM,NULL},
+{"BESSEL_J0", 1, R|D, type_GENERIC, I_F95|I_ELEM,NULL},
+{"BESSEL_J1", 1, R|D, type_GENERIC, I_F95|I_ELEM,NULL},
+{"BESSEL_JN", I_2or3, I|R|D, type_GENERIC, I_F95|I_MIXED_ARGS|I_ELEM,NULL},
+{"BESSEL_Y0", 1, R|D, type_GENERIC, I_F95|I_ELEM,NULL},
+{"BESSEL_Y1", 1, R|D, type_GENERIC, I_F95|I_ELEM,NULL},
+{"BESSEL_YN", I_2or3, I|R|D, type_GENERIC, I_F95|I_MIXED_ARGS|I_ELEM,NULL},
+{"BGE", 2, I, type_LOGICAL, I_F95|I_ELEM,NULL},
+{"BGE", 2, I, type_LOGICAL, I_F95|I_ELEM,NULL},
+{"BLE", 2, I, type_LOGICAL, I_F95|I_ELEM,NULL},
+{"BLT", 2, I, type_LOGICAL, I_F95|I_ELEM,NULL},
+{"C_SIZEOF", 1, I|R|D|C|Z|L|STR,type_INTEGER, I_F95,NULL},
+{"COMPILER_OPTIONS", 0, 0, type_STRING, I_F95,NULL},
+{"COMPILER_VERSION", 0, 0, type_STRING, I_F95,NULL},
+{"DSHIFTL", 3, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"DSHIFTR", 3, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"ERF", 1, R|D, type_REAL, I_F95|I_ELEM,NULL},
+{"ERFC", 1, R|D, type_REAL, I_F95|I_ELEM,NULL},
+{"ERFC_SCALED", 1, R|D, type_REAL, I_F95|I_ELEM,NULL},
+{"EXECUTE_COMMAND_LINE",I_1to5, STR|L|I,type_SUBROUTINE,I_F95|I_MIXED_ARGS,NULL},
+{"GAMMA", 1, R|D, type_REAL, I_F95|I_ELEM,NULL},
+{"GERROR", 1, STR, type_SUBROUTINE,I_F95,NULL},
+{"HYPOT", 2, R|D, type_REAL, I_F95|I_ELEM,NULL},
+{"IALL", I_1to3, I|L, type_INTEGER, I_F95|I_MIXED_ARGS,NULL},
+{"IANY", 2, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"IMAGE_INDEX", 2, ANY, type_INTEGER, I_F95,NULL},
+{"IPARITY", I_1to3, I|L, type_INTEGER, I_F95,NULL},
+{"LCOBOUND", I_1to3, ANY, type_INTEGER, I_F95|I_MIXED_ARGS|I_OK,NULL},
+{"LEADZ", 1, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"LOG_GAMMA", 1, R|D, type_REAL, I_F95|I_ELEM,NULL},
+{"MASKL", 1, I, type_INTEGER, I_F95|I_ELEM|I_OK,NULL},
+{"MASKR", 1, I, type_INTEGER, I_F95|I_ELEM|I_OK,NULL},
+{"MERGE_BITS", 3, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"NORM2", I_1or2, R|D|I, type_REAL, I_F95|I_MIXED_ARGS,NULL},
+{"NUM_IMAGES", I_0to2, I|L, type_INTEGER, I_F95|I_MIXED_ARGS,NULL},
+{"PARITY", I_1or2, I|L, type_LOGICAL, I_F95|I_MIXED_ARGS,NULL},
+{"POPCNT", 1, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"POPPAR", 1, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"SHIFTA", 2, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"SHIFTL", 2, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"SHIFTR", 2, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"STORAGE_SIZE", 1, ANY, type_INTEGER, I_F95|I_OK,NULL},
+{"THIS_IMAGE", I_0to2, ANY, type_INTEGER, I_F95|I_MIXED_ARGS,NULL},
+{"TRAILZ", 1, I, type_INTEGER, I_F95|I_ELEM,NULL},
+{"UCOBOUND", I_1to3, ANY, type_INTEGER, I_F95|I_MIXED_ARGS|I_OK,NULL},
+
+
/* Nonstandard intrinsics */
/* Nonstandard double and quad precision intrinsics are given the
--- ftnchek/symtab.c.1 2020-11-15 11:00:54.204280666 +0100
+++ ftnchek/symtab.c 2020-11-15 11:04:58.222031300 +0100
@@ -722,6 +722,20 @@ check_intrins_args(id, arg)
}
numargs_ok = (args_given >= 2 && args_given <= (opt_kind_allowed? 6: 5));
break;
+ case I_0to2: /* 0 to 2 arguments allowed */
+ if (opt_kind_index == -1) { /* no KIND keyword found */
+ if (opt_kind_allowed && args_given == 3) /* last arg, no keyword */
+ opt_kind_index = 1;
+ }
+ numargs_ok = (args_given >= 0 && args_given <= (opt_kind_allowed? 3: 2));
+ break;
+ case I_1to5: /* 1 to 5 arguments allowed */
+ if (opt_kind_index == -1) { /* no KIND keyword found */
+ if (opt_kind_allowed && args_given == 6) /* last arg, no keyword */
+ opt_kind_index = 1;
+ }
+ numargs_ok = (args_given >= 0 && args_given <= (opt_kind_allowed? 6: 5));
+ break;
default: /* positive numargs: must agree */
if (opt_kind_index == -1) { /* no KIND keyword found */
if (opt_kind_allowed && args_given == (unsigned)(numargs+1)) /* last arg, no keyword */
--- ftnchek/symtab.h.1 2020-10-28 22:57:15.181064742 +0100
+++ ftnchek/symtab.h 2020-11-15 01:20:45.915483137 +0100
@@ -621,6 +621,8 @@ typedef struct MVHead { /* ModVarListHea
#define I_2to4 (-7) /* 2 to 4 arguments */
#define I_3or4 (-8) /* 3 or 4 arguments */
#define I_2to5 (-9) /* 2 to 5 arguments */
+#define I_0to2 (-10) /* 0 to 2 arguments */
+#define I_1to5 (-11) /* 1 to 5 arguments */
/* for intrins_flags field */