[Attributor] Replace AccessKind2Accesses map with an "array map"
authorJohannes Doerfert <johannes@jdoerfert.de>
Sat, 18 Apr 2020 01:47:38 +0000 (20:47 -0500)
committerJohannes Doerfert <johannes@jdoerfert.de>
Wed, 22 Apr 2020 06:35:27 +0000 (01:35 -0500)
commitca59ff5af9dac8238ef5eadaadcf7994516d95d8
treea64a8bf717962bc06c42efc4945a0c6365484b73
parentf20ff4b17d1927eeffadf3f2fdb1cd6401d94890
[Attributor] Replace AccessKind2Accesses map with an "array map"

The number of different access location kinds we track is relatively
small (8 so far). With this patch we replace the DenseMap that mapped
from index (0-7) to the access set pointer with an array of access set
pointers. This reduces memory consumption.

No functional change is intended.

---

Single run of the Attributor module and then CGSCC pass (oldPM)
for SPASS/clause.c (~10k LLVM-IR loc):

Before:
```
calls to allocation functions: 472499 (215654/s)
temporary memory allocations: 77794 (35506/s)
peak heap memory consumption: 35.28MB
peak RSS (including heaptrack overhead): 125.46MB
total memory leaked: 269.04KB
```

After:
```
calls to allocation functions: 472270 (308673/s)
temporary memory allocations: 77578 (50704/s)
peak heap memory consumption: 32.70MB
peak RSS (including heaptrack overhead): 121.78MB
total memory leaked: 269.04KB
```

Difference:
```
calls to allocation functions: -229 (346/s)
temporary memory allocations: -216 (326/s)
peak heap memory consumption: -2.58MB
peak RSS (including heaptrack overhead): 0B
total memory leaked: 0B
```

---
llvm/lib/Transforms/IPO/AttributorAttributes.cpp