]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR lto/60405 (ICE in lto1 on x86_64-linux-gnu)
authorRichard Biener <rguenther@suse.de>
Tue, 4 Mar 2014 11:25:50 +0000 (11:25 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 4 Mar 2014 11:25:50 +0000 (11:25 +0000)
2014-03-04  Richard Biener  <rguenther@suse.de>

PR lto/60405
* lto-streamer-in.c (lto_read_body): Remove LTO bytecode version
check.
(lto_input_toplevel_asms): Likewise.
* lto-section-in.c (lto_get_section_data): Instead do it here
for every section.

From-SVN: r208311

gcc/ChangeLog
gcc/lto-section-in.c
gcc/lto-streamer-in.c

index ee70301094af991b951ab71115c2414b37b2e254..2faa849a8fc1bcdda184c7f4908d745d12286875 100644 (file)
@@ -1,3 +1,12 @@
+2014-03-04  Richard Biener  <rguenther@suse.de>
+
+       PR lto/60405
+       * lto-streamer-in.c (lto_read_body): Remove LTO bytecode version
+       check.
+       (lto_input_toplevel_asms): Likewise.
+       * lto-section-in.c (lto_get_section_data): Instead do it here
+       for every section.
 2014-03-04  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/60382
index 47f9739c4d0206b4e04950a949478e0f67ab38eb..60346dc7a26fe032a63b24f75845c5a896852ca3 100644 (file)
@@ -153,26 +153,30 @@ lto_get_section_data (struct lto_file_decl_data *file_data,
 
   /* FIXME lto: WPA mode does not write compressed sections, so for now
      suppress uncompression if flag_ltrans.  */
-  if (flag_ltrans)
-    return data;
-
-  /* Create a mapping header containing the underlying data and length,
-     and prepend this to the uncompression buffer.  The uncompressed data
-     then follows, and a pointer to the start of the uncompressed data is
-     returned.  */
-  header = (struct lto_data_header *) xmalloc (header_length);
-  header->data = data;
-  header->len = *len;
-
-  buffer.data = (char *) header;
-  buffer.length = header_length;
-
-  stream = lto_start_uncompression (lto_append_data, &buffer);
-  lto_uncompress_block (stream, data, *len);
-  lto_end_uncompression (stream);
+  if (!flag_ltrans)
+    {
+      /* Create a mapping header containing the underlying data and length,
+        and prepend this to the uncompression buffer.  The uncompressed data
+        then follows, and a pointer to the start of the uncompressed data is
+        returned.  */
+      header = (struct lto_data_header *) xmalloc (header_length);
+      header->data = data;
+      header->len = *len;
+
+      buffer.data = (char *) header;
+      buffer.length = header_length;
+
+      stream = lto_start_uncompression (lto_append_data, &buffer);
+      lto_uncompress_block (stream, data, *len);
+      lto_end_uncompression (stream);
+
+      *len = buffer.length - header_length;
+      data = buffer.data + header_length;
+    }
 
-  *len = buffer.length - header_length;
-  return buffer.data + header_length;
+  lto_check_version (((lto_header *)data)->major_version,
+                    ((lto_header *)data)->minor_version);
+  return data;
 }
 
 
index 68d3cdac41f5ee499bfbc4d54b581f0a34d0b580..da248b94692caad26029e92438971fd245ff6e8b 100644 (file)
@@ -1059,10 +1059,6 @@ lto_read_body (struct lto_file_decl_data *file_data, struct cgraph_node *node,
   data_in = lto_data_in_create (file_data, data + string_offset,
                              header->string_size, vNULL);
 
-  /* Make sure the file was generated by the exact same compiler.  */
-  lto_check_version (header->lto_header.major_version,
-                    header->lto_header.minor_version);
-
   if (section_type == LTO_section_function_body)
     {
       struct lto_in_decl_state *decl_state;
@@ -1331,10 +1327,6 @@ lto_input_toplevel_asms (struct lto_file_decl_data *file_data, int order_base)
   data_in = lto_data_in_create (file_data, data + string_offset,
                              header->string_size, vNULL);
 
-  /* Make sure the file was generated by the exact same compiler.  */
-  lto_check_version (header->lto_header.major_version,
-                    header->lto_header.minor_version);
-
   while ((str = streamer_read_string_cst (data_in, &ib)))
     {
       struct asm_node *node = add_asm_node (str);