Hi Thomas,
the patch is basically fine.
I am wondering if we should create a new helper function that is
the opposite of type_check ("type_cannot_be"), so that we avoid
redundant code at the source level. It may not be worth it yet,
so your choice.
Furthermore, if you planned to list intrinsics alphabetically,
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index 429d8461f8f..00276b5b45d 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
this part needs corrected (in my counting, M comes before S):
@@ -2780,6 +2781,7 @@ The following intrinsics take unsigned arguments:
@item @code{BLE}, @pxref{BLE}
@item @code{BLT}, @pxref{BLT}
@item @code{CSHIFT}, @pxref{CSHIFT}
+@item @code{CMPLX}, @pxref{CMPLX}
@item @code{DIGITS}, @pxref{DIGITS}
@item @code{DOT_PRODUCT}, @pxref{DOT_PRODUCT}
@item @code{DSHIFTL}, @pxref{DSHIFTL}
Not being a native speaker, I stumbled over this:
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 9d0b752670b..d11d37761d9 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -3637,9 +3638,9 @@ Elemental function
@item @emph{Arguments}:
@multitable @columnfractions .15 .70
@item @var{X} @tab The type may be @code{INTEGER}, @code{REAL},
-or @code{COMPLEX}.
+@code{COMPLEX} or @code{UNSIGNED}.
@item @var{Y} @tab (Optional; only allowed if @var{X} is not
-@code{COMPLEX}.) May be @code{INTEGER} or @code{REAL}.
+@code{COMPLEX}.) May be @code{INTEGER}, @code{REAL} or @code{UNSIGNED}.
^^^ Shouldn't one add "The type" before "may be"?
@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant
expression indicating the kind parameter of the result.
@end multitable
OK for mainline after considering the above comments.
Thanks for the patch!
Harald
Am 09.11.24 um 17:53 schrieb Thomas Koenig:
Hello world,
the attached patch rejects UNSIGNED arguments for the COMPLEX
function, which is an extension. It also documents CMPLX,
INT and REAL as taking UNSIGNED arguments.
Regression-tested. OK for trunk?
Best regards
Thomas
gcc/fortran/ChangeLog:
* check.cc (gfc_check_complex): Reject UNSIGNED.
* gfortran.texi: Update example program. Note that
CMPLX, INT and REAL also take unsigned arguments.
* intrinsic.texi (CMPLX): Document UNSIGNED.
(INT): Likewise.
(REAL): Likewise.
gcc/testsuite/ChangeLog:
* gfortran.dg/unsigned_41.f90: New test.