On 03/25/2013 06:41 PM, H.J. Lu wrote:
This breaks the bootstrap on Linux/x86:
http://gcc.gnu.org/ml/gcc-regression/2013-03/msg00148.html
../../../../../src-trunk/libstdc++-v3/src/c++98/mt_allocator.cc: In
member function 'std::size_t
__gnu_cxx::__pool<true>::_M_get_thread_id()':
../../../../../src-trunk/libstdc++-v3/src/c++98/mt_allocator.cc:620:3:
internal compiler error: tree check: expected integer_type or
enumeral_type or boolean_type or real_type or fixed_point_type, have
pointer_type in int_fits_type_p, at tree.c:8325
__pool<true>::_M_get_thread_id()
Definitely the wrong version of the patch. It's missing the
INTEGRAL_TYPE_P test that was added to fix this exact problem.
This is the delta to get to the version that should have been checked in.
* tree-ssa-dom.c (record_equivalences_from_incoming_edge): Add missing
check for INTEGRAL_TYPE_P that was missing due to checking in wrong
version of prior patch.
*** ../../GIT/gcc/gcc/tree-ssa-dom.c Mon Mar 25 13:03:11 2013
--- tree-ssa-dom.c Thu Mar 21 07:28:51 2013
*************** record_equivalences_from_incoming_edge (
*** 1153,1159 ****
/* If the constant is in the range of the type of OLD_RHS,
then convert the constant and record the equivalence. */
! if (int_fits_type_p (rhs, TREE_TYPE (old_rhs)))
{
tree newval = fold_convert (TREE_TYPE (old_rhs), rhs);
record_equality (old_rhs, newval);
--- 1153,1160 ----
/* If the constant is in the range of the type of OLD_RHS,
then convert the constant and record the equivalence. */
! if (INTEGRAL_TYPE_P (TREE_TYPE (old_rhs))
! && int_fits_type_p (rhs, TREE_TYPE (old_rhs)))
{
tree newval = fold_convert (TREE_TYPE (old_rhs), rhs);
record_equality (old_rhs, newval);