aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2015-01-10 16:49:37 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2015-01-10 16:49:37 +0100
commitaecfd035204b7ddf5520279914ee228ca8c704c2 (patch)
tree74cf6d52501de9a6c02c556576cdc6f72d092ed5
parentab018c82134b7eeb7107f16e0ae9591a7cafe1ba (diff)
downloadgcc-aecfd035204b7ddf5520279914ee228ca8c704c2.zip
gcc-aecfd035204b7ddf5520279914ee228ca8c704c2.tar.gz
gcc-aecfd035204b7ddf5520279914ee228ca8c704c2.tar.bz2
re PR fortran/64522 (Free-form source code: -Wline-truncation is no longer enabled by default)
2015-01-10 Tobias Burnus <burnus@net-b.de> 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 <burnus@net-b.de> 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
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/invoke.texi4
-rw-r--r--gcc/fortran/lang.opt2
-rw-r--r--gcc/fortran/options.c13
-rw-r--r--gcc/testsuite/ChangeLog12
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_10.f908
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_11.f908
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_4.f903
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_5.f903
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_6.f908
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_7.f908
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_8.f909
-rw-r--r--gcc/testsuite/gfortran.dg/line_length_9.f909
13 files changed, 92 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 141bc48..c10a1db 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2015-01-10 Tobias Burnus <burnus@net-b.de>
+
+ 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 <michael.collison@linaro.org>
* 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 4cf36e8..39bc479 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 c4ebbe7..530ec97 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 a356f53..4bae04e 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 496ba92..44b44e3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,15 @@
+2015-01-10 Tobias Burnus <burnus@net-b.de>
+
+ 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 <dmalcolm@redhat.com>
* 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 0000000..390e9a1
--- /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 0000000..67f1e29
--- /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 52bba1c..6e3c76e 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 b9c2946..d7aca12 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 0000000..92f3401
--- /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 0000000..b4ebf49
--- /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 0000000..3f0efaf
--- /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 0000000..f338972
--- /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" }