This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Questions about a patch fixing bug #61414
- From: "Sam van Kampen via gcc" <gcc at gcc dot gnu dot org>
- To: Jonathan Wakely <jwakely dot gcc at gmail dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Sat, 14 Oct 2017 16:19:15 +0000
- Subject: Re: Questions about a patch fixing bug #61414
- Authentication-results: sourceware.org; auth=none
- References: <20171014145006.oxzkwsnoleb6hkr6@segfault.party> <CAH6eHdQUYvhHE-5JiqppGbPbOwqozc-5W-krZrjG2XMp0HcmiQ@mail.gmail.com>
- Reply-to: Sam van Kampen <sam@segfault.party>
On Sat, Oct 14, 2017 at 04:43:33PM +0100, Jonathan Wakely wrote:
> On 14 October 2017 at 15:50, Sam van Kampen wrote:
> > Dear maintainers,
> >
> > Having come across https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61414
> > (bug #61414) quite often myself I decided I wanted to fix it.
> >
> > By reading through parts of the GCC internals manual I have
> > managed to add a warning flag, the code for which I will submit to
> > gcc-patches, but since this is my first time contributing to GCC I have
> > some questions.
> >
> > 1. When it comes to the patch, should I post it to the bug tracker
> > before sending it to gcc-patches?
>
> No. Patches go to the mailing list, not bugzilla.
>
> But you can add the URL of the gcc-patches mail to bugzilla (and then
> somebody should add the "patch" keyword to the bug).
Noted.
> > 2. A better fix for this bug would be to only warn when the number
> > of defined enumerators would not fit inside a bitfield of the
> > specified size. Seeing as I don't know the GCC internals very
> > well, I'm wondering if anyone could point me in the right
> > direction when it comes to getting the number of defined
> > enumerators in an enum type.
>
> Why does the number of enumerators make any difference?
I suppose the number of enumerators does not make any difference, but
rather the enumerator with the highest integer value. For instance, in
this example:
enum class A { A, B, C; };
struct D { A enum_field : 2; };
the enumerator with the highest integer value is C, with an integer
value of 2. This enum type therefore fits inside the bit-field in
struct D, and so the compiler should not emit a warning in my eyes.
Of course, you can cast an integer to an enum type and assign it that
way, which should probably trigger a warning if the value could be too
large (it already triggers -Woverflow if the value is a compile-time
constant).
> > 3. When it comes to documentation and tests, I've documented the
> > flag in doc/invoke.texi and will add a test in the test suite,
> > hopefully when the patch includes the check specified in 2. Are
> > there are any other places I should add documentation?
>
> No, that's all.
Thanks.
Sam