From 184210e82c5572ee07f62fe342f42d38d20f54e6 Mon Sep 17 00:00:00 2001
From: Jerry DeLisle <jvdelisle@gcc.gnu.org>
Date: Fri, 16 Dec 2005 19:40:36 +0000
Subject: [PATCH] re PR fortran/25264 (write to internal unit from the string
 itself gives wrong result ?)

2005-12-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25264
	PR libgfortran/25349
	* gfortran.dg/tl_editing.f90: Added additional checks.
	* gfortran.dg/t_editing.f: New test.
	* gfortran.dg/write_padding.f90: New test

From-SVN: r108673
---
 gcc/testsuite/ChangeLog                     |  8 +++++
 gcc/testsuite/gfortran.dg/t_editing.f       |  8 +++++
 gcc/testsuite/gfortran.dg/tl_editing.f90    | 34 ++++++++++++++++-----
 gcc/testsuite/gfortran.dg/write_padding.f90 | 13 ++++++++
 4 files changed, 55 insertions(+), 8 deletions(-)
 create mode 100644 gcc/testsuite/gfortran.dg/t_editing.f
 create mode 100644 gcc/testsuite/gfortran.dg/write_padding.f90

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4031480cac1a..3f14f8334983 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2005-12-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libgfortran/25264
+	PR libgfortran/25349
+	* gfortran.dg/tl_editing.f90: Added additional checks.
+	* gfortran.dg/t_editing.f: New test.
+	* gfortran.dg/write_padding.f90: New test
+
 2005-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	PR testsuite/25215
diff --git a/gcc/testsuite/gfortran.dg/t_editing.f b/gcc/testsuite/gfortran.dg/t_editing.f
new file mode 100644
index 000000000000..6121e85845a2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/t_editing.f
@@ -0,0 +1,8 @@
+! { dg-do run }     
+! PR25349 Check T editing. Test case from PR submitted by Thomas Koenig
+! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+      program main
+      character(len=10) line
+      write (line,'(1X,A,T1,A)') 'A','B'
+      if (line.ne.'BA') call abort()
+      end
diff --git a/gcc/testsuite/gfortran.dg/tl_editing.f90 b/gcc/testsuite/gfortran.dg/tl_editing.f90
index 8f9702da6ba9..ea86873a726b 100644
--- a/gcc/testsuite/gfortran.dg/tl_editing.f90
+++ b/gcc/testsuite/gfortran.dg/tl_editing.f90
@@ -3,12 +3,30 @@
 ! Left tabbing, followed by X or T-tabbing to the right would
 ! cause spaces to be overwritten on output data.
 ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
-  program tl_editting
-    character*10           ::  line
-    character*10           ::  aline = "abcdefxyij"
-    character*2            ::  bline = "gh"
-    character*10           ::  cline = "abcdefghij"
-    write (line, '(a10,tl6,2x,a2)') aline, bline
-    if (line.ne.cline) call abort ()
-  end program tl_editting
+! PR25349 Revised by Jerry DeLisle <jvdelisle@gcc.gnu.org> 
+program tl_editting
+  character*10           ::  line, many(5), s
+  character*10           ::  aline = "abcdefxyij"
+  character*2            ::  bline = "gh"
+  character*10           ::  cline = "abcdefghij"
+
+! Character unit test
+  write (line, '(a10,tl6,2x,a2)') aline, bline
+  if (line.ne.cline) call abort ()
+
+! Character array unit test
+  many = "0123456789"
+  write(many(1:5:2), '(a10,tl6,2x,a2)') aline, bline, aline, bline, aline,&
+  &bline
+  if (many(1).ne.cline) call abort ()
+  if (many(3).ne.cline) call abort ()
+  if (many(5).ne.cline) call abort ()
+
+! File unit test
+  write (10, '(a10,tl6,2x,a2)') aline, bline
+  rewind(10)
+  read(10, '(a)') s
+  if (s.ne.cline) call abort
+  
+end program tl_editting
 
diff --git a/gcc/testsuite/gfortran.dg/write_padding.f90 b/gcc/testsuite/gfortran.dg/write_padding.f90
new file mode 100644
index 000000000000..e1c37917dc40
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/write_padding.f90
@@ -0,0 +1,13 @@
+! { dg-do run }
+! PR25264 Verify that the internal unit, str, is not cleared
+! before it is needed elsewhere.  This is an extension.
+! Test derived from test case by JPR. Contributed by
+! Jerry DeLisle <jvdelisle@verizon.net>.
+program write_padding
+   character(len=10) :: str
+   real :: atime
+   str = '123'
+   write( str, '(a3,i1)' ) trim(str),4
+   if (str.ne."1234") call abort()
+end program write_padding
+
-- 
GitLab