This function is responsible for checking the legality of fusing an instance of load -> op -> store into a single operation. In the SystemZ backend the check was incomplete and a test case emerged with a cycle in the DAG as a result.
Instead of using the NodeIds to determine node relationships, hasPredecessorHelper() now is used just like in the X86 backend. This handled the failing tests and as well gave a few additional transformations on benchmarks.
The SystemZ isFusableLoadOpStorePattern() is a a very near copy of the X86 function, and it seems this could be made a utility function in common code instead.