Hello, The ARM backend uses an unsigned long to record CPU feature flags and there are currently 30 bits in use. This series of patches replaces the single unsigned long with a representation based on an array of values. This patch adds, but doesn't use, type arm_feature_set and macros prefixed with ARM_FSET to represent and operate on feature sets. Tested by building with no errors. Also tested as part of the series, for arm-none-linux-gnueabihf with check-gcc. Ok for trunk? Matthew gcc/ 2015-06-22 Matthew Wahab * config/arm/arm-protos.h (FL_NONE): New. (FL_ANY): New. (arm_feature_set): New. (ARM_FSET_MAKE): New. (ARM_FSET_MAKE_CPU1): New. (ARM_FSET_MAKE_CPU2): New. (ARM_FSET_CPU1): New. (ARM_FSET_CPU2): New. (ARM_FSET_EMPTY): New. (ARM_FSET_ANY): New. (ARM_FSET_HAS_CPU1): New. (ARM_FSET_HAS_CPU2): New. (ARM_FSET_ADD_CPU1): New. (ARM_FSET_ADD_CPU2): New. (ARM_FSET_DEL_CPU1): New. (ARM_FSET_DEL_CPU2): New. (ARM_FSET_UNION): New. (ARM_FSET_INTER): New. (ARM_FSET_XOR): New. (ARM_FSET_EXCLUDE): New. (AFM_FSET_IS_EMPTY): New. (ARM_FSET_CPU_SUBSET): New.