= get_identifier ((const char *)
cpp_token_as_text (pfile, nxt_token));
attr_id = canonicalize_attr_name (attr_id);
- if (c_dialect_cxx ())
- {
- /* OpenMP attributes need special handling. */
- if ((flag_openmp || flag_openmp_simd)
- && is_attribute_p ("omp", attr_ns)
- && (is_attribute_p ("directive", attr_id)
- || is_attribute_p ("sequence", attr_id)))
- result = 1;
- }
+ /* OpenMP attributes need special handling. */
+ if ((flag_openmp || flag_openmp_simd)
+ && is_attribute_p ("omp", attr_ns)
+ && (is_attribute_p ("directive", attr_id)
+ || is_attribute_p ("sequence", attr_id)
+ || is_attribute_p ("decl", attr_id)))
+ result = 1;
if (result)
attr_name = NULL_TREE;
else
/* { dg-do compile } */
/* { dg-options "-fopenmp" } */
-#if __has_attribute(omp::directive)
-#ifndef __cplusplus
-#error omp::directive supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::directive not supported in C++
-#endif
+#if !__has_attribute(omp::directive)
+#error omp::directive not supported in C/C++
#endif
-#if __has_attribute(omp::sequence)
-#ifndef __cplusplus
-#error omp::sequence supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::sequence not supported in C++
+#if !__has_attribute(omp::sequence)
+#error omp::sequence not supported in C/C++
#endif
+
+#if !__has_attribute(omp::decl)
+#error omp::decl not supported in C/C++
#endif
#if __has_attribute(omp::unknown)
#error omp::unknown supported
#endif
-#if __has_cpp_attribute(omp::directive)
-#ifndef __cplusplus
-#error omp::directive supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::directive not supported in C++
-#endif
+#if !__has_cpp_attribute(omp::directive)
+#error omp::directive not supported in C/C++
#endif
-#if __has_cpp_attribute(omp::sequence)
-#ifndef __cplusplus
-#error omp::sequence supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::sequence not supported in C++
+#if !__has_cpp_attribute(omp::sequence)
+#error omp::sequence not supported in C/C++
#endif
+
+#if !__has_cpp_attribute(omp::decl)
+#error omp::sequence not supported in C/C++
#endif
#if __has_cpp_attribute(omp::unknown)
#error omp::unknown supported
#endif
-#if __has_attribute(__omp__::__directive__)
-#ifndef __cplusplus
-#error __omp__::__directive__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__directive__ not supported in C++
-#endif
+#if !__has_attribute(__omp__::__directive__)
+#error __omp__::__directive__ not supported in C/C++
#endif
-#if __has_attribute(__omp__::__sequence__)
-#ifndef __cplusplus
-#error __omp__::__sequence__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__sequence__ not supported in C++
+#if !__has_attribute(__omp__::__sequence__)
+#error __omp__::__sequence__ not supported in C/C++
#endif
+
+#if !__has_attribute(__omp__::__decl__)
+#error __omp__::__decl__ not supported in C/C++
#endif
#if __has_attribute(__omp__::__unknown__)
#error __omp__::__unknown__ supported
#endif
-#if __has_cpp_attribute(__omp__::__directive__)
-#ifndef __cplusplus
-#error __omp__::__directive__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__directive__ not supported in C++
-#endif
+#if !__has_cpp_attribute(__omp__::__directive__)
+#error __omp__::__directive__ not supported in C/C++
#endif
-#if __has_cpp_attribute(__omp__::__sequence__)
-#ifndef __cplusplus
-#error __omp__::__sequence__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__sequence__ not supported in C++
+#if !__has_cpp_attribute(__omp__::__sequence__)
+#error __omp__::__sequence__ not supported in C/C++
#endif
+
+#if !__has_cpp_attribute(__omp__::__decl__)
+#error __omp__::__decl__ not supported in C/C++
#endif
#if __has_cpp_attribute(__omp__::__unknown__)
#error __omp__::__unknown__ supported
#endif
-#if __has_attribute(omp::__directive__)
-#ifndef __cplusplus
-#error omp::__directive__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::__directive__ not supported in C++
-#endif
+#if !__has_attribute(omp::__directive__)
+#error omp::__directive__ not supported in C/C++
#endif
-#if __has_attribute(__omp__::sequence)
-#ifndef __cplusplus
-#error __omp__::sequence supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::sequence not supported in C++
+#if !__has_attribute(__omp__::sequence)
+#error __omp__::sequence not supported in C/C++
#endif
+
+#if !__has_attribute(omp::__decl__)
+#error omp::__decl__ not supported in C/C++
#endif
#if __has_attribute(omp::__unknown__)
#error omp::__unknown__ supported
#endif
-#if __has_cpp_attribute(__omp__::directive)
-#ifndef __cplusplus
-#error __omp__::directive supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::directive not supported in C++
-#endif
+#if !__has_cpp_attribute(__omp__::directive)
+#error __omp__::directive not supported in C/C++
#endif
-#if __has_cpp_attribute(omp::__sequence__)
-#ifndef __cplusplus
-#error omp::__sequence__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::__sequence__ not supported in C++
+#if !__has_cpp_attribute(omp::__sequence__)
+#error omp::__sequence__ not supported in C/C++
#endif
+
+#if !__has_cpp_attribute(__omp__::decl)
+#error __omp__::decl not supported in C/C++
#endif
#if __has_cpp_attribute(__omp__::unknown)
/* { dg-do compile } */
/* { dg-options "-fno-openmp -fopenmp-simd" } */
-#if __has_attribute(omp::directive)
-#ifndef __cplusplus
-#error omp::directive supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::directive not supported in C++
-#endif
+#if !__has_attribute(omp::directive)
+#error omp::directive not supported in C/C++
#endif
-#if __has_attribute(omp::sequence)
-#ifndef __cplusplus
-#error omp::sequence supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::sequence not supported in C++
+#if !__has_attribute(omp::sequence)
+#error omp::sequence not supported in C/C++
#endif
+
+#if !__has_attribute(omp::decl)
+#error omp::decl not supported in C/C++
#endif
#if __has_attribute(omp::unknown)
#error omp::unknown supported
#endif
-#if __has_cpp_attribute(omp::directive)
-#ifndef __cplusplus
-#error omp::directive supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::directive not supported in C++
-#endif
+#if !__has_cpp_attribute(omp::directive)
+#error omp::directive not supported in C/C++
#endif
-#if __has_cpp_attribute(omp::sequence)
-#ifndef __cplusplus
-#error omp::sequence supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::sequence not supported in C++
+#if !__has_cpp_attribute(omp::sequence)
+#error omp::sequence not supported in C/C++
#endif
+
+#if !__has_cpp_attribute(omp::decl)
+#error omp::sequence not supported in C/C++
#endif
#if __has_cpp_attribute(omp::unknown)
#error omp::unknown supported
#endif
-#if __has_attribute(__omp__::__directive__)
-#ifndef __cplusplus
-#error __omp__::__directive__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__directive__ not supported in C++
-#endif
+#if !__has_attribute(__omp__::__directive__)
+#error __omp__::__directive__ not supported in C/C++
#endif
-#if __has_attribute(__omp__::__sequence__)
-#ifndef __cplusplus
-#error __omp__::__sequence__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__sequence__ not supported in C++
+#if !__has_attribute(__omp__::__sequence__)
+#error __omp__::__sequence__ not supported in C/C++
#endif
+
+#if !__has_attribute(__omp__::__decl__)
+#error __omp__::__decl__ not supported in C/C++
#endif
#if __has_attribute(__omp__::__unknown__)
#error __omp__::__unknown__ supported
#endif
-#if __has_cpp_attribute(__omp__::__directive__)
-#ifndef __cplusplus
-#error __omp__::__directive__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__directive__ not supported in C++
-#endif
+#if !__has_cpp_attribute(__omp__::__directive__)
+#error __omp__::__directive__ not supported in C/C++
#endif
-#if __has_cpp_attribute(__omp__::__sequence__)
-#ifndef __cplusplus
-#error __omp__::__sequence__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::__sequence__ not supported in C++
+#if !__has_cpp_attribute(__omp__::__sequence__)
+#error __omp__::__sequence__ not supported in C/C++
#endif
+
+#if !__has_cpp_attribute(__omp__::__decl__)
+#error __omp__::__decl__ not supported in C/C++
#endif
#if __has_cpp_attribute(__omp__::__unknown__)
#error __omp__::__unknown__ supported
#endif
-#if __has_attribute(omp::__directive__)
-#ifndef __cplusplus
-#error omp::__directive__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::__directive__ not supported in C++
-#endif
+#if !__has_attribute(omp::__directive__)
+#error omp::__directive__ not supported in C/C++
#endif
-#if __has_attribute(__omp__::sequence)
-#ifndef __cplusplus
-#error __omp__::sequence supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::sequence not supported in C++
+#if !__has_attribute(__omp__::sequence)
+#error __omp__::sequence not supported in C/C++
#endif
+
+#if !__has_attribute(omp::__decl__)
+#error omp::__decl__ not supported in C/C++
#endif
#if __has_attribute(omp::__unknown__)
#error omp::__unknown__ supported
#endif
-#if __has_cpp_attribute(__omp__::directive)
-#ifndef __cplusplus
-#error __omp__::directive supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error __omp__::directive not supported in C++
-#endif
+#if !__has_cpp_attribute(__omp__::directive)
+#error __omp__::directive not supported in C/C++
#endif
-#if __has_cpp_attribute(omp::__sequence__)
-#ifndef __cplusplus
-#error omp::__sequence__ supported in C
-#endif
-#else
-#ifdef __cplusplus
-#error omp::__sequence__ not supported in C++
+#if !__has_cpp_attribute(omp::__sequence__)
+#error omp::__sequence__ not supported in C/C++
#endif
+
+#if !__has_cpp_attribute(__omp__::decl)
+#error __omp__::decl not supported in C/C++
#endif
#if __has_cpp_attribute(__omp__::unknown)
#error omp::sequence supported even when -fno-openmp{,-simd}
#endif
+#if __has_attribute(omp::decl)
+#error omp::decl supported even when -fno-openmp{,-simd}
+#endif
+
#if __has_attribute(omp::unknown)
#error omp::unknown supported
#endif
#error omp::sequence supported even when -fno-openmp{,-simd}
#endif
+#if __has_cpp_attribute(omp::decl)
+#error omp::decl supported even when -fno-openmp{,-simd}
+#endif
+
#if __has_cpp_attribute(omp::unknown)
#error omp::unknown supported
#endif
#error __omp__::__sequence__ supported even when -fno-openmp{,-simd}
#endif
+#if __has_attribute(__omp__::__decl__)
+#error __omp__::__decl__ supported even when -fno-openmp{,-simd}
+#endif
+
#if __has_attribute(__omp__::__unknown__)
#error __omp__::__unknown__ supported
#endif
#error __omp__::__sequence__ supported even when -fno-openmp{,-simd}
#endif
+#if __has_cpp_attribute(__omp__::__decl__)
+#error __omp__::__decl__ supported even when -fno-openmp{,-simd}
+#endif
+
#if __has_cpp_attribute(__omp__::__unknown__)
#error __omp__::__unknown__ supported
#endif
#error __omp__::sequence supported even when -fno-openmp{,-simd}
#endif
+#if __has_attribute(omp::__decl__)
+#error omp::__decl__ supported even when -fno-openmp{,-simd}
+#endif
+
#if __has_attribute(omp::__unknown__)
#error omp::__unknown__ supported
#endif
#error omp::__sequence__ supported even when -fno-openmp{,-simd}
#endif
+#if __has_cpp_attribute(__omp__::decl)
+#error __omp__::decl supported even when -fno-openmp{,-simd}
+#endif
+
#if __has_cpp_attribute(__omp__::unknown)
#error __omp__::unknown supported
#endif