I don't see why the requirement for a "native compiler" is anything stronger than "a binary that runs on this machine".
I "native" compiler is defined as one where host==target. Anything else is something we call a "cross-compiler". Only if you assume a "cross" compiler and a true native compiler generate different code. I certainly hope that isn't the case. Why not? It's a pretty strong statement to assume they generate *exactly* the same code under all circumstances and it seems unnecessary. All we require is that they both generate *correct* code. It's perfectly reasonable for the optimizers to behave slightly differently in host and cross configurations, such as in what they fold. Clearly, it's advantageous to minimize these differences, and we do that, but I think having to reduce them to zero is too strong a requirement, especially since it's so easy to avoid starting a bootstrap with a cross-compiler.