ChuanqiXu added a comment. In D154324#4516605 <https://reviews.llvm.org/D154324#4516605>, @alexfh wrote:
> Hi, we've started seeing compilation errors with our modularized build after > this commit. The errors say `'SomeType' has different definitions in > different modules`, but then point to the same definition that comes from the > same textual header included into two modules. > > The setup (which I couldn't completely isolate yet) is roughly similar to > this (hopefully, I didn't miss any important parts): > > Textual header p.h: > > #include <type_traits> > > #include "protobuf/generated_enum_util.h" > ... > > template <typename T, > typename = > typename > std::enable_if<proto2::is_proto_enum<T>::value>::type> > class SomeType : E<S<T>> { > ... > }; > > Module A, a.h: > > #include <type_traits> > > #include "protobuf/generated_enum_util.h" > > namespace q { > template <typename T, > typename std::enable_if<::proto2::is_proto_enum<T>::value>::type> > class X {}; > } > > #include "p.h" > > Module B, b.h: > > // ... > // something likely unrelated > // ... > #include "p.h" > > Module C (uses module A, module B), c.h: > > #include "a.h" > #include "b.h" Maybe we got something wrong with this. I'd like to revert this patch in case it breaks something. But would you like to reduce your reproducer further to a state without external includes to STL or protobuf? Then we can add the reduced reproducer to the tests to avoid further regressions. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D154324/new/ https://reviews.llvm.org/D154324 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits