And careful people keep in mind that only what's defined in the standard can be expected to be true across compiler updates.
But extensions like typeof are different from UB. They have documented behavior, it is just documented by GNU instead of the C standards committee.
(The C standard explicitly calls this out as a valid way of handling UB.)