diff mbox

Ping: [Patch, fortran] Bug 68241 - [meta-bug] Deferred-length character - PRs50221, 68216, 63932, 66408, 67674 and 49954

Message ID 2EC098E0-3995-442D-8A9B-84553E97ECC1@lps.ens.fr
State New
Headers show

Commit Message

Dominique d'Humières Nov. 14, 2015, 6:55 p.m. UTC
Dear Paul,

Update with your latest patch. Using the following patch


the output is now correct except the one for print '(">",a,"<")', strings(1:5) which is now

>A   <
>A   <
>A   <
>A   <
>A   <

It was correct with the previous patch.

Everything else looks good.

IMO the latest issue may be delayed after a commit!-)

Dominique

> Le 14 nov. 2015 à 19:25, Paul Richard Thomas <paul.richard.thomas@gmail.com> a écrit :
> 
> Hi Steve,
> 
> Following an email from Dominique to me, I think not. In the course of
> fixing PR49954, I put right the setting of the descriptor dtype. Since
> this gets passed to the IO runtime, I think that this is the reason
> for the difference in behaviour.
> 
> I think that another week of effort should put right gfortran's woes
> with deferred characters. As well as concatenation problems that I
> think I have fixed, parentheses cause instant death :-(
> 
> Cheers
> 
> Paul
diff mbox

Patch

--- /opt/gcc/work/gcc/testsuite/gfortran.dg/deferred_character_4.f90	2015-11-14 19:28:59.000000000 +0100
+++ deferred_character_4_db.f90	2015-11-14 19:43:55.000000000 +0100
@@ -21,6 +21,16 @@  program chk_alloc_string
 
     strings = [character(len=4) :: "A", "C", "ABCDE", "V", "zzzz"]
 
+    print *, len(strings), size(strings, 1)
+    do i = 1, size(strings, 1)
+      print *, "'",strings(i),"'"
+    end do
+    print *, "other print"
+    print *, (strings(i), i= 1, size(strings, 1))
+    print *, "'", strings(1),"' '", strings(2), "' '", strings(3), "' '", strings(4), "' '", strings(5), "'"
+    print *, "'", strings, "'"
+    print '(">",a,"<")', strings
+    print '(">",a,"<")', strings(1:5)
     if (len(strings) .ne. 4) call abort
     if (size(strings, 1) .ne. 5) call abort
     if (any (strings .ne. [character(len=4) :: "A", "C", "ABCD", "V", "zzzz"])) call abort