Problems with circular references and inline procedures.

Original Reporter info from Mantis: Joost
  • Reporter name: Joost van der Sluis

Description:

When you compile the IdGlobal unit from the attached zip-file, the IdStreamVCL unit is also compiled. But, the ppu-checksum (of the IdGlobal dependency) within the IdStreamVCL.ppu does not match the ppu-checksum of the IdGlobal.ppu itself. While they are both compiled in the same run of the compiler.

When IdGlobal is compiled for a second time, the dependencies do match.

This happens only when the IdGlobal unit has at least one inlined function, and there is a circular dependency. (When two units are referencing each-other, all goes well. The problem does occur with three units, though. As in the attached test)

Steps to reproduce:

1: compile IdGlobal
2: ppudump Idlobal.ppu, look for the checksum of the IdGlobal.ppu
3: ppudump IdStreamVCL, search for the IdGlobal checksum and notice that it does not match with the checksum of step 2.
4: compile IdGlobal again
5: ppudump IdStreamVCL, now the IdGlobal checksum matches the checksum from step 2.

To do the test again, remove all .ppu files and compile again...

Mantis conversion info:

  • Mantis ID: 19673
  • OS: Linux
  • OS Build: Fedora 15
  • Platform: x86_64
  • Version: 2.5.1
  • Monitored by: » luizamerico (Luiz Americo)