This is the mail archive of the gcc@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: Questions about a patch fixing bug #61414


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


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