OSDN Git Service

PR target/51287
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Nov 2011 09:46:27 +0000 (09:46 +0000)
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Nov 2011 09:46:27 +0000 (09:46 +0000)
       * i386.c (distance_non_agu_define): Fix insn attr check.

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

gcc/ChangeLog
gcc/config/i386/i386.c

index f4cf7e1..9436021 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-24  Enkovich Ilya  <ilya.enkovich@intel.com>
+
+       PR target/51287
+       * i386.c (distance_non_agu_define): Fix insn attr check.
+
 2011-11-24  Andrew MacLeod  <amacleod@redhat.com>
 
        * optab.c (maybe_emit_atomic_exchange): New.  Try to emit an
index 409accc..1b871be 100644 (file)
@@ -16273,7 +16273,6 @@ distance_non_agu_define_in_bb (unsigned int regno1, unsigned int regno2,
   basic_block bb = start ? BLOCK_FOR_INSN (start) : NULL;
   rtx prev = start;
   rtx next = NULL;
-  enum attr_type insn_type;
 
   *found = false;
 
@@ -16286,8 +16285,8 @@ distance_non_agu_define_in_bb (unsigned int regno1, unsigned int regno2,
          distance = increase_distance (prev, next, distance);
          if (insn_defines_reg (regno1, regno2, prev))
            {
-             insn_type = get_attr_type (prev);
-             if (insn_type != TYPE_LEA)
+             if (recog_memoized (prev) < 0
+                 || get_attr_type (prev) != TYPE_LEA)
                {
                  *found = true;
                  return distance;