http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52952
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-05-22 08:29:08 UTC --- The format string could be even something like void f() { __builtin_printf( u8R"abcd(%.)abcd" "*d"); } So, the question is, if we have a way to find from the source_location on the ADDR_EXPR around STRING_CST the original non-concatenated tokens, and given index into the (possibly) translated STRING_CST redo the lexing of those tokens, looking at which byte in the source tokens maps to that offset in the STRING_CST.