The following code causes an ICE in gcc4:
===
static void _evas_yv12torgb_sse ();
const volatile unsigned short _const_32 [4] = {1,2,3,4};
void
evas_common_convert_yuv_420p_601_rgba()
{
_evas_yv12torgb_sse();
}
static void
_evas_yv12torgb_sse()
{
int xx, yy;
__asm__ __volatile__ ("movq" " %0, %%" "mm4" : : "X" (*_const_32));
}
===
(this code originally comes from e17 library evas)
The 4.0 compiler I have used was from 20041205 (5 dec 2004), haven't tested a
more recent version on the 4.0 branch.
[EMAIL PROTECTED]:~$ uname -a
Linux golem 2.6.11-wol #2 Tue Mar 8 21:47:08 CET 2005 i686 AuthenticAMD unknown
GNU/Linux
[EMAIL PROTECTED]:~$ gcc --verbose
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /home/sources/gcc-CVS/configure --prefix=/usr
--libexecdir=/usr/lib --enable-shared --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++,java,objc
Thread model: posix
gcc version 4.1.0 20050315 (experimental)
[EMAIL PROTECTED]:~$ gcc -O2 -c evas2.c -o evas.o
evas2.c: In function 'evas_common_convert_yuv_420p_601_rgba':
evas2.c:9: internal compiler error: in subreg_regno_offset, at rtlanal.c:3042
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
[EMAIL PROTECTED]:~$ gcc -c evas2.c -o evas.o
/tmp/ccmmTLDP.s: Assembler messages:
/tmp/ccmmTLDP.s:39: Error: suffix or operands invalid for `movq'
I hope this is enough info to work on
--
Summary: internal compiler error: in subreg_regno_offset, at
rtlanal.c:3042
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: aelschuring at hotmail dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20491