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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
            Summary|Calling exit() at the end   |function with _Noreturn
                   |of function triggers        |triggers infinite recursion
                   |infinite recursion warning  |warning while using the
                   |                            |attribute does not
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2023-04-15

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reduced testcase:
```
#if 1
#define noreturn _Noreturn
#else
#define noreturn [[gnu::noreturn]]
#endif

struct tree_node {
        unsigned          nr_children;
        char              name[16];
        struct tree_node  *children;
};

noreturn void fork_my_tree(const struct tree_node* pRoot)
{
  for (unsigned i = 0u; i < pRoot->nr_children; i++)
    fork_my_tree(pRoot->children + i);

  __builtin_exit(0);
}
```
Changing `#if 1` to `#if 0` fixes the warning.

Reply via email to