This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] More CCP fixes [patch]
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Neil Booth <neil at daikokuya dot co dot uk>
- Cc: Richard Henderson <rth at redhat dot com>, Jason Merrill <jason at redhat dot com>, Diego Novillo <dnovillo at redhat dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 12 Aug 2002 16:18:36 -0700
- Subject: Re: [tree-ssa] More CCP fixes [patch]
--On Monday, August 12, 2002 11:55:12 PM +0100 Neil Booth
<neil@daikokuya.co.uk> wrote:
It's true in C99 to the best of my knowledge. C++ could well be
different. Is that what you're referring to? If so, hmm, things
could be even more complicated.
No, I think it's the same -- but I don't have a C99 standard handy.
The C++ standard has no notion of a "3-bit integer type". It has
bool, char, short, int, long, and wchar_t, with signed/unsigned
variants as appropriate.
The C++ standard says:
A member-declarator of the form identifieropt : constant-expression
specifies a bit-field; its length is set off from the bit-field name
by a colon. The bit-field attribute is not part of the type of the
class member.
Note the last sentence.
I'm not sure that the C++ standard says what happens when you assign
"12" to a 2-bit bitfield. (Do you get truncation, or undefined
behavior?) It does provide certain guarantees about assigning booleans
and enumerals to bitfields and then reading their values back.
The front end shouldn't be dealing in types that don't exist in the
language. If, at some point, some code-generation thingy needs to
mess about with things -- including creating new types -- well,
that's its business and I've no objection.
My opinion is that in the front end we shouldn't be doing anything
special about bitfields. They should have the type they are declared
to have, and they should be used in the tree just like any other
FIELD_DECL; except, of course, that their cannot be an ADDRESS_EXPR
around them. Values assigned to bitfields should have the same type
as the bitfield.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com