From 043c2d9e0840ed72c6eca4eb9eb75e382224ad3d Mon Sep 17 00:00:00 2001 From: Bernhard Fischer Date: Wed, 11 Jan 2006 17:38:42 +0100 Subject: [PATCH] re PR fortran/25486 (fortran fixed-form literal character constant not padded.) gcc/fortran: 2006-01-11 Bernhard Fischer PR fortran/25486 * scanner.c (load_line): use maxlen to determine the line-length used for padding lines in fixed form. gcc/testsuite: 2006-01-10 Bernhard Fischer PR fortran/25486 * gfortran.dg/literal_character_constant_1_x.F: New test. * gfortran.dg/literal_character_constant_1_y.F: Ditto. * gfortran.dg/literal_character_constant_1_z.F: Ditto. * gfortran.dg/literal_character_constant_1.inc: Helper for new tests. From-SVN: r109591 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/scanner.c | 8 +++++--- gcc/testsuite/ChangeLog | 8 ++++++++ .../literal_character_constant_1.inc | 20 +++++++++++++++++++ .../literal_character_constant_1_x.F | 5 +++++ .../literal_character_constant_1_y.F | 5 +++++ .../literal_character_constant_1_z.F | 5 +++++ 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/literal_character_constant_1.inc create mode 100644 gcc/testsuite/gfortran.dg/literal_character_constant_1_x.F create mode 100644 gcc/testsuite/gfortran.dg/literal_character_constant_1_y.F create mode 100644 gcc/testsuite/gfortran.dg/literal_character_constant_1_z.F diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 12894296a2e..4dbc1565d2a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2006-01-11 Bernhard Fischer + + PR fortran/25486 + * scanner.c (load_line): use maxlen to determine the line-length used + for padding lines in fixed form. + 2005-01-11 Paul Thomas PR fortran/25730 diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 4b76f9c73e9..0b21e96497e 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -809,11 +809,13 @@ load_line (FILE * input, char **pbuf, int *pbuflen) /* Pad lines to the selected line length in fixed form. */ if (gfc_current_form == FORM_FIXED - && gfc_option.fixed_line_length > 0 + && gfc_option.fixed_line_length != 0 && !preprocessor_flag && c != EOF) - while (i++ < gfc_option.fixed_line_length) - *buffer++ = ' '; + { + while (i++ < maxlen) + *buffer++ = ' '; + } *buffer = '\0'; *pbuflen = buflen; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index efd6594e8ac..7347547b05e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2006-01-10 Bernhard Fischer + + PR fortran/25486 + * gfortran.dg/literal_character_constant_1_x.F: New test. + * gfortran.dg/literal_character_constant_1_y.F: Ditto. + * gfortran.dg/literal_character_constant_1_z.F: Ditto. + * gfortran.dg/literal_character_constant_1.inc: Helper for new tests. + 2006-01-11 Nathan Sidwell * g++.dg/ext/packed3.C: Add expected packed error. diff --git a/gcc/testsuite/gfortran.dg/literal_character_constant_1.inc b/gcc/testsuite/gfortran.dg/literal_character_constant_1.inc new file mode 100644 index 00000000000..ba24966b72a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/literal_character_constant_1.inc @@ -0,0 +1,20 @@ +C fixed-form literal character constant with continuation line padding test +C PR fortran/25486 + program a + character(len=90) c + character(90) :: fil +c A tab is between 8 and 9. + c = '1234567 + &8 9' + write(fil,'(a)') c +#ifdef LL_NONE + if(fil.ne. "12345678 9") + & call abort +#else + if(fil.ne. + &"1234567 8 9" + &) + & call abort +#endif + end + diff --git a/gcc/testsuite/gfortran.dg/literal_character_constant_1_x.F b/gcc/testsuite/gfortran.dg/literal_character_constant_1_x.F new file mode 100644 index 00000000000..ceb2bd98d04 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/literal_character_constant_1_x.F @@ -0,0 +1,5 @@ +! { dg-do run } +C fixed-form literal character constant with continuation line padding test +C PR fortran/25486 +! { dg-options "" } +#include "literal_character_constant_1.inc" diff --git a/gcc/testsuite/gfortran.dg/literal_character_constant_1_y.F b/gcc/testsuite/gfortran.dg/literal_character_constant_1_y.F new file mode 100644 index 00000000000..015d1d8d109 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/literal_character_constant_1_y.F @@ -0,0 +1,5 @@ +! { dg-do run } +C fixed-form literal character constant with continuation line padding test +C PR fortran/25486 +! { dg-options "-ffixed-line-length-72" } +#include "literal_character_constant_1.inc" diff --git a/gcc/testsuite/gfortran.dg/literal_character_constant_1_z.F b/gcc/testsuite/gfortran.dg/literal_character_constant_1_z.F new file mode 100644 index 00000000000..3f2ac2a427b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/literal_character_constant_1_z.F @@ -0,0 +1,5 @@ +! { dg-do run } +C fixed-form literal character constant with continuation line padding test +C PR fortran/25486 +! { dg-options "-ffixed-line-length-none -DLL_NONE" } +#include "literal_character_constant_1.inc" -- 2.30.2