https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89450

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |egallager at gcc dot gnu.org

--- Comment #6 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #5)
> (In reply to Martin Liška from comment #0)
> > Issues is that:
> > 
> >  14746        /* If -fstrict-enums, still constrain TYPE_MIN/MAX_VALUE.  */
> >  14747        if (flag_strict_enums)
> >  14748          set_min_and_max_values_for_integral_type (enumtype,
> > precision, sgn);
> > 
> > is called for precision, which sets min = 0 and max = 7.
> 
> Because that's how enums work in C++, as required by the standard.
> 
> That's not an issue.
>  
> > What about doing:
> > 
> > diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
> > index 612afbacd27..46302b4a61d 100644
> > --- a/gcc/cp/decl.c
> > +++ b/gcc/cp/decl.c
> > @@ -14745,7 +14745,10 @@ finish_enum_value_list (tree enumtype)
> >  
> >        /* If -fstrict-enums, still constrain TYPE_MIN/MAX_VALUE.  */
> >        if (flag_strict_enums)
> > -   set_min_and_max_values_for_integral_type (enumtype, precision, sgn);
> > +   {
> > +     TYPE_MIN_VALUE (enumtype) = minnode;
> > +     TYPE_MAX_VALUE (enumtype) = maxnode;
> > +   }
> >      }
> >    else
> >      underlying_type = ENUM_UNDERLYING_TYPE (enumtype);
> > 
> > I can also imagine another option level when desired.
> 
> Please no. -fstrict-enums currently makes the compiler *more* strictly
> conforming, by following the rules of the standard. Your suggestion arguably
> makes it *less* conforming, by deciding that valid values should emit a
> warning.
> 
> What you want is not how enums work in C++. Please don't abuse
> -fstrict-enums when what you want is "some other kind of enum, not one that
> strictly follows the C++ standard".

This reminds me, I think there are some other related bug reports out there,
but I can't find them right now...

Reply via email to