------- Comment #4 from wilson at codesourcery dot com  2010-03-13 03:16 -------
Subject: Re:  [ia64] Inappropriate address spills

Or maybe we should just accept any constant here?  I tried that, and for

typedef struct table { int a; int b; int c; } table;
extern table mv_tables[100000];
void foo()
{
  init_mv_table(&mv_tables[50000]);
}

I get
        addl r35 = @ltoff(mv_tables#+606208), r1
        ;;
        ld8 r35 = [r35]
        ;;
        adds r35 = -6208, r35
which is perhaps still better than using @gprel and the constant pool.

In this case, in ia64_legitimate_constant_p we can just return true if
aligned_offset_symbol_operand is true, and there is no need for the
addend local variable.

Jim


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42040

Reply via email to