From: Jan Hubicka Date: Wed, 9 Jan 2013 21:29:07 +0000 (+0100) Subject: re PR tree-optimization/55569 (ICE: in check_probability, at basic-block.h:944 with... X-Git-Tag: upstream/12.2.0~71813 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7770c9e9060766568d00815506142658e703f629;p=platform%2Fupstream%2Fgcc.git re PR tree-optimization/55569 (ICE: in check_probability, at basic-block.h:944 with -ftree-vectorize) PR tree-optimization/55569 * cfgloopmanip.c (scale_loop_profile): Make ITERATION_BOUND gcov_type. * cfgloop.h (scale_loop_profile): Likewise. From-SVN: r195067 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac4c298..ddfbcff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2013-01-09 Jan Hubicka + PR tree-optimization/55569 + * cfgloopmanip.c (scale_loop_profile): Make ITERATION_BOUND gcov_type. + * cfgloop.h (scale_loop_profile): Likewise. + +2013-01-09 Jan Hubicka + PR lto/45375 * ipa-inline.c (ipa_inline): Remove extern inlines and virtual functions. * cgraphclones.c (cgraph_clone_node): Cpoy also LTO file data. diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index 1f155f7..2d90d38 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -711,7 +711,7 @@ extern void unroll_and_peel_loops (int); extern void doloop_optimize_loops (void); extern void move_loop_invariants (void); extern bool finite_loop_p (struct loop *); -extern void scale_loop_profile (struct loop *loop, int scale, int iteration_bound); +extern void scale_loop_profile (struct loop *loop, int scale, gcov_type iteration_bound); extern vec get_loop_hot_path (const struct loop *loop); /* Returns the outermost loop of the loop nest that contains LOOP.*/ diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index 2528ec5..af29677 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -481,7 +481,7 @@ scale_loop_frequencies (struct loop *loop, int num, int den) to iterate too many times. */ void -scale_loop_profile (struct loop *loop, int scale, int iteration_bound) +scale_loop_profile (struct loop *loop, int scale, gcov_type iteration_bound) { gcov_type iterations = expected_loop_iterations_unbounded (loop); edge e; @@ -491,7 +491,7 @@ scale_loop_profile (struct loop *loop, int scale, int iteration_bound) fprintf (dump_file, ";; Scaling loop %i with scale %f, " "bounding iterations to %i from guessed %i\n", loop->num, (double)scale / REG_BR_PROB_BASE, - iteration_bound, (int)iterations); + (int)iteration_bound, (int)iterations); /* See if loop is predicted to iterate too many times. */ if (iteration_bound && iterations > 0 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 238d752..56a6a48 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-01-09 Jan Hubicka + + PR tree-optimization/55569 + * gcc.c-torture/compile/pr55569.c: New testcase. + 2013-01-09 Mikael Morin PR fortran/47203 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr55569.c b/gcc/testsuite/gcc.c-torture/compile/pr55569.c new file mode 100644 index 0000000..2a53c80 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr55569.c @@ -0,0 +1,11 @@ +/* { dg-options "-O1 -ftree-vectorize" } */ +int *bar (void); + +void +foo (void) +{ + long x; + int *y = bar (); + for (x = -1 / sizeof (int); x; --x, ++y) + *y = 0; +}