[C++20] [Modules] Don't generate paths implicitly in BMI to their dependent BMI · Issue #62707 · llvm/llvm-project (original) (raw)
See https://discourse.llvm.org/t/c-20-modules-should-the-bmis-contain-paths-to-their-dependent-bmis/70422 for detail.
Simply, after the issue resolved, the last step of the following example won't compile any more:
// b.cppm export module b; export int b() { return 43; }
// a.cppm export module a; import b; export int a() { return b() + 43; }
// user.cpp import a; int use() { return a(); }
clang++ -std=c++20 b.cppm --precompile -o b.pcm
clang++ -std=c++20 a.cppm --precompile -fmodule-file=b=b.pcm -o a.pcm
clang++ -std=c++20 user.cpp -fmodule-file=a=a.pcm -c -o user.o
We need to specify all the dependency explicitly:
clang++ -std=c++20 user.cpp -fmodule-file=a=a.pcm -fmodule-file=b=b.pcm -c -o user.o
This should be a breaking change.