summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/transfer_resolve_1.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/transfer_resolve_1.f9021
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90 b/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
new file mode 100644
index 000000000..8d326a186
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+! PR40847 - an error in gfc_resolve_transfer caused the character length
+! of 'mold' to be set incorrectly.
+!
+! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
+!
+program test_elemental
+
+if (any (transfer_size((/0.,0./),(/'a','b'/)) .ne. [4 ,4])) call abort
+
+contains
+
+ elemental function transfer_size (source, mold)
+ real, intent(in) :: source
+ character(*), intent(in) :: mold
+ integer :: transfer_size
+ transfer_size = SIZE(TRANSFER(source, (/mold/)))
+ return
+ end function transfer_size
+
+end program test_elemental