https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109641
Bug ID: 109641
Summary: Gfortran fails to overload intrinsic operator (*) if
operands are complex. It works with real ones.
Product: gcc
Version: og10 (devel/omp/gcc-10)
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: adelson.oliveira at gmail dot com
Target Milestone: ---
Created attachment 54929
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54929&action=edit
A small FORTRAN code to reproduce the bug
I'm uploading a small fortran code to show the problem. The code has a module
that overloads intrinsic operator (*) for a vector matrix multiplication. The
bug is triggered when the matrix (and the result) is complex.
The compilation with
$ gfortran -o teste -O teste.f90
will fail with a error message reporting inconsistent rank declaration.
As indicated in the snippet, simply changing from COMPLEX to REAL in the
declaration of the matrix (and the result) everything goes fine.
As an additional information, if one changes from the intrinsic (*) to
something like (.MULT.) in the module then there is no error at all.
Please look for the comments in the MODULE TESTEOP and in the PROGRAM TESTE to
better test the bug.
Thanks for any help