LCOMP(1) LCOMP(1) NAME lcomp, lprint - line-by-line profiler SYNOPSIS lcomp [options] ... file ... lprint [options] [files] DESCRIPTION Lcomp is used in place of cc (1) or f77 (1) to insert instruction-counting code into programs. It recognizes options whose initial letters are taken from the string ``cwpDUIRdlNnz'', and accepts files whose names end in `.c', `.f', `.s', or `.o'. From each source file it derives a `.o' file and a `.sL' file which lprint uses to correlate source lines with basic blocks. If the -c option is not present it creates a.out. Each time the `a.out' file is run statistics are added to a profiling file prof.out. Lprint produces on the standard output a listing (in the style of pr(1)) of the programs compiled by lcomp. Without arguments or files, each line of the listing is preceded by the number of times it was executed, as determined from the data in prof.out. Lprint interprets the following options. -a Detailed listing of every machine instruction and how often it was executed. -b Attempts to indicate how often each basic block was executed. -c Compress the prof.out file, which otherwise grows with every execution of a.out . -f Print summary information by function: instruction exe- cutions, number of invocations, source instructions, and number of instructions never executed. -i Before each line of source print the number of machine instructions executed. -p Before each line of source print the number of times the first basic block in that line was executed. -s Summarize the counts by source file: instruction exec- tuions, source instructions, instructions never exe- cuted, basic block executions, total number of source basic blocks, and how many were never executed. If any file names are given, the arguments "abip" apply only LCOMP(1) LCOMP(1) to them. If no options are given, -p is assumed. Any com- bination of options is allowed. FILES prof.out counts *.sL for correlating with source /usr/lib/bb finding basic blocks and inserting counting code /usr/lib/nexit.oprinting counts when `a.out' exits SEE ALSO cc(1), f77(1) BUGS A line in the source file may be in zero, one, or more basic blocks; the count given in the listing corresponds to some particular choice of the basic block to associate with the line. Processing the output of yacc(1) without removing `#line' directives will produce unsatisfactory results.