Subject: bug#77277: Multiple copies of vhdl feautres added to compilation-error-regexp-alist

From: Paul Graham <[email-masked]>
Date: Tue, 25 Mar 2025 19:17:35 +0000

I am using emacs 29.1 on Linux RH8.  I use compilation mode a lot, both for makefiles and for running other non-interactive programs.  I also visit Vhdl files.  After running emacs for a while, the variable compilation-error-regexp-alist gets very large.  Here is an example after about 1 hour of emacs use:

compilation-error-regexp-alist is a variable defined in 'compile.el'.
Its value is
(vhdl-directory vhdl-advance-ms vhdl-advance-ms-file vhdl-aldec vhdl-cadence-leapfrog vhdl-cadence-nc vhdl-ghdl vhdl-ibm-compiler vhdl-ikos vhdl-ikos-file vhdl-modelsim vhdl-leda-provhdl vhdl-quartus vhdl-quickhdl vhdl-savant vhdl-simili vhdl-speedwave vhdl-synopsys vhdl-synopsys-design-compiler vhdl-synplify vhdl-vantage vhdl-vantage-file vhdl-veribest vhdl-viewlogic vhdl-viewlogic-file vhdl-xilinx-xst vhdl-directory vhdl-advance-ms vhdl-advance-ms-file vhdl-aldec vhdl-cadence-leapfrog vhdl-cadence-nc vhdl-ghdl vhdl-ibm-compiler vhdl-ikos vhdl-ikos-file vhdl-modelsim vhdl-leda-provhdl vhdl-quartus vhdl-quickhdl vhdl-savant vhdl-simili vhdl-speedwave vhdl-synopsys vhdl-synopsys-design-compiler vhdl-synplify vhdl-vantage vhdl-vantage-file vhdl-veribest vhdl-viewlogic vhdl-viewlogic-file vhdl-xilinx-xst vhdl-directory vhdl-advance-ms vhdl-advance-ms-file vhdl-aldec vhdl-cadence-leapfrog vhdl-cadence-nc vhdl-ghdl vhdl-ibm-compiler vhdl-ikos vhdl-ikos-file vhdl-modelsim vhdl-leda-provhdl vhdl-quartus vhdl-quickhdl vhdl-savant vhdl-simili vhdl-speedwave vhdl-synopsys vhdl-synopsys-design-compiler vhdl-synplify vhdl-vantage vhdl-vantage-file vhdl-veribest vhdl-viewlogic vhdl-viewlogic-file vhdl-xilinx-xst verilog-leda verilog-verilator verilog-vcs-4 verilog-vcs-3 verilog-vcs-2 verilog-vcs-1 verilog-xsim verilog-verbose verilog-surefire-2 verilog-surefire-1 verilog-IES verilog-xl-2 verilog-xl-1 bash clang-include gcc-include gmake gnu lcc gcov-file gcov-header gcov-nomark gcov-called-line gcov-never-called)

The original value of this variable as defined in my .emacs file was (bash clang-include gcc-include gmake gnu lcc gcov-file gcov-header gcov-nomark gcov-called-line gcov-never-called).

Notice that "vhdl-directory" appears three times in this variable.  In another long-running emacs session "vhdl-directory" appeared over 1400 times in this variable.  I suspect that some code in vhdl-mode.el is repeatedly appending these vhdl strings without checking for duplicates.  Of course when compilation-error-regexp-alist grows to thousands of entries it slows down compilation mode to a crawl.

Paul