From 6fe2f65a17ba8ccadca8e944ce11833bfcbcfb48 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Tue, 27 May 2008 13:10:18 +0000 Subject: re PR tree-optimization/36245 (internal compiler error: in build2_stat, at tree.c:3116) 2008-05-27 Richard Guenther PR tree-optimization/36245 * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases. * gcc.c-torture/compile/pr36245.c: New testcase. From-SVN: r136029 --- gcc/tree-ssa-address.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'gcc/tree-ssa-address.c') diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c index a5119d8..55d43a5 100644 --- a/gcc/tree-ssa-address.c +++ b/gcc/tree-ssa-address.c @@ -423,9 +423,13 @@ add_to_parts (struct mem_address *parts, tree elt) /* Add ELT to base. */ type = TREE_TYPE (parts->base); - parts->base = fold_build2 (POINTER_PLUS_EXPR, type, - parts->base, - fold_convert (sizetype, elt)); + if (POINTER_TYPE_P (type)) + parts->base = fold_build2 (POINTER_PLUS_EXPR, type, + parts->base, + fold_convert (sizetype, elt)); + else + parts->base = fold_build2 (PLUS_EXPR, type, + parts->base, elt); } /* Finds the most expensive multiplication in ADDR that can be -- cgit v1.1