Commit 7ca803f1 by Jakub Jelinek Committed by Jakub Jelinek

re PR target/93174 (ICE building glibc __sha512_process_block for i686)

	PR target/93174
	* config/i386/i386.md (addcarry<mode>_0): Use nonimmediate_operand
	predicate for output operand instead of register_operand.
	(addcarry<mode>, addcarry<mode>_1): Likewise.  Add alternative with
	memory destination and non-memory operands[2].

	* gcc.c-torture/compile/pr93174.c: New test.

From-SVN: r280011
parent 80d803ae
2020-01-08 Jakub Jelinek <jakub@redhat.com>
PR target/93174
* config/i386/i386.md (addcarry<mode>_0): Use nonimmediate_operand
predicate for output operand instead of register_operand.
(addcarry<mode>, addcarry<mode>_1): Likewise. Add alternative with
memory destination and non-memory operands[2].
2020-01-08 Martin Liska <mliska@suse.cz> 2020-01-08 Martin Liska <mliska@suse.cz>
* cgraph.c (cgraph_node::dump): Use ::dump_name or * cgraph.c (cgraph_node::dump): Use ::dump_name or
......
...@@ -6786,13 +6786,13 @@ ...@@ -6786,13 +6786,13 @@
(plus:SWI48 (plus:SWI48
(match_operator:SWI48 5 "ix86_carry_flag_operator" (match_operator:SWI48 5 "ix86_carry_flag_operator"
[(match_operand 3 "flags_reg_operand") (const_int 0)]) [(match_operand 3 "flags_reg_operand") (const_int 0)])
(match_operand:SWI48 1 "nonimmediate_operand" "%0")) (match_operand:SWI48 1 "nonimmediate_operand" "%0,0"))
(match_operand:SWI48 2 "nonimmediate_operand" "rm"))) (match_operand:SWI48 2 "nonimmediate_operand" "r,rm")))
(plus:<DWI> (plus:<DWI>
(zero_extend:<DWI> (match_dup 2)) (zero_extend:<DWI> (match_dup 2))
(match_operator:<DWI> 4 "ix86_carry_flag_operator" (match_operator:<DWI> 4 "ix86_carry_flag_operator"
[(match_dup 3) (const_int 0)])))) [(match_dup 3) (const_int 0)]))))
(set (match_operand:SWI48 0 "register_operand" "=r") (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r")
(plus:SWI48 (plus:SWI48 (match_op_dup 5 (plus:SWI48 (plus:SWI48 (match_op_dup 5
[(match_dup 3) (const_int 0)]) [(match_dup 3) (const_int 0)])
(match_dup 1)) (match_dup 1))
...@@ -6812,7 +6812,7 @@ ...@@ -6812,7 +6812,7 @@
(match_operand:SWI48 1 "nonimmediate_operand") (match_operand:SWI48 1 "nonimmediate_operand")
(match_operand:SWI48 2 "x86_64_general_operand")) (match_operand:SWI48 2 "x86_64_general_operand"))
(match_dup 1))) (match_dup 1)))
(set (match_operand:SWI48 0 "register_operand") (set (match_operand:SWI48 0 "nonimmediate_operand")
(plus:SWI48 (match_dup 1) (match_dup 2)))])] (plus:SWI48 (match_dup 1) (match_dup 2)))])]
"ix86_binary_operator_ok (PLUS, <MODE>mode, operands)") "ix86_binary_operator_ok (PLUS, <MODE>mode, operands)")
...@@ -6830,7 +6830,7 @@ ...@@ -6830,7 +6830,7 @@
(match_operand:<DWI> 6 "const_scalar_int_operand" "") (match_operand:<DWI> 6 "const_scalar_int_operand" "")
(match_operator:<DWI> 4 "ix86_carry_flag_operator" (match_operator:<DWI> 4 "ix86_carry_flag_operator"
[(match_dup 3) (const_int 0)])))) [(match_dup 3) (const_int 0)]))))
(set (match_operand:SWI48 0 "register_operand" "=r") (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm")
(plus:SWI48 (plus:SWI48 (match_op_dup 5 (plus:SWI48 (plus:SWI48 (match_op_dup 5
[(match_dup 3) (const_int 0)]) [(match_dup 3) (const_int 0)])
(match_dup 1)) (match_dup 1))
......
2020-01-08 Jakub Jelinek <jakub@redhat.com>
PR target/93174
* gcc.c-torture/compile/pr93174.c: New test.
2020-01-08 Olivier Hainque <hainque@adacore.com> 2020-01-08 Olivier Hainque <hainque@adacore.com>
Alexandre Oliva <oliva@adacore.com> Alexandre Oliva <oliva@adacore.com>
......
/* PR target/93174 */
unsigned long long a[2];
void bar (void);
void
foo (int c)
{
int e = c >> 2;
a[0] += c;
a[1] = a[0] < c;
while (e--)
bar ();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment