[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