Let's start with C (3/6) instead of C++ (2/6) as it should be simpler …
* * *
For what it is worth, the 'c-family/c-omp.cc' change in the 2/6 patch LGTM,
just in case you want to commit things out of order …
Side remark, mostly because that I don't forgot it myself:
* c-omp.cc (c_omp_directives): Uncomment "begin declare variant"
and "end declare variant".
We actually forgot to update/uncomment the metadirective entries
(and declare mapper). I wonder whether we forgot more ...
...
In the weeks between writing this remark and now continuing, I have
fixed. However, it means that this chunk of 2/6 needs to be (trivially)
rediffed. Otherwise, nothing has bitrotted as far as I can see.
* * *
Sandra Loosemore wrote:
+ /* If this function was in a "begin declare variant" block,
+ remember it. We will associate it with the base function at
+ the end of processing the translation unit, since it is permitted
+ for the variant definition to appear before the base declaration. */
+ if (dv_base && current_function_decl != error_mark_node)
+ {
+ omp_begin_declare_variant_map_entry e
+ = { current_function_decl, dv_base, dv_ctx };
+ vec_safe_push (omp_begin_declare_variant_map, e);
+ }
The idea seems to be that it is even valid without any declared
base function – and then error out. However, that's not fully
specified (cf. OpenMP specification Issue 4464); as mentioned in 5/6,
let's use the current version for now – and worry about this later.
Otherwise, I have nothing spotted here. - Hence, a very belated: LGTM.
Tobias