This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gomp4] Replace enum omp_clause_map_kind with enum gomp_map_kind (was: Including a file from include/ in gcc/*.h)


On Mon, Jan 12, 2015 at 05:32:14PM +0100, Thomas Schwinge wrote:
> I have now committed the patch to gomp-4_0-branch in the following form.
> The issues raised above remain to be resolved.
> 
> In spirit against the tree.h header flattening, I had to keep the
> #include "include/gomp-constants.h" in gcc/tree-core.h, because otherwise
> I'd have to add it to a ton of *.c files, just for the enum gomp_map_kind
> definition.
> 
> I found that in the C++ dialect used by GCC, it is not possible to
> declare an enum without giving the list of enumerators.  N2764 (from
> 2008) resolved this by adding appropriate syntax for declaring enums,
> however: "warning: scoped enums only available with -std=c++11 or
> -std=gnu++11".  If it were possible to use this, we could add to
> gcc/tree-core.h:
> 
>     enum gomp_map_kind : char;
> 
> ... (or similar), and this way decouple the declaration (gcc/tree-core.h)
> From the actual "population of it" (include/gomp-constants.h).
> Alternatively, in gcc/tree-core.h:struct tree_omp_clause, we could switch
> the map_kind member from enum gomp_map_kind to a char -- but that would
> defeat the usage of an enum (easy pretty-printing of its enumerators in
> GDB, and so on.).

Or just don't do this and duplicate the constants and just assert somewhere
(in omp-low.c) at compile time that all the values match.
Either using char and casting the value only in the OMP_* macros
or duplicating the values sound preferrable over including
include/gomp-constants.h from tree-core.h.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]