This patch adds six builtins: __remove_cv, __remove_cosnt, __remove_volatile, __add_cv, __add_const, and __add_volatile. I have added two stress tests to show the performace improvements. The __remove_cv test sees a 160% build time imporvement while the __add_cv test sees an 8% improvement.
This patch is based on D67052.
I will submit a patch for implementing these in libc++ after this lands.
Is the block of values for these identifiers contiguous? Can we work towards writing this as min <= x <= max?