diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-03-01 00:45:08 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-03-01 00:45:08 +0100 |
commit | 29ebe616d0745d2a669327e289ed642ce3587330 (patch) | |
tree | 68673082a03c4e6c8725993358fcde7c0b58216b /gcc | |
parent | 9b83b6d236b47f19ba706313d1daf8ead622f048 (diff) | |
download | gcc-29ebe616d0745d2a669327e289ed642ce3587330.zip gcc-29ebe616d0745d2a669327e289ed642ce3587330.tar.gz gcc-29ebe616d0745d2a669327e289ed642ce3587330.tar.bz2 |
re PR target/52437 (internal compiler error: in spill_failure, at reload1.c:2120)
PR target/52437
* config/i386/sse.md (vec_set<mode>_0): Swap "*r" and "fF"
alternatives, add "e" constraint to the new last alternative
and ! to last 3 alternatives.
* gcc.c-torture/compile/pr52437.c: New test.
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r184676
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr52437.c | 18 |
4 files changed, 34 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b78113..84529c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-02-29 Jakub Jelinek <jakub@redhat.com> + Uros Bizjak <ubizjak@gmail.com> + + PR target/52437 + * config/i386/sse.md (vec_set<mode>_0): Swap "*r" and "fF" + alternatives, add "e" constraint to the new last alternative + and ! to last 3 alternatives. + 2012-02-29 Eric Botcazou <ebotcazou@adacore.com> * dwarf2out.c (modified_type_die): Set DW_AT_GNAT_descriptive_type and diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index d07069d..4afc4b3 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3895,13 +3895,13 @@ ;; see comment above inline_secondary_memory_needed function in i386.c (define_insn "vec_set<mode>_0" [(set (match_operand:VI4F_128 0 "nonimmediate_operand" - "=x,x,x ,x,x,x,x ,x ,m,m ,m") + "=x,x,x ,x,x,x,x ,x ,m ,m ,m") (vec_merge:VI4F_128 (vec_duplicate:VI4F_128 (match_operand:<ssescalarmode> 2 "general_operand" - " x,m,*r,m,x,x,*rm,*rm,x,fF,*r")) + " x,m,*r,m,x,x,*rm,*rm,!x,!*re,!*fF")) (match_operand:VI4F_128 1 "vector_move_operand" - " C,C,C ,C,0,x,0 ,x ,0,0 ,0") + " C,C,C ,C,0,x,0 ,x ,0 ,0 ,0") (const_int 1)))] "TARGET_SSE" "@ @@ -3921,9 +3921,9 @@ (cond [(eq_attr "alternative" "0,6,7") (const_string "sselog") (eq_attr "alternative" "9") - (const_string "fmov") - (eq_attr "alternative" "10") (const_string "imov") + (eq_attr "alternative" "10") + (const_string "fmov") ] (const_string "ssemov"))) (set_attr "prefix_extra" "*,*,*,*,*,*,1,1,*,*,*") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5826e28..0e52ff1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2012-02-29 Jakub Jelinek <jakub@redhat.com> + PR target/52437 + * gcc.c-torture/compile/pr52437.c: New test. + PR middle-end/52419 * gcc.dg/torture/pr52419.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr52437.c b/gcc/testsuite/gcc.c-torture/compile/pr52437.c new file mode 100644 index 0000000..1f6b1b3 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr52437.c @@ -0,0 +1,18 @@ +/* PR target/52437 */ + +int f, g, i, j; + +void +fn1 () +{ + for (;;) + { + fn2 (); + j = 1; + for (i = 0; i <= 3; i++) + { + for (g = 1; g >= 0; g--) + f = 0, j &= 11; + } + } +} |