aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/recog.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/20021110.c10
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 308e817..b29de89 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2002-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/8439
+ * recog.c (validate_replace_rtx_1) [PLUS]: Simplify only
+ if there is something new to be simplified.
+
2002-11-10 H.J. Lu <hjl@gnu.org>
* calls.c (PUSH_ARGS_REVERSED): Define only if not defined.
diff --git a/gcc/recog.c b/gcc/recog.c
index b40867b..649f366 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -522,10 +522,10 @@ validate_replace_rtx_1 (loc, from, to, object)
{
case PLUS:
/* If we have a PLUS whose second operand is now a CONST_INT, use
- plus_constant to try to simplify it.
+ simplify_gen_binary to try to simplify it.
??? We may want later to remove this, once simplification is
separated from this function. */
- if (GET_CODE (XEXP (x, 1)) == CONST_INT)
+ if (GET_CODE (XEXP (x, 1)) == CONST_INT && XEXP (x, 1) == to)
validate_change (object, loc,
simplify_gen_binary
(PLUS, GET_MODE (x), XEXP (x, 0), XEXP (x, 1)), 1);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e67e784..99af5fe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2002-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR c/8439
+ * gcc.dg/testsuite/20021110.c: New test.
+
2002-11-10 Mark Mitchell <mark@codesourcery.com>
* g++.dg/abi/vthunk3.C: Run only on x86.
diff --git a/gcc/testsuite/gcc.dg/20021110.c b/gcc/testsuite/gcc.dg/20021110.c
new file mode 100644
index 0000000..dd2aa7e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20021110.c
@@ -0,0 +1,10 @@
+/* PR c/8439 */
+/* Verify that GCC properly handles null increments. */
+
+struct empty {
+};
+
+void foo(struct empty *p)
+{
+ p++;
+}