PR tree-optimization/55569
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Jan 2013 21:29:07 +0000 (21:29 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Jan 2013 21:29:07 +0000 (21:29 +0000)
* cfgloopmanip.c (scale_loop_profile): Make ITERATION_BOUND gcov_type.
* cfgloop.h (scale_loop_profile): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195067 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cfgloop.h
gcc/cfgloopmanip.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr55569.c [new file with mode: 0644]

index ac4c298..ddfbcff 100644 (file)
@@ -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.
index 1f155f7..2d90d38 100644 (file)
@@ -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.*/
index 2528ec5..af29677 100644 (file)
@@ -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
index 238d752..56a6a48 100644 (file)
@@ -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 (file)
index 0000000..2a53c80
--- /dev/null
@@ -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;
+}