if (INTEGRAL_TYPE_P (etype) && TREE_TYPE (etype)) { etype = TREE_TYPE (etype); exp = fold_convert (etype, exp); low = fold_convert (etype, low); value = fold_convert (etype, value); }
I gather that we should restrict the transformation to INTEGER_TYPEs. We could, but the other possibility is to use an INTEGER_TYPE of the same precision and use it in the code above when the input ETYPE is an ENUMERAL_TYPE.