diff options
author | Jan Hubicka <jh@suse.cz> | 2002-04-19 16:02:06 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-04-19 14:02:06 +0000 |
commit | de80110b8836fd153e11d858b904b396f4b8960d (patch) | |
tree | 709580ad599c255f4ffb112a6c23b9fbe4e83107 /gcc | |
parent | eea18a4a73a6ff4eab49ddd7bbe1da5747b24686 (diff) | |
download | gcc-de80110b8836fd153e11d858b904b396f4b8960d.zip gcc-de80110b8836fd153e11d858b904b396f4b8960d.tar.gz gcc-de80110b8836fd153e11d858b904b396f4b8960d.tar.bz2 |
i386.md (movsi_1, movhi_1): Force reload to use more flexible alternative.
* i386.md (movsi_1, movhi_1): Force reload to use more flexible
alternative.
From-SVN: r52519
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 14 |
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 097cf31..0571b4e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Apr 19 15:53:03 CEST 2002 Jan Hubicka <jh@suse.cz> + + * i386.md (movsi_1, movhi_1): Force reload to use more flexible + alternative. + 2002-04-19 Neil Booth <neil@daikokuya.demon.co.uk> * builtins.c: Include langhooks.h. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 3ebc997..868f4b0 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1733,8 +1733,13 @@ (set_attr "mode" "SI") (set_attr "length_immediate" "1")]) +; The first alternative is used only to compute proper length of instruction. +; Reload's algorithm does not take into account the cost of spill instructions +; needed to free register in given class, so avoid it from choosing the first +; alternative when eax is not available. + (define_insn "*movsi_1" - [(set (match_operand:SI 0 "nonimmediate_operand" "=*a,r,*a,m,!*y,!rm,!*y,!*Y,!rm,!*Y") + [(set (match_operand:SI 0 "nonimmediate_operand" "=*?a,r,*?a,m,!*y,!rm,!*y,!*Y,!rm,!*Y") (match_operand:SI 1 "general_operand" "im,rinm,rinm,rin,rm,*y,*y,rm,*Y,*Y"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" { @@ -1843,8 +1848,13 @@ [(set_attr "type" "push") (set_attr "mode" "QI")]) +; The first alternative is used only to compute proper length of instruction. +; Reload's algorithm does not take into account the cost of spill instructions +; needed to free register in given class, so avoid it from choosing the first +; alternative when eax is not available. + (define_insn "*movhi_1" - [(set (match_operand:HI 0 "nonimmediate_operand" "=*a,r,r,*a,r,m") + [(set (match_operand:HI 0 "nonimmediate_operand" "=*?a,r,r,*?a,r,m") (match_operand:HI 1 "general_operand" "i,r,rn,rm,rm,rn"))] "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM" { |