A traditional compiler has frontend (parsing, semantic analysis), middle-end (IR, optimizations), and backend (code generation). A tasking compiler adds new layers and modifies existing ones.
The compiler can now see the DAG (Directed Acyclic Graph) of tasks at compile time. tasking compiler