Commit 9f41de41 by Vladimir Makarov Committed by Vladimir Makarov

re PR rtl-optimization/91223 (ICE: in curr_insn_transform, at lra-constraints.c:4459)

2019-07-25  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/91223
	* lra-constraints.c (process_alt_operands): Fail for unsuccessful
	matching with INOUT operand.

2019-07-25  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/91223
	* gcc.target/i386/pr91223.c: New test.

From-SVN: r273810
parent 7649f2e4
2019-07-25 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/91223
* lra-constraints.c (process_alt_operands): Fail for unsuccessful
matching with INOUT operand.
2019-07-25 Eric Botcazou <ebotcazou@adacore.com> 2019-07-25 Eric Botcazou <ebotcazou@adacore.com>
* stmt.c (expand_case): Try to narrow the index type if it's larger * stmt.c (expand_case): Try to narrow the index type if it's larger
......
...@@ -2171,6 +2171,14 @@ process_alt_operands (int only_alternative) ...@@ -2171,6 +2171,14 @@ process_alt_operands (int only_alternative)
} }
else else
{ {
/* If the operands do not match and one
operand is INOUT, we can not match them.
Try other possibilities, e.g. other
alternatives or commutative operand
exchange. */
if (curr_static_id->operand[nop].type == OP_INOUT
|| curr_static_id->operand[m].type == OP_INOUT)
break;
/* Operands don't match. If the operands are /* Operands don't match. If the operands are
different user defined explicit hard different user defined explicit hard
registers, then we cannot make them match registers, then we cannot make them match
......
2019-07-25 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/91223
* gcc.target/i386/pr91223.c: New test.
2019-07-25 Iain Sandoe <iain@sandoe.co.uk> 2019-07-25 Iain Sandoe <iain@sandoe.co.uk>
PR gcov-profile/91087 PR gcov-profile/91087
......
/* { dg-do compile } */
/* { dg-options "-Og -fno-tree-fre" } */
int a;
void fn2(short, short);
void fn1(void) {
short b[8];
b[0] |= a & 3;
b[1] = a;
fn2(b[0], b[1]);
}
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