[Bug c/80502] New: Provide macro to indicate OpenMP SIMD support
evan@coeus-group.com
gcc-bugzilla@gcc.gnu.org
Mon Apr 24 06:11:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80502
Bug ID: 80502
Summary: Provide macro to indicate OpenMP SIMD support
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: evan@coeus-group.com
Target Milestone: ---
Created attachment 41250
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41250&action=edit
define _OPENMP_SIMD when -fopenmp-simd or -fopenmp is passed
_OPENMP is (correctly) only defined for full OpenMP; when only -fopenmp-simd is
used there doesn't seem to be any way to detect in the preprocessor that the
compiler supports OpenMP SIMD pragmas.
It would be nice if there were a macro to determine whether they are supported
so we could do something like
#if (defined(_OPENMP) && (_OPENMP >= 201307L)) || \
(defined(_OPENMP_SIMD) && (_OPENMP_SIMD >= 201307L))
#pragma omp simd
#endif
AFAIK ICC is the only compiler with a feature like -fopenmp-simd (they call it
-openmp-simd), and they don't define anything either. I've reported the issue
to them, but in the meantime it seems GCC can choose whatever it wants without
creating any compatibility issues. Defining _OPENMP_SIMD to the version of
OpenMP supported (just like _OPENMP does) seems logicial to me. I've attached
a fairly trivial patch.
More information about the Gcc-bugs
mailing list