diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a161eb53712ab6399c069b4f9e664f2ce450d64..53722270cc7a1eb64ebec339319c440a49c49df8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2004-07-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + * tree-ssa.c (tree_ssa_useless_type_conversion): Also look at + VIEW_CONVERT_EXPR and NON_LVALUE_EXPR. + * tree-ssa-ccp.c (fold_stmt): Call just STRIP_USELESS_TYPE_CONVERSION. + * tree-ssa-dom.c (local_fold): Likewise. + * langhooks-def.h (LANG_HOOKS_TYPE_MAX_SIZE): New langhook. * langhooks.h (strct lang_hooks): New field type_max_size. * function.c (assign_temp): Call it. diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 559f19b0765218540e8eedffc1e95ef30e542048..0b990717b33ce5d28312d88a0e6f857c39f36c28 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -2086,7 +2086,6 @@ fold_stmt (tree *stmt_p) /* Strip away useless type conversions. Both the NON_LVALUE_EXPR that may have been added by fold, and "useless" type conversions that might now be apparent due to propagation. */ - STRIP_MAIN_TYPE_NOPS (result); STRIP_USELESS_TYPE_CONVERSION (result); if (result != rhs) diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 49759978326b6dbf85d933c465cc7a1bf553fcaa..b556b4eedf2440d1a8bf7cabffadb9cde46ad664 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -279,7 +279,6 @@ local_fold (tree t) /* Strip away useless type conversions. Both the NON_LVALUE_EXPR that may have been added by fold, and "useless" type conversions that might now be apparent due to propagation. */ - STRIP_MAIN_TYPE_NOPS (t); STRIP_USELESS_TYPE_CONVERSION (t); return t; diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 37b83bfeca59ebb580fc5adab29e63f9a211b1e7..4cdfd3ddf22902002a76d44313d16d99dc540dac 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -601,7 +601,9 @@ tree_ssa_useless_type_conversion (tree expr) the top of the RHS to the type of the LHS and the type conversion is "safe", then strip away the type conversion so that we can enter LHS = RHS into the const_and_copies table. */ - if (TREE_CODE (expr) == NOP_EXPR || TREE_CODE (expr) == CONVERT_EXPR) + if (TREE_CODE (expr) == NOP_EXPR || TREE_CODE (expr) == CONVERT_EXPR + || TREE_CODE (expr) == VIEW_CONVERT_EXPR + || TREE_CODE (expr) == NON_LVALUE_EXPR) return tree_ssa_useless_type_conversion_1 (TREE_TYPE (expr), TREE_TYPE (TREE_OPERAND (expr, 0)));