re PR rtl-optimization/55686 (ICE in assign_by_spills, at lra-assigns.c:1244)
PR target/55686 * config/i386/i386.md (UNSPEC_STOS): New. (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1, *strsetqi_1): Add UNSPEC_STOS. * gcc.target/i386/pr55686.c: New test. From-SVN: r195381
This commit is contained in:
parent
904812578d
commit
3a984f1011
4 changed files with 39 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2013-01-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/55686
|
||||
* config/i386/i386.md (UNSPEC_STOS): New.
|
||||
(strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1,
|
||||
*strsetqi_1): Add UNSPEC_STOS.
|
||||
|
||||
2013-01-22 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/56067
|
||||
|
|
|
@ -110,6 +110,7 @@
|
|||
UNSPEC_PAUSE
|
||||
UNSPEC_LEA_ADDR
|
||||
UNSPEC_XBEGIN_ABORT
|
||||
UNSPEC_STOS
|
||||
|
||||
;; For SSE/MMX support:
|
||||
UNSPEC_FIX_NOTRUNC
|
||||
|
@ -15607,7 +15608,8 @@
|
|||
[(parallel [(set (match_operand 1 "memory_operand")
|
||||
(match_operand 2 "register_operand"))
|
||||
(set (match_operand 0 "register_operand")
|
||||
(match_operand 3))])]
|
||||
(match_operand 3))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)])]
|
||||
""
|
||||
"ix86_current_function_needs_cld = 1;")
|
||||
|
||||
|
@ -15616,7 +15618,8 @@
|
|||
(match_operand:DI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 8)))]
|
||||
(const_int 8)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"TARGET_64BIT
|
||||
&& !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"%^stosq"
|
||||
|
@ -15629,7 +15632,8 @@
|
|||
(match_operand:SI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 4)))]
|
||||
(const_int 4)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"%^stos{l|d}"
|
||||
[(set_attr "type" "str")
|
||||
|
@ -15641,7 +15645,8 @@
|
|||
(match_operand:HI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 2)))]
|
||||
(const_int 2)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"%^stosw"
|
||||
[(set_attr "type" "str")
|
||||
|
@ -15653,7 +15658,8 @@
|
|||
(match_operand:QI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 1)))]
|
||||
(const_int 1)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"%^stosb"
|
||||
[(set_attr "type" "str")
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-01-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/55686
|
||||
* gcc.target/i386/pr55686.c: New test.
|
||||
|
||||
2013-01-22 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR c++/53609
|
||||
|
|
16
gcc/testsuite/gcc.target/i386/pr55686.c
Normal file
16
gcc/testsuite/gcc.target/i386/pr55686.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
/* PR target/55686 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
void
|
||||
foo (long x, long *y)
|
||||
{
|
||||
long *a = y - 64, i;
|
||||
for (i = 0; i < x; i++)
|
||||
{
|
||||
long v = y[i];
|
||||
*a++ = v;
|
||||
}
|
||||
register void **c __asm__ ("di");
|
||||
goto **c;
|
||||
}
|
Loading…
Add table
Reference in a new issue