> GNU C has it too:
Yes, but in that case, it's always the same for every reference to the same type. For GENERIC, that means it can indeed be taken from the type every time, but the issue is gimplification. The Ada case is harder because you not only have to deal with gimplification, but that the value is potentially different in each access.