https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100573
--- Comment #18 from Tobias Burnus <burnus at gcc dot gnu.org> --- I think the problem is: create_omp_child_function(omp_context*, bool) ... 1916 DECL_ATTRIBUTES (decl) = DECL_ATTRIBUTES (current_function_decl); The code removes then 'omp declare simd' but not 'omp declare target' - hence, the value is kept.