Closed jerhard closed 1 year ago
I think this might be in compliance to the pre-C99 GNU inlining semantics, we need to carefully think this through.
Indeed, gnu89
allows for this. Also the meaning of extern inline
and inline
are swapped (except that extern inline
in gnu89 allows redefinition, while c99 inline
does not) in gnu89 and c99. One might have to handle this depending on the set language standard. I am not sure whether this is already handled in some way?
There's an option enable or disable C99
mode, but I don't think it is consulted here. When I extended inline support I focussed on adding some cases that C99 allows, that GNU90 C did not, but it was en example-program driven effort, I never stopped to carefully consider all cases.
As noted by @stilscher in https://github.com/goblint/analyzer/issues/836#issuecomment-1289167201, the merging in
Cil
does not behave correctly for inline functions.