diff options
author | Manuel López-Ibáñez <manu@gcc.gnu.org> | 2010-06-11 19:56:18 +0000 |
---|---|---|
committer | Manuel López-Ibáñez <manu@gcc.gnu.org> | 2010-06-11 19:56:18 +0000 |
commit | 6312e84d63b9fdcce0ba0f813590d1dd22a7b37e (patch) | |
tree | 054d2a26cd3808fe14b8216d53eda4e92448616c /gcc | |
parent | d4d1606b284058e02290abda66eded7c6a33d152 (diff) | |
download | gcc-6312e84d63b9fdcce0ba0f813590d1dd22a7b37e.zip gcc-6312e84d63b9fdcce0ba0f813590d1dd22a7b37e.tar.gz gcc-6312e84d63b9fdcce0ba0f813590d1dd22a7b37e.tar.bz2 |
c-common.c (conversion_warning): Warn at expression location.
2010-06-11 Manuel López-Ibáñez <manu@gcc.gnu.org>
c-family/
* c-common.c (conversion_warning): Warn at expression
location.
From-SVN: r160631
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 32 |
2 files changed, 22 insertions, 15 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index bd9c0f5..785ae95 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2010-06-11 Manuel López-Ibáñez <manu@gcc.gnu.org> + + * c-common.c (conversion_warning): Warn at expression + location. + 2010-06-10 Joseph Myers <joseph@codesourcery.com> * c-opts.c (c_common_handle_option): Don't handle diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 7c841b1..f1dfe71 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -1838,6 +1838,8 @@ conversion_warning (tree type, tree expr) int i; const int expr_num_operands = TREE_OPERAND_LENGTH (expr); tree expr_type = TREE_TYPE (expr); + location_t loc = EXPR_HAS_LOCATION (expr) + ? EXPR_LOCATION (expr) : input_location; if (!warn_conversion && !warn_sign_conversion) return; @@ -1869,8 +1871,8 @@ conversion_warning (tree type, tree expr) can hold the values 0 and -1) doesn't lose information - but it does change the value. */ if (TYPE_PRECISION (type) == 1 && !TYPE_UNSIGNED (type)) - warning (OPT_Wconversion, - "conversion to %qT from boolean expression", type); + warning_at (loc, OPT_Wconversion, + "conversion to %qT from boolean expression", type); return; case REAL_CST: @@ -1891,11 +1893,11 @@ conversion_warning (tree type, tree expr) { if (TYPE_UNSIGNED (type) && !TYPE_UNSIGNED (expr_type) && tree_int_cst_sgn (expr) < 0) - warning (OPT_Wsign_conversion, - "negative integer implicitly converted to unsigned type"); + warning_at (loc, OPT_Wsign_conversion, "negative integer" + " implicitly converted to unsigned type"); else if (!TYPE_UNSIGNED (type) && TYPE_UNSIGNED (expr_type)) - warning (OPT_Wsign_conversion, "conversion of unsigned constant " - "value to negative integer"); + warning_at (loc, OPT_Wsign_conversion, "conversion of unsigned" + " constant value to negative integer"); else give_warning = true; } @@ -1920,9 +1922,9 @@ conversion_warning (tree type, tree expr) } if (give_warning) - warning (OPT_Wconversion, - "conversion to %qT alters %qT constant value", - type, expr_type); + warning_at (loc, OPT_Wconversion, + "conversion to %qT alters %qT constant value", + type, expr_type); return; @@ -2013,9 +2015,9 @@ conversion_warning (tree type, tree expr) unsigned but expr is signed, then negative values will be changed. */ || (TYPE_UNSIGNED (type) && !TYPE_UNSIGNED (expr_type))) - warning (OPT_Wsign_conversion, "conversion to %qT from %qT " - "may change the sign of the result", - type, expr_type); + warning_at (loc, OPT_Wsign_conversion, "conversion to %qT from %qT " + "may change the sign of the result", + type, expr_type); } /* Warn for integer types converted to real types if and only if @@ -2049,9 +2051,9 @@ conversion_warning (tree type, tree expr) if (give_warning) - warning (OPT_Wconversion, - "conversion to %qT from %qT may alter its value", - type, expr_type); + warning_at (loc, OPT_Wconversion, + "conversion to %qT from %qT may alter its value", + type, expr_type); } } |