From 4428e682fbb43a7eba4af9db9d43ea5d55a82b57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20L=C3=B3pez-Ib=C3=A1=C3=B1ez?= Date: Thu, 25 Jan 2007 21:15:34 +0000 Subject: [PATCH] re PR fortran/30437 (-Wno-all is rejected (even when fortran is not included)) 2007-01-25 Manuel Lopez-Ibanez PR fortran/30437 fortran/ * lang.opt (Wall): Remove RejectNegative. * options.c (gfc_handle_option): Wall can be disabled. (set_Wall): Add a parameter for disabling Wall. testsuite/ * gcc.dg/Wall.c: New. * gcc.dg/Wno-all.c: New. * gfortran.dg/Wall.f90: New. * gfortran.dg/Wno-all.f90: New. From-SVN: r121186 --- gcc/fortran/ChangeLog | 7 ++++++ gcc/fortran/lang.opt | 2 +- gcc/fortran/options.c | 31 ++++++++++++++------------- gcc/testsuite/ChangeLog | 8 +++++++ gcc/testsuite/gcc.dg/Wall.c | 10 +++++++++ gcc/testsuite/gcc.dg/Wno-all.c | 11 ++++++++++ gcc/testsuite/gfortran.dg/Wall.f90 | 12 +++++++++++ gcc/testsuite/gfortran.dg/Wno-all.f90 | 12 +++++++++++ 8 files changed, 77 insertions(+), 16 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/Wall.c create mode 100644 gcc/testsuite/gcc.dg/Wno-all.c create mode 100644 gcc/testsuite/gfortran.dg/Wall.f90 create mode 100644 gcc/testsuite/gfortran.dg/Wno-all.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2659bd427a4..fe816b719f4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2007-01-25 Manuel Lopez-Ibanez + + 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. + 2007-01-23 Jerry DeLisle PR fortran/30532 diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 7d413ffd351..60806c58286 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -34,7 +34,7 @@ Fortran Joined -J Put MODULE files in 'directory' Wall -Fortran RejectNegative +Fortran ; Documented in C Waliasing diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index e3879f006f4..056ba33ff6d 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -298,26 +298,27 @@ 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; + 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 (1); - warn_return_type = 1; - warn_switch = 1; + 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; } @@ -404,7 +405,7 @@ gfc_handle_option (size_t scode, const char *arg, int value) break; case OPT_Wall: - set_Wall (); + set_Wall (value); break; case OPT_Waliasing: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index afbd22a512c..d2473a8c446 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2007-01-25 Manuel Lopez-Ibanez + + 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. + 2007-01-24 Geoffrey Keating * gcc.target/powerpc/darwin-ehreturn-1.c: New. diff --git a/gcc/testsuite/gcc.dg/Wall.c b/gcc/testsuite/gcc.dg/Wall.c new file mode 100644 index 00000000000..86a359b49cd --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wall.c @@ -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" } */ +} diff --git a/gcc/testsuite/gcc.dg/Wno-all.c b/gcc/testsuite/gcc.dg/Wno-all.c new file mode 100644 index 00000000000..3275eb6cd50 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wno-all.c @@ -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" } */ +} + diff --git a/gcc/testsuite/gfortran.dg/Wall.f90 b/gcc/testsuite/gfortran.dg/Wall.f90 new file mode 100644 index 00000000000..a11c4b7fd15 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/Wall.f90 @@ -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 + diff --git a/gcc/testsuite/gfortran.dg/Wno-all.f90 b/gcc/testsuite/gfortran.dg/Wno-all.f90 new file mode 100644 index 00000000000..550c7e46ad2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/Wno-all.f90 @@ -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 +