[Bug target/49920] unable to find a register to spill in class ‘DIREG’

uros at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jul 31 17:50:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49920

--- Comment #3 from uros at gcc dot gnu.org 2011-07-31 17:50:11 UTC ---
Author: uros
Date: Sun Jul 31 17:50:08 2011
New Revision: 176979

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176979
Log:
    PR target/49920
    * config/i386/i386.md (strset): Do not expand strset_singleop
    when %eax or $edi are fixed.
    (*strsetdi_rex_1): Disable when %eax or %edi are fixed.
    (*strsetsi_1): Ditto.
    (*strsethi_1): Ditto.
    (*strsetqi_1): Ditto.
    (*rep_stosdi_rex64): Disable when %eax, %ecx or %edi are fixed.
    (*rep_stossi): Ditto.
    (*rep_stosqi): Ditto.
    (cmpstrnsi): Also fail when %ecx is fixed.
    (*cmpstrnqi_nz_1): Disable when %ecx, %esi or %edi are fixed.
    (*cmpstrnqi_1): Ditto.
    (*strlenqi_1): Ditto.
    (*strmovdi_rex_1): Disable when %esi or %edi are fixed.
    (*strmovsi_1): Ditto.
    (*strmovhi_1): Ditto.
    (*strmovqi_1): Ditto.
    (*rep_movdi_rex64): Disable when %ecx, %esi or %edi are fixed.
    (*rep_movsi): Ditto.
    (*rep_movqi): Ditto.

testsuite/ChangeLog:

    PR target/49920
    * gcc.target/i386/pr49920.c: New test.


Added:
    trunk/gcc/testsuite/gcc.target/i386/pr49920.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.md
    trunk/gcc/testsuite/ChangeLog



More information about the Gcc-bugs mailing list