OSDN Git Service

Correct conversion/overflow behavior.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Nov 2010 20:17:42 +0000 (20:17 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Nov 2010 20:17:42 +0000 (20:17 +0000)
commita1f05651ed0d07a37b7120bb295c7d3dd0d94ed6
tree29e021e2fec06d40962f55e47d182c721d950eae
parent0fe7bca11f09108617e5c224ca900c066815722e
Correct conversion/overflow behavior.
* cvt.c (ignore_overflows): Move here from typeck.c.
(ocp_convert): Use it.
(cp_fold_convert): Use it.  Don't call rvalue.
* typeck.c (build_static_cast_1): Don't use it.  Do call rvalue.
* error.c (location_of): Handle expressions, too.
* class.c (check_bitfield_decl): Set input_location around call to
cxx_constant_value.
* semantics.c (cxx_eval_outermost_constant_expr): Don't
print the expression if it already had TREE_OVERFLOW set.
(reduced_constant_expression_p): Check TREE_OVERFLOW_P for C++98, too.
(verify_constant): Allow overflow with a permerror if we're
enforcing.
(cxx_eval_outermost_constant_expr): Use verify_constant.
(adjust_temp_type): Use cp_fold_convert.
* decl.c (build_enumerator): Don't call constant_expression_warning.
* decl2.c (grokbitfield): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166453 138bc75d-0d04-0410-961f-82ee72b054a4
16 files changed:
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cvt.c
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/error.c
gcc/cp/semantics.c
gcc/cp/typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/expr/overflow1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/overflow-warn-1.C
gcc/testsuite/g++.dg/warn/overflow-warn-3.C
gcc/testsuite/g++.dg/warn/overflow-warn-4.C
gcc/testsuite/g++.dg/warn/overflow-warn-5.C
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc