From: Mark Mitchell Date: Fri, 11 Jul 2003 08:13:58 +0000 (+0000) Subject: typeck.c (build_binary_op): Do not warn about signed vs. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7d48af3049bd6b071a0369d96cdc1d7fbe8caa40;p=gcc.git typeck.c (build_binary_op): Do not warn about signed vs. * typeck.c (build_binary_op): Do not warn about signed vs. unsigned comparisons in the bodies of templates. * g++.dg/warn/Wsign-compare-1.C: New test. From-SVN: r69222 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1d64a22e497..5722e9f3d53 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2003-07-10 Mark Mitchell + * typeck.c (build_binary_op): Do not warn about signed + vs. unsigned comparisons in the bodies of templates. + PR c++/9411 * parser.c (cp_parser_postfix_expression): Check dependency of functions. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 58055eca08b..8e1e0df8b78 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -3443,7 +3443,10 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1, } if ((short_compare || code == MIN_EXPR || code == MAX_EXPR) - && warn_sign_compare) + && warn_sign_compare + /* Do not warn until the template is instantiated; we cannot + bound the ranges of the arguments until that point. */ + && !processing_template_decl) { int op0_signed = ! TREE_UNSIGNED (TREE_TYPE (orig_op0)); int op1_signed = ! TREE_UNSIGNED (TREE_TYPE (orig_op1)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f7b1551cca2..968a056df17 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-07-11 Mark Mitchell + + * g++.dg/warn/Wsign-compare-1.C: New test. + 2003-07-10 Kazu Hirata * gcc.dg/20021018-1.c: Disable if the sizeof (int) < 4. diff --git a/gcc/testsuite/g++.dg/warn/Wsign-compare-1.C b/gcc/testsuite/g++.dg/warn/Wsign-compare-1.C new file mode 100644 index 00000000000..495bb992cdd --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wsign-compare-1.C @@ -0,0 +1,6 @@ +// { dg-options "-Wsign-compare" } + +extern unsigned u; + +template +int f() { return u > 1; }