When I speak about doing arithmetic in a type, I'm referring to the
type of the expression & its input operands in a gimplified
expression. At that point I do not care about base types or anything
like that. All that should matter is TREE_TYPE (expr), nothing more,
nothing less. How the inputs are converted or how the output is later
converted is not a concern -- all that matters is TREE_TYPE (expr) in
a gimplified tree.
Can we agree on that?
Yes.
The base type reference is that I'm *also* saying "If you see an arithmetic
node where TREE_TYPE is *not* a base type, there's a bug someplace that
has to be fixed". (Well, with the exception of such things as sizetypes
or subtypes that don't actually change anything.)