On January 29, 2014 6:03:15 PM GMT+01:00, Markus Trippelsdorf 
<mar...@trippelsdorf.de> wrote:
>This is a backport of r194470 to the gcc-4.7 branch. It fixes a case
>were n_functions in coverage_obj_finish is 0 and the resulting array
>contains 0x100000000 elements.
>
>(Mike Hommey pointed out that Fixefox PGO-build is broken using 4.7
>because of this bug)
>
>Bootstrapped and tested on x86_64-unknown-linux-gnu.
>OK for gcc-4_7-branch?

Ok.

Thanks,
Richard.

>---
> gcc/ChangeLog                         |  9 +++++++++
> gcc/coverage.c                        |  3 +++
> gcc/testsuite/ChangeLog               |  9 +++++++++
> gcc/testsuite/g++.dg/other/pr55650.C  | 21 +++++++++++++++++++++
> gcc/testsuite/g++.dg/other/pr55650.cc |  4 ++++
> 5 files changed, 46 insertions(+)
> create mode 100644 gcc/testsuite/g++.dg/other/pr55650.C
> create mode 100644 gcc/testsuite/g++.dg/other/pr55650.cc
>
>diff --git a/gcc/ChangeLog b/gcc/ChangeLog
>index c8e08cf9a40b..4cfc1b1d0c80 100644
>--- a/gcc/ChangeLog
>+++ b/gcc/ChangeLog
>@@ -1,3 +1,12 @@
>+2014-01-29  Markus Trippelsdorf  <mar...@trippelsdorf.de>
>+
>+      Backport from mainline
>+      2012-12-13  Jakub Jelinek  <ja...@redhat.com>
>+
>+      PR gcov-profile/55650
>+      * coverage.c (coverage_obj_init): Return false if no functions
>+      are being emitted.
>+
> 2014-01-25  Walter Lee  <w...@tilera.com>
> 
>       Backport from mainline
>diff --git a/gcc/coverage.c b/gcc/coverage.c
>index c64125ad58b0..8a113a50c2e2 100644
>--- a/gcc/coverage.c
>+++ b/gcc/coverage.c
>@@ -988,6 +988,9 @@ coverage_obj_init (void)
>       /* The function is not being emitted, remove from list.  */
>       *fn_prev = fn->next;
> 
>+  if (functions_head == NULL)
>+    return false;
>+
>   for (ix = 0; ix != GCOV_COUNTERS; ix++)
>     if ((1u << ix) & prg_ctr_mask)
>       n_counters++;
>diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
>index a0320c6401b8..152554dcfcda 100644
>--- a/gcc/testsuite/ChangeLog
>+++ b/gcc/testsuite/ChangeLog
>@@ -1,3 +1,12 @@
>+2014-01-29  Markus Trippelsdorf  <mar...@trippelsdorf.de>
>+
>+      Backport from mainline
>+      2012-12-13  Jakub Jelinek  <ja...@redhat.com>
>+
>+      PR gcov-profile/55650
>+      * g++.dg/other/pr55650.C: New test.
>+      * g++.dg/other/pr55650.cc: New file.
>+
> 2014-01-26  Mikael Morin  <mik...@gcc.gnu.org>
> 
>       PR fortran/58007
>diff --git a/gcc/testsuite/g++.dg/other/pr55650.C
>b/gcc/testsuite/g++.dg/other/pr55650.C
>new file mode 100644
>index 000000000000..fc52b19f5d30
>--- /dev/null
>+++ b/gcc/testsuite/g++.dg/other/pr55650.C
>@@ -0,0 +1,21 @@
>+// PR gcov-profile/55650
>+// { dg-do link }
>+// { dg-options "-O2 -fprofile-generate" }
>+// { dg-additional-sources "pr55650.cc" }
>+
>+struct A
>+{
>+  virtual void foo ();
>+};
>+
>+struct B : public A
>+{
>+  B ();
>+  void foo () {}
>+};
>+
>+inline A *
>+bar ()
>+{
>+  return new B;
>+}
>diff --git a/gcc/testsuite/g++.dg/other/pr55650.cc
>b/gcc/testsuite/g++.dg/other/pr55650.cc
>new file mode 100644
>index 000000000000..70b41462b57e
>--- /dev/null
>+++ b/gcc/testsuite/g++.dg/other/pr55650.cc
>@@ -0,0 +1,4 @@
>+int
>+main ()
>+{
>+}


Reply via email to