fortran: [PR126781] TEAM_NUMBER keyword for NUM_IMAGES and IMAGE_INDEX

The TEAM and TEAM_NUMBER arguments of NUM_IMAGES and IMAGE_INDEX shared
a single dummy argument named "team/team_number", so neither keyword
could be used, and the TEAM argument of IMAGE_INDEX was accepted with
-std=f2008.

Give each its own optional dummy argument, of type TEAM_TYPE and
INTEGER.  A positional INTEGER argument is moved to TEAM_NUMBER by the
check functions, which now take the actual argument list, and giving
both is diagnosed as an error.  Both arguments are Fortran 2018.

	PR fortran/126781

gcc/fortran/ChangeLog:

	* check.cc (check_team_or_team_number): New function.
	(gfc_check_image_index, gfc_check_num_images): Take the actual
	argument list and use it.
	* intrinsic.cc (add_sym_2red, add_sym_4red): New functions.
	(add_functions): Give NUM_IMAGES and IMAGE_INDEX separate TEAM
	and TEAM_NUMBER arguments.
	(check_specific): Pass the actual argument list to
	gfc_check_num_images and gfc_check_image_index.
	* intrinsic.h (gfc_check_num_images, gfc_check_image_index,
	gfc_simplify_image_index, gfc_simplify_num_images,
	gfc_resolve_image_index): Update prototypes.
	* intrinsic.texi (IMAGE_INDEX, NUM_IMAGES): Document TEAM and
	TEAM_NUMBER as separate arguments.  Fix the NUM_IMAGES example.
	* iresolve.cc (gfc_resolve_image_index): Add TEAM_NUMBER argument.
	* simplify.cc (gfc_simplify_num_images, gfc_simplify_image_index):
	Likewise.
	* trans-intrinsic.cc (trans_image_index, trans_num_images): Take
	the team number from the TEAM_NUMBER argument.

gcc/testsuite/ChangeLog:

	* gfortran.dg/coarray_this_image_3.f90: Update expected errors.
	* gfortran.dg/coarray/num_images_team_1.f90: New test.
	* gfortran.dg/coarray/num_images_team_2.f90: New test.
	* gfortran.dg/coarray_team_kw_1.f90: New test.
	* gfortran.dg/coarray_team_std_1.f90: New test.
12 files changed