We do not explicitly model integer promotions on unary operators even though those promotions happen in practice. This patch tracks the most important piece of information about the promotion on the AST node: whether the operator can overflow or not. It then pulls this logic out from various places and instead uses what's calculated on the AST node.
This is effectively a NFC patch, however, it does help out-of-tree builds that need to know about the integral promotions.
Is the default argument necessary here? Better to avoid when possible.