]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR target/49920 (unable to find a register to spill in class ‘DIREG’)
authorUros Bizjak <ubizjak@gmail.com>
Sun, 31 Jul 2011 18:23:40 +0000 (20:23 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sun, 31 Jul 2011 18:23:40 +0000 (20:23 +0200)
commit90ad61d4db4d34b3531786a94a67257a3a618942
tree1bc4a32034edbf11f20bd539b708994e998eca94
parentca86ec37922ffdf01ab9904542ee89bde0e6d7e3
re PR target/49920 (unable to find a register to spill in class ‘DIREG’)

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.
(*strsetsi_rex_1): Ditto.
(*strsethi_1): Ditto.
(*strsethi_rex_1): Ditto.
(*strsetqi_1): Ditto.
(*strsetqi_rex_1): Ditto.
(*rep_stosdi_rex64): Disable when %eax, %ecx or %edi are fixed.
(*rep_stossi): Ditto.
(*rep_stossi_rex64): Ditto.
(*rep_stosqi): Ditto.
(*rep_stosqi_rex64): Ditto.
(*strlenqi_1): Ditto.
(*strlenqi_rex_1): Ditto.
(cmpstrnsi): Also fail when %ecx is fixed.
(*cmpstrnqi_nz_1): Disable when %ecx, %esi or %edi are fixed.
(*cmpstrnqi_nz_rex_1): Ditto.
(*cmpstrnqi_1): Ditto.
(*cmpstrnqi_rex_1): Ditto.
(*strmovdi_rex_1): Disable when %esi or %edi are fixed.
(*strmovsi_1): Ditto.
(*strmovsi_rex_1): Ditto.
(*strmovhi_1): Ditto.
(*strmovhi_rex_1): Ditto.
(*strmovqi_1): Ditto.
(*strmovqi_rex_1): Ditto.
(*rep_movdi_rex64): Disable when %ecx, %esi or %edi are fixed.
(*rep_movsi): Ditto.
(*rep_movsi_rex64): Ditto.
(*rep_movqi): Ditto.
(*rep_movqi_rex64): Ditto.

testsuite/ChangeLog:

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

From-SVN: r176983
gcc/ChangeLog
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr49920.c [new file with mode: 0644]