aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-lang.h
diff options
context:
space:
mode:
authorSandra Loosemore <sloosemore@baylibre.com>2025-02-09 21:34:36 +0000
committerSandra Loosemore <sloosemore@baylibre.com>2025-05-15 20:25:51 +0000
commitd5a1822a5ccaa2ce7c35f04fcdcedfe92e209d84 (patch)
treefcbe8a463e986d5b9654d3952a620ceaa670d43c /gcc/c/c-lang.h
parent295dd6f754aaccacfe1708d962373ed8be3717dc (diff)
downloadgcc-d5a1822a5ccaa2ce7c35f04fcdcedfe92e209d84.zip
gcc-d5a1822a5ccaa2ce7c35f04fcdcedfe92e209d84.tar.gz
gcc-d5a1822a5ccaa2ce7c35f04fcdcedfe92e209d84.tar.bz2
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 <julian@codesourcery.com>
Diffstat (limited to 'gcc/c/c-lang.h')
-rw-r--r--gcc/c/c-lang.h8
1 files changed, 8 insertions, 0 deletions
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<c_omp_declare_target_attr, va_gc>
@@ -80,5 +85,8 @@ extern GTY(()) vec<c_omp_declare_target_attr, va_gc>
#pragma omp end assumes (and how many times when nested). */
extern GTY(()) vec<c_omp_begin_assumes_data, va_gc>
*current_omp_begin_assumes;
+/* And similarly for #pragma omp begin/end declare variant. */
+extern GTY(()) vec<c_omp_declare_variant_attr, va_gc>
+ *current_omp_declare_variant_attribute;
#endif /* ! GCC_C_LANG_H */