https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69650
--- Comment #32 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to David Malcolm from comment #31) > I may have been wrong in my earlier question on the mailing list; doesn't > the flag value of 2 mean "LC_LEAVE"? (is the filename meant to refer to the > file being left, or the file being entered? am new to this part of libcpp) This is my understanding as well: https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html That is, it means "leaving fish returning to 69650.c". If there is not previous enter "fish" directive, there is a problem. An empty file means, leaving whatever file we last entered. If there is no previous enter file directive at all (# N "whatever" 1), then there is also a problem. One cannot leave the main file. It should be easy to play with the line directives to trigger both types of error.