A common routine is to have the compiler crash, and attempt to rerun the
cc1 command-line by copying and pasting the arguments printed by
llvm::Support::PrettyStackProgram::print. However, these arguments are
not quoted or escaped which means they must be manually edited before
working correctly. This patch ensures that shell-unfriendly characters
are C-escaped, and arguments with spaces are double-quoted reducing the
frustration of running cc1 inside a debugger.
As the quoting is C, this is "best effort for most shells", but should be fine for at least bash, zsh, csh, and cmd.exe.
What's the reason for changing the type of I? It's being used as an incrementing array index, so size_t seems like the most appropriate thing, if you're going to change it at all.