From 9a0ac98faf0823b9c4fe1c1c129ba2c0445d1247 Mon Sep 17 00:00:00 2001 From: Yuri Rumyantsev Date: Tue, 17 Sep 2013 12:01:28 +0000 Subject: [PATCH] i386.c (distance_agu_use_in_bb): Proper initialization of 'prev' var to get better distance estimation. * config/i386/i386.c (distance_agu_use_in_bb) : Proper initialization of 'prev' var to get better distance estimation. From-SVN: r202649 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44c7d66134a..e05412a2dab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-09-17 Yuri Rumyantsev + + * config/i386/i386.c (distance_agu_use_in_bb) : Proper initialization + of 'prev' var to get better distance estimation. + 2013-09-17 Eric Botcazou * tree-inline.h (struct copy_body_data): Add transform_parameter. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index bba214712a0..ac7d40ae392 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -17469,13 +17469,23 @@ distance_agu_use_in_bb (unsigned int regno, rtx insn, int distance, rtx start, bool *found, bool *redefined) { - basic_block bb = start ? BLOCK_FOR_INSN (start) : NULL; + basic_block bb = NULL; rtx next = start; rtx prev = NULL; *found = false; *redefined = false; + if (start != NULL_RTX) + { + bb = BLOCK_FOR_INSN (start); + if (start != BB_HEAD (bb)) + /* If insn and start belong to the same bb, set prev to insn, + so the call to increase_distance will increase the distance + between insns by 1. */ + prev = insn; + } + while (next && next != insn && distance < LEA_SEARCH_THRESHOLD)