1. [gcov] Add spanning tree optimization (details)
Commit 63182c2ac0b643a60d397274e8a31166fc7243fa by i
[gcov] Add spanning tree optimization

gcov is an "Edge Profiling with Edge Counters" application according to
Optimally Profiling and Tracing Programs (1994).

The minimum number of counters necessary is |E|-(|V|-1). The unmeasured edges
form a spanning tree. Both GCC --coverage and clang -fprofile-generate leverage
this optimization. This patch implements the optimization for clang --coverage.
The produced .gcda files are much smaller now.
The file was modifiedclang/test/CodeGen/code-coverage-tsan.c (diff)
The file was modifiedllvm/test/Transforms/GCOVProfiling/atomic-counter.ll (diff)
The file was modifiedcompiler-rt/test/profile/Posix/gcov-fork.c (diff)
The file was addedllvm/test/Transforms/GCOVProfiling/split-indirectbr-critical-edges.ll
The file was modifiedllvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp (diff)
The file was modifiedcompiler-rt/test/profile/gcov-dump-and-remove.c (diff)