optabs.c (expand_unop): Try implementing negation using subtraction from zero.

* optabs.c (expand_unop): Try implementing negation using subtraction
	from zero.

From-SVN: r81933
This commit is contained in:
Richard Sandiford 2004-05-17 06:50:51 +00:00 committed by Richard Sandiford
parent 15581992c8
commit d83aba0f8b
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2004-05-17 Richard Sandiford <rsandifo@redhat.com>
* optabs.c (expand_unop): Try implementing negation using subtraction
from zero.
2004-05-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa.md: Fix typo from last change. Remove DFmode move to and from

View File

@ -2737,6 +2737,15 @@ expand_unop (enum machine_mode mode, optab unoptab, rtx op0, rtx target,
return temp;
}
/* If there is no negation pattern, try subtracting from zero. */
if (unoptab == neg_optab && class == MODE_INT)
{
temp = expand_binop (mode, sub_optab, CONST0_RTX (mode), op0,
target, unsignedp, OPTAB_DIRECT);
if (temp)
return temp;
}
try_libcall:
/* Now try a library call in this mode. */
if (unoptab->handlers[(int) mode].libfunc)