当我使用参数
-fdump-rtl-jump
运行 gcc 时,我会得到一个名为 file.c.135r.jump
的转储文件,我可以在其中读取有关 C 或 C++ 文件中方法的中间表示的一些信息。
我最近发现,这个转储文件中缺少项目的静态方法。您知道为什么在该表示中缺少它们以及是否也有可能在此文件中包含静态方法。
更新(一些附加信息):
我在这里使用的测试程序是Hybrid OpenMP MPI Benchmark。
更新2:
我只是用串行应用程序重现了该问题,因此它与并行部分无关。
我的猜测是静态方法是内联的,并且由于它们是静态的,所以关于它们的调用的一切都是已知的,不会发出它们的外线代码。 确认或拒绝这一点的方法是添加
-fkeep-inline-functions
gcc 选项,然后它们应该出现在转储中。
它们并没有丢失,这与类方法无关。我相信你只是没有给他们打电话。