Previously only users of the first merged load's chain were merged which
potentially allows the merged load to elided from the chain of nodes
chained off of another of the merged loads.
Details
Diff Detail
Event Timeline
This looks wrong, as it's losing the *original* load from the chain now.
Uses of any of the original chain outputs should be modified to depend on BOTH the original load, and the new load (through a TokenFactor), because I don't believe we are actually necessarily removing the original load during these transforms. That is, I think the original code was correct and necessary, as far as it went -- the issue was only that it failed to do the exact same thing for the output chains of any but the first load.
Also, please reference the PR for this.
Uses of any of the original chain outputs should be modified to depend on BOTH the original load, and the new load (through a TokenFactor), because I don't believe we are actually necessarily removing the original load during these transforms. That is, I think the original code was correct and necessary, as far as it went -- the issue was only that it failed to do the exact same thing for the output chains of any but the first load.
Right. Since it's duplicated there's no reason to expect them to be evaluated the same, but this would drop any WAR hazard on those just loads.
Nirav are you still looking at this? We just got stung by a similar problem in broadcasts (D25039).