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]

[power7-meissner] Fix spec2006 calculix build error; Move more -mdebug=addr support to separate functions


This checkin makes Spec2006 build again for -O3 -fpeel-loops -funroll-loops
-mcpu=power7.  I'm not entirely happy with the fix, as I think the real fix is
to find the place that is rewriting the address in reload and teach it not to
do the substitution inside of a const.

The patch also continues on my last checkin to move the -mdebug=addr output to
a separate function, and make the address support infrastructure closer to the
original code, so that it is easier to compare what the differences are.  I
added more checks to make sure we don't allow invalid addresses for Altivec/VSX
modes that only support reg+reg addressing.

The spec code references static memory.  This is an invalid address for VSX, so
it pushes the address to a separate register, and then creates a TOC entry for
the address.  The address has the note:

	(reg_equal (const:DI (plus:DI (symbol_ref:DI) (const_int))))

to represent where it actually points to, which is expected.  However, inside
of IRA/reload, because (reg+int) addressing is not allowed, this gets changed
to move the int to a register and then to (reg+reg).  However, it also changes
the note to:

	(reg_equal (const:DI (plus:DI (symbol_ref:DI) (reg:DI))))

which is illegal having a register inside of the const.  I fixed this inside of
r6000_emit_move to recognize this, and convert it back to loading the
symbol_ref and then doing the add separately.

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

Attachment: gcc-power7.patch48
Description: Text document


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