Patchwork Another -g vs. -g0 issue with LTO

login
register
mail settings
Submitter Richard Guenther
Date Dec. 14, 2011, 11:22 a.m.
Message ID <alpine.LNX.2.00.1112141222090.4527@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/131346/
State New
Headers show

Comments

Richard Guenther - Dec. 14, 2011, 11:22 a.m.
The following patch avoids issues with TYPE_STUB_DECL.

LTO bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2011-12-14  Richard Guenther  <rguenther@suse.de>

	* tree.c (free_lang_data_in_type): Do not clear fields
	dependent on debuginfo level setting.
	(find_decls_types_r): Use TYPE_STUB_DECL rathern than TREE_CHAIN.
	* tree.h (TYPE_STUB_DECL): Properly check that we access
	a type.

Patch

Index: gcc/tree.c
===================================================================
--- gcc/tree.c	(revision 182326)
+++ gcc/tree.c	(working copy)
@@ -4521,9 +4521,6 @@  free_lang_data_in_type (tree type)
 	  && TREE_CODE (TYPE_CONTEXT (type)) != FUNCTION_DECL
 	  && TREE_CODE (TYPE_CONTEXT (type)) != NAMESPACE_DECL))
     TYPE_CONTEXT (type) = NULL_TREE;
-
-  if (debug_info_level < DINFO_LEVEL_TERSE)
-    TYPE_STUB_DECL (type) = NULL_TREE;
 }
 
 
@@ -4881,7 +4878,7 @@  find_decls_types_r (tree *tp, int *ws, v
 	    }
 	}
 
-      fld_worklist_push (TREE_CHAIN (t), fld);
+      fld_worklist_push (TYPE_STUB_DECL (t), fld);
       *ws = 0;
     }
   else if (TREE_CODE (t) == BLOCK)
Index: gcc/tree.h
===================================================================
--- gcc/tree.h	(revision 182326)
+++ gcc/tree.h	(working copy)
@@ -2247,7 +2247,7 @@  extern enum machine_mode vector_type_mod
    to point back at the TYPE_DECL node.  This allows the debug routines
    to know that the two nodes represent the same type, so that we only
    get one debug info record for them.  */
-#define TYPE_STUB_DECL(NODE) TREE_CHAIN (NODE)
+#define TYPE_STUB_DECL(NODE) (TREE_CHAIN (TYPE_CHECK (NODE)))
 
 /* In a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE, it means the type
    has BLKmode only because it lacks the alignment requirement for