Hi, Currently I am working on improving hoist pass by calculating register pressure and using the info to guide hoist process. It works well and I will send a patch once I finish it.
In this work I reused codes in loop-invariant and called ira_set_pseudo_classes function to calculate register pressure. The problem is that ira_set_pseudo_classes sets pseudo_classes_defined_p to TRUE, which causes function find_costs_and_classes scans instructions only once to find the best reg class to use for each allocno. In my understanding, these part of codes is introduced for calculating reg pressure in schedulor and loop-invariant. What I do not understand is why we make IRA behave differently when register pressure is calculated before IRA pass? In the work of hoist, I found bigger regression in code size causes by the changed behavior of IRA. My questions are: 1. could somebody give some explanation on this. 2. Is it possible to calculate register pressure by reusing existing code while do not change behavior of IRA? I am not familiar with IRA so please forgive If I am wrong. Thanks very much. -- Best Regards.