This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/32889] [4.2 Regression] ICE in delete_output_reload, at reload1.c:7926
- From: "tbm at cyrius dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Oct 2007 21:33:33 -0000
- Subject: [Bug target/32889] [4.2 Regression] ICE in delete_output_reload, at reload1.c:7926
- References: <bug-32889-10464@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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