From 90aa3e91ad41ed9c05ce967a1ae6b7c98e89bb5f Mon Sep 17 00:00:00 2001
From: Basile Starynkevitch <basile@starynkevitch.net>
Date: Mon, 8 Nov 2010 17:39:16 +0000
Subject: [PATCH] gengtype (get_output_file_for_structure): Ensure type is
 union or struct.

2010-11-08  Basile Starynkevitch  <basile@starynkevitch.net>

	* gengtype (get_output_file_for_structure): Ensure type is union
	or struct.
	(write_splay_tree_allocator_def): Use
	get_output_file_with_visibility.

From-SVN: r166442
---
 gcc/ChangeLog  | 8 ++++++++
 gcc/gengtype.c | 7 +++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 31e365d5ce35..408a05408e25 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+
+2010-11-08  Basile Starynkevitch  <basile@starynkevitch.net>
+
+	* gengtype (get_output_file_for_structure): Ensure type is union
+	or struct.
+	(write_splay_tree_allocator_def): Use
+	get_output_file_with_visibility.
+
 2010-11-08  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
 	* config/s390/s390.c (s390_handle_arch_option): Set type and flags
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index 55f9a78ffad4..306e61eb43cc 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -2637,9 +2637,12 @@ output_type_enum (outf_p of, type_p s)
 static outf_p
 get_output_file_for_structure (const_type_p s, type_p *param)
 {
-  const char *fn = s->u.s.line.file;
+  const char *fn;
   int i;
 
+  gcc_assert (UNION_OR_STRUCT_P (s));
+  fn = s->u.s.line.file;
+
   /* This is a hack, and not the good kind either.  */
   for (i = NUM_PARAM - 1; i >= 0; i--)
     if (param && param[i] && param[i]->kind == TYPE_POINTER
@@ -4062,7 +4065,7 @@ output_typename (outf_p of, const_type_p t)
 static void
 write_splay_tree_allocator_def (const_type_p s)
 {
-  outf_p of = get_output_file_for_structure (s, NULL);
+  outf_p of = get_output_file_with_visibility (NULL);
   oprintf (of, "void * ggc_alloc_splay_tree_");
   output_typename (of, s);
   oprintf (of, " (int sz, void * nl)\n");
-- 
GitLab