[clang][OpenMP] Diagnose non-replayable tasks in a taskgraph region
OpenMP 6.0 [14.3] forbids a replayable construct in a taskgraph region from
generating a detachable, transparent or undeferred task. None of the three can
be a graph node: a detachable task's completion event is created when the task
is generated, so a replay, which does not generate the task again, leaves the
program no event to fulfil and the node never completes; a transparent task's
dependences are matched outside the region the graph was recorded for; and an
undeferred task runs in the generating thread rather than as a node at all.
This patch implements those restrictions for Clang. Similar checks are
already present in Flang.
Assisted-By: Claude Opus 5
Pull Request: https://github.com/llvm/llvm-project/pull/225716