diff options
| author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-08 18:54:27 +0000 |
|---|---|---|
| committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-08 18:54:27 +0000 |
| commit | b2b7928c4af16a2f76c2c69535f86f35ee71a82d (patch) | |
| tree | 4705adde20a38543793f0e0d474f4e088e2a192c | |
| parent | 8812e0d9da08c2ae5b566617b83bda3b1daff14d (diff) | |
| download | ppe42-gcc-b2b7928c4af16a2f76c2c69535f86f35ee71a82d.tar.gz ppe42-gcc-b2b7928c4af16a2f76c2c69535f86f35ee71a82d.zip | |
2011-12-08 Tobias Burnus <burnus@net-b.de>
PR fortran/51407
* io/transfer.c (require_numeric_type): New function.
(formatted_transfer_scalar_read, formatted_transfer_scalar_write):
Use it, allow BOZ edit descriptors with F2008.
2011-12-08 Tobias Burnus <burnus@net-b.de>
PR fortran/51407
* gfortran.dg/io_real_boz_3.f90: New.
* gfortran.dg/io_real_boz_4.f90: New.
* gfortran.dg/io_real_boz_5.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182132 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/io_real_boz_3.f90 | 34 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/io_real_boz_4.f90 | 15 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/io_real_boz_5.f90 | 13 |
5 files changed, 77 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 72736818899..602059fce7b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,12 @@ 2011-12-08 Tobias Burnus <burnus@net-b.de> + PR fortran/51407 + * io/transfer.c (require_numeric_type): New function. + (formatted_transfer_scalar_read, formatted_transfer_scalar_write): + Use it, allow BOZ edit descriptors with F2008. + +2011-12-08 Tobias Burnus <burnus@net-b.de> + PR fortran/51448 * fortran/trans-array.c (get_std_lbound): Fix handling of conversion functions. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 66645cd984b..9eef8568cdf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,11 @@ -2011-12-07 Tobias Burnus <burnus@net-b.de> +2011-12-08 Tobias Burnus <burnus@net-b.de> + + PR fortran/51407 + * gfortran.dg/io_real_boz_3.f90: New. + * gfortran.dg/io_real_boz_4.f90: New. + * gfortran.dg/io_real_boz_5.f90: New. + +2011-12-08 Tobias Burnus <burnus@net-b.de> PR fortran/51448 * gfortran.dg/realloc_on_assign_8.f90: New. diff --git a/gcc/testsuite/gfortran.dg/io_real_boz_3.f90 b/gcc/testsuite/gfortran.dg/io_real_boz_3.f90 new file mode 100644 index 00000000000..8a6f0965060 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/io_real_boz_3.f90 @@ -0,0 +1,34 @@ +! { dg-do run } +! { dg-options "-std=f2008" } +! +! PR fortran/51407 +! +! Fortran 2008 allows BOZ edit descriptors for real/complex. +! + real(kind=4) :: x + complex(kind=4) :: z + character(len=64) :: str1 + + x = 1.0_16 + 2.0_16**(-105) + z = cmplx (1.0, 2.0) + + write (str1,'(b32)') x + read (str1,'(b32)') x + write (str1,'(o32)') x + read (str1,'(o32)') x + write (str1,'(z32)') x + read (str1,'(z32)') x + write (str1,'(b0)') x + write (str1,'(o0)') x + write (str1,'(z0)') x + + write (str1,'(2b32)') z + read (str1,'(2b32)') z + write (str1,'(2o32)') z + read (str1,'(2o32)') z + write (str1,'(2z32)') z + read (str1,'(2z32)') z + write (str1,'(2b0)') z + write (str1,'(2o0)') z + write (str1,'(2z0)') z + end diff --git a/gcc/testsuite/gfortran.dg/io_real_boz_4.f90 b/gcc/testsuite/gfortran.dg/io_real_boz_4.f90 new file mode 100644 index 00000000000..b70555a4687 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/io_real_boz_4.f90 @@ -0,0 +1,15 @@ +! { dg-do run } +! { dg-options "-std=f2003" } +! +! PR fortran/51407 +! +! Valid in F2008, but in F95/F2003: +! { dg-output "Expected INTEGER for item 1 in formatted transfer, got REAL" } +! { dg-shouldfail "Only F2003: BOZ edit with REAL" } +! + real(kind=16) :: x + character(len=32) :: str1 + x = 1.0_16 + 2.0_16**(-105) + write (str1,'(z32)') x + write (str1,'(z0)') x + end diff --git a/gcc/testsuite/gfortran.dg/io_real_boz_5.f90 b/gcc/testsuite/gfortran.dg/io_real_boz_5.f90 new file mode 100644 index 00000000000..6a36ee59ccb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/io_real_boz_5.f90 @@ -0,0 +1,13 @@ +! { dg-do run } +! { dg-options "-std=f2008" } +! +! PR fortran/51407 +! +! Invalid in F2008 (accepted with -std=gnu) +! { dg-output "Expected numeric type for item 1 in formatted transfer, got CHARACTER" } +! { dg-shouldfail "Character type in BOZ" } +! + character(len=32) :: str1 + x = 1.0_16 + 2.0_16**(-105) + write (str1,'(z0)') 'X' + end |

