forked from gcc-mirror/gcc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fortran/89100: Default widths with -fdec-format-defaults
gcc/fortran ChangeLog: 2019-05-22 Jeff Law <[email protected]> Mark Eggleston <[email protected]> PR fortran/89100 * gfortran.texi: Add Default widths for F, G and I format descriptors to Extensions section. * invoke.texi: Add -fdec-format-defaults * io.c (check_format): Use default widths for i, f and g when flag_dec_format_defaults is enabled. * lang.opt: Add new option. * options.c (set_dec_flags): Add SET_BITFLAG for flag_dec_format_defaults. gcc/testsuite ChangeLog: 2019-05-22 Mark Eggleston <[email protected]> PR fortran/89100 * gfortran.dg/fmt_f_default_field_width_1.f90: New test. * gfortran.dg/fmt_f_default_field_width_2.f90: New test. * gfortran.dg/fmt_f_default_field_width_3.f90: New test. * gfortran.dg/fmt_g_default_field_width_1.f90: New test. * gfortran.dg/fmt_g_default_field_width_2.f90: New test. * gfortran.dg/fmt_g_default_field_width_3.f90: New test. * gfortran.dg/fmt_i_default_field_width_1.f90: New test. * gfortran.dg/fmt_i_default_field_width_2.f90: New test. * gfortran.dg/fmt_i_default_field_width_3.f90: New test. libgfortran ChangeLog: 2019-05-22 Jeff Law <[email protected]> PR fortran/89100 * io/format.c (parse_format_list): set default width when the IOPARM_DT_DEC_EXT flag is set for i, f and g. * io/io.h: add default_width_for_integer, default_width_for_float and default_precision_for_float. * io/write.c (write_boz): extra parameter giving length of data corresponding to the type's kind. (write_b): pass data length as extra parameter in calls to write_boz. (write_o): pass data length as extra parameter in calls to write_boz. (write_z): pass data length as extra parameter in calls to write_boz. (size_from_kind): also set size is default width is set. * io/write_float.def (build_float_string): new paramter inserted before result parameter. If default width use values passed instead of the values in fnode. (FORMAT_FLOAT): macro modified to check for default width and calls to build_float_string to pass in default width. (get_float_string): set width and precision to defaults when needed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271511 138bc75d-0d04-0410-961f-82ee72b054a4
- Loading branch information
jb
committed
May 22, 2019
1 parent
bf12813
commit 647551f
Showing
22 changed files
with
610 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,16 @@ | ||
2019-05-22 Jeff Law <[email protected]> | ||
Mark Eggleston <[email protected]> | ||
|
||
PR fortran/89100 | ||
* gfortran.texi: Add Default widths for F, G and I format | ||
descriptors to Extensions section. | ||
* invoke.texi: Add -fdec-format-defaults | ||
* io.c (check_format): Use default widths for i, f and g when | ||
flag_dec_format_defaults is enabled. | ||
* lang.opt: Add new option. | ||
* options.c (set_dec_flags): Add SET_BITFLAG for | ||
flag_dec_format_defaults. | ||
|
||
2019-05-21 Janne Blomqvist <[email protected]> | ||
|
||
PR libfortran/90038 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,16 @@ | ||
2019-05-22 Mark Eggleston <[email protected]> | ||
|
||
PR fortran/89100 | ||
* gfortran.dg/fmt_f_default_field_width_1.f90: New test. | ||
* gfortran.dg/fmt_f_default_field_width_2.f90: New test. | ||
* gfortran.dg/fmt_f_default_field_width_3.f90: New test. | ||
* gfortran.dg/fmt_g_default_field_width_1.f90: New test. | ||
* gfortran.dg/fmt_g_default_field_width_2.f90: New test. | ||
* gfortran.dg/fmt_g_default_field_width_3.f90: New test. | ||
* gfortran.dg/fmt_i_default_field_width_1.f90: New test. | ||
* gfortran.dg/fmt_i_default_field_width_2.f90: New test. | ||
* gfortran.dg/fmt_i_default_field_width_3.f90: New test. | ||
|
||
2019-05-22 Martin Liska <[email protected]> | ||
|
||
PR testsuite/90564 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
! { dg-do run } | ||
! { dg-options -fdec } | ||
! | ||
! Test case for the default field widths enabled by the -fdec-format-defaults flag. | ||
! | ||
! This feature is not part of any Fortran standard, but it is supported by the | ||
! Oracle Fortran compiler and others. | ||
! | ||
|
||
program test | ||
character(50) :: buffer | ||
|
||
real(4) :: real_4 | ||
real(8) :: real_8 | ||
real(16) :: real_16 | ||
integer :: len | ||
character(*), parameter :: fmt = "(A, F, A)" | ||
|
||
real_4 = 4.18 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 4.1799998:") stop 1 | ||
|
||
real_4 = 0.00000018 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 0.0000002:") stop 2 | ||
|
||
real_8 = 4.18 | ||
write(buffer, fmt) ':',real_8,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 27) stop 3 | ||
|
||
real_16 = 4.18 | ||
write(buffer, fmt) ':',real_16,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 44) stop 4 | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
! { dg-do run } | ||
! { dg-options -fdec-format-defaults } | ||
! | ||
! Test case for the default field widths enabled by the -fdec-format-defaults flag. | ||
! | ||
! This feature is not part of any Fortran standard, but it is supported by the | ||
! Oracle Fortran compiler and others. | ||
! | ||
! Test case added by Mark Eggleston <[email protected]> to check | ||
! use of -fdec-format-defaults | ||
! | ||
|
||
program test | ||
character(50) :: buffer | ||
|
||
real(4) :: real_4 | ||
real(8) :: real_8 | ||
real(16) :: real_16 | ||
integer :: len | ||
character(*), parameter :: fmt = "(A, F, A)" | ||
|
||
real_4 = 4.18 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 4.1799998:") stop 1 | ||
|
||
real_4 = 0.00000018 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 0.0000002:") stop 2 | ||
|
||
real_8 = 4.18 | ||
write(buffer, fmt) ':',real_8,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 27) stop 3 | ||
|
||
real_16 = 4.18 | ||
write(buffer, fmt) ':',real_16,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 44) stop 4 | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
! { dg-do compile } | ||
! { dg-options "-fdec -fno-dec-format-defaults" } | ||
! | ||
! Test case for the default field widths not enabled. | ||
! | ||
! Test case added by Mark Eggleston <[email protected]> to check | ||
! use of -fno-dec-format-defaults | ||
! | ||
|
||
program test | ||
character(50) :: buffer | ||
|
||
real*4 :: real_4 | ||
real*8 :: real_8 | ||
real*16 :: real_16 | ||
integer :: len | ||
character(*), parameter :: fmt = "(A, F, A)" | ||
|
||
real_4 = 4.18 | ||
write(buffer, fmt) ':',real_4,':' ! { dg-error "Nonnegative width required" } | ||
|
||
real_4 = 0.00000018 | ||
write(buffer, fmt) ':',real_4,':' ! { dg-error "Nonnegative width required" } | ||
|
||
real_8 = 4.18 | ||
write(buffer, fmt) ':',real_8,':' ! { dg-error "Nonnegative width required" } | ||
|
||
real_16 = 4.18 | ||
write(buffer, fmt) ':',real_16,':' ! { dg-error "Nonnegative width required" } | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
! { dg-do run } | ||
! { dg-options -fdec } | ||
! | ||
! Test case for the default field widths enabled by the -fdec-format-defaults flag. | ||
! | ||
! This feature is not part of any Fortran standard, but it is supported by the | ||
! Oracle Fortran compiler and others. | ||
! | ||
|
||
program test | ||
character(50) :: buffer | ||
|
||
real(4) :: real_4 | ||
real(8) :: real_8 | ||
real(16) :: real_16 | ||
integer :: len | ||
character(*), parameter :: fmt = "(A, G, A)" | ||
|
||
real_4 = 4.18 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 4.180000 :") stop 1 | ||
|
||
real_4 = 0.00000018 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 0.1800000E-06:") stop 2 | ||
|
||
real_4 = 18000000.4 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 0.1800000E+08:") stop 3 | ||
|
||
real_8 = 4.18 | ||
write(buffer, fmt) ':',real_8,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 27) stop 4 | ||
|
||
real_16 = 4.18 | ||
write(buffer, fmt) ':',real_16,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 44) stop 5 | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
! { dg-do run } | ||
! { dg-options -fdec-format-defaults } | ||
! | ||
! Test case for the default field widths enabled by the -fdec-format-defaults flag. | ||
! | ||
! This feature is not part of any Fortran standard, but it is supported by the | ||
! Oracle Fortran compiler and others. | ||
! | ||
! Test case added by Mark Eggleston <[email protected]> to check | ||
! use of -fdec-format-defaults | ||
! | ||
|
||
program test | ||
character(50) :: buffer | ||
|
||
real(4) :: real_4 | ||
real(8) :: real_8 | ||
real(16) :: real_16 | ||
integer :: len | ||
character(*), parameter :: fmt = "(A, G, A)" | ||
|
||
real_4 = 4.18 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 4.180000 :") stop 1 | ||
|
||
real_4 = 0.00000018 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 0.1800000E-06:") stop 2 | ||
|
||
real_4 = 18000000.4 | ||
write(buffer, fmt) ':',real_4,':' | ||
print *,buffer | ||
if (buffer.ne.": 0.1800000E+08:") stop 3 | ||
|
||
real_8 = 4.18 | ||
write(buffer, fmt) ':',real_8,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 27) stop 4 | ||
|
||
real_16 = 4.18 | ||
write(buffer, fmt) ':',real_16,':' | ||
print *,buffer | ||
len = len_trim(buffer) | ||
if (len /= 44) stop 5 | ||
end |
Oops, something went wrong.