[Bug c++/86586] [6/7/8/9 Regression] -Wsign-compare affects code generation
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jul 19 13:49:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86586
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Like with
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 1335da5e9bc..aaa56697f29 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -5322,7 +5322,6 @@ cp_build_binary_op (location_t location,
}
if ((short_compare || code == MIN_EXPR || code == MAX_EXPR)
- && 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
@@ -5336,12 +5335,15 @@ cp_build_binary_op (location_t location,
tree oop0 = maybe_constant_value (orig_op0);
tree oop1 = maybe_constant_value (orig_op1);
- if (TREE_CODE (oop0) != INTEGER_CST)
- oop0 = cp_fully_fold (orig_op0);
- if (TREE_CODE (oop1) != INTEGER_CST)
- oop1 = cp_fully_fold (orig_op1);
- warn_for_sign_compare (location, oop0, oop1, op0, op1,
- result_type, resultcode);
+ if (warn_sign_compare)
+ {
+ if (TREE_CODE (oop0) != INTEGER_CST)
+ oop0 = cp_fully_fold (orig_op0);
+ if (TREE_CODE (oop1) != INTEGER_CST)
+ oop1 = cp_fully_fold (orig_op1);
+ warn_for_sign_compare (location, oop0, oop1, op0, op1,
+ result_type, resultcode);
+ }
}
}
More information about the Gcc-bugs
mailing list