re PR lto/47274 (ICE in lto_varpool_replace_node, at lto-symtab.c:306)
authorJakub Jelinek <jakub@redhat.com>
Thu, 3 Feb 2011 10:49:06 +0000 (11:49 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 3 Feb 2011 10:49:06 +0000 (11:49 +0100)
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
gcc/lto-streamer-out.c

index bf62fca..cffaf02 100644 (file)
@@ -1,5 +1,10 @@
 2011-02-03  Jakub Jelinek  <jakub@redhat.com>
 
+       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.
index e471d70..d1aac23 100644 (file)
@@ -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);
 }