A problem I've hit in the llvm+clang is failure to identify undersized bitfields used to store enums. While clang does emit a warning for this directly, llvm uses raw integer field types for bitfields (apparently due to msvc failing to pack bitfields of different types :-/).
To mitigate this during debugging we use the preferred-type attribute to inform the debugging metadata, but we don't use it for any actual semantic checks, we should rectify this.