This will allow identifying exactly how many shadow bytes were used
during compilation, for when fast8 mode is introduced.
Also, it will provide a consistent matching point for instrumentation
tests so that the exact llvm type used (i8 or i16) for the shadow can
be replaced by a pattern substitution. This is handy for tests with
multiple prefixes.
Are these two variables shared by dfsan runtime and each compilation unit?
Weak leakage is better, it allows all of them 'share' a global: each compilation unit inserts one if users select fast8, and the dfsan runtime reads it and decides what to do.
See __dfsan_track_origins as an example.
PrimitiveShadowTy is used for shadow data, while __dfsan_shadow_width_bits is only a flag.
Can we use IntegerType::get(*Ctx, 8)?