This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
ICE with -O2 -march=pentiumpro
- To: egcs-bugs at egcs dot cygnus dot com
- Subject: ICE with -O2 -march=pentiumpro
- From: Arvind Sankar <arvinds at mit dot edu>
- Date: Wed, 31 Mar 1999 12:57:17 -0500
- Reply-To: Arvind Sankar <arvinds at mit dot edu>
The attached source (culled from a gimp plugin) produces an ICE with
-O2 -march=pentiumpro
-On for n <= 1 is ok, as is -march=pentium.
btw, if I specify -march=<bad> where bad is not a valid arch, the ICE still
happens after cc1 tells me that bad is not a valid value, while not specifying
any arch (the default is pentium) works. Seems to be a bug somewhere in option
processing as well...
System is egcs-19990328, i686-pc-linux-gnu, glibc 2.1
Compiler output:
1.i: In function `p_frames_to_multilayer':
1.i:36: Could not split insn
(insn 104 19 32 (set (reg/v:SI 1 %edx)
(if_then_else:SI (ge:SI (reg/v:SI 0 %eax)
(mem/s:SI (plus:SI (reg:SI 2 %ecx)
(const_int 4)) 2))
(reg/v:SI 1 %edx)
(mem/s:SI (plus:SI (mem/f:SI (plus:SI (reg:SI 6 %ebp)
(const_int 8)) 0)
(const_int 4)) 2))) 367 {movsicc+2} (insn_list 124 (nil))
(expr_list:REG_DEAD (reg/v:SI 0 %eax)
(expr_list:REG_DEAD (reg:SI 2 %ecx)
(nil))))
../../gcc/toplev.c:1453: Internal compiler error in function fatal_insn
Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.
See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details.
-- arvind
typedef struct t_anim_info {
char *new_filename;
long first_frame_nr;
} t_anim_info;
static int
p_frames_to_multilayer(t_anim_info *ainfo_ptr,
long range_from, long range_to)
{
long l_cur_frame_nr;
long l_step, l_begin, l_end;
int l_tmp_image_id;
int l_new_image_id;
if(range_from > range_to)
{
l_step = -1;
if(range_to < ainfo_ptr->first_frame_nr)
{ l_begin = ainfo_ptr->first_frame_nr;
}
}
else
{
l_step = 1;
}
l_cur_frame_nr = l_begin;
while(1)
{
if(ainfo_ptr->new_filename == ((void *)0) )
return;
if(l_tmp_image_id < 0)
return;
gimp_image_delete(l_tmp_image_id);
if(l_cur_frame_nr == l_end)
break;
l_cur_frame_nr += l_step;
}
}