Fix ICE with ODR mering and variable sized types

Jan Hubicka
Fri Sep 19 18:55:00 GMT 2014

this patch fixes ICE by avoiding mangling of types with variadic size (those are
not really supported).  Bootstrapped/regtested x86_64-linux, tested with libreoffice,

	PR lto/63286
	* tree.c (need_assembler_name_p): Do not mangle variadic types.
Index: tree.c
--- tree.c	(revision 215328)
+++ tree.c	(working copy)
@@ -5003,6 +5003,7 @@ need_assembler_name_p (tree decl)
       && decl == TYPE_NAME (TREE_TYPE (decl))
       && !is_lang_specific (TREE_TYPE (decl))
       && AGGREGATE_TYPE_P (TREE_TYPE (decl))
+      && !variably_modified_type_p (TREE_TYPE (decl), NULL_TREE)
       && !type_in_anonymous_namespace_p (TREE_TYPE (decl)))
     return !DECL_ASSEMBLER_NAME_SET_P (decl);
   /* Only FUNCTION_DECLs and VAR_DECLs are considered.  */

More information about the Gcc-patches mailing list