http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57022
Bug #: 57022 Summary: [4.7/4.8/4.9 Regression] Inappropriate warning for use of TRANSFER with arrays Classification: Unclassified Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: domi...@lps.ens.fr CC: ja...@gcc.gnu.org, tkoe...@gcc.gnu.org >From http://gcc.gnu.org/ml/fortran/2013-04/msg00191.html, when compiled by gfortran 4.7.3, 4.8.0, and trunk with -Wall, the following code --------------------------------------- module test_transfer use, intrinsic :: iso_fortran_env integer(int8) :: test8(8) = 0 integer(int16) :: test16(4) = 0 integer(int32) :: test32(2) = 0 integer(int64) :: test64 = 0 integer :: test contains subroutine transfers() select case(test) case(0) test64 = transfer(test8, test64) case(1) test64 = transfer(test16, test64) case(2) test64 = transfer(test32, test64) case(3) test8 = transfer(test64, test8, 8) case(4) test16 = transfer(test64, test16, 4) case(5) test32 = transfer(test64, test32, 2) end select return end subroutine transfers end module test_transfer --------------------------------------- generates the messages --------------------------------------- test_transfer.f90:17.30: test64 = transfer(test8, test64) 1 Warning: Intrinsic TRANSFER at (1) has partly undefined result: source size 1 < result size 8 test_transfer.f90:19.30: test64 = transfer(test16, test64) 1 Warning: Intrinsic TRANSFER at (1) has partly undefined result: source size 2 < result size 8 test_transfer.f90:21.30: test64 = transfer(test32, test64) 1 Warning: Intrinsic TRANSFER at (1) has partly undefined result: source size 4 < result size 8 --------------------------------------- There is no warning for revision 176696 (2011-07-23), but I see them for revision 177649 (2011-08-11). This is likely due to (exposed by) revision 177486: in gfc_calculate_transfer_sizes source->expr_type == EXPR_VARIABLE.