> I've worked on a gcc target that was porting an architecture without > hardware interlock support. Basically, you need to emit nop operations > to avoid possible hw conflicts. At the moment, this was done by > patching the gcc scheduler to do so, Another issue to keep is to check > for hardware conflicts across basic-block boundaries. And not the > last, is to prohibit/avoid any instruction stream modification after > scheduler (e.g., peephole optimizations etc.).
That's an overly complex approach, this usually can be done in a simpler way with a machine-specific pass that runs at the end of the RTL pipeline. -- Eric Botcazou