http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53021

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2012-04-17 19:57:44 
UTC ---
unique_base_value calls gen_rtx_ADDRESS which overrides
dwarf_file_data created by lookup_filename in dwarf2out.c:

 /* Check to see if the file name that was searched on the previous
     call matches this file name.  If so, return the index.  */
  if (file_table_last_lookup
      && (file_name == file_table_last_lookup->filename
          || filename_cmp (file_table_last_lookup->filename, file_name) == 0))
    return file_table_last_lookup;

  /* Didn't match the previous lookup, search the table.  */
  slot = htab_find_slot_with_hash (file_table, file_name,
                                   htab_hash_string (file_name), INSERT);
  if (*slot)                             
    return (struct dwarf_file_data *) *slot;

  created = ggc_alloc_dwarf_file_data ();
  created->filename = file_name;
  created->emitted_number = 0;
  *slot = created;
  return created;

However, return of htab_find_slot_with_hash wasn't marked with
GTY(()) and file_table_last_lookup was never set.

Reply via email to