From: Jason Merrill Date: Sat, 15 Oct 1994 00:32:58 +0000 (+0000) Subject: (finish_enum): Disable code which forces enums to be signed, X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=13fbb038189e72f6ba1ff8ffe13de137060a7187;p=platform%2Fupstream%2Fgcc.git (finish_enum): Disable code which forces enums to be signed, since this conflicts with their use as bitfields. type_promotes_to handles promotion of enums of underlying unsigned types to signed integer types. From-SVN: r8279 --- diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index b6b4f89..d4e04f0 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -10282,9 +10282,20 @@ finish_enum (enumtype, values) if (! flag_short_enums && precision < TYPE_PRECISION (integer_type_node)) precision = TYPE_PRECISION (integer_type_node); + + /* + * The following code is unnecessary since the function + * type_promotes_to deals correctly with promotion of enums of + * underlying unsigned types to signed integer types. + * Moreover, it causes an enum bitfield to require one more bit of + * storage than defined by the ANSI/ISO C++ resolution section r.7.2 + * which defines the range of an enum. + */ +#if 0 /* Unlike the C frontend, we prefer signed types. */ if (unsignedp && int_fits_type_p (maxnode, type_for_size (precision, 0))) unsignedp = 0; +#endif TYPE_PRECISION (enumtype) = precision; TYPE_SIZE (enumtype) = NULL_TREE;