I am using icarus verilog 0.8.5 (the release delviered with Ubuntu Hardy)
I have a very small verilog file, that's compiling with other verilog simulators, but that fails with icarus verilog.
I reduced the testfile to the absolute minimum.
The original file was part of legacy verilog.
The error seems only to occur if two unrelated lines
occur in the verilog file.
If either of them is commented, then iverilog passes.
To produce the bug:
To comment the first assign statement (no more bug):
iverilog repeat_error.v -DNO_BUG1
To comment the second assign statement (no more bug):
iverilog repeat_error.v -DNO_BUG2