From patchwork Sat Nov 29 22:21:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 416019 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 6F162140183 for ; Sun, 30 Nov 2014 09:21:53 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; q= dns; s=default; b=JrVjV2JBAWIPN3sF1qyjabFGehcEePm6lTFrDSksGrfxpt E5h+emHfTQ+4jq5/ljQ5uosfvwy3fUr6DBqLVHh++D0FdBQ1ttHfiETAWAqPNlbo IhLddSoB4xQKELAEt6z1tAUSl2IUlxrzus86fD5KJ6qVM9qpySoMsbEHsWHms= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; s= default; bh=DJUGl9hBTkQxpJYfHmU+vD6xYPQ=; b=fbCyAAPIgfZLtlKlsLDG 3D7TxaYQTu1k8/zu9osmM6V8nIYsHiMup0sLI19mLxGcbMOBIIUi8nytYgD9Xc0w MGP7H2USUqs7LRP0Nyrh7+6wfELbA/kKMowndiXq5jOHKWFpdlKipZH/jXlujUx0 kDg2Tkz+4vjAPox+1AK3txo= Received: (qmail 3853 invoked by alias); 29 Nov 2014 22:21:41 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 3828 invoked by uid 89); 29 Nov 2014 22:21:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx01.qsc.de Received: from mx01.qsc.de (HELO mx01.qsc.de) (213.148.129.14) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Sat, 29 Nov 2014 22:21:35 +0000 Received: from tux.net-b.de (port-92-194-114-130.dynamic.qsc.de [92.194.114.130]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx01.qsc.de (Postfix) with ESMTPSA id F0B303CE65; Sat, 29 Nov 2014 23:21:30 +0100 (CET) Message-ID: <547A46EA.1020809@net-b.de> Date: Sat, 29 Nov 2014 23:21:30 +0100 From: Tobias Burnus User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: gcc-patches , gfortran Subject: [Patch, Fortran] fortran/lang.opt cleanup This patch converts all warnings to Var(), which cleans up options.c quite a bit and makes it additionally possible to use the OPT_* with common diagnostics, once gfc_warning is converted. I also remove one -Wall setting of a warning as it was already enabled by default; additionally, I mentioned this fact in the man page. Build and regtested on x86-64-gnu-linux. OK for the trunk? Tobias 2014-11-29 Tobias Burnus * gfortran.h (gfc_option_t): Remove warn_aliasing, warn_ampersand, warn_function_elimination, warn_implicit_interface, warn_implicit_procedure, warn_line_truncation, warn_surprising, warn_underflow, warn_intrinsic_shadow, warn_array_temp, warn_align_commons, warn_real_q_constant, warn_unused_dummy_argument, warn_zerotrip, warn_realloc_lhs, warn_realloc_lhs_all, warn_compare_reals, warn_target_lifetime. * arith.c (check_result, gfc_real2real, gfc_real2complex, gfc_complex2real, gfc_complex2complex): Honor changed variable names. * check.c (gfc_check_transfer): Ditto. * expr.c (gfc_check_assign, gfc_check_pointer_assign): Ditto. * interface.c (compare_parameter, gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Ditto. * intrinsic.c (gfc_warn_intrinsic_shadow): Ditto. * primary.c (match_real_constant, match_string_constant): Ditto. * resolve.c (gfc_resolve_intrinsic, resolve_operator, gfc_resolve_iterator, resolve_select, resolve_ordinary_assign, resolve_charlen, gfc_resolve_finalizers): Ditto. * scanner.c (gfc_next_char_literal): Ditto. * simplify.c (simplify_achar_char, gfc_simplify_iachar): Ditto. * trans-array.c (gfc_trans_create_temp_array, gfc_trans_dummy_array_bias, gfc_conv_array_parameter): Ditto. * trans-common.c (translate_common): * trans-decl.c (generate_local_decl): Ditto. * trans-expr.c (realloc_lhs_warning): Ditto. * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ditto. * decl.c (do_warn_intrinsic_shadow): Ditto. Renamed from warn_intrinsic_shadow. * frontend-passes.c (do_warn_function_elimination): Honor changed variable names. Renamed from do_warn_function_elimination. * invoke.texi (Wunderflow): Document that it is enabled by default. * lang.opt (Waliasing, Walign-commons, Warray-temporaries, Wcompare-reals, Wfunction-elimination, Wimplicit-interface, Wimplicit-procedure, Wline-truncation, Wreal-q-constant, Wrealloc-lhs, Wrealloc-lhs-all, Wtarget-lifetime, Wsurprising, Wunderflow, Wintrinsic-shadow, Wunused-dummy-argument, Wzerotrip): Use Var(), add Init() and LangEnabledBy() were required. (Wmaybe-uninitialized, Wreturn-type, Wuninitialized): Add LangEnabledBy. * options.c (gfc_init_options, gfc_post_options, gfc_handle_option): Remove options handled in lang.opt; handle renaming. (set_Wall, set_Wextra): Remove. diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c index f8f2ba6..efbe6de 100644 --- a/gcc/fortran/arith.c +++ b/gcc/fortran/arith.c @@ -544,7 +544,7 @@ check_result (arith rc, gfc_expr *x, gfc_expr *r, gfc_expr **rp) if (val == ARITH_UNDERFLOW) { - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning (gfc_arith_error (val), &x->where); val = ARITH_OK; } @@ -2077,7 +2077,7 @@ gfc_real2real (gfc_expr *src, int kind) if (rc == ARITH_UNDERFLOW) { - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning (gfc_arith_error (rc), &src->where); mpfr_set_ui (result->value.real, 0, GFC_RND_MODE); } @@ -2108,7 +2108,7 @@ gfc_real2complex (gfc_expr *src, int kind) if (rc == ARITH_UNDERFLOW) { - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning (gfc_arith_error (rc), &src->where); mpfr_set_ui (mpc_realref (result->value.complex), 0, GFC_RND_MODE); } @@ -2163,7 +2163,7 @@ gfc_complex2real (gfc_expr *src, int kind) if (rc == ARITH_UNDERFLOW) { - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning (gfc_arith_error (rc), &src->where); mpfr_set_ui (result->value.real, 0, GFC_RND_MODE); } @@ -2194,7 +2194,7 @@ gfc_complex2complex (gfc_expr *src, int kind) if (rc == ARITH_UNDERFLOW) { - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning (gfc_arith_error (rc), &src->where); mpfr_set_ui (mpc_realref (result->value.complex), 0, GFC_RND_MODE); } @@ -2209,7 +2209,7 @@ gfc_complex2complex (gfc_expr *src, int kind) if (rc == ARITH_UNDERFLOW) { - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning (gfc_arith_error (rc), &src->where); mpfr_set_ui (mpc_imagref (result->value.complex), 0, GFC_RND_MODE); } diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 5fea5a8..cea2689 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -5070,7 +5070,7 @@ gfc_check_transfer (gfc_expr *source, gfc_expr *mold, gfc_expr *size) return false; } - if (!gfc_option.warn_surprising) + if (!warn_surprising) return true; /* If we can't calculate the sizes, we cannot check any more. diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index e7c06f3..f11bcb0 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -5284,7 +5284,7 @@ gfc_match_procedure (void) parser-state-stack to find out whether we're in a module. */ static void -warn_intrinsic_shadow (const gfc_symbol* sym, bool func) +do_warn_intrinsic_shadow (const gfc_symbol* sym, bool func) { bool in_module; @@ -5420,7 +5420,7 @@ gfc_match_function_decl (void) } /* Warn if this procedure has the same name as an intrinsic. */ - warn_intrinsic_shadow (sym, true); + do_warn_intrinsic_shadow (sym, true); return MATCH_YES; } @@ -5851,7 +5851,7 @@ gfc_match_subroutine (void) return MATCH_ERROR; /* Warn if it has the same name as an intrinsic. */ - warn_intrinsic_shadow (sym, false); + do_warn_intrinsic_shadow (sym, false); return MATCH_YES; } diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index d5b48cf..59f770c 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -3171,7 +3171,7 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform) } /* This is possibly a typo: x = f() instead of x => f(). */ - if (gfc_option.warn_surprising + if (warn_surprising && rvalue->expr_type == EXPR_FUNCTION && gfc_expr_attr (rvalue).pointer) gfc_warning ("POINTER-valued function appears on right-hand side of " "assignment at %L", &rvalue->where); @@ -3197,7 +3197,7 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform) if (rvalue->is_boz && lvalue->ts.type != BT_INTEGER) { int rc; - if (gfc_option.warn_surprising) + if (warn_surprising) gfc_warning ("BOZ literal at %L is bitwise transferred " "non-integer symbol '%s'", &rvalue->where, lvalue->symtree->n.sym->name); @@ -3750,7 +3750,7 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) } /* Warn if it is the LHS pointer may lives longer than the RHS target. */ - if (gfc_option.warn_target_lifetime + if (warn_target_lifetime && rvalue->expr_type == EXPR_VARIABLE && !rvalue->symtree->n.sym->attr.save && !attr.pointer && !rvalue->symtree->n.sym->attr.host_assoc diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index 9b96f29..799d2fe 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -546,7 +546,7 @@ create_var (gfc_expr * e) result->ref->u.ar.where = e->where; result->ref->u.ar.as = symbol->ts.type == BT_CLASS ? CLASS_DATA (symbol)->as : symbol->as; - if (gfc_option.warn_array_temp) + if (warn_array_temporaries) gfc_warning ("Creating array temporary at %L", &(e->where)); } @@ -565,7 +565,7 @@ create_var (gfc_expr * e) /* Warn about function elimination. */ static void -warn_function_elimination (gfc_expr *e) +do_warn_function_elimination (gfc_expr *e) { if (e->expr_type != EXPR_FUNCTION) return; @@ -618,8 +618,8 @@ cfe_expr_0 (gfc_expr **e, int *walk_subtrees, if (newvar == NULL) newvar = create_var (*ei); - if (gfc_option.warn_function_elimination) - warn_function_elimination (*ej); + if (warn_function_elimination) + do_warn_function_elimination (*ej); free (*ej); *ej = gfc_copy_expr (newvar); diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 095d526..1058502 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2442,24 +2442,6 @@ typedef struct int dump_fortran_original; int dump_fortran_optimized; - int warn_aliasing; - int warn_ampersand; - int warn_function_elimination; - int warn_implicit_interface; - int warn_implicit_procedure; - int warn_line_truncation; - int warn_surprising; - int warn_underflow; - int warn_intrinsic_shadow; - int warn_array_temp; - int warn_align_commons; - int warn_real_q_constant; - int warn_unused_dummy_argument; - int warn_zerotrip; - int warn_realloc_lhs; - int warn_realloc_lhs_all; - int warn_compare_reals; - int warn_target_lifetime; int max_errors; int flag_all_intrinsics; diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 1980ddf..2429fd2 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -66,6 +66,7 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" +#include "flags.h" #include "gfortran.h" #include "match.h" #include "arith.h" @@ -2145,8 +2146,7 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, formal->name); return 0; } - else if (gfc_option.warn_surprising && where - && formal->attr.intent != INTENT_IN) + else if (warn_surprising && where && formal->attr.intent != INTENT_IN) gfc_warning ("Passing coarray at %L to allocatable, noncoarray dummy " "argument '%s', which is invalid if the allocation status" " is modified", &actual->where, formal->name); @@ -3260,11 +3260,10 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where) sym->name, where); return false; } - if (gfc_option.warn_implicit_interface) + if (warn_implicit_interface) gfc_warning ("Procedure '%s' called with an implicit interface at %L", sym->name, where); - else if (gfc_option.warn_implicit_procedure - && sym->attr.proc == PROC_UNKNOWN) + else if (warn_implicit_procedure && sym->attr.proc == PROC_UNKNOWN) gfc_warning ("Procedure '%s' called at %L is not explicitly declared", sym->name, where); } @@ -3357,7 +3356,7 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where) if (!check_intents (dummy_args, *ap)) return false; - if (gfc_option.warn_aliasing) + if (warn_aliasing) check_some_aliasing (dummy_args, *ap); return true; @@ -3374,7 +3373,7 @@ gfc_ppc_use (gfc_component *comp, gfc_actual_arglist **ap, locus *where) /* Warn about calls with an implicit interface. Special case for calling a ISO_C_BINDING because c_loc and c_funloc are pseudo-unknown. */ - if (gfc_option.warn_implicit_interface + if (warn_implicit_interface && comp->attr.if_source == IFSRC_UNKNOWN && !comp->attr.is_iso_c) gfc_warning ("Procedure pointer component '%s' called with an implicit " @@ -3403,7 +3402,7 @@ gfc_ppc_use (gfc_component *comp, gfc_actual_arglist **ap, locus *where) return; check_intents (comp->ts.interface->formal, *ap); - if (gfc_option.warn_aliasing) + if (warn_aliasing) check_some_aliasing (comp->ts.interface->formal, *ap); } @@ -3426,7 +3425,7 @@ gfc_arglist_matches_symbol (gfc_actual_arglist** args, gfc_symbol* sym) if (compare_actual_formal (args, dummy_args, r, !r, NULL)) { check_intents (dummy_args, *args); - if (gfc_option.warn_aliasing) + if (warn_aliasing) check_some_aliasing (dummy_args, *args); return true; } diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 6b874a4..5dd4092 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -4807,7 +4807,7 @@ gfc_warn_intrinsic_shadow (const gfc_symbol* sym, bool in_module, bool func) gfc_intrinsic_sym* isym; /* If the warning is disabled, do nothing at all. */ - if (!gfc_option.warn_intrinsic_shadow) + if (!warn_intrinsic_shadow) return; /* Try to find an intrinsic of the same name. */ diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 8782f12..70d5b5c 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -886,7 +886,7 @@ is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003}, @cindex warnings, underflow @cindex underflow Produce a warning when numerical constant expressions are -encountered, which yield an UNDERFLOW during compilation. +encountered, which yield an UNDERFLOW during compilation. Enabled by default. @item -Wintrinsic-shadow @opindex @code{Wintrinsic-shadow} diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 1d6cdde..c297817 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -194,19 +194,19 @@ Fortran ; Documented in C Waliasing -Fortran Warning +Fortran Warning Var(warn_aliasing) LangEnabledBy(Fortran,Wall) Warn about possible aliasing of dummy arguments Walign-commons -Fortran Warning +Fortran Warning Var(warn_align_commons) Init(1) Warn about alignment of COMMON blocks Wampersand -Fortran Warning +Fortran Warning Var(warn_ampersand) LangEnabledBy(Fortran,Wall || Wpedantic) Warn about missing ampersand in continued character constants Warray-temporaries -Fortran Warning +Fortran Warning Var(warn_array_temporaries) Warn about creation of array temporaries Wc-binding-type @@ -222,7 +222,7 @@ Fortran Var(warn_character_truncation) Warning LangEnabledBy(Fortran,Wall) Warn about truncated character expressions Wcompare-reals -Fortran Warning +Fortran Warning Var(warn_compare_reals) LangEnabledBy(Fortran,Wextra) Warn about equality comparisons involving REAL or COMPLEX expressions Wconversion @@ -235,28 +235,32 @@ Warn about most implicit conversions Wextra Fortran Warning -Print extra (possibly unwanted) warnings +; Documented in common Wfunction-elimination -Fortran Warning +Fortran Warning Var(warn_function_elimination) Warn about function call elimination Wimplicit-interface -Fortran Warning +Fortran Warning Var(warn_implicit_interface) Warn about calls with implicit interface Wimplicit-procedure -Fortran Warning +Fortran Warning Var(warn_implicit_procedure) Warn about called procedures not explicitly declared Wline-truncation -Fortran Warning +Fortran Warning Var(warn_line_truncation) LangEnabledBy(Fortran,Wall) Warn about truncated source lines Wintrinsics-std Fortran Var(warn_intrinsics_std) Warning LangEnabledBy(Fortran,Wall) Warn on intrinsics not part of the selected standard +Wmaybe-uninitialized +Fortran LangEnabledBy(Fortran,Wall) +; Documented in common.opt + Wmissing-include-dirs Fortran ; Documented in C/C++ @@ -274,27 +278,27 @@ Fortran ; Documented in common.opt Wreal-q-constant -Fortran Warning +Fortran Warning Var(warn_real_q_constant) LangEnabledBy(Fortran,Wall) Warn about real-literal-constants with 'q' exponent-letter Wrealloc-lhs -Fortran Warning +Fortran Warning Var(warn_realloc_lhs) LangEnabledBy(Fortran,Wrealloc-lhs-all) Warn when a left-hand-side array variable is reallocated Wrealloc-lhs-all -Fortran Warning +Fortran Warning Var(warn_realloc_lhs_all) Warn when a left-hand-side variable is reallocated Wtarget-lifetime -Fortran Warning +Fortran Warning Var(warn_target_lifetime) LangEnabledBy(Fortran,Wall) Warn if the pointer in a pointer assignment might outlive its target Wreturn-type -Fortran Warning +Fortran Warning LangEnabledBy(Fortran,Wall) ; Documented in C Wsurprising -Fortran Warning +Fortran Warning Var(warn_surprising) LangEnabledBy(Fortran,Wall) Warn about \"suspicious\" constructs Wtabs @@ -302,19 +306,27 @@ Fortran Warning Var(warn_tabs) LangEnabledBy(Fortran,Wall || Wpedantic) Permit nonconforming uses of the tab character Wunderflow -Fortran Warning +Fortran Warning Var(warn_underflow) Init(1) Warn about underflow of numerical constant expressions +Wuninitialized +Fortran LangEnabledBy(Fortran,Wall) +; Documented in common.opt + Wintrinsic-shadow -Fortran Warning +Fortran Warning Var(warn_intrinsic_shadow) LangEnabledBy(Fortran,Wall) Warn if a user-procedure has the same name as an intrinsic +Wunused +LangEnabledBy(Fortran,Wall) +; Documented in common.opt + Wunused-dummy-argument -Fortran Warning +Fortran Warning Var(warn_unused_dummy_argument) LangEnabledBy(Fortran,Wall) Warn about unused dummy arguments. Wzerotrip -Fortran Warning +Fortran Warning Var(warn_zerotrip) LangEnabledBy(Fortran,Wall) Warn about zero-trip DO loops cpp diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index d8ba798..af71ded 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -93,23 +93,6 @@ gfc_init_options (unsigned int decoded_options_count, gfc_option.dump_fortran_original = 0; gfc_option.dump_fortran_optimized = 0; - gfc_option.warn_aliasing = 0; - gfc_option.warn_ampersand = 0; - gfc_option.warn_array_temp = 0; - gfc_option.warn_function_elimination = 0; - gfc_option.warn_implicit_interface = 0; - gfc_option.warn_line_truncation = 0; - gfc_option.warn_surprising = 0; - gfc_option.warn_underflow = 1; - gfc_option.warn_intrinsic_shadow = 0; - gfc_option.warn_align_commons = 1; - gfc_option.warn_real_q_constant = 0; - gfc_option.warn_unused_dummy_argument = 0; - gfc_option.warn_zerotrip = 0; - gfc_option.warn_realloc_lhs = 0; - gfc_option.warn_realloc_lhs_all = 0; - gfc_option.warn_compare_reals = 0; - gfc_option.warn_target_lifetime = 0; gfc_option.max_errors = 25; gfc_option.flag_all_intrinsics = 0; @@ -423,53 +406,18 @@ gfc_post_options (const char **pfilename) if (!gfc_option.flag_automatic) gfc_option.flag_max_stack_var_size = 0; - if (pedantic) - gfc_option.warn_ampersand = 1; - /* Optimization implies front end optimization, unless the user specified it directly. */ if (gfc_option.flag_frontend_optimize == -1) gfc_option.flag_frontend_optimize = optimize; - if (gfc_option.warn_realloc_lhs_all) - gfc_option.warn_realloc_lhs = 1; - gfc_cpp_post_options (); return gfc_cpp_preprocess_only (); } -/* Set the options for -Wall. */ - -static void -set_Wall (int setting) -{ - gfc_option.warn_aliasing = setting; - gfc_option.warn_ampersand = setting; - gfc_option.warn_line_truncation = setting; - gfc_option.warn_surprising = setting; - gfc_option.warn_underflow = setting; - gfc_option.warn_intrinsic_shadow = setting; - gfc_option.warn_real_q_constant = setting; - gfc_option.warn_unused_dummy_argument = setting; - gfc_option.warn_target_lifetime = setting; - gfc_option.warn_zerotrip = setting; - - warn_return_type = setting; - warn_uninitialized = setting; - warn_maybe_uninitialized = setting; -} - -/* Set the options for -Wextra. */ - -static void -set_Wextra (int setting) -{ - gfc_option.warn_compare_reals = setting; -} - static void gfc_handle_module_path_options (const char *arg) { @@ -630,94 +578,6 @@ gfc_handle_option (size_t scode, const char *arg, int value, result = false; break; - case OPT_Wall: - handle_generated_option (&global_options, &global_options_set, - OPT_Wunused, NULL, value, - gfc_option_lang_mask (), kind, loc, - handlers, global_dc); - set_Wall (value); - break; - - case OPT_Waliasing: - gfc_option.warn_aliasing = value; - break; - - case OPT_Wampersand: - gfc_option.warn_ampersand = value; - break; - - case OPT_Warray_temporaries: - gfc_option.warn_array_temp = value; - break; - - case OPT_Wcompare_reals: - gfc_option.warn_compare_reals = value; - break; - - case OPT_Wextra: - set_Wextra (value); - break; - - case OPT_Wfunction_elimination: - gfc_option.warn_function_elimination = value; - break; - - case OPT_Wimplicit_interface: - gfc_option.warn_implicit_interface = value; - break; - - case OPT_Wimplicit_procedure: - gfc_option.warn_implicit_procedure = value; - break; - - case OPT_Wline_truncation: - gfc_option.warn_line_truncation = value; - break; - - case OPT_Wrealloc_lhs: - gfc_option.warn_realloc_lhs = value; - break; - - case OPT_Wrealloc_lhs_all: - gfc_option.warn_realloc_lhs_all = value; - break; - - case OPT_Wreturn_type: - warn_return_type = value; - break; - - case OPT_Wsurprising: - gfc_option.warn_surprising = value; - break; - - case OPT_Wtarget_lifetime: - gfc_option.warn_target_lifetime = value; - break; - - case OPT_Wunderflow: - gfc_option.warn_underflow = value; - break; - - case OPT_Wintrinsic_shadow: - gfc_option.warn_intrinsic_shadow = value; - break; - - case OPT_Walign_commons: - gfc_option.warn_align_commons = value; - break; - - case OPT_Wreal_q_constant: - gfc_option.warn_real_q_constant = value; - break; - - case OPT_Wunused_dummy_argument: - gfc_option.warn_unused_dummy_argument = value; - break; - - case OPT_Wzerotrip: - gfc_option.warn_zerotrip = value; - break; - case OPT_fall_intrinsics: gfc_option.flag_all_intrinsics = 1; break; @@ -1003,7 +863,7 @@ gfc_handle_option (size_t scode, const char *arg, int value, gfc_option.max_continue_fixed = 19; gfc_option.max_continue_free = 39; gfc_option.max_identifier_length = 31; - gfc_option.warn_ampersand = 1; + warn_ampersand = 1; warn_tabs = 1; break; @@ -1012,7 +872,7 @@ gfc_handle_option (size_t scode, const char *arg, int value, | GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008_OBS; gfc_option.warn_std = GFC_STD_F95_OBS; gfc_option.max_identifier_length = 63; - gfc_option.warn_ampersand = 1; + warn_ampersand = 1; warn_tabs = 1; break; @@ -1021,7 +881,7 @@ gfc_handle_option (size_t scode, const char *arg, int value, | GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008 | GFC_STD_F2008_OBS; gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS; gfc_option.max_identifier_length = 63; - gfc_option.warn_ampersand = 1; + warn_ampersand = 1; warn_tabs = 1; break; @@ -1031,7 +891,7 @@ gfc_handle_option (size_t scode, const char *arg, int value, | GFC_STD_F2008_TS; gfc_option.warn_std = GFC_STD_F95_OBS | GFC_STD_F2008_OBS; gfc_option.max_identifier_length = 63; - gfc_option.warn_ampersand = 1; + warn_ampersand = 1; warn_tabs = 1; break; diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index bbaa517..a7a26a1 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -557,7 +557,7 @@ match_real_constant (gfc_expr **result, int signflag) if (!gfc_notify_std (GFC_STD_GNU, "exponent-letter 'q' in " "real-literal-constant at %C")) return MATCH_ERROR; - else if (gfc_option.warn_real_q_constant) + else if (warn_real_q_constant) gfc_warning("Extension: exponent-letter 'q' in real-literal-constant " "at %C"); } @@ -726,7 +726,7 @@ done: goto cleanup; case ARITH_UNDERFLOW: - if (gfc_option.warn_underflow) + if (warn_underflow) gfc_warning ("Real constant underflows its kind at %C"); mpfr_set_ui (e->value.real, 0, GFC_RND_MODE); break; @@ -951,7 +951,7 @@ static match match_string_constant (gfc_expr **result) { char name[GFC_MAX_SYMBOL_LEN + 1], peek; - int i, kind, length, warn_ampersand, ret; + int i, kind, length, save_warn_ampersand, ret; locus old_locus, start_locus; gfc_symbol *sym; gfc_expr *e; @@ -1071,8 +1071,8 @@ got_delim: /* We disable the warning for the following loop as the warning has already been printed in the loop above. */ - warn_ampersand = gfc_option.warn_ampersand; - gfc_option.warn_ampersand = 0; + save_warn_ampersand = warn_ampersand; + warn_ampersand = 0; p = e->value.character.string; for (i = 0; i < length; i++) @@ -1091,7 +1091,7 @@ got_delim: } *p = '\0'; /* TODO: C-style string is for development/debug purposes. */ - gfc_option.warn_ampersand = warn_ampersand; + warn_ampersand = save_warn_ampersand; next_string_char (delimiter, &ret); if (ret != -1) diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 08bbda4..9d7d3c2 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1643,7 +1643,7 @@ gfc_resolve_intrinsic (gfc_symbol *sym, locus *loc) if (isym && !sym->attr.subroutine) { - if (sym->ts.type != BT_UNKNOWN && gfc_option.warn_surprising + if (sym->ts.type != BT_UNKNOWN && warn_surprising && !sym->attr.implicit_type) gfc_warning ("Type specified for intrinsic function '%s' at %L is" " ignored", sym->name, &sym->declared_at); @@ -3571,7 +3571,7 @@ resolve_operator (gfc_expr *e) e->ts.type = BT_LOGICAL; e->ts.kind = gfc_default_logical_kind; - if (gfc_option.warn_compare_reals) + if (warn_compare_reals) { gfc_intrinsic_op op = e->value.op.op; @@ -6331,8 +6331,7 @@ gfc_resolve_iterator (gfc_iterator *iter, bool real_ok, bool own_scope) sgn = mpfr_sgn (iter->step->value.real); cmp = mpfr_cmp (iter->end->value.real, iter->start->value.real); } - if (gfc_option.warn_zerotrip && - ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))) + if (warn_zerotrip && ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))) gfc_warning ("DO loop at %L will be executed zero times" " (use -Wno-zerotrip to suppress)", &iter->step->where); @@ -7709,7 +7708,7 @@ resolve_select (gfc_code *code, bool select_type) && cp->low != cp->high && gfc_compare_expr (cp->low, cp->high, INTRINSIC_GT) > 0) { - if (gfc_option.warn_surprising) + if (warn_surprising) gfc_warning ("Range specification at %L can never " "be matched", &cp->where); @@ -7811,8 +7810,7 @@ resolve_select (gfc_code *code, bool select_type) /* More than two cases is legal but insane for logical selects. Issue a warning for it. */ - if (gfc_option.warn_surprising && type == BT_LOGICAL - && ncases > 2) + if (warn_surprising && type == BT_LOGICAL && ncases > 2) gfc_warning ("Logical SELECT CASE block at %L has more that two cases", &code->loc); } @@ -9182,7 +9180,7 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) if (rhs->is_boz && lhs->ts.type != BT_INTEGER) { int rc; - if (gfc_option.warn_surprising) + if (warn_surprising) gfc_warning ("BOZ literal at %L is bitwise transferred " "non-integer symbol '%s'", &code->loc, lhs->symtree->n.sym->name); @@ -10483,7 +10481,7 @@ resolve_charlen (gfc_charlen *cl) value, the length of character entities declared is zero." */ if (cl->length && !gfc_extract_int (cl->length, &i) && i < 0) { - if (gfc_option.warn_surprising) + if (warn_surprising) gfc_warning_now ("CHARACTER variable at %L has negative length %d," " the length has been set to zero", &cl->length->where, i); @@ -11499,7 +11497,7 @@ gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable) } /* Warn if the procedure is non-scalar and not assumed shape. */ - if (gfc_option.warn_surprising && arg->as && arg->as->rank != 0 + if (warn_surprising && arg->as && arg->as->rank != 0 && arg->as->type != AS_ASSUMED_SHAPE) gfc_warning ("Non-scalar FINAL procedure at %L should have assumed" " shape argument", &arg->declared_at); @@ -11558,7 +11556,7 @@ error: /* Warn if we haven't seen a scalar finalizer procedure (but we know there were nodes in the list, must have been for arrays. It is surely a good idea to have a scalar version there if there's something to finalize. */ - if (gfc_option.warn_surprising && result && !seen_scalar) + if (warn_surprising && result && !seen_scalar) gfc_warning ("Only array FINAL procedures declared for derived type '%s'" " defined at %L, suggest also scalar one", derived->name, &derived->declared_at); diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index ec7e8ae..8222b7e 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -1048,7 +1048,7 @@ restart: } /* Check to see if the continuation line was truncated. */ - if (gfc_option.warn_line_truncation && gfc_current_locus.lb != NULL + if (warn_line_truncation && gfc_current_locus.lb != NULL && gfc_current_locus.lb->truncated) { int maxlen = gfc_option.free_line_length; @@ -1154,7 +1154,7 @@ restart: if (in_string) { gfc_current_locus.nextc--; - if (gfc_option.warn_ampersand && in_string == INSTRING_WARN) + if (warn_ampersand && in_string == INSTRING_WARN) gfc_warning ("Missing '&' in continued character " "constant at %C"); } @@ -1190,7 +1190,7 @@ restart: goto done; /* Check to see if the continuation line was truncated. */ - if (gfc_option.warn_line_truncation && gfc_current_locus.lb != NULL + if (warn_line_truncation && gfc_current_locus.lb != NULL && gfc_current_locus.lb->truncated) { gfc_current_locus.lb->truncated = 0; diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 3a73867..7ccabc7 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -715,8 +715,7 @@ simplify_achar_char (gfc_expr *e, gfc_expr *k, const char *name, bool ascii) return &gfc_bad_expr; } - if (ascii && gfc_option.warn_surprising - && mpz_cmp_si (e->value.integer, 127) > 0) + if (ascii && warn_surprising && mpz_cmp_si (e->value.integer, 127) > 0) gfc_warning ("Argument of %s function at %L outside of range [0,127]", name, &e->where); @@ -2505,7 +2504,7 @@ gfc_simplify_iachar (gfc_expr *e, gfc_expr *kind) index = e->value.character.string[0]; - if (gfc_option.warn_surprising && index > 127) + if (warn_surprising && index > 127) gfc_warning ("Argument of IACHAR function at %L outside of range 0..127", &e->where); diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index a70aa07..47364da 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1041,7 +1041,7 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, gfc_ss * ss, gcc_assert (ss->dimen > 0); gcc_assert (ss->loop->dimen == ss->dimen); - if (gfc_option.warn_array_temp && where) + if (warn_array_temporaries && where) gfc_warning ("Creating array temporary at %L", where); /* Set the lower bound to zero. */ @@ -5921,7 +5921,7 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, stride = gfc_index_one_node; - if (gfc_option.warn_array_temp) + if (warn_array_temporaries) gfc_warning ("Creating array temporary at %L", &loc); } @@ -7202,7 +7202,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, bool g77, } /* Repack the array. */ - if (gfc_option.warn_array_temp) + if (warn_array_temporaries) { if (fsym) gfc_warning ("Creating array temporary at %L for argument '%s'", diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c index 0620341..0b4f5e6 100644 --- a/gcc/fortran/trans-common.c +++ b/gcc/fortran/trans-common.c @@ -1133,7 +1133,7 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list) /* The required offset conflicts with previous alignment requirements. Insert padding immediately before this segment. */ - if (gfc_option.warn_align_commons) + if (warn_align_commons) { if (strcmp (common->name, BLANK_COMMON_NAME)) gfc_warning ("Padding of %d bytes required before '%s' in " @@ -1167,7 +1167,7 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list) return; } - if (common_segment->offset != 0 && gfc_option.warn_align_commons) + if (common_segment->offset != 0 && warn_align_commons) { if (strcmp (common->name, BLANK_COMMON_NAME)) gfc_warning ("COMMON '%s' at %L requires %d bytes of padding; " diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index eefd9bc..713f969 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -4989,8 +4989,7 @@ generate_local_decl (gfc_symbol * sym) else if (sym->attr.dummy && !sym->attr.in_namelist) { /* INTENT(out) dummy arguments are likely meant to be set. */ - if (gfc_option.warn_unused_dummy_argument - && sym->attr.intent == INTENT_OUT) + if (warn_unused_dummy_argument && sym->attr.intent == INTENT_OUT) { if (sym->ts.type != BT_DERIVED) gfc_warning ("Dummy argument '%s' at %L was declared " @@ -5005,7 +5004,7 @@ generate_local_decl (gfc_symbol * sym) if (sym->backend_decl != NULL_TREE) TREE_NO_WARNING(sym->backend_decl) = 1; } - else if (gfc_option.warn_unused_dummy_argument) + else if (warn_unused_dummy_argument) { gfc_warning ("Unused dummy argument '%s' at %L", sym->name, &sym->declared_at); @@ -5121,7 +5120,7 @@ generate_local_decl (gfc_symbol * sym) { if (!sym->attr.referenced) { - if (gfc_option.warn_unused_dummy_argument) + if (warn_unused_dummy_argument) gfc_warning ("Unused dummy argument '%s' at %L", sym->name, &sym->declared_at); } diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index af7e8cf..f8e4df8 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1111,11 +1111,10 @@ assign: static void realloc_lhs_warning (bt type, bool array, locus *where) { - if (array && type != BT_CLASS && type != BT_DERIVED - && gfc_option.warn_realloc_lhs) + if (array && type != BT_CLASS && type != BT_DERIVED && warn_realloc_lhs) gfc_warning ("Code for reallocating the allocatable array at %L will " "be added", where); - else if (gfc_option.warn_realloc_lhs_all) + else if (warn_realloc_lhs_all) gfc_warning ("Code for reallocating the allocatable variable at %L " "will be added", where); } diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 6bf1f74..c13502e 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -6146,7 +6146,7 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr) { tmp = gfc_build_addr_expr (NULL_TREE, argse.expr); - if (gfc_option.warn_array_temp) + if (warn_array_temporaries) gfc_warning ("Creating array temporary at %L", &expr->where); source = build_call_expr_loc (input_location,