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]

Question about RTL code hoisting


I just found that the current RTL code hoisting cannot optimize

REG = ...
if (cond)
  {
    r0 = REG;
    ....
  }
else
  {
    r0 = REG;
    ...
  }

to


REG = ... r0 = REG; if (cond) { .... } else { ... }

where REG is a pseudo register and r0 is a physical register. I have looked at the code of RTL hoisting pass. But I cannot find a simple way to extend it to deal with this case. And the hoisting pass is only enabled when -Os. So I'm going to implement another hoisting pass to do this optimization. Is it a good idea? Does anyone know if there is an existing pass which should have handled or be able to be easily adapted to handle this case? Thanks!


-- Jie Zhang CodeSourcery (650) 331-3385 x735


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