If I create an integer size which is not a native size on the target
platform is it nonetheless treated as though it were that size? That is,
do all the basic operations (add, mul, shift, etc.) do the proper
treatment to ensure it behaves as an exactly sized integer value?
I'm looking at the native assembly output of several examples and it
does appear that some limited handling is done. For example shifting
will artificially wrap the shift amount, but it does not alter the
resulting value.
The "nsw" flag also doesn't change the final assembly, so I assume the
poison value is strictly an optimizer thing (saying it shouldn't assume
the value is well defined).