If you generate intermediate files using the -E or -P compiler options, the Analyzer uses the intermediate file for annotated source code, not the original source file. The #line directives generated with -E can cause problems in the assignment of metrics to source lines.
The following line appears in annotated source if there are instructions from a function that do not have line numbers referring to the source file that was compiled to generate the function:
function_name -- <instructions without line numbers>
Line numbers can be absent under the following circumstances:
You compiled without specifying the -g option.
The debugging information was stripped after compilation, or the executables or object files that contain the information are moved or deleted or subsequently modified.
The function contains code that was generated from #include files rather than from the original source file.
At high optimization, if code was inlined from a function in a different file.
The source file has #line directives referring to some other file; compiling with the -E option, and then compiling the resulting .i file is one way in which this happens. It may also happen when you compile with the -P flag.
The object file cannot be found to read line number information.
The compiler used generates incomplete line number tables.