[PATCH, fortran]: Do not cast charlen to index type in transfer_array_inner

Uros Bizjak ubizjak@gmail.com
Tue Feb 26 18:16:00 GMT 2019


Attached patch removes following warning:

libgfortran/io/transfer.c: In function ‘transfer_array_inner’:
libgfortran/io/transfer.c:2499:35: warning: operand of ?: changes
signedness from ‘long int’ to ‘size_t’ {aka ‘long unsigned int’} due
to unsignedness of other operand [-Wsign-compare]

There is actually no need to cast "charlen" to (unsigned) index_type,
as it is already declared as size_t:

typedef size_t gfc_charlen_type;

the same type as are "elem_len" and "size" variables.

2019-02-26  Uroš Bizjak  <ubizjak@gmail.com>

    * io/transfer.c (transfer_array_inner): Do not
    cast charlen to index type.

Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

OK for mainline?

Uros.
-------------- next part --------------
Index: io/transfer.c
===================================================================
--- io/transfer.c	(revision 269217)
+++ io/transfer.c	(working copy)
@@ -2496,7 +2496,7 @@ transfer_array_inner (st_parameter_dt *dtp, gfc_ar
     return;
 
   iotype = (bt) GFC_DESCRIPTOR_TYPE (desc);
-  size = iotype == BT_CHARACTER ? (index_type) charlen : GFC_DESCRIPTOR_SIZE (desc);
+  size = iotype == BT_CHARACTER ? charlen : GFC_DESCRIPTOR_SIZE (desc);
 
   rank = GFC_DESCRIPTOR_RANK (desc);
 


More information about the Fortran mailing list