diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-14 10:22:06 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-14 10:22:06 +0000 |
commit | 4b02020f3a36b70d329cb2656377939c52cf44ca (patch) | |
tree | a0adac75a16f1e2a307ff509d4ff79517429a89d /gcc/fortran/check.c | |
parent | f8aa507d7a3479d4bf1edf04c9141ce8ca1e9785 (diff) | |
download | gcc-4b02020f3a36b70d329cb2656377939c52cf44ca.tar.gz |
2012-08-14 Tobias Burnus <burnus@net-b.de>
PR fortran/54234
* check.c (gfc_check_cmplx): Add -Wconversion warning
when converting higher-precision REAL to default-precision
CMPLX without kind= parameter.
2012-08-14 Tobias Burnus <burnus@net-b.de>
PR fortran/54234
* gfortran.dg/warn_conversion_4.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190378 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/check.c')
-rw-r--r-- | gcc/fortran/check.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index c5bf79b8fea..2235b52d6d3 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -1278,6 +1278,17 @@ gfc_check_cmplx (gfc_expr *x, gfc_expr *y, gfc_expr *kind) if (kind_check (kind, 2, BT_COMPLEX) == FAILURE) return FAILURE; + if (!kind && gfc_option.gfc_warn_conversion + && x->ts.type == BT_REAL && x->ts.kind > gfc_default_real_kind) + gfc_warning_now ("Conversion from %s to default-kind COMPLEX(%d) at %L " + "might loose precision, consider using the KIND argument", + gfc_typename (&x->ts), gfc_default_real_kind, &x->where); + else if (y && !kind && gfc_option.gfc_warn_conversion + && y->ts.type == BT_REAL && y->ts.kind > gfc_default_real_kind) + gfc_warning_now ("Conversion from %s to default-kind COMPLEX(%d) at %L " + "might loose precision, consider using the KIND argument", + gfc_typename (&y->ts), gfc_default_real_kind, &y->where); + return SUCCESS; } |