Bug 21101 - ICE: could not find a spill register on MMX intrinsics
Summary: ICE: could not find a spill register on MMX intrinsics
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: 4.0.1
Assignee: Richard Henderson
URL:
Keywords: ice-on-valid-code, ssemmx
Depends on:
Blocks:
 
Reported: 2005-04-19 10:13 UTC by Chih-Chung Chang
Modified: 2005-04-24 11:38 UTC (History)
1 user (show)

See Also:
Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2005-04-23 17:23:16


Attachments
the test case (258 bytes, text/x-c++src)
2005-04-19 10:15 UTC, Chih-Chung Chang
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Chih-Chung Chang 2005-04-19 10:13:51 UTC
ICE on gcc 4.0.0rc2, but both 3.3.5 and 3.4.3 work.

$ /usr/local/gcc-4.0/bin/g++ -c -O2 -funroll-loops -march=pentium4 3.cpp
3.cpp: In function 'void f()':
3.cpp:29: error: could not find a spill register
(insn:HI 95 94 96 0 (set (reg:V4HI 29 mm0 [orig:115 D.2920 ] [115])
        (vec_duplicate:V4HI (truncate:HI (subreg:SI (reg:HI 111 [ B ]) 0)))) 817
{*vec_dupv4hi} (insn_list:REG_DEP_TRUE 88 (nil))
    (expr_list:REG_DEAD (reg:HI 111 [ B ])
        (nil)))
3.cpp:29: internal compiler error: in failed_reload, at reload1.c:4982
Comment 1 Chih-Chung Chang 2005-04-19 10:15:04 UTC
Created attachment 8683 [details]
the test case
Comment 2 Richard Henderson 2005-04-23 17:23:16 UTC
Confirmed.
Comment 3 GCC Commits 2005-04-24 07:59:53 UTC
Subject: Bug 21101

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rth@gcc.gnu.org	2005-04-24 07:59:23

Modified files:
	gcc            : ChangeLog 
	gcc/config/i386: i386-protos.h i386.c i386.h 
Added files:
	gcc/testsuite/gcc.target/i386: pr21101.c 

Log message:
	PR target/21101
	* config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
	* config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
	Deny modes smaller than 4 bytes.
	* config/i386/i386-protos.h: Update.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.8435&r2=2.8436
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386-protos.h.diff?cvsroot=gcc&r1=1.137&r2=1.138
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&r1=1.815&r2=1.816
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.h.diff?cvsroot=gcc&r1=1.429&r2=1.430
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr21101.c.diff?cvsroot=gcc&r1=NONE&r2=1.1

Comment 5 Richard Henderson 2005-04-24 08:17:27 UTC
Fixed.