Jelte Fennema-Nio <postg...@jeltef.nl> writes: > As I expected this problem was indeed fairly easy to address by still > building "backend/parser" before "interfaces". See attached patch.
I think we should hold off on this. I found a simpler way to address ecpg's problem than what I sketched upthread. I have a not-ready-to- show-yet patch that allows the vast majority of ecpg's grammar productions to use the default semantic action. Testing on my M1 Macbook with clang 16.0.6 from MacPorts, I see the compile time for preproc.o in HEAD as about 1m44 sec; but with this patch, 0.6 sec. The core idea of the patch is to get rid of <str> results from grammar nonterminals and instead pass the strings back as yylloc results, which we can do by redefining YYLTYPE as "char *"; since ecpg isn't using Bison's location logic for anything, this is free. Then we can implement a one-size-fits-most token concatenation rule in YYLLOC_DEFAULT, and only the various handmade rules that don't want to just concatenate their inputs need to do something different. The patch presently passes regression tests, but its memory management is shoddy as can be (basically "leak like there's no tomorrow"), and I want to fix that before presenting it. One could almost argue that we don't care about memory consumption of the ecpg preprocessor; but I think it's possible to do better. regards, tom lane