On 10/12/2020 15.50, Tom Honermann via SG16 wrote:An RFC has been posted to the Clang developer mailing list discussing support for the -fexec-charset option. http://lists.llvm.org/pipermail/cfe-dev/2020-December/067354.html Jens, the RFC has a nice break down of places where string literals appear and what the conversion requirements are for them. It might be useful input to your planned paper that we discussed in yesterday's SG16 telecon with regard to what phase of translation those conversions occur in.Thanks. The list is missing static_assert. Also, the typeinfo name should probably use the literal encoding. (More often than not, it is displayed.)
Good points. I replied to the initial thread (though I clearly
should have responded in text format).
- http://lists.llvm.org/pipermail/cfe-dev/2020-December/067368.html
My contribution was:
The text provided by std::type_info::name() is generally displayed in some way, often in conjunction with additional text encoded with the execution encoding. I think this should follow -fexec-charset; that would be consistent with handling of __func__.Tom.
The messages provided for #error, static_assert, [[deprecated]], and [[nodiscard]] (following adoption of WG14 N2448 and WG21 P1301) are another special case. Options are to preserve the provided message in the internal encoding or, as mentioned below, to transcode from the execution encoding to the system encoding for diagnostic display. Per WG14 N2563 and WG21 P2246, either approach is acceptable, but the former would improve QoI.
Jens