This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] bootstrap problem on powerpc-apple-darwin6.6


> 
> On Thu, 21 Aug 2003 20:01:03 -0400 (EDT), Andrew Pinski <pinskia@physics.uc.edu> wrote:
> 
> > +              && TYPE_MIN_VALUE (inner_type) == TYPE_MIN_VALUE (outer_type)
> > +              && TYPE_MAX_VALUE (inner_type) == TYPE_MAX_VALUE (outer_type))
> 
> These are trees, which can't be reliably compared with ==.  It's probably
> simpler to just compare TYPE_PRECISION.
> 

You are right I should have checked to make sure that they were not trees.

Here is a newer patch which compares the TYPE_PRECISION and it adds some commentary
about the problem so this part will not be reverted or if we see another place we 
can point them to here.

Thanks,
Andrew Pinski

ChangeLog:
	* tree-ssa.c (tree_ssa_useless_type_conversion): Check also the precision of 
	the type to make sure they are really useless type conversions.


Index: tree-ssa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa.c,v
retrieving revision 1.1.4.118
diff -u -p -r1.1.4.118 tree-ssa.c
--- tree-ssa.c  20 Aug 2003 03:43:02 -0000      1.1.4.118
+++ tree-ssa.c  22 Aug 2003 02:27:07 -0000
@@ -2448,10 +2448,15 @@ tree_ssa_useless_type_conversion (tree e
 
       /* If both the inner and outer types are integral types, then
          we can enter the equivalence if they have the same mode
-         and signedness.  */
+         and signedness and precision (The type _Bool can have size of 4
+         (only happens on powerpc-darwin right now but can happen on any 
+         target that defines BOOL_TYPE_SIZE to be INT_TYPE_SIZE) and a
+         precision of 1 while unsigned int is the same expect for a 
+         precision of 4 so testing of precision is nessary).  */
       else if (INTEGRAL_TYPE_P (inner_type) && INTEGRAL_TYPE_P (outer_type)
               && TYPE_MODE (inner_type) == TYPE_MODE (outer_type)
-              && TREE_UNSIGNED (inner_type) == TREE_UNSIGNED (outer_type))
+              && TREE_UNSIGNED (inner_type) == TREE_UNSIGNED (outer_type)
+              && TYPE_PRECISION (inner_type) == TYPE_PRECISION (outer_type))
        return true;
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]