[Coverage] Ignore 'unused' functions with non-zero execution counts
[Coverage] Ignore 'unused' functions with non-zero execution counts

Frontends emit 'unused' coverage mapping records for functions which are
provably unused in a TU. These unused records contain a single counter
with CounterKind::Zero. However, a function may be unused in one TU and
used in another. When this happens, prefer the records with a full set
of counters instead of arbitrarily picking the first loaded record.

There is no impact on the single-TU case. In the multiple-TU case, this
resolves issues causing a function to appear unused when it's not.

Testing: check-{llvm,clang,compiler-rt}

rdar://42981322

git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@339194 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 71a5ad442b3f19061cc9e6761fed02b7decdf46f)

apple/swift-llvm,apple/swift-llvm,apple/swift-llvm,apple/swift-llvm,apple/swift-llvm,apple/swift-llvm,apple/swift-llvm,apple/swift-llvm