This patch makes the attribute iterate on per function (and it's deps)
function basis. This way we don't have to have all AAs in memory at
once.
We do this by having a separate allocator per each function. And attributes that are not in the "Function interface" are kept there.
Function interface attributess are kept alive till the end on the fixpoint iteration.
Seeded attributes are allocated in a user provided allocator.
For doing iteration on each function separately, we track seeded attributes per function first and "bootstrap" them when it is their time.
Functions can still query what they want regardless of which function we are currently iterating in (as long as the queried AA is a interface AA).
clang-tidy: warning: invalid case style for parameter 'l' [readability-identifier-naming]
not useful
clang-tidy: warning: invalid case style for parameter 'r' [readability-identifier-naming]
not useful