In the process of converting a C file to CIL we drop the unused prototypes and even inline function definitions. This results in much smaller files. If you do not want this behavior then you must pass the --keepunused argument to the CIL application.
Alternatively you can put the following pragma in the code (instructing CIL to specifically keep the declarations and definitions of the function func1 and variable var2, the definition of type foo and of structure bar):
#pragma cilnoremove("func1", "var2", "type foo", "struct bar")