llvm-project/llvm/lib/ProfileData/Coverage
Bruno Cardoso Lopes ce54b22657 [Clang][CoverageMapping] Fix switch counter codegen compile time explosion
C++ generated code with huge amount of switch cases chokes badly while emitting
coverage mapping, in our specific testcase (~72k cases), it won't stop after hours.
After this change, the frontend job now finishes in 4.5s and shrinks down `@__covrec_`
by 288k when compared to disabling simplification altogether.

There's probably no good way to create a testcase for this, but it's easy to
reproduce, just add thousands of cases in the below switch, and build with
`-fprofile-instr-generate -fcoverage-mapping`.

```
enum type : int {
 FEATURE_INVALID = 0,
 FEATURE_A = 1,
 ...
};

const char *to_string(type e) {
  switch (e) {
  case type::FEATURE_INVALID: return "FEATURE_INVALID";
  case type::FEATURE_A: return "FEATURE_A";}
  ...
  }

```

Differential Revision: https://reviews.llvm.org/D126345
2022-05-26 11:05:15 -07:00
..
CMakeLists.txt
CoverageMapping.cpp [Clang][CoverageMapping] Fix switch counter codegen compile time explosion 2022-05-26 11:05:15 -07:00
CoverageMappingReader.cpp Cleanup LLVMObject headers 2022-02-10 21:13:44 +01:00
CoverageMappingWriter.cpp [Support] Change zlib::compress to return void 2022-03-14 11:38:04 -07:00