aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEnkovich Ilya <ilya.enkovich@intel.com>2011-11-25 09:46:27 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2011-11-25 09:46:27 +0000
commit696095350b0301162911c181498ac0a286098c1b (patch)
treea2b06ee94adfdb8a9218e7e37aa21e457127955c /gcc
parentc466c4ff909f2a03344110dec66c3c3616e44920 (diff)
downloadgcc-696095350b0301162911c181498ac0a286098c1b.zip
gcc-696095350b0301162911c181498ac0a286098c1b.tar.gz
gcc-696095350b0301162911c181498ac0a286098c1b.tar.bz2
re PR target/51287 (252.eon compfail with -march=atom)
PR target/51287 * i386.c (distance_non_agu_define): Fix insn attr check. From-SVN: r181713
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c5
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f4cf7e1..9436021 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 409accc..1b871be 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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;