From d5a1822a5ccaa2ce7c35f04fcdcedfe92e209d84 Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Sun, 9 Feb 2025 21:34:36 +0000 Subject: OpenMP: C front end support for "begin declare variant" gcc/c/ChangeLog * c-decl.cc (current_omp_declare_variant_attribute): Define. * c-lang.h (struct c_omp_declare_variant_attr): Declare. (current_omp_declare_variant_attribute): Declare. * c-parser.cc (c_parser_skip_to_pragma_omp_end_declare_variant): New. (c_parser_translation_unit): Check for "omp begin declare variant" with no matching "end". (c_parser_declaration_or_fndef): Handle functions in "omp begin declare variant" block. (c_finish_omp_declare_variant): Merge context selectors with surrounding "omp begin declare variant". (JOIN_STR): Define. (omp_start_variant_function): New. (omp_finish_variant_function): New. (c_parser_omp_begin): Handle "omp begin declare variant". (c_parser_omp_end): Likewise. Co-Authored-By: Julian Brown --- gcc/c/c-lang.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'gcc/c/c-lang.h') diff --git a/gcc/c/c-lang.h b/gcc/c/c-lang.h index 4b93d18..cd68fc0 100644 --- a/gcc/c/c-lang.h +++ b/gcc/c/c-lang.h @@ -72,6 +72,11 @@ struct GTY(()) c_omp_begin_assumes_data { bool attr_syntax; }; +struct GTY(()) c_omp_declare_variant_attr { + bool attr_syntax; + tree selector; +}; + /* If non-empty, implicit "omp declare target" attribute is added into the attribute lists. */ extern GTY(()) vec @@ -80,5 +85,8 @@ extern GTY(()) vec #pragma omp end assumes (and how many times when nested). */ extern GTY(()) vec *current_omp_begin_assumes; +/* And similarly for #pragma omp begin/end declare variant. */ +extern GTY(()) vec + *current_omp_declare_variant_attribute; #endif /* ! GCC_C_LANG_H */ -- cgit v1.1