re PR target/41900 (call *%esp shouldn't be generated because of CPU errata)
authorUros Bizjak <uros@gcc.gnu.org>
Tue, 3 Nov 2009 07:53:05 +0000 (08:53 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 3 Nov 2009 07:53:05 +0000 (08:53 +0100)
commit55a19d494b903ffdf754217d3ff5bc66d1ad1954
tree98edb715c3d959ea46c8fc662edb84967cd18a61
parentb511afdd35b357f589d446ce315aea5e2649d0cc
re PR target/41900 (call *%esp shouldn't be generated because of CPU errata)

PR target/41900
* config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
(TARGET_CALL_ESP): New define.
* config/i386/i386.c (initial_ix86_tune_features): Initialize
X86_ARCH_CALL_ESP.
* config/i386/i386.md
(*call_pop_1_esp, *call_1_esp, *call_value_pop_1_esp,
*call_value_1_esp): Rename from *call_pop_1, *call_1,
*call_value_pop_1 and *call_value_1.  Depend on TARGET_CALL_ESP.
(*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
New patterns, use "lsm" as operand 1 constraint.
* config/i386/predicates.md (call_insn_operand): Depend on
index_register_operand for !TARGET_CALL_ESP to avoid %esp register.

testsuite/ChangeLog:

PR target/41900
* gcc.target/i386/pr41900.c: New test.

From-SVN: r153838
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/i386.md
gcc/config/i386/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr41900.c [new file with mode: 0644]