------- Additional Comments From amylaar at gcc dot gnu dot org 2005-03-11 19:43 ------- (In reply to comment #18) > IMHO. One of the tricks with the mult and divmod expanders is precisely > when should we expand them into their component operations. We clearly > don't want to do it at the very start or the very end of hte SSA path, > but somewhere in the middle.
One of the sh64 patches that I intend to merge expands signed integer division into calculating the inverse of the divisor (at runtime) and then multiplying the dividend with that inverse. It's broken up into operations that assign to one pseudo register each, so this stuff gets full exposure to cse, gcse and rtl loop optimizations. If the inverse calculation and the mutiply with the dividend end up in the same basic block and the inverse is only used once, some combiner patterns combine & split this stuff again to get a more scheduler-friendly data flow. Do you think we should have machine-dependent tree expanders so that such details can already be exposed to (g)cse and loop optimizations at the tree level? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19721