Record missing equivalence

Jeff Law law@redhat.com
Tue Mar 26 04:00:00 GMT 2013


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.



-------------- next part --------------
	* 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);


More information about the Gcc-patches mailing list