We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
void _Noreturn exit(int status); /*@ spec exit(i32 status); requires true; ensures true; @*/ void _Noreturn exit1(int status) { } void _Noreturn exit2(int status) { exit(status); }
% cn verify noreturn.c [1/2]: exit1 -- fail [2/2]: exit2 -- fail noreturn.c:8:1: error: Undefined behaviour void _Noreturn exit1(int status) ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ (UB missing short message): UB071_noreturn State file: ... noreturn.c:11:1: error: Undefined behaviour void _Noreturn exit2(int status) ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ (UB missing short message): UB071_noreturn State file: ...
Ok, both fail. exit1 is reasonable, it returns and it's marked _Noreturn. I think this is right and it matches the definition in undefined.lem.
exit1
_Noreturn
In the state file for exit2 I see this: Terms
exit2
This indicates exit has returned, even though it was marked _Noreturn. The UB happens in exit2 and not in exit as described in undefined.lem.
exit
Is this happening because cerberus supports _Noreturn but CN doesn't?
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Ok, both fail.
exit1
is reasonable, it returns and it's marked_Noreturn
. I think this is right and it matches the definition in undefined.lem.In the state file for
exit2
I see this:Terms
This indicates
exit
has returned, even though it was marked_Noreturn
. The UB happens inexit2
and not inexit
as described in undefined.lem.Is this happening because cerberus supports _Noreturn but CN doesn't?
The text was updated successfully, but these errors were encountered: