[gcc/devel/ranger] selftest: Work around GCC 4.2 PR33916 bug by optimizing the ctor [PR89494]

Aldy Hernandez aldyh@gcc.gnu.org
Wed Jun 17 20:26:41 GMT 2020


https://gcc.gnu.org/g:c00568f376078129196740d83946d54dc5437401

commit c00568f376078129196740d83946d54dc5437401
Author: Gustavo Romero <gromero@linux.ibm.com>
Date:   Wed Apr 15 15:14:45 2020 +0200

    selftest: Work around GCC 4.2 PR33916 bug by optimizing the ctor [PR89494]
    
    GCC 4.2 due to PR33916 miscompiles temp_dump_context ctor, because it doesn't
    zero initialize the whole dump_context temporary on which it runs the static
    get method and during destruction of the temporary an uninitialized pointer
    is deleted.
    
    More recent GCC versions properly zero initialize it and ideally optimize away
    the construction/destruction of the temporary, as it isn't used for anything,
    but there is no reason to create the temporary, static member functions can
    be called without an associated object.
    
    2020-04-15  Gustavo Romero  <gromero@linux.ibm.com>
    
            PR bootstrap/89494
            * dumpfile.c (selftest::temp_dump_context::temp_dump_context):
            Don't construct a dump_context temporary to call static method.

Diff:
---
 gcc/ChangeLog  | 6 ++++++
 gcc/dumpfile.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 55f2e967325..6148a8276c9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2020-04-15  Gustavo Romero  <gromero@linux.ibm.com>
+
+	PR bootstrap/89494
+	* dumpfile.c (selftest::temp_dump_context::temp_dump_context):
+	Don't construct a dump_context temporary to call static method.
+
 2020-04-15  Andrea Corallo  <andrea.corallo@arm.com>
 
 	* config/aarch64/falkor-tag-collision-avoidance.c
diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
index 468ffab6cce..e392ecf307c 100644
--- a/gcc/dumpfile.c
+++ b/gcc/dumpfile.c
@@ -2076,7 +2076,7 @@ temp_dump_context::temp_dump_context (bool forcibly_enable_optinfo,
 				      bool forcibly_enable_dumping,
 				      dump_flags_t test_pp_flags)
 : m_context (),
-  m_saved (&dump_context ().get ())
+  m_saved (&dump_context::get ())
 {
   dump_context::s_current = &m_context;
   if (forcibly_enable_optinfo)


More information about the Gcc-cvs mailing list