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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-08-05
                 CC|                            |glisse at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
AKA r264790

-O2 or -O3 is required to demonstrate the bug.

Further reduced:

extern "C" int puts(const char*);

enum E { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15,
e16, e17, e18, e19, e20, e21, e22, e23, e24, e25 };

void g()
{
        puts("e11 || e12 || e13");
}
void j()
{
        puts("default");
}

void f(E e)
{
        switch (e) {
                case e11:
                case e12:
                case e13: g(); break;
                case e24: break;
                case e14:
                case e15: break;
                default: j(); break;
        }
}

int main()
{
        volatile const E e{e3};
        f(e);
}

Reply via email to