From 0d17b70a0a09f15f0465de7d8717d5eba8d224d2 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Thu, 2 Oct 2008 13:11:12 +0000 Subject: re PR middle-end/37713 (ice for legal code with -O3 on 20080926) 2008-10-02 Richard Guenther PR middle-end/37713 * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE and VECTOR_TYPE recurse with useless_type_conversion_p which properly handles void pointer conversion. * gcc.c-torture/compile/pr37713.c: New testcase. From-SVN: r140832 --- gcc/tree-ssa.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gcc/tree-ssa.c') diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 073e129..c53c528 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1159,15 +1159,15 @@ useless_type_conversion_p_1 (tree outer_type, tree inner_type) /* Recurse for complex types. */ else if (TREE_CODE (inner_type) == COMPLEX_TYPE && TREE_CODE (outer_type) == COMPLEX_TYPE) - return useless_type_conversion_p_1 (TREE_TYPE (outer_type), - TREE_TYPE (inner_type)); + return useless_type_conversion_p (TREE_TYPE (outer_type), + TREE_TYPE (inner_type)); /* Recurse for vector types with the same number of subparts. */ else if (TREE_CODE (inner_type) == VECTOR_TYPE && TREE_CODE (outer_type) == VECTOR_TYPE && TYPE_PRECISION (inner_type) == TYPE_PRECISION (outer_type)) - return useless_type_conversion_p_1 (TREE_TYPE (outer_type), - TREE_TYPE (inner_type)); + return useless_type_conversion_p (TREE_TYPE (outer_type), + TREE_TYPE (inner_type)); /* For aggregates we may need to fall back to structural equality checks. */ -- cgit v1.1