If the code could be parallelized it would already have happened. The parallelizer is ``greedy''. It goes parallel the moment it sees a possibility for doing so.
Now we create two entries in the tasks array. Task 0 and task 1. We move all code in into task 0. This code is something that succeeds the instruction that we depend upon, so we put it in a task for itself. Finally we move the current instruction C into task 1.
This is optimal. All the code in has sequential dependencies, so we cannot split that up further. If it did not have sequential dependencies it would already be parallel.