Hello Don,
pragma(msg) creates its output as part of its semantic pass. And that's a problem, because the need to deal with forward references means that the order in which symbols get the semantic pass run on them isn't defined. And the semantics of pragma(msg) aren't well defined, because it wasn't designed to be used in this way (it was intended to only allow string literals). So you get inconsistencies.
The solution there is to assume that pragma(msg) will be reordered and make each one atomic; compleat in it's own right rather than assume it works like printf.
-- ... <IXOYE><