aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/options.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-04-25 08:25:48 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2012-04-25 08:25:48 +0200
commitf1fb11f1e8322a94b90ea8c1a1cbae79c5f1bab5 (patch)
treecf5861882524a9b89885cd03d357099ba5ab7625 /gcc/fortran/options.c
parentad1d9a5079591596b5ccd5a924a8b9c65c542e3e (diff)
downloadgcc-f1fb11f1e8322a94b90ea8c1a1cbae79c5f1bab5.zip
gcc-f1fb11f1e8322a94b90ea8c1a1cbae79c5f1bab5.tar.gz
gcc-f1fb11f1e8322a94b90ea8c1a1cbae79c5f1bab5.tar.bz2
re PR fortran/52196 (Add -Wrealloc-lhs)
2012-04-25 Tobias Burnus <burnus@net-b.de> PR fortran/52196 * lang.opt (Wrealloc-lhs, Wrealloc-lhs-all): New flags. * gfortran.h (gfc_option_t): Add them. * options.c (gfc_init_options, gfc_post_options, gfc_handle_option): Handle them. * invoke.texi: Document them. * trans-expr.c (realloc_lhs_warning): New function. (gfc_trans_arrayfunc_assign, alloc_scalar_allocatable_for_assignment, gfc_trans_assignment_1): Use it. 2012-04-25 Tobias Burnus <burnus@net-b.de> PR fortran/52196 * gfortran.dg/realloc_on_assign_14.f90: New. From-SVN: r186806
Diffstat (limited to 'gcc/fortran/options.c')
-rw-r--r--gcc/fortran/options.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 1010a93..dde7ff2 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -111,6 +111,8 @@ gfc_init_options (unsigned int decoded_options_count,
gfc_option.warn_align_commons = 1;
gfc_option.warn_real_q_constant = 0;
gfc_option.warn_unused_dummy_argument = 0;
+ gfc_option.warn_realloc_lhs = 0;
+ gfc_option.warn_realloc_lhs_all = 0;
gfc_option.max_errors = 25;
gfc_option.flag_all_intrinsics = 0;
@@ -437,6 +439,9 @@ gfc_post_options (const char **pfilename)
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 ();
/* FIXME: return gfc_cpp_preprocess_only ();
@@ -654,6 +659,14 @@ gfc_handle_option (size_t scode, const char *arg, int value,
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;