[PATCH] treat OFFSET_TYPE like POINTER_TYPE in fold_convert
Andrew Pinski
pinskia@physics.uc.edu
Tue Jun 8 23:24:00 GMT 2004
While working on PR 15881, I noticed that fold_convert was not ICEing
on when the orginal type was OFFSET_TYPE. This fixes this ICE as
fold_convert should treat it just like POINTER_TYPE and INTEGER_TYPE.
OK? Bootstrapped on powerpc-apple-darwin with no regressions.
Thanks,
Andrew Pinski
ChangeLog:
* fold-const.c (fold_convert): Treat OFFSET_TYPE like
POINTER_TYPE and INTEGER_TYPE.
Patch:
Index: fold-const.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fold-const.c,v
retrieving revision 1.213.2.65.2.7
diff -u -p -r1.213.2.65.2.7 fold-const.c
--- fold-const.c 30 May 2004 09:32:33 -0000 1.213.2.65.2.7
+++ fold-const.c 8 Jun 2004 21:45:14 -0000
@@ -1897,7 +1897,8 @@ fold_convert (tree type, tree arg)
if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (orig))
return fold (build1 (NOP_EXPR, type, arg));
- if (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
+ if (INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type)
+ || TREE_CODE (type) == OFFSET_TYPE)
{
if (TREE_CODE (arg) == INTEGER_CST)
{
@@ -1905,7 +1906,8 @@ fold_convert (tree type, tree arg)
if (tem != NULL_TREE)
return tem;
}
- if (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig))
+ if (INTEGRAL_TYPE_P (orig) || POINTER_TYPE_P (orig)
+ || TREE_CODE (orig) == OFFSET_TYPE)
return fold (build1 (NOP_EXPR, type, arg));
if (TREE_CODE (orig) == COMPLEX_TYPE)
{
More information about the Gcc-patches
mailing list