Having TypeSize as a static class variable was causing problems with multi-threading. Several static functions have now been converted into methods of TypePromotion and a few other members of TypePromotion and IRPromoter have been added or removed.
Thanks for debugging this @rnk
This change was a part of the original commit to fix some tests when the pass is enabled by default. Figured it would be best to get this committed again before re-enabling.