This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] sel-sched: fix merging of LHS reg availability (PR 50340)


On 09/13/2011 12:42 PM, Alexander Monakov wrote:
Fixed as follows, bootstrapped and regtested on x86_64-linux and ia64-linux
(without java, with one recent SRA patch reverted to unbreak bootstrap) with
sel-sched enabled at -O2.  OK for trunk?

Ok with a small code format change below.
(a small testcase is not available at the moment, but I can try to produce one
using delta before committing)


2011-09-13 Andrey Belevantsev<abel@ispras.ru>


	* sel-sched-ir.c (update_target_availability): LHS register
	availability is not known if the unavailable LHS of the other
	expression is a different register.

diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
index 4878460..b132392 100644
--- a/gcc/sel-sched-ir.c
+++ b/gcc/sel-sched-ir.c
@@ -1746,7 +1746,13 @@ update_target_availability (expr_t to, expr_t from,
insn_t split_point)
              EXPR_TARGET_AVAILABLE (to) = -1;
          }
        else
-        EXPR_TARGET_AVAILABLE (to)&= EXPR_TARGET_AVAILABLE (from);
Please, put else and if on the same line with a proper indentation.
+    if (EXPR_TARGET_AVAILABLE (from) == 0
+&&  EXPR_LHS (from)
+&&  REG_P (EXPR_LHS (from))
+&&  REGNO (EXPR_LHS (to)) != REGNO (EXPR_LHS (from)))
+      EXPR_TARGET_AVAILABLE (to) = -1;
+    else
+      EXPR_TARGET_AVAILABLE (to)&= EXPR_TARGET_AVAILABLE (from);
      }
  }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]