roy rosen <roy.1ro...@gmail.com> writes: > I have encountered several problems with lower subreg optimization in my port. > In some cases I noticed that insns are decomposed in subreg1 pass and > do not get recomposed later which causes at the end using two insns > instead of one.
In the code the register is always accessed via a subreg, so the lower-subregs pass thinks that it is OK to decompose the register. Once it is decomposed, nothing is expected to put it back together. To fix this, you should probably look at simple_move in lower-subreg.c. You will want it to return NULL_RTX for a vector load or store. Perhaps it should check costs, or perhaps it should never decompose explicit vector modes. Ian