I've looked through all the commits on our CIL fork since diverging from upstream, to see what needs to be ported to retain all of our functionality when using goblint CIL.
Importantly, the comparison branch is my fork of Peter's fork Tom's fork of Goblint-CIL, which already has some changes, that are not listed here
This really should live in our CIL's repo, but there is no issue tracker there
There are some more complex features added that warrant more explanation than their original commit message.
Support for ISO/IEC 'interchange and extended' floating-point types.
This needs to be reimplemented at Goblint CIL's version, which is based on their int128 and complexes. Fairly straightforward
- [ x ] caab1d2ed2aef322f807e3c1b60c62c23ddf94e2
Extern Inline
There is a lot of work in our branch to handle inlining better.
Commits
Feat:
Documentation:
Test case:
Alias handling
Previously, CIL's handling of gcc's alias attribute was broken. It would
Create a new function, rather than a linker alias, and it would not work
for varargs functions or any kind of variable.
In Goblint, alias-attributed declarations are represented as GVarDecl (a declaration/prototype node) with the alias attribute preserved on the varinfo — rather than generating a new GFun (a full function definition). See the test:
goblint / cil / test / small1 / typeof1.c
Porting variadic aliases is needed, though, which lives in two commits:
Minor Things
This subsection is a sink of one-commit fixes that are yet to be ported. Most should be cherry-pickable
Wontfix
- d41c601e407eba9317d913569c7765ff3ec32d66 Goblint Conflict potential
- This was added to support static assert but goblint already does that
- 8de3105
- This commit is merely a log output change
- 6dc5bcf7875cad35961721a67b9dc265bfe7278f
- Turns out this was fixed by goblint already after all
- a570678157a198dec97f25beecd28d5be633e9b0
5e430e83e2ca8707070838a1a2993d221d82855b
I've looked through all the commits on our CIL fork since diverging from upstream, to see what needs to be ported to retain all of our functionality when using goblint CIL.
Importantly, the comparison branch is my fork of Peter's fork Tom's fork of Goblint-CIL, which already has some changes, that are not listed here
This really should live in our CIL's repo, but there is no issue tracker there
There are some more complex features added that warrant more explanation than their original commit message.
Support for ISO/IEC 'interchange and extended' floating-point types.
This needs to be reimplemented at Goblint CIL's version, which is based on their int128 and complexes. Fairly straightforward
Extern Inline
There is a lot of work in our branch to handle inlining better.
Commits
Feat:
Documentation:
Test case:
Alias handling
In Goblint, alias-attributed declarations are represented as GVarDecl (a declaration/prototype node) with the alias attribute preserved on the varinfo — rather than generating a new GFun (a full function definition). See the test:
goblint / cil / test / small1 / typeof1.cPorting variadic aliases is needed, though, which lives in two commits:
Minor Things
This subsection is a sink of one-commit fixes that are yet to be ported. Most should be cherry-pickable
Wontfix
5e430e83e2ca8707070838a1a2993d221d82855b