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 */
 
openSUSE Build Service is sponsored by