The `promote_types` docstring does say "Returns the data type with the smallest size and smallest scalar kind to which both may be safely cast", which suggests that if you do `promote_types(a, a)` where a contains padding, it would remove the padding as this would lead to the "smallest size".    So if we are dogmatically following the docstring, it does make sense to remove padding.