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

            Bug ID: 108155
           Summary: no warning for for (int i = 1; 1 <= 12; ++i)
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
            Blocks: 87403
  Target Milestone: ---

Somehow I typed a 1 instead of i for the loop condition, and so the loop ran
forever.

It seems like we should warn for logical-or-expression that only involves
constant expressions. I don't see why anybody would write `1 != 12` or `x || 1
< y`.

void foo(int) { }

int main()
{
  for (int i = 1; 1 <= 12; ++i)
    foo(i);
}


Even better would be to warn for expressions like `1 < y` where y is not a
constant, but is known to be unchanged by the loop.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87403
[Bug 87403] [Meta-bug] Issues that suggest a new warning

Reply via email to