From aecfd035204b7ddf5520279914ee228ca8c704c2 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sat, 10 Jan 2015 16:49:37 +0100 Subject: [PATCH] re PR fortran/64522 (Free-form source code: -Wline-truncation is no longer enabled by default) 2015-01-10 Tobias Burnus PR fortran/64522 * invoke.texi (Wline-truncation): Document new behaviour. * lang.opt (Wline-truncation): Add Init(-1). * options.c (gfc_post_options): If -Wline-truncation is unset, enable it for free-form source files; for the latter, also use -Werror=line-truncation, unless -Wno-error has been specified. 2015-01-10 Tobias Burnus PR fortran/64522 * gfortran.dg/line_length_5.f90: Change dg-warning to dg-error and add dg-excess-errors. * gfortran.dg/line_length_6.f90: New. * gfortran.dg/line_length_7.f90: New. * gfortran.dg/line_length_8.f90: New. * gfortran.dg/line_length_9.f90: New. * gfortran.dg/line_length_10.f90: New. * gfortran.dg/line_length_11.f90: New. From-SVN: r219424 --- gcc/fortran/ChangeLog | 9 +++++++++ gcc/fortran/invoke.texi | 4 +++- gcc/fortran/lang.opt | 2 +- gcc/fortran/options.c | 13 +++++++++++++ gcc/testsuite/ChangeLog | 12 ++++++++++++ gcc/testsuite/gfortran.dg/line_length_10.f90 | 8 ++++++++ gcc/testsuite/gfortran.dg/line_length_11.f90 | 8 ++++++++ gcc/testsuite/gfortran.dg/line_length_4.f90 | 3 ++- gcc/testsuite/gfortran.dg/line_length_5.f90 | 3 ++- gcc/testsuite/gfortran.dg/line_length_6.f90 | 8 ++++++++ gcc/testsuite/gfortran.dg/line_length_7.f90 | 8 ++++++++ gcc/testsuite/gfortran.dg/line_length_8.f90 | 9 +++++++++ gcc/testsuite/gfortran.dg/line_length_9.f90 | 9 +++++++++ 13 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/line_length_10.f90 create mode 100644 gcc/testsuite/gfortran.dg/line_length_11.f90 create mode 100644 gcc/testsuite/gfortran.dg/line_length_6.f90 create mode 100644 gcc/testsuite/gfortran.dg/line_length_7.f90 create mode 100644 gcc/testsuite/gfortran.dg/line_length_8.f90 create mode 100644 gcc/testsuite/gfortran.dg/line_length_9.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 141bc486d7e..c10a1dba024 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2015-01-10 Tobias Burnus + + PR fortran/64522 + * invoke.texi (Wline-truncation): Document new behaviour. + * lang.opt (Wline-truncation): Add Init(-1). + * options.c (gfc_post_options): If -Wline-truncation is unset, + enable it for free-form source files; for the latter, also use + -Werror=line-truncation, unless -Wno-error has been specified. + 2015-01-09 Michael Collison * convert.c: Include hash-set.h, machmode.h, vec.h, double-int.h, diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 4cf36e8690e..39bc479c2cb 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -790,7 +790,9 @@ Warn when a character assignment will truncate the assigned string. @opindex @code{Wline-truncation} @cindex warnings, line truncation Warn when a source code line will be truncated. This option is -implied by @option{-Wall}. +implied by @option{-Wall}. For free-form source code, the default is +@option{-Werror=line-truncation} such that truncations are reported as +error. @item -Wconversion @opindex @code{Wconversion} diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index c4ebbe71ade..530ec979e65 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -250,7 +250,7 @@ Fortran Warning Var(warn_implicit_procedure) Warn about called procedures not explicitly declared Wline-truncation -Fortran Warning Var(warn_line_truncation) LangEnabledBy(Fortran,Wall) +Fortran Warning Var(warn_line_truncation) LangEnabledBy(Fortran,Wall) Init(-1) Warn about truncated source lines Wintrinsics-std diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index a356f538eaa..4bae04e1352 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -314,7 +314,20 @@ gfc_post_options (const char **pfilename) "in free form"); else if (gfc_option.flag_d_lines == 1) gfc_warning_now ("%<-fd-lines-as-code%> has no effect in free form"); + + if (warn_line_truncation == -1) + warn_line_truncation = 1; + + /* Enable -Werror=line-truncation when -Werror and -Wno-error have + not been set. */ + if (warn_line_truncation && !global_options_set.x_warnings_are_errors + && (global_dc->classify_diagnostic[OPT_Wline_truncation] == + DK_UNSPECIFIED)) + diagnostic_classify_diagnostic (global_dc, OPT_Wline_truncation, + DK_ERROR, UNKNOWN_LOCATION); } + else if (warn_line_truncation == -1) + warn_line_truncation = 0; /* If -pedantic, warn about the use of GNU extensions. */ if (pedantic && (gfc_option.allow_std & GFC_STD_GNU) != 0) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 496ba92faf7..44b44e3e129 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2015-01-10 Tobias Burnus + + PR fortran/64522 + * gfortran.dg/line_length_5.f90: Change dg-warning to dg-error + and add dg-excess-errors. + * gfortran.dg/line_length_6.f90: New. + * gfortran.dg/line_length_7.f90: New. + * gfortran.dg/line_length_8.f90: New. + * gfortran.dg/line_length_9.f90: New. + * gfortran.dg/line_length_10.f90: New. + * gfortran.dg/line_length_11.f90: New. + 2015-01-09 David Malcolm * jit.dg/test-threads.c (struct testcase): Move declaration diff --git a/gcc/testsuite/gfortran.dg/line_length_10.f90 b/gcc/testsuite/gfortran.dg/line_length_10.f90 new file mode 100644 index 00000000000..390e9a16358 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/line_length_10.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! { dg-options "-Wno-line-truncation" } +! +! By default, for free-form source code: Error out +! But due to the explicit -Wno-line-truncation, compile w/o warning +! + print *, 1 + 2 + end diff --git a/gcc/testsuite/gfortran.dg/line_length_11.f90 b/gcc/testsuite/gfortran.dg/line_length_11.f90 new file mode 100644 index 00000000000..67f1e29a0eb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/line_length_11.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! { dg-options "-Wno-all" } +! +! By default, for free-form source code: Error out +! But due to the explicit -Wno-all, compile w/o warning +! + print *, 1 + 2 + end diff --git a/gcc/testsuite/gfortran.dg/line_length_4.f90 b/gcc/testsuite/gfortran.dg/line_length_4.f90 index 52bba1c874e..6e3c76e6f88 100644 --- a/gcc/testsuite/gfortran.dg/line_length_4.f90 +++ b/gcc/testsuite/gfortran.dg/line_length_4.f90 @@ -15,4 +15,5 @@ end do end subroutine foo end -! { dg-warning "Line truncated" " " { target *-*-* } 8 } +! { dg-error "Line truncated" " " { target *-*-* } 8 } +! { dg-excess-errors "some warnings being treated as errors" } diff --git a/gcc/testsuite/gfortran.dg/line_length_5.f90 b/gcc/testsuite/gfortran.dg/line_length_5.f90 index b9c2946ade2..d7aca12e004 100644 --- a/gcc/testsuite/gfortran.dg/line_length_5.f90 +++ b/gcc/testsuite/gfortran.dg/line_length_5.f90 @@ -2,5 +2,6 @@ ! { dg-options "-Wline-truncation" } print *, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' end -! { dg-warning "Line truncated" " " { target *-*-* } 3 } +! { dg-error "Line truncated" " " { target *-*-* } 3 } ! { dg-error "Unterminated character constant" " " { target *-*-* } 3 } +! { dg-excess-errors "some warnings being treated as errors" } diff --git a/gcc/testsuite/gfortran.dg/line_length_6.f90 b/gcc/testsuite/gfortran.dg/line_length_6.f90 new file mode 100644 index 00000000000..92f3401e90f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/line_length_6.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! { dg-options "" } +! +! By default, for free-form source code: Error out +! + print *, 1 + 2 ! { dg-error "Line truncated at .1." } + end +! { dg-excess-errors "some warnings being treated as errors" } diff --git a/gcc/testsuite/gfortran.dg/line_length_7.f90 b/gcc/testsuite/gfortran.dg/line_length_7.f90 new file mode 100644 index 00000000000..b4ebf49c4bf --- /dev/null +++ b/gcc/testsuite/gfortran.dg/line_length_7.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! { dg-options "-Wno-error" } +! +! By default, for free-form source code: Error out +! But due to -Wno-error, we only expect a warning +! + print *, 1 + 2 ! { dg-warning "Line truncated at .1." } + end diff --git a/gcc/testsuite/gfortran.dg/line_length_8.f90 b/gcc/testsuite/gfortran.dg/line_length_8.f90 new file mode 100644 index 00000000000..3f0efaf4c0a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/line_length_8.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! { dg-options "-Wline-truncation" } +! +! By default, for free-form source code: Error out +! Even with -Wline-truncation, we still get an error +! + print *, 1 + 2 ! { dg-error "Line truncated at .1." } + end +! { dg-excess-errors "some warnings being treated as errors" } diff --git a/gcc/testsuite/gfortran.dg/line_length_9.f90 b/gcc/testsuite/gfortran.dg/line_length_9.f90 new file mode 100644 index 00000000000..f338972272c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/line_length_9.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! { dg-options "-Wall" } +! +! By default, for free-form source code: Error out +! Even with -Wall, we still get an error +! + print *, 1 + 2 ! { dg-error "Line truncated at .1." } + end +! { dg-excess-errors "some warnings being treated as errors" } -- 2.30.2