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

            Bug ID: 109686
           Summary: Errorneous infinite loop detection
                    (-Winfinite-recursion)
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: madhur4127 at gmail dot com
  Target Milestone: ---

This code: 

```
#define myassert(x) \
    do { \
        if (! (x) ) \
        abort(); \
    }  while (false)

static void recursive(int n) {
    myassert(n > 0);
    recursive(n - 1);
    printf("%d\n", n);
}
```

should not result in infinite recursion. Assert fails for all non-positive
integers. For positive numbers it counts down to 0 and then fails.

This affect GCC12, GCC13 and trunk: https://compiler-explorer.com/z/57qrnzdEK

Reply via email to