While adding support for TBAA to GHC's LLVM backend, we ran into the
following issue: given a pointer that we know has certain aliasing
properties (e.g. it points to the stack, not the heap) we'd like to
* annotate all loads and stores to that pointer with a TBAA type "stack", and
* also annotate all loads and stores to pointers derived from that
pointer as "stack".
For example, given Sp, which is the GHC stack pointer, and this pseudo-code
tmp = Sp + 4
tmp2 = load tmp // should be marked as "stack"
we'd like to not only annotate loads/stores to Sp as "stack" but also
all loads/stores to tmp.
Is this something that can be achieved within the current framework or
should we propagate the pointer aliasing information ourselves?