-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
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
C99 support #9
Comments
Tests for these things can be added to this branch of CIL: https://github.com/goblint/cil/tree/c99 |
The support for inline is not 100% complete, e.g. if I have two files like this:
For C99 (and its inline semantic) you can If we run
For It is a limitation, but I don't think it is obvious how this should be fixed and also not how common this actually is. Relevant link on |
|
It looks like we now have full C99 support! |
CIL supports C90/GNU90 ("the CIL front-end is able to process not only ANSI-C programs but also those using Microsoft C or GNU C extensions")
Ugly examples: http://cil-project.github.io/cil/doc/html/cil/cil016.html
To check/implement from wiki/C99:
long long
__int128
, not supported by GCC, see here)_Bool
(fixed by Unsoundness with regard to C99 _Bool type analyzer#76)float _Complex, double _Complex, long double _Complex
__attribute__ ((__complex__))
when it should really only be__complex__
)_Float128
..., "float_t
/double_t
From
cil.mli
:a[]
at end of struct, take up rest of malloc'ed space, example), already workedfunction((struct x) {1, 2}))[6]
restrict
qualification allows more aggressive code optimization, removing compile-time array access advantages previously held by FORTRAN over ANSI C (see here) [turned into attribute__restrict
by CIL]The text was updated successfully, but these errors were encountered: