https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115076
--- Comment #2 from sandra at gcc dot gnu.org --- Thinking about this some more, probably a new tree node type like OMP_VARIANT_CALL needs to be introduced, that captures the variants in scope at the call site and the arguments. The problem with re-using OMP_METADIRECTIVE with a CALL_EXPR for each variant is that the adjust_args/append_args information from the declare variant directive needs to be captured as well as the selector. That's presently stored globally and processed in gimplify_call_expr() -- see PR118457, which aims to move that code to variant resolution instead (because it does not currently handle variants with dynamic selectors or that require late resolution).