title: What is the difference between -fsanitize-coverage=trace-pc and trace-pc-guard?
body: <p>Recently I have been studying the Clang sanitizer. I find the flag <code>-fsanitize-coverage</code> can be <code>trace-pc</code> or <code>trace-pc-guard</code>. According to the official document(<a href="https://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards" rel="nofollow noreferrer">Tracing PCs with guards</a>, <a href="https://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs" rel="nofollow noreferrer">Tracing PCs</a>), both can insert stub functions(<code>__sanitizer_cov_trace_pc()</code> and <code>__sanitizer_cov_trace_pc_guard()</code>) on every edges. But, what is the difference between them?</p>