aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2000-04-05 21:14:53 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2000-04-05 21:14:53 +0000
commit65945ec1b3c5199a692e477b873cb975285cc515 (patch)
treeae42126fedf19fc11979a414c3bc82d0b8ae8029 /gcc
parent0d0df4fcbf84383855c6682bdbc0d9b5a7bb51df (diff)
downloadgcc-65945ec1b3c5199a692e477b873cb975285cc515.zip
gcc-65945ec1b3c5199a692e477b873cb975285cc515.tar.gz
gcc-65945ec1b3c5199a692e477b873cb975285cc515.tar.bz2
md.texi (Standard Names): Clarify when movX is needed.
* md.texi (Standard Names): Clarify when movX is needed. * combine.c (simplify_comparison) [MINUS]: Do not replace all (op (minus A B) 0) with (op A B). From-SVN: r32940
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/combine.c11
-rw-r--r--gcc/md.texi6
3 files changed, 13 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 43c4ef8..2fb37dc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -4,6 +4,11 @@ Wed Apr 5 12:35:18 2000 Hans-Peter Nilsson <hp@axis.com>
from the insn where REG_RETVAL is added.
(emit_no_conflict_block): Ditto.
+ * md.texi (Standard Names): Clarify when movX is needed.
+
+ * combine.c (simplify_comparison) [MINUS]: Do not replace
+ all (op (minus A B) 0) with (op A B).
+
Wed Apr 5 18:03:31 2000 Toshiyasu Morita (toshi.morita@sega.com)
J"orn Rennecke <amylaar@cygnus.co.uk>
diff --git a/gcc/combine.c b/gcc/combine.c
index 2d46a69..911ebbf 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -10452,13 +10452,10 @@ simplify_comparison (code, pop0, pop1)
break;
case MINUS:
- /* (op (minus A B) 0) -> (op A B) */
- if (op1 == const0_rtx)
- {
- op1 = XEXP (op0, 1);
- op0 = XEXP (op0, 0);
- continue;
- }
+ /* We used to optimize signed comparisons against zero, but that
+ was incorrect. Unsigned comparisons against zero (GTU, LEU)
+ arrive here as equality comparisons, or (GEU, LTU) are
+ optimized away. No need to special-case them. */
/* (eq (minus A B) C) -> (eq A (plus B C)) or
(eq B (minus A C)), whichever simplifies. We can only do
diff --git a/gcc/md.texi b/gcc/md.texi
index c019312..0b46d81 100644
--- a/gcc/md.texi
+++ b/gcc/md.texi
@@ -1822,8 +1822,10 @@ to store the specified value in the part of the register that corresponds
to mode @var{m}. The effect on the rest of the register is undefined.
This class of patterns is special in several ways. First of all, each
-of these names @emph{must} be defined, because there is no other way
-to copy a datum from one place to another.
+of these names up to and including full word size @emph{must} be defined,
+because there is no other way to copy a datum from one place to another.
+If there are patterns accepting operands in larger modes,
+@samp{mov@var{m}} must be defined for integer modes of those sizes.
Second, these patterns are not used solely in the RTL generation pass.
Even the reload pass can generate move insns to copy values from stack