Commit 15442c9c by Jason Merrill Committed by Jason Merrill

re PR c++/50508 ([C++0x] ICE cxx_eval_logical_expression cp/semantics.c:6487)

	PR c++/50508
	* semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
	rather than ==.

From-SVN: r179228
parent cb8bbba8
2011-09-26 Jason Merrill <jason@redhat.com>
PR c++/50508
* semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
rather than ==.
2011-09-26 Paolo Carlini <paolo.carlini@oracle.com> 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/45487 PR c++/45487
......
...@@ -6680,9 +6680,9 @@ cxx_eval_logical_expression (const constexpr_call *call, tree t, ...@@ -6680,9 +6680,9 @@ cxx_eval_logical_expression (const constexpr_call *call, tree t,
allow_non_constant, addr, allow_non_constant, addr,
non_constant_p); non_constant_p);
VERIFY_CONSTANT (lhs); VERIFY_CONSTANT (lhs);
if (lhs == bailout_value) if (tree_int_cst_equal (lhs, bailout_value))
return lhs; return lhs;
gcc_assert (lhs == continue_value); gcc_assert (tree_int_cst_equal (lhs, continue_value));
r = cxx_eval_constant_expression (call, TREE_OPERAND (t, 1), r = cxx_eval_constant_expression (call, TREE_OPERAND (t, 1),
allow_non_constant, addr, non_constant_p); allow_non_constant, addr, non_constant_p);
VERIFY_CONSTANT (r); VERIFY_CONSTANT (r);
......
2011-09-26 Jason Merrill <jason@redhat.com>
PR c++/50508
* g++.dg/cpp0x/constexpr-typedef1.C: New.
2011-09-26 Paolo Carlini <paolo.carlini@oracle.com> 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/45487 PR c++/45487
......
// PR c++/50508
// { dg-options -std=c++0x }
template <class T>
struct integral_constant {
typedef T value_type;
constexpr operator value_type() { return true; }
};
static constexpr bool value = integral_constant<bool>()
&& true;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment