[GlobalISel] Copy the implementation of SubtargetFeature and use it for PredicateBitset.
PredicateBitset currently uses std::bitset, but std::bitset doesn't have a constexpr constructor or any constexpr methods until C++23. Each target that supports GlobalIsel has as an array of PredicateBitset objects that currently use a global constructor. SubtargetFeature used by the MC layer for feature bits, has its own implementation of std::bitset that has constexpr constructor and methods that provides all the capabilities that PredicateBitset needs. This patch copies the implementation from SubtargetFeature, makes it a template class, and puts it in ADT. I'll migrate SubtargetFeature in a separate patch. Adapting all existing users to it being a template was distracting from the goal of this patch. This reduces the binary size of llc built with gcc 8.5.0 on my local build by ~15k. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D158576
Loading
Please sign in to comment