================
@@ -11899,6 +11899,9 @@ def err_omp_clause_requires_dispatch_construct : Error<
   "'%0' clause requires 'dispatch' context selector">;
 def err_omp_append_args_with_varargs : Error<
   "'append_args' is not allowed with varargs functions">;
+def warn_omp_dispatch_clause_novariants_nocontext : Warning<
----------------
dreachem wrote:

The effect of the **nocontext** clause is to not add the **dispatch** construct 
to the construct trait set. It will only matter once we support **dispatch** in 
a construct trait selector (support for this is not required in 5.2, but is 
required in 6.0).

Assuming we support **dispatch** in a construct trait selector, then this is 
what the various combinations would mean:

```
novariants(0), nocontext(0): Allow selective variant substitution according to 
context match
novariants(0), nocontext(1): Allow selective variant substitution according to 
context match (NO MATCH
                             for selectors that require **dispatch** trait)
novariants(1), nocontext(0): Always call the base function (shuts off any 
variant substitution for the call)
novariants(1), nocontext(1): Always call the base function (shuts off any 
variant substitution for the call)
```

In summary, **novariants** takes precedence and **nocontext** can be ignored 
ONLY if the _do-not-use-variant_ argument evaluates to true.

https://github.com/llvm/llvm-project/pull/131838
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to