+2005-06-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/21850
+ * tree.c (get_unwidened): Stop at NOP_EXPR/CONVERT_EXPR that convert
+ from vector types.
+
2005-06-14 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/22043
+2005-06-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/21850
+ * gcc.c-torture/execute/20050607-1.c: New test.
+
2005-06-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/19216
while (TREE_CODE (op) == NOP_EXPR
|| TREE_CODE (op) == CONVERT_EXPR)
{
- int bitschange
- = TYPE_PRECISION (TREE_TYPE (op))
- - TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op, 0)));
+ int bitschange;
+
+ /* TYPE_PRECISION on vector types has different meaning
+ (TYPE_VECTOR_SUBPARTS) and casts from vectors are view conversions,
+ so avoid them here. */
+ if (TREE_CODE (TREE_TYPE (TREE_OPERAND (op, 0))) == VECTOR_TYPE)
+ break;
+
+ bitschange = TYPE_PRECISION (TREE_TYPE (op))
+ - TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op, 0)));
/* Truncations are many-one so cannot be removed.
Unless we are later going to truncate down even farther. */