summaryrefslogtreecommitdiff
path: root/gcc/lto
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-06 10:08:43 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-12-06 10:08:43 +0000
commit6abc14d6891ceeca2f86ea17e7e5f3783764d4a4 (patch)
treef2118dbf4eb8774ccce7e602f8ed9a44eeed7b9f /gcc/lto
parent1e845e91d47647aea50c643f65b68a47bc57dd82 (diff)
downloadgcc-6abc14d6891ceeca2f86ea17e7e5f3783764d4a4.tar.gz
2010-12-06 Richard Guenther <rguenther@suse.de>
PR lto/46796 * lto-lang.c (lto_init): Give names to basic types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167487 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto')
-rw-r--r--gcc/lto/ChangeLog5
-rw-r--r--gcc/lto/lto-lang.c28
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 236f8d9ee9d..1b15d919e8c 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-06 Richard Guenther <rguenther@suse.de>
+
+ PR lto/46796
+ * lto-lang.c (lto_init): Give names to basic types.
+
2010-11-30 Joseph Myers <joseph@codesourcery.com>
* lto-object.c: Don't include toplev.h.
diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c
index c7ca949b179..de51eb08340 100644
--- a/gcc/lto/lto-lang.c
+++ b/gcc/lto/lto-lang.c
@@ -1142,6 +1142,34 @@ lto_init (void)
targetm.init_builtins ();
build_common_builtin_nodes ();
+ /* Assign names to the builtin types, otherwise they'll end up
+ as __unknown__ in debug info.
+ ??? We simply need to stop pre-seeding the streamer cache.
+ Below is modeled after from c-common.c:c_common_nodes_and_builtins */
+#define NAME_TYPE(t,n) \
+ if (t) \
+ TYPE_NAME (t) = build_decl (UNKNOWN_LOCATION, TYPE_DECL, \
+ get_identifier (n), t)
+ NAME_TYPE (integer_type_node, "int");
+ NAME_TYPE (char_type_node, "char");
+ NAME_TYPE (long_integer_type_node, "long int");
+ NAME_TYPE (unsigned_type_node, "unsigned int");
+ NAME_TYPE (long_unsigned_type_node, "long unsigned int");
+ NAME_TYPE (long_long_integer_type_node, "long long int");
+ NAME_TYPE (long_long_unsigned_type_node, "long long unsigned int");
+ NAME_TYPE (short_integer_type_node, "short int");
+ NAME_TYPE (short_unsigned_type_node, "short unsigned int");
+ if (signed_char_type_node != char_type_node)
+ NAME_TYPE (signed_char_type_node, "signed char");
+ if (unsigned_char_type_node != char_type_node)
+ NAME_TYPE (unsigned_char_type_node, "unsigned char");
+ NAME_TYPE (float_type_node, "float");
+ NAME_TYPE (double_type_node, "double");
+ NAME_TYPE (long_double_type_node, "long double");
+ NAME_TYPE (void_type_node, "void");
+ NAME_TYPE (boolean_type_node, "bool");
+#undef NAME_TYPE
+
/* Initialize LTO-specific data structures. */
lto_global_var_decls = VEC_alloc (tree, gc, 256);
in_lto_p = true;