ScheduleDAGInstrs used to use artifical edges between the barrier instruction and its predecessor instead. While this makes sense for live-out values that aren't actually used right away I don't see a good reason to do that for the uses in the instruction itself. This changes the code to use Data dependencies.
It also changes MacroFusion code to exclusively look at data dependencies.