The effects of code motion
Sometimes the compiler detects that it can generate better machine
code by moving part or all of a statement to a different place in
the execution flow. For example, for the following high-level statements:
IF A=B THEN X=55;
ELSE Y=55;
the compiler might determine that it needs a constant
of 55 on both the true and false paths.The compiler might then generate the following machine code:
L R1,=F'55'
*IF A=B
L R0,A
C R0,B
BNE FALSE
*THEN X=55;
ST R1,X
B BOTH
*ELSE Y=55;
FALSE ST R1,Y
BOTH ...
Coverage Utility uses the machine code that is generated by the compiler to associate machine code with high-level statements. When the compiler indicates that a machine instruction is part of a given statement, Coverage Utility associates that statement with the instruction. Thus, instructions that are generated from a different statement and moved due to optimization are reported as if they were generated from the associated statement.