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