Compile the following iso-8859-1 file with -finput-charset=iso-8859-1. In the output the string has been converted to UTF-8 as documented. Compile it with -finput-charset=iso-8859-1 -save-temps. In the output the string has been converted to UTF-8, then that UTF-8 treated as ISO-8859-1 and converted to UTF-8 again, which is incorrect. If preprocessed output is always in UTF-8 then preprocessed input must always be treated as in UTF-8 regardless of -finput-charset.
const char s[] = "§"; Compilation time test not requiring execution or scanning assembler: int a = L'§'; compiled with -finput-charset=iso-8859-1 -save-temps gives a bogus "warning: character constant too long for its type". -- Summary: -finput-charset -save-temps converts characters twice Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: preprocessor AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jsm28 at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21521