(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
torture/
pr86816.C
// { dg-do compile }

class Signal
{
public:
    int  m_Mode;
};

class Ctx
{
public:
    bool  m_Invert;

    void DoSomething();
};

class Test
{
  void TestIce( Ctx& ctx, Signal* sig);
};

void Test::TestIce( Ctx& ctx, Signal* sig)
{
  int invert = false;

  if( ! ctx.m_Invert)
    invert = ! invert;

  switch( sig->m_Mode)
    {
    case 1:
    invert = ! invert;
    break;

    case 2:
    invert = true;
    break;
    }

  if( invert)
    ctx.DoSomething();
}