The tag map holds a sparse set of memory tags and allows
you to query ranges for tags.
Granules that do not have tags will be set to llvm::None.
to keep the ordering intact. If there are no tags for the
requested range we'll just return an empty result so that
callers don't need to check that all values are llvm::None.
This will be combined with MemoryTagManager's MakeTaggedRanges:
- MakeTaggedRanges
- Read from all those ranges
- Insert the results into the tag map
- Give the tag map to whatever needs to print tags
Which in this case will be "memory read"/DumpDataExtractor.
If the pointer should be non-null, then should this take a reference instead?