From 7d58701c40deacbfe57540f7e96ef2a60334880d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 3 Feb 2011 11:49:06 +0100 Subject: [PATCH] re PR lto/47274 (ICE in lto_varpool_replace_node, at lto-symtab.c:306) PR lto/47274 * lto-streamer-out.c (write_symbol): When writing kind and visibility, copy them into a unsigned char variable and pass address of it to lto_output_data_stream. From-SVN: r169785 --- gcc/ChangeLog | 5 +++++ gcc/lto-streamer-out.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf62fca..cffaf02 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2011-02-03 Jakub Jelinek + PR lto/47274 + * lto-streamer-out.c (write_symbol): When writing kind and visibility, + copy them into a unsigned char variable and pass address of it to + lto_output_data_stream. + PR target/47564 * toplev.c (target_reinit): Save and restore *crtl and regno_reg_rtx around backend_init_target and lang_dependent_init_target calls. diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index e471d70..d1aac23 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -2410,6 +2410,7 @@ write_symbol (struct lto_streamer_cache_d *cache, int slot_num; uint64_t size; const char *comdat; + unsigned char c; /* None of the following kinds of symbols are needed in the symbol table. */ @@ -2505,8 +2506,10 @@ write_symbol (struct lto_streamer_cache_d *cache, lto_output_data_stream (stream, name, strlen (name) + 1); lto_output_data_stream (stream, comdat, strlen (comdat) + 1); - lto_output_data_stream (stream, &kind, 1); - lto_output_data_stream (stream, &visibility, 1); + c = (unsigned char) kind; + lto_output_data_stream (stream, &c, 1); + c = (unsigned char) visibility; + lto_output_data_stream (stream, &c, 1); lto_output_data_stream (stream, &size, 8); lto_output_data_stream (stream, &slot_num, 4); } -- 2.7.4