This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: IVOPT improvement patch
On Thu, Jul 29, 2010 at 8:22 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Wed, Jul 28, 2010 at 9:32 PM, Xinliang David Li <davidxl@google.com> wrote:
>> The attached patch should fix the problem -- it reverts a small part
>> of the last patch that is needed for fixing sixtrack performance
>> regression caused by wrong iv-use costs because address offset range
>> is conservatively computed. I will revert the change first and
>> investigate better fix (Suggestions are welcome).
>>
>
> Since "gcc -m32" works on Linux/x86-64 and goes into an infinite loop,
> it sounds like a HOST_WIDE_INT issue.
>
This patch fixed the infinite loop.
--
H.J.
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 519f66e..44f2eb2 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -3207,7 +3207,7 @@ multiplier_allowed_in_address_p (HOST_WIDE_INT
ratio, enum machine_mode mode,
typedef struct
{
- HOST_WIDE_INT min_offset, max_offset;
+ HOST_WIDEST_INT min_offset, max_offset;
unsigned costs[2][2][2][2];
} *address_cost_data;
@@ -3240,9 +3240,9 @@ get_address_cost (bool symbol_present, bool var_present,
data = VEC_index (address_cost_data, address_cost_data_list, data_index);
if (!data)
{
- HOST_WIDE_INT i;
- HOST_WIDE_INT start = BIGGEST_ALIGNMENT / BITS_PER_UNIT;
- HOST_WIDE_INT rat, off;
+ HOST_WIDEST_INT i;
+ HOST_WIDEST_INT start = BIGGEST_ALIGNMENT / BITS_PER_UNIT;
+ HOST_WIDEST_INT rat, off;
int old_cse_not_expected, width;
unsigned sym_p, var_p, off_p, rat_p, add_c;
rtx seq, addr, base;