The old QuerriedAAs contained two vectors, one for required one for
optional dependences (=queries). We now use a single vector and encode
the kind directly in the pointer.
This reduces memory consumption and makes the connection between
abstract attributes and their dependences clearer.
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: 468401 (315846/s) temporary memory allocations: 76415 (51527/s) peak heap memory consumption: 28.80MB peak RSS (including heaptrack overhead): 118.41MB total memory leaked: 269.07KB
After:
calls to allocation functions: 425372 (257801/s) temporary memory allocations: 77301 (46849/s) peak heap memory consumption: 17.76MB peak RSS (including heaptrack overhead): 102.17MB total memory leaked: 269.07KB
Difference:
calls to allocation functions: -43029 (-257658/s) temporary memory allocations: 886 (5305/s) peak heap memory consumption: -11.04MB peak RSS (including heaptrack overhead): 0B total memory leaked: 0B