Hi Vladmir, I think that IRA should give the same result with the same RTL input. But I find that this is not always true. I test IRA with two inputs, say X and Y. The RTL insns are the same (ignore the UIDs). And the only difference between the two is the CFG. There are two blocks in X which is merged into one block in Y. Only one edge exists between the two blocks in X. After IRA processing, I find the move insns emitted by ira-emit.c is different. And this brings performance issues with the target code. What are the possible reasons for this? Since IRA is somewhat complex, can you give me some suggestions please? Many thanks.
Cheers, Felix