PR 30437 [4.0/4.1/4.2/4.3 Regression] -Wno-all is rejected (try 2)
Manuel López-Ibáñez
lopezibanez@gmail.com
Wed Jan 17 20:06:00 GMT 2007
:ADDPATCH fortran:
Wno-all is currently rejected on mainline by all front-ends because it
is rejected by fortran. This patch fixes the issue. However, a better
fix would be to move Wall to common.opt but let it be handled by each
front-end. I was not able to implement this, front-ends were not able
to catch Wall, any suggestions ?
This patch bootstraps and does not generate new regressions.
OK for mainline?
2007-01-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
fortran/
PR fortran/30437
* lang.opt (Wall): Remove RejectNegative.
* options.c (gfc_handle_option): Wall can be disabled.
(set_Wall): Add a parameter for disabling Wall.
testsuite/
PR fortran/30437
* gcc.dg/Wall.c: New.
* gcc.dg/Wno-all.c: New.
* gfortran.dg/Wall.f90: New.
* gfortran.dg/Wno-all.f90: New.
-------------- next part --------------
Index: gcc/testsuite/gcc.dg/Wall.c
===================================================================
--- gcc/testsuite/gcc.dg/Wall.c (revision 0)
+++ gcc/testsuite/gcc.dg/Wall.c (revision 0)
@@ -0,0 +1,10 @@
+/* PR 30437: Test -Wall
+ Don't change this without changing Wno-all.c as well. */
+/* { dg-do compile } */
+/* { dg-options "-Wall" } */
+
+void foo()
+{
+ int a;
+ 5 * (a == 1) | (a == 2); /* { dg-warning "no effect" "no effect" } */
+}
Index: gcc/testsuite/gcc.dg/Wno-all.c
===================================================================
--- gcc/testsuite/gcc.dg/Wno-all.c (revision 0)
+++ gcc/testsuite/gcc.dg/Wno-all.c (revision 0)
@@ -0,0 +1,11 @@
+/* PR 30437: Test negative of -Wall
+ Don't change this without changing Wall.c as well. */
+/* { dg-do compile } */
+/* { dg-options "-Wall -Wno-all" } */
+
+void foo()
+{
+ int a;
+ 5 * (a == 1) | (a == 2); /* { dg-bogus "no effect" "no effect" } */
+}
+
Index: gcc/testsuite/gfortran.dg/Wno-all.f90
===================================================================
--- gcc/testsuite/gfortran.dg/Wno-all.f90 (revision 0)
+++ gcc/testsuite/gfortran.dg/Wno-all.f90 (revision 0)
@@ -0,0 +1,12 @@
+! PR 30437 Test for negative Wall
+! { dg-do run }
+! { dg-options "-Wall -Wno-all" }
+program main
+ character (len=40) &
+ c
+ c = "Hello, &
+ world!" ! { dg-bogus "Warning: Missing '&' in continued character constant" }
+ if (c.ne.&
+ "Hello, world!")&
+ call abort();end program main
+
Index: gcc/testsuite/gfortran.dg/Wall.f90
===================================================================
--- gcc/testsuite/gfortran.dg/Wall.f90 (revision 0)
+++ gcc/testsuite/gfortran.dg/Wall.f90 (revision 0)
@@ -0,0 +1,12 @@
+! { dg-do run }
+! { dg-options -Wall }
+! PR 30437 Test for Wall
+program main
+ character (len=40) &
+ c
+ c = "Hello, &
+ world!" ! { dg-warning "Warning: Missing '&' in continued character constant" }
+ if (c.ne.&
+ "Hello, world!")&
+ call abort();end program main
+
Index: gcc/fortran/lang.opt
===================================================================
--- gcc/fortran/lang.opt (revision 120783)
+++ gcc/fortran/lang.opt (working copy)
@@ -34,7 +34,7 @@ Fortran Joined
-J<directory> Put MODULE files in 'directory'
Wall
-Fortran RejectNegative
+Fortran
; Documented in C
Waliasing
Index: gcc/fortran/options.c
===================================================================
--- gcc/fortran/options.c (revision 120783)
+++ gcc/fortran/options.c (working copy)
@@ -300,27 +300,28 @@ gfc_post_options (const char **pfilename
/* Set the options for -Wall. */
static void
-set_Wall (void)
+set_Wall (int setting)
{
- gfc_option.warn_aliasing = 1;
- gfc_option.warn_ampersand = 1;
- gfc_option.warn_line_truncation = 1;
- gfc_option.warn_nonstd_intrinsics = 1;
- gfc_option.warn_surprising = 1;
- gfc_option.warn_tabs = 0;
- gfc_option.warn_underflow = 1;
- gfc_option.warn_character_truncation = 1;
-
- set_Wunused (1);
- warn_return_type = 1;
- warn_switch = 1;
+ gfc_option.warn_aliasing = setting;
+ gfc_option.warn_ampersand = setting;
+ gfc_option.warn_line_truncation = setting;
+ gfc_option.warn_nonstd_intrinsics = setting;
+ gfc_option.warn_surprising = setting;
+ gfc_option.warn_tabs = !setting;
+ gfc_option.warn_underflow = setting;
+ gfc_option.warn_character_truncation = setting;
+
+ set_Wunused (setting);
+ warn_return_type = setting;
+ warn_switch = setting;
/* We save the value of warn_uninitialized, since if they put
-Wuninitialized on the command line, we need to generate a
warning about not using it without also specifying -O. */
-
- if (warn_uninitialized != 1)
+ if (setting == 0)
+ warn_uninitialized = 0;
+ else if (warn_uninitialized != 1)
warn_uninitialized = 2;
}
@@ -400,7 +401,7 @@ gfc_handle_option (size_t scode, const c
break;
case OPT_Wall:
- set_Wall ();
+ set_Wall (value);
break;
case OPT_Waliasing:
More information about the Fortran
mailing list