]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR target/41900 (call *%esp shouldn't be generated because of CPU errata)
authorUros Bizjak <uros@gcc.gnu.org>
Thu, 5 Nov 2009 08:01:18 +0000 (09:01 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 5 Nov 2009 08:01:18 +0000 (09:01 +0100)
commit7fc1054d679e692c660ed33c5d0c5228b01186dd
tree50e0d3b2217702c32dd118584109e7380c0e5801
parent4c5a96113de40dcf65a4dad6ee963028f6d91d57
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: r153932
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]