diff mbox

Partially fix PR61529, bound basic block frequency

Message ID 545BB5B5.90008@arm.com
State New
Headers show

Commit Message

Renlin Li Nov. 6, 2014, 5:53 p.m. UTC
Hi Teresa,

Thank you for the suggestion, updated!

> Please add a comment that this is needed due to insane incoming frequencies.
>
> The 'b' variable is uninitialized. Also, 'd' and 'a' may end up
> uninitialized depending on the initial value of 'b'. Please initialize
> these.
>

Test case has been added. With the patch, both x86_64-unknown-linux-gnu 
and aarch64-none-elf compile the test case successfully.

x86_64-unknown-linux-gnu bootstrap and regression test have been done, 
no new issue.
aarch64-none-elf toolchain has been test on the model. No new regression.

gcc/ChangeLog:

2014-11-06  Renlin Li  <Renlin.Li@arm.com>
     PR middle-end/61529
     * tree-ssa-threadupdate.c (compute_path_counts): Bound path_in_freq.
      This is needed due to insane incoming frequencies.

gcc/testsuite/ChangeLog:

2014-11-06  Renlin Li  <Renlin.Li@arm.com>
     PR middle-end/61529
     * gcc.dg/pr61529.c: New.

Comments

Teresa Johnson Nov. 6, 2014, 5:59 p.m. UTC | #1
Thanks for fixing the test case. Can you also add the comment I
suggested to the source change?

> Please add a comment that this is needed due to insane incoming frequencies.

Thanks,
Teresa

On Thu, Nov 6, 2014 at 9:53 AM, Renlin Li <renlin.li@arm.com> wrote:
> Hi Teresa,
>
> Thank you for the suggestion, updated!
>
>> Please add a comment that this is needed due to insane incoming
>> frequencies.
>>
>> The 'b' variable is uninitialized. Also, 'd' and 'a' may end up
>> uninitialized depending on the initial value of 'b'. Please initialize
>> these.
>>
>
> Test case has been added. With the patch, both x86_64-unknown-linux-gnu and
> aarch64-none-elf compile the test case successfully.
>
> x86_64-unknown-linux-gnu bootstrap and regression test have been done, no
> new issue.
> aarch64-none-elf toolchain has been test on the model. No new regression.
>
> gcc/ChangeLog:
>
> 2014-11-06  Renlin Li  <Renlin.Li@arm.com>
>     PR middle-end/61529
>     * tree-ssa-threadupdate.c (compute_path_counts): Bound path_in_freq.
>      This is needed due to insane incoming frequencies.
>
> gcc/testsuite/ChangeLog:
>
> 2014-11-06  Renlin Li  <Renlin.Li@arm.com>
>     PR middle-end/61529
>     * gcc.dg/pr61529.c: New.
diff mbox

Patch

commit b38cf02619f03be9d200849734f4454502d1e5ac
Author: Renlin Li <renlin.li@arm.com>
Date:   Tue Oct 28 16:30:42 2014 +0000

    fix pr61529

diff --git a/gcc/testsuite/gcc.dg/pr61529.c b/gcc/testsuite/gcc.dg/pr61529.c
new file mode 100644
index 0000000..392239e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr61529.c
@@ -0,0 +1,27 @@ 
+/* PR middle-end/61529 */
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+unsigned int a = 0, b = 0;
+unsigned int c;
+
+int
+main ()
+{
+  unsigned int d = 0;
+  int e[5];
+
+  for (; b < 1; b++)
+    d = 0;
+  for (; d < 1; d++)
+    a = 0;
+  for (; a < 1; a++)
+    ;
+
+  for (c = 0; c < 5; c++)
+    e[c] = 1;
+  if (e[0])
+    c = 0;
+
+  return 0;
+}
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c
index d2cf4de..e3077a1 100644
--- a/gcc/tree-ssa-threadupdate.c
+++ b/gcc/tree-ssa-threadupdate.c
@@ -730,6 +730,10 @@  compute_path_counts (struct redirection_data *rd,
             nonpath_count += ein->count;
         }
     }
+
+  if (path_in_freq > BB_FREQ_MAX)
+    path_in_freq = BB_FREQ_MAX;
+
   BITMAP_FREE (in_edge_srcs);
 
   /* Now compute the fraction of the total count coming into the first