OSDN Git Service

PR rtl-opt/49982
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Aug 2011 16:12:16 +0000 (16:12 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Aug 2011 16:12:16 +0000 (16:12 +0000)
        * expr.c (fixup_args_size_notes): Look through no-op moves.

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

gcc/ChangeLog
gcc/expr.c

index 1b5cd35..74f634a 100644 (file)
@@ -1,3 +1,9 @@
+2011-08-05  Kaz Kojima  <kkojima@gcc.gnu.org>
+           Richard Henderson  <rth@redhat.com>
+
+       PR rtl-opt/49982
+       * expr.c (fixup_args_size_notes): Look through no-op moves.
+
 2011-08-05  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (*push<mode>2): Use "o" constraint instead
index e5bec34..f170596 100644 (file)
@@ -3631,6 +3631,10 @@ fixup_args_size_notes (rtx prev, rtx last, int end_args_size)
              && XEXP (SET_SRC (set), 0) == stack_pointer_rtx
              && CONST_INT_P (XEXP (SET_SRC (set), 1)))
            this_delta = INTVAL (XEXP (SET_SRC (set), 1));
+         /* ??? Reload can generate no-op moves, which will be cleaned
+            up later.  Recognize it and continue searching.  */
+         else if (rtx_equal_p (dest, SET_SRC (set)))
+           this_delta = 0;
          else
            saw_unknown = true;
        }