[PATCH][4.7] Backport Extremely large LPBX arrays fix (PR gcov-profile/55650)

Richard Biener richard.guenther@gmail.com
Wed Jan 29 18:35:00 GMT 2014


On January 29, 2014 6:03:15 PM GMT+01:00, Markus Trippelsdorf <markus@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  <markus@trippelsdorf.de>
>+
>+	Backport from mainline
>+	2012-12-13  Jakub Jelinek  <jakub@redhat.com>
>+
>+	PR gcov-profile/55650
>+	* coverage.c (coverage_obj_init): Return false if no functions
>+	are being emitted.
>+
> 2014-01-25  Walter Lee  <walt@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  <markus@trippelsdorf.de>
>+
>+	Backport from mainline
>+	2012-12-13  Jakub Jelinek  <jakub@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  <mikael@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 ()
>+{
>+}




More information about the Gcc-patches mailing list