I'd say that this is a bug in the same way that any other > direct type comparison is flawed. I'd suggest that > > TYPE_MAIN_VARIANT (TREE_TYPE (TYPE_MIN_VALUE (t))) > == TYPE_MAIN_VARIANT (t) > > is the correct test. That certainly handles your typedef case. I forgot about TYPE_MAIN_VARIANT and you forgot about subtypes!