This is the mail archive of the gcc@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: rs6000.md/altivec.md problem in setting of vector registers


On Mar 18, 2004, at 4:52 PM, Dorit Naishlos wrote:
I managed to hack something that causes Reload to make the "right" decision
and generate the same code as it generates for i386 - i.e., the spill code
is created out of the loop.


The hack modifies the macro CANNOT_CHANGE_MODE_CLASS in rs6000.h to not
allow a mode change from a vector mode to a smaller mode in ALTIVEC_REGS or
GENERAL_REGS. As a result, these register classes cannot be considered for
allocation in this case; instead, Reload directly creates stores to memory,
outside the loop, like for i386.

I haven't tried it, but this might well break passing of vector parameters in int regs.



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