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

--- Comment #2 from Frank Heckenbach <f.heckenb...@fh-soft.de> ---
This should cover all cases mentioned:

void t (bool a, int i, float e, double f)
{
  // Boolean literal comparisons
  if (a == true)  // better: if (a)
    return;
  if (a == false)  // better: if (!a)
    return;
  if (a != true)  // better: if (!a)
    return;
  if (a != false)  // better: if (a)
    return;
  // also reversed to be sure
  if (true == a)  // better: if (a)
    return;
  if (false != a)  // better: if (a)
    return;

  // Integer comparisons to Boolean literals
  if (i == true)  // better: if (i == 1)
    return;
  if (i == false)  // better: if (i == 0) or: if (!i)
    return;  
  if (i != true)  // better: if (i != 1)
    return;
  if (i != false)  // better: if (i != 0) or: if (i)
    return;

  // Floating-point comparisons to Boolean literals
  if (e == true)  // very strange at all, if meant so, then better: if (e ==
1.0f)
    return;
  if (f == false)  // very strange at all, if meant so, then better: if (f ==
0.0)
    return;
}

Reply via email to