PR c/8439
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Nov 2002 05:38:22 +0000 (05:38 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Nov 2002 05:38:22 +0000 (05:38 +0000)
* recog.c (validate_replace_rtx_1) [PLUS]: Simplify only
if there is something new to be simplified.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59005 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/recog.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20021110.c [new file with mode: 0644]

index 308e817..b29de89 100644 (file)
@@ -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.
index b40867b..649f366 100644 (file)
@@ -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);
index e67e784..99af5fe 100644 (file)
@@ -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 (file)
index 0000000..dd2aa7e
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR c/8439 */
+/* Verify that GCC properly handles null increments. */
+
+struct empty {
+};
+
+void foo(struct empty *p)
+{
+   p++;
+}