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

            Bug ID: 115434
           Summary: Post contracts are ignored on functions with no return
                    statement.
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: iains at gcc dot gnu.org
  Target Milestone: ---

This applies to void functions and coroutines (which usually have a return
object but do not have a return statement).

e.g:
void foo (const int b) pre ( b == 9 )  // contract checked
{}
int main()
{
   foo(3);
}

void foo (const int b) post ( b == 9 )  // contract not checked
{}
int main()
{
   foo(3);
}

int foo (const int b) post ( b == 9 )  // contract checked
{
  return 1;
}
int main()
{
   foo(3);
}

======

I was expecting the original function body to be wrapped in a try/finally block
with the post function as the cleanup.  Same back to 13.3 so it does not appear
to be a regression.

Reply via email to