From 99cababb4b154f763a609127b498a9f0fa99b3f8 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Fri, 10 Aug 2012 12:16:04 +0000 Subject: [PATCH] re PR middle-end/54211 (ICE: verify_gimple failed building freetype with -Os) gcc: 2012-08-10 Bill Schmidt PR middle-end/54211 * gimple-ssa-strength-reduction.c (analyze_candidates_and_replace): Use cand_type to determine whether pointer arithmetic will be generated. gcc/testsuite: 2012-08-10 Bill Schmidt PR middle-end/54211 * gcc.dg/tree-ssa/pr54211.c: New test. From-SVN: r190294 --- gcc/ChangeLog | 6 ++++++ gcc/gimple-ssa-strength-reduction.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/tree-ssa/pr54211.c | 28 +++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr54211.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1050c568d07..41e0db37413 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-08-10 Bill Schmidt + + PR middle-end/54211 + * gimple-ssa-strength-reduction.c (analyze_candidates_and_replace): + Use cand_type to determine whether pointer arithmetic will be generated. + 2012-08-10 Bill Schmidt * doc/sourcebuild.texi: Document long_neq_int effective target. diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index ccc361e900a..237c0c9b425 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -2534,7 +2534,7 @@ analyze_candidates_and_replace (void) /* Determine whether we'll be generating pointer arithmetic when replacing candidates. */ address_arithmetic_p = (c->kind == CAND_ADD - && POINTER_TYPE_P (TREE_TYPE (c->base_expr))); + && POINTER_TYPE_P (c->cand_type)); /* If all candidates have already been replaced under other interpretations, nothing remains to be done. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c9e312d0ec5..243f5950fcc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-08-10 Bill Schmidt + + PR middle-end/54211 + * gcc.dg/tree-ssa/pr54211.c: New test. + 2012-08-10 Bill Schmidt * lib/target-supports.exp (check_effective_target_long_neq_int): New. diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr54211.c b/gcc/testsuite/gcc.dg/tree-ssa/pr54211.c new file mode 100644 index 00000000000..c8a1591b0a9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr54211.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-Os" } */ + +int a, b; +unsigned char e; +void fn1 () +{ + unsigned char *c=0; + for (;; a++) + { + unsigned char d = *(c + b); + for (; &e<&d; c++) + goto Found_Top; + } +Found_Top: + if (0) + goto Empty_Bitmap; + for (;; a++) + { + unsigned char *e = c + b; + for (; c < e; c++) + goto Found_Bottom; + c -= b; + } +Found_Bottom: +Empty_Bitmap: + ; +}