From 3c1247f03db5d6e9478f3fd6ea7a3950ccd68118 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Mon, 20 May 2013 13:20:39 +0000 Subject: [PATCH] re PR c++/23608 (constant propagation (CCP) would improve -Wsign-compare) /cp 2013-05-20 Paolo Carlini PR c++/23608 * call.c (build_new_op_1): Propagate loc to cp_build_binary_op. /testsuite 2013-05-20 Paolo Carlini PR c++/23608 * g++.dg/warn/Wsign-compare-6.C: New. * g++.dg/warn/Wdouble-promotion.C: Adjust. From-SVN: r199102 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/call.c | 2 +- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/warn/Wdouble-promotion.C | 4 ++-- gcc/testsuite/g++.dg/warn/Wsign-compare-6.C | 14 ++++++++++++++ 5 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.dg/warn/Wsign-compare-6.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0fee1b533f6..f7c4547456e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-05-20 Paolo Carlini + + PR c++/23608 + * call.c (build_new_op_1): Propagate loc to cp_build_binary_op. + 2013-05-20 Jason Merrill PR c++/57317 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index b09a87f4642..ce6604224ca 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -5418,7 +5418,7 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1, case BIT_AND_EXPR: case BIT_IOR_EXPR: case BIT_XOR_EXPR: - return cp_build_binary_op (input_location, code, arg1, arg2, complain); + return cp_build_binary_op (loc, code, arg1, arg2, complain); case UNARY_PLUS_EXPR: case NEGATE_EXPR: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 52c52ac41d2..6f7bf4110d8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-05-20 Paolo Carlini + + PR c++/23608 + * g++.dg/warn/Wsign-compare-6.C: New. + * g++.dg/warn/Wdouble-promotion.C: Adjust. + 2013-05-20 Paolo Carlini PR c++/57327 diff --git a/gcc/testsuite/g++.dg/warn/Wdouble-promotion.C b/gcc/testsuite/g++.dg/warn/Wdouble-promotion.C index afd9a20147e..60eed6b5398 100644 --- a/gcc/testsuite/g++.dg/warn/Wdouble-promotion.C +++ b/gcc/testsuite/g++.dg/warn/Wdouble-promotion.C @@ -5,7 +5,7 @@ /* Some targets do not provide so we define I ourselves. */ #define I 1.0iF -#define ID ((_Complex double)I) // { dg-warning "implicit" } +#define ID ((_Complex double)I) float f; double d; @@ -36,7 +36,7 @@ usual_arithmetic_conversions(void) local_cf = cf + 1.0; /* { dg-warning "implicit" } */ local_cf = cf - d; /* { dg-warning "implicit" } */ - local_cf = cf + 1.0 * ID; /* { dg-message "in expansion of macro 'ID'" } */ + local_cf = cf + 1.0 * ID; /* { dg-warning "implicit" } */ local_cf = cf - cd; /* { dg-warning "implicit" } */ local_f = i ? f : d; /* { dg-warning "implicit" } */ diff --git a/gcc/testsuite/g++.dg/warn/Wsign-compare-6.C b/gcc/testsuite/g++.dg/warn/Wsign-compare-6.C new file mode 100644 index 00000000000..1f8af664c7b --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wsign-compare-6.C @@ -0,0 +1,14 @@ +// PR c++/23608 +// { dg-options "-Wsign-compare" } + +#define FIVE 5 + +int main() +{ + int i = 5; + int const ic = 5; + + i < 5u; // { dg-warning "5:comparison between signed and unsigned" } + ic < 5u; + FIVE < 5u; +} -- 2.30.2