predicates.md (input_operand): Add comment.

* config/sparc/predicates.md (input_operand): Add comment.  Return
	true for any memory operand when LRA is in progress.
	* config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.

Co-Authored-By: Jeff Law <law@redhat.com>
Co-Authored-By: Vladimir Makarov <vmakarov@redhat.com>

From-SVN: r246989
This commit is contained in:
Eric Botcazou 2017-04-19 08:05:36 +00:00 committed by Eric Botcazou
parent 6143c99823
commit a16c8d8b61
5 changed files with 36 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2017-04-19 Eric Botcazou <ebotcazou@adacore.com>
Vladimir Makarov <vmakarov@redhat.com>
* config/sparc/predicates.md (input_operand): Add comment. Return
true for any memory operand when LRA is in progress.
* config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
2017-04-18 Jeff Law <law@redhat.com>
PR target/74563

View File

@ -373,6 +373,7 @@
if (TARGET_ARCH32 && mode == DImode && GET_CODE (op) == CONST_INT)
return true;
/* Allow FP constants to be built in integer registers. */
if (mclass == MODE_FLOAT && GET_CODE (op) == CONST_DOUBLE)
return true;
@ -388,7 +389,14 @@
/* Check for valid MEM forms. */
if (GET_CODE (op) == MEM)
return memory_address_p (mode, XEXP (op, 0));
{
/* Except when LRA is precisely working hard to make them valid
and relying entirely on the constraints. */
if (lra_in_progress)
return true;
return memory_address_p (mode, XEXP (op, 0));
}
return false;
})

View File

@ -1911,9 +1911,8 @@ sparc_expand_move (machine_mode mode, rtx *operands)
/* We are able to build any SF constant in integer registers
with at most 2 instructions. */
&& (mode == SFmode
/* And any DF constant in integer registers. */
|| (mode == DFmode
&& ! can_create_pseudo_p ())))
/* And any DF constant in integer registers if needed. */
|| (mode == DFmode && !can_create_pseudo_p ())))
return false;
operands[1] = force_const_mem (mode, operands[1]);

View File

@ -1,3 +1,8 @@
2017-04-19 Eric Botcazou <ebotcazou@adacore.com>
Jeff Law <law@redhat.com>
* gcc.c-torture/compile/20170419-1.c: New test.
2017-04-19 Tom de Vries <tom@codesourcery.com>
PR testsuite/80221

View File

@ -0,0 +1,13 @@
extern int __fpclassifyd (double x);
double fdim (double x, double y)
{
int c = __fpclassifyd (x);
if (c == 0)
return (x);
if (__fpclassifyd (y) == 0)
return (y);
if (c == 1)
return (__builtin_huge_val ());
return x > y ? x - y : 0.0;
}