Help with bit-field semantics in C and C++
Mark Mitchell
mark@codesourcery.com
Tue Aug 24 17:55:00 GMT 2004
Joe Buck wrote:
>[ issues connected with limited range of C++ enums ]
>On Tue, Aug 24, 2004 at 10:32:39AM -0600, Roger Sayle wrote:
>
>
>>I'm happy with the explanations so far. The next question is, if
>>the middle-end is supposed to treat loads, stores and comparisons
>>of these types identically to the underlying integer type for the
>>enumeration, is there a benefit for setting TYPE_PRECISION lower
>>than GET_MODE_BITSIZE for C++'s enumerated types?
>>
>>
>
>I think that the middle end should, at least by default, try to generate
>the best code possible for conformant programs that use C++ enums. In
>most cases, that probably means treating them as belonging to the
>underlying integer type; the exception would be where the limited range
>allows for, say, more efficient switch statements, or to determine that
>some code is unreachable.
>
>
I agree.
PR 10796 was the motivation for the current implementation. A secondary
motivation was, as Joe says, to allow the middle-end to generate better
code for switch/if/etc. situations where it could prove that, because of
the limited range, certain values were impossible.
--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com
More information about the Gcc
mailing list