> Also we won't see (int*alias) except as a cast in the generated C++ IR
> because the type that is returned from placement new is void* and the other
> pointer types that people use will never have TYPE_REF_CAN_ALIAS_ALL
> set on them and it is hard to know what variable would like a type
> which has TYPE_REF_CAN_ALIAS_ALL set on it.
OK, it's true that you need a pointer object to put TYPE_REF_CAN_ALIAS_ALL on
its type, a mere cast somewhere in the IR won't do it. From your description
I gather that the C++ compiler doesn't generate one for a placement new, in
which case the TYPE_REF_CAN_ALIAS_ALL approach indeed won't work.