This is the mail archive of the gcc-patches@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]

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


Forward from gcc@.
Committed to the tree-ssa branch.

Begin forwarded message:

From: Andrew Pinski <pinskia@physics.uc.edu>
Date: Thu Aug 21, 2003  22:30:55 US/Eastern
Subject: 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]