This patch disables early inlining when --coverage option is specified. This improves coverage data in presence of other optimizations, specially with -O2 where early inlining changes the control flow graph sufficiently enough to generate seemingly very odd source coverage.
Bootstrapped okay and regression tests passed. Okay for google/gcc-4_6? 2011-09-30 Sharad Singhai <sing...@google.com> * gcc.c (cc1_options): Added -fno-early-inlining for coverage. Index: gcc.c =================================================================== --- gcc.c (revision 179402) +++ gcc.c (working copy) @@ -776,7 +776,7 @@ %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ %{fsyntax-only:-o %j} %{-param*}\ %{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\ - %{coverage:-fprofile-arcs -ftest-coverage}"; + %{coverage:-fprofile-arcs -ftest-coverage -fno-early-inlining}"; /* If an assembler wrapper is used to invoke post-assembly tools like MAO, --save-temps need to be passed to save the output of -- This patch is available for review at http://codereview.appspot.com/5173042