re PR target/79514 (ICE in curr_insn_transform, at lra-constraints.c:3773)

PR target/79514
	* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.

testsuite/ChangeLog:

	PR target/79514
	* gcc.target/i386/pr79514.c: New test.

From-SVN: r245844
This commit is contained in:
Uros Bizjak 2017-03-02 19:47:03 +01:00
parent fe792dd82f
commit dc362ada54
4 changed files with 57 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2017-03-02 Uros Bizjak <ubizjak@gmail.com>
PR target/79514
* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
2017-03-02 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/79780
@ -2036,7 +2041,7 @@
scalar_stmt_cost and vec_stmt_cost.
2017-02-01 Torvald Riegel <triegel@redhat.com>
Richard Henderson <rth@redhat.com>
Richard Henderson <rth@redhat.com>
* builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
conditional on existance of a fast atomic load.
@ -2337,9 +2342,9 @@
2017-01-27 Richard Earnshaw <rearnsha@arm.com>
PR target/79239
* arm.c (arm_option_override): Don't call build_target_option_node
until after doing all option overrides.
(arm_valid_target_attribute_tree): Likewise.
* arm.c (arm_option_override): Don't call build_target_option_node
until after doing all option overrides.
(arm_valid_target_attribute_tree): Likewise.
2017-01-27 Martin Liska <mliska@suse.cz>

View File

@ -3015,6 +3015,36 @@
operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx);
})
(define_insn_and_split "*pushxf_rounded"
[(set (mem:XF
(pre_modify:DI
(reg:DI SP_REG)
(plus:DI (reg:DI SP_REG) (const_int -16))))
(match_operand:XF 0 "nonmemory_no_elim_operand" "f,r,*r,C"))]
"TARGET_64BIT"
"#"
"&& 1"
[(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int -16)))
(set (match_dup 1) (match_dup 0))]
{
rtx pat = PATTERN (curr_insn);
operands[1] = SET_DEST (pat);
/* Preserve memory attributes. */
operands[1] = replace_equiv_address (operands[1], stack_pointer_rtx);
}
[(set_attr "type" "multi")
(set_attr "unit" "i387,*,*,*")
(set (attr "mode")
(cond [(eq_attr "alternative" "1,2,3")
(const_string "DI")
]
(const_string "XF")))
(set (attr "preferred_for_size")
(cond [(eq_attr "alternative" "1")
(symbol_ref "false")]
(symbol_ref "true")))])
(define_insn "*pushxf"
[(set (match_operand:XF 0 "push_operand" "=<,<,<,<")
(match_operand:XF 1 "general_no_elim_operand" "f,r,*r,oF"))]

View File

@ -1,3 +1,8 @@
2017-03-02 Uros Bizjak <ubizjak@gmail.com>
PR target/79514
* gcc.target/i386/pr79514.c: New test.
2017-03-02 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/79780
@ -1082,7 +1087,7 @@
2017-02-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
* gcc.dg/sms-8.c: Update options for powerpc*-*-*.
* gcc.dg/sms-8.c: Update options for powerpc*-*-*.
2017-02-02 Jan Hubicka <hubicka@ucw.cz>

View File

@ -0,0 +1,12 @@
/* PR target/79514 */
/* { dg-do compile } */
/* { dg-options "-m96bit-long-double" } */
extern void bar (long double);
extern long double x;
void foo (void)
{
bar (x);
}