summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cfgloop.h2
-rw-r--r--gcc/cfgloopmanip.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr55569.c11
5 files changed, 25 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ac4c29853f1..ddfbcffad43 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2013-01-09 Jan Hubicka <jh@suse.cz>
+ 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 <jh@suse.cz>
+
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 1f155f70085..2d90d38a738 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<basic_block> 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 2528ec50d39..af29677da3c 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 238d75217a8..56a6a487c8a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-01-09 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55569
+ * gcc.c-torture/compile/pr55569.c: New testcase.
+
2013-01-09 Mikael Morin <mikael@gcc.gnu.org>
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 00000000000..2a53c803957
--- /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;
+}
OpenPOWER on IntegriCloud