This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/32889] [4.2 Regression] ICE in delete_output_reload, at reload1.c:7926



------- Comment #6 from tbm at cyrius dot com  2007-10-19 21:33 -------
Here's the reduced testcase from delta.  I can try to reduce it further
manually
tomorrow.


typedef unsigned long int ulong;
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long long int ulonglong;
typedef struct st_mi_state_info
{
  struct
  {
    uchar file_version[4];
    uchar header_length[2];
    uchar base_pos[2];
  }
  header;
  ulong *rec_per_key_part;
}
MI_STATE_INFO;
typedef struct st_mi_base_info
{
  long max_data_file_length;
}
MI_BASE_INFO;
typedef struct st_mi_isam_share
{
  MI_STATE_INFO state;
  MI_BASE_INFO base;
  char *unique_file_name;
  ulong options;
}
MYISAM_SHARE;
extern uchar myisam_file_magic[], myisam_pack_file_magic[];
mi_open (const char *name, int mode, uint open_flags)
{
  int kfile;
  uint base_pos, info_length;
  char name_buff[512], org_name[512], index_name[512], data_name[512];
  char *disk_cache, *disk_pos, *end_pos;
  MYISAM_SHARE share_buff, *share;
  ulong rec_per_key_part[255 * 16];
  long max_key_file_length, max_data_file_length;
  my_realpath (name_buff, fn_format (org_name, name, "", "", 4), (0));
  if (!(test_if_reopen (name_buff)))
    {
      share = &share_buff;
      share_buff.state.rec_per_key_part = rec_per_key_part;
      if ((kfile = my_open (name_buff, 0, (0))) < 0)
        {
        }
      if (memcmp
          ((char *) share->state.header.file_version,
           (char *) myisam_file_magic, 4))
        {
          goto err;
        }
      if (__builtin_strcmp (name_buff, org_name)
          || my_readlink (index_name, org_name))
        __builtin_stpcpy (index_name, org_name);
      info_length =
        (share->state.header.header_length[1]) +
        (share->state.header.header_length[0]);
      base_pos =
        (share->state.header.base_pos)[1] + (share->state.header.base_pos[0]);
      if (disk_cache = __builtin_alloca (128));
      my_seek (kfile, 0, 0, 0);
      if (!(open_flags & 4))
        {
          goto err;
        }
      my_read (kfile, disk_cache);
      mi_state_info_read (base_pos, share->state);
      max_data_file_length =
        (share->options) ? (((ulonglong) 1 << (info_length)) -
                            1) : (mi_safe_mul ((ulonglong) 1 << (info_length))
                                  - 1);
        mi_safe_mul ((ulonglong) 1 << (strlen (index_name)));
      share->base.max_data_file_length = max_data_file_length;
      my_multi_malloc (share->unique_file_name, 1);
    }
err:return (0);
}


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]