public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* PR lto/46083 (destructor priorities are wrong)
@ 2011-01-09  1:22 Jan Hubicka
  2011-01-09 15:39 ` H.J. Lu
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Hubicka @ 2011-01-09  1:22 UTC (permalink / raw)
  To: gcc-patches, dnovillo, rguenther

Hi,
the PR is about testsuite/initpri1.c failing with lto.

I am not sure why the testcase is not run with -flto flags. It is declared as
/* { dg-do run { target init_priority } } */ and thus I would expect all
default flags
to be cycled over.

The problem is simple - FINI_PRIORITY is not streamed at all.  The reason for
apparent omision seems to be assymetry in between INIT and FINI priorities.
While INIT priorities are defined for VAR_DECLs too, FINI priorities are
defined only for functions.

I wonder whether we ever need VAR_DECL init priorities at all, I would expect
all constructors to be lowered to functions at that time, so perhaps the
streaming can be guarded by the same test as I use for FINI_PRIORITY.

Anyway, that can be subsequent clenaup.

x86_64 bootstrap/regtested in progress. OK if it passes?

	PR lto/46083
	* lto-streamer-out.c (pack_ts_decl_with_vis_value_fields): Store
	DECL_FINI_PRIORITY.
	* lto-streamer-in.c )unpack_ts_decl_with_vis_value_fields):
	Restore DECL_FINI_PRIORITY.
Index: lto-streamer-out.c
===================================================================
--- lto-streamer-out.c	(revision 168596)
+++ lto-streamer-out.c	(working copy)
@@ -464,7 +464,11 @@ pack_ts_decl_with_vis_value_fields (stru
     }
 
   if (VAR_OR_FUNCTION_DECL_P (expr))
-    bp_pack_value (bp, DECL_INIT_PRIORITY (expr), HOST_BITS_PER_SHORT);
+    {
+      bp_pack_value (bp, DECL_INIT_PRIORITY (expr), HOST_BITS_PER_SHORT);
+      if (TREE_CODE (expr) == FUNCTION_DECL && DECL_STATIC_DESTRUCTOR (expr))
+        bp_pack_value (bp, DECL_FINI_PRIORITY (expr), HOST_BITS_PER_SHORT);
+    }
 }
 
 
Index: lto-streamer-in.c
===================================================================
--- lto-streamer-in.c	(revision 168596)
+++ lto-streamer-in.c	(working copy)
@@ -1654,6 +1654,11 @@ unpack_ts_decl_with_vis_value_fields (st
       priority_type p;
       p = (priority_type) bp_unpack_value (bp, HOST_BITS_PER_SHORT);
       SET_DECL_INIT_PRIORITY (expr, p);
+      if (TREE_CODE (expr) == FUNCTION_DECL && DECL_STATIC_DESTRUCTOR (expr))
+	{
+	  p = (priority_type) bp_unpack_value (bp, HOST_BITS_PER_SHORT);
+	  SET_DECL_FINI_PRIORITY (expr, p);
+	}
     }
 }
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-06-05  6:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-09  1:22 PR lto/46083 (destructor priorities are wrong) Jan Hubicka
2011-01-09 15:39 ` H.J. Lu
2011-01-09 18:45   ` Jan Hubicka
2011-01-10 13:03     ` Richard Guenther
2024-06-04 16:49       ` Clarify that 'gcc.dg/initpri3.c' is a LTO variant of 'gcc.dg/initpri1.c': 'gcc.dg/initpri1-lto.c' [PR46083] (was: PR lto/46083 (destructor priorities are wrong)) Thomas Schwinge
2024-06-05  6:34         ` Richard Biener

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).