From a2fbb27304400debfe369d9fd2ee610fe52f2115 Mon Sep 17 00:00:00 2001 From: Enkovich Ilya Date: Fri, 25 Nov 2011 10:29:42 +0000 Subject: [PATCH] re PR target/51287 (252.eon compfail with -march=atom) 2011-11-24 Enkovich Ilya PR target/51287 * i386.c (distance_non_agu_define): Fix insn attr check. From-SVN: r181714 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cb8cb357b1f0..95d8a0b0a4a4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-11-24 Enkovich Ilya + + PR target/51287 + * i386.c (distance_non_agu_define): Fix insn attr check. + 2011-11-20 Andreas Tobler * configure: Regenerate. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 382fabffa02f..6aa029709c9b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -16329,7 +16329,6 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2, basic_block bb = BLOCK_FOR_INSN (insn); int distance = 0; df_ref *def_rec; - enum attr_type insn_type; if (insn != BB_HEAD (bb)) { @@ -16345,8 +16344,8 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2, && (regno1 == DF_REF_REGNO (*def_rec) || regno2 == DF_REF_REGNO (*def_rec))) { - insn_type = get_attr_type (prev); - if (insn_type != TYPE_LEA) + if (recog_memoized (prev) < 0 + || get_attr_type (prev) != TYPE_LEA) goto done; } } @@ -16385,8 +16384,8 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2, && (regno1 == DF_REF_REGNO (*def_rec) || regno2 == DF_REF_REGNO (*def_rec))) { - insn_type = get_attr_type (prev); - if (insn_type != TYPE_LEA) + if (recog_memoized (prev) < 0 + || get_attr_type (prev) != TYPE_LEA) goto done; } } -- 2.47.2