Hi All, I am looking at the code generated by my port and it seems that I have a problem that too many copies between registers are generated. I looked a bit at the register allocation and wanted to verify that I understand its behavior.
Is that true that it first chooses a register class for each pseodo and only then starts coloring? I think that my problem is that in my architecture there are two register classes which can do all arithmetic operation but class X can also do loads and stores and class Y can also do DSP operations. So when there are for example two DSP operations and between them some arithmetic operations I expect to use only class Y but GCC prefers to copy registers and do the arithmetic operations using X because for some reason it determined that the prefered class for the registers in the arithmetic operations is X. It seems that determining the class does not look at the whole flow but rather looks only at insns in which the register appears. Do I understand the situation correctly? Is there something I can do about it? Thanks, Roy.