This is a case where bogus #line directives can confuse libcpp into producing nonsensical line numbers, even leading to a crash later on in LTO. The following patch moves the test earlier to a point where we can more easily recover from the error condition. I should note that I changed the raw fprintf (stderr) to a cpp_error call, which is a slight change in behaviour (we don't even get to LTO anymore due to erroring out earlier). Bootstrapped and tested on x86_64-linux (as always including Ada, which failed with an earlier version of the patch). Ok? Bernd