On Thu, Nov 30, 2023 at 4:19 PM Marek Polacek <pola...@redhat.com> wrote: > > On Wed, Nov 01, 2023 at 05:54:57PM -0400, Lewis Hyatt wrote: > > Hello- > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112319 > > > > This is a one-line patch to fix the GCC 14 regression noted in the > > PR. Bootstrap + regtest all languages on x86-64 looks good. Is it OK please? > > Thanks! > > > > -Lewis > > > > -- >8 -- > > > > Since r14-2893, the frontend parser object needs to exist when running in > > preprocess-only mode, because pragma_lex() is now called in that mode and > > needs to make use of it. This is handled by calling c_init_preprocess() at > > startup. If -fpch-preprocess is in effect (commonly, because of > > -save-temps), a PCH file may be loaded during preprocessing, in which > > case the parser will be destroyed, causing the issue noted in the > > PR. Resolve it by reinitializing the frontend parser after loading the PCH. > > > > gcc/c-family/ChangeLog: > > > > PR pch/112319 > > * c-ppoutput.cc (cb_read_pch): Reinitialize the frontend parser > > "front-end" > > > after loading a PCH. > > > > gcc/testsuite/ChangeLog: > > > > PR pch/112319 > > * g++.dg/pch/pr112319.C: New test. > > * g++.dg/pch/pr112319.Hs: New test. > > * gcc.dg/pch/pr112319.c: New test. > > * gcc.dg/pch/pr112319.hs: New test. > > --- > > gcc/c-family/c-ppoutput.cc | 5 +++++ > > gcc/testsuite/g++.dg/pch/pr112319.C | 5 +++++ > > gcc/testsuite/g++.dg/pch/pr112319.Hs | 1 + > > gcc/testsuite/gcc.dg/pch/pr112319.c | 5 +++++ > > gcc/testsuite/gcc.dg/pch/pr112319.hs | 1 + > > 5 files changed, 17 insertions(+) > > create mode 100644 gcc/testsuite/g++.dg/pch/pr112319.C > > create mode 100644 gcc/testsuite/g++.dg/pch/pr112319.Hs > > create mode 100644 gcc/testsuite/gcc.dg/pch/pr112319.c > > create mode 100644 gcc/testsuite/gcc.dg/pch/pr112319.hs > > > > diff --git a/gcc/c-family/c-ppoutput.cc b/gcc/c-family/c-ppoutput.cc > > index 4aa2bef2c0f..4f973767976 100644 > > --- a/gcc/c-family/c-ppoutput.cc > > +++ b/gcc/c-family/c-ppoutput.cc > > @@ -862,4 +862,9 @@ cb_read_pch (cpp_reader *pfile, const char *name, > > > > fprintf (print.outf, "#pragma GCC pch_preprocess \"%s\"\n", name); > > print.src_line++; > > + > > + /* The process of reading the PCH has destroyed the frontend parser, > > "front-end" > > > + so ask the frontend to reinitialize it, in case we need it to > > "front end" > > (sorry to be overly pedantic...) > > Patch looks fine to me; please go ahead if you haven't pushed it already. >
Thanks for the review! I did push it a few days ago as Jakub approved it... I will spell front end correctly next time :). -Lewis