https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91593

            Bug ID: 91593
           Summary: Implicit enum conversions in libgfortran/io/transfer.c
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: prathamesh3492 at gcc dot gnu.org
  Target Milestone: ---

Hi,
I added a patch for Wenum-conversion (PR78736), that exposes some implicit enum
conversions in libgfortran/io/transfer.c:

./../../gcc/libgfortran/io/transfer.c: In function ‘current_mode’:
../../../gcc/libgfortran/io/transfer.c:206:5: warning: implicit conversion from
‘enum <anonymous>’ to ‘file_mode’ {aka ‘enum <anonymous>’} [-Wenum-conversion]
  206 |   m = FORM_UNSPECIFIED;
      |     ^
../../../gcc/libgfortran/io/transfer.c: In function
‘formatted_transfer_scalar_read’:
../../../gcc/libgfortran/io/transfer.c:1730:25: warning: implicit conversion
from ‘enum <anonymous>’ to ‘unit_sign’ {aka ‘enum <anonymous>’}
[-Wenum-conversion]
 1730 |    dtp->u.p.sign_status = SIGN_S;
      |                         ^
../../../gcc/libgfortran/io/transfer.c:1735:25: warning: implicit conversion
from ‘enum <anonymous>’ to ‘unit_sign’ {aka ‘enum <anonymous>’}
[-Wenum-conversion]
 1735 |    dtp->u.p.sign_status = SIGN_SS;
      |                         ^
../../../gcc/libgfortran/io/transfer.c:1740:25: warning: implicit conversion
from ‘enum <anonymous>’ to ‘unit_sign’ {aka ‘enum <anonymous>’}
[-Wenum-conversion]
 1740 |    dtp->u.p.sign_status = SIGN_SP;
      |                         ^
./../../gcc/libgfortran/io/transfer.c: In function
‘formatted_transfer_scalar_write’:
../../../gcc/libgfortran/io/transfer.c:2189:25: warning: implicit conversion
from ‘enum <anonymous>’ to ‘unit_sign’ {aka ‘enum <anonymous>’}
[-Wenum-conversion]
 2189 |    dtp->u.p.sign_status = SIGN_S;
      |                         ^
./../../gcc/libgfortran/io/transfer.c:2194:25: warning: implicit conversion
from ‘enum <anonymous>’ to ‘unit_sign’ {aka ‘enum <anonymous>’}
[-Wenum-conversion]
 2194 |    dtp->u.p.sign_status = SIGN_SS;
      |                         ^
../../../gcc/libgfortran/io/transfer.c:2199:25: warning: implicit conversion
from ‘enum <anonymous>’ to ‘unit_sign’ {aka ‘enum <anonymous>’}
[-Wenum-conversion]
2199 |    dtp->u.p.sign_status = SIGN_SP;
     |                         ^

AFAIU, the warnings are correct in this case since the enums are different
and thus there's an implicit conversion from one enum type to another ?

Thanks,
Prathamesh

Reply via email to