iains added a comment. In D126694#3565417 <https://reviews.llvm.org/D126694#3565417>, @ChuanqiXu wrote:
> In D126694#3564629 <https://reviews.llvm.org/D126694#3564629>, @iains wrote: > >> the first failure is like this: >> >> x-h.h: >> struct A { >> friend int operator+(const A &lhs, const A &rhs) { >> return 0; >> } >> }; >> >> X.cpp: >> module; >> #include "x-h.h" >> export module X; >> >> export using ::A; >> >> This does not mark *anything* in the GMF (x-h.h) as 'used', and so >> everything there is unreachable (and hence the fails). >> I.e `export using ::A;` neither marks A as used or referenced. >> I am not sure if we are supposed to special-case this - since >> `https://eel.is/c++draft/module#global.frag-3.6` explicitly says "In this >> determination, it is unspecified .. whether `using-declaration, ... is >> replaced by the declarations they name prior to this determination,` >> so .. not about how to proceed with this one at present; >> edit: but it seems most reasonable to make it behave as if A was itself >> exported. > > I highly recommend we should mark A here. Maybe we need other interfaces than > markDeclUsed and setDeclReferenced. If we don't support this, we couldn't use > modules like > https://github.com/alibaba/async_simple/blob/CXX20Modules/third_party_module/asio/asio.cppm. > This manner is important to use C++20 modules before the build system is > ready. Also, I think it is an important tool to implement C++23's std > modules. So we should support it. Actually, after thinking some more, what seems to be wrong here is that we should be making the exported item "VisibleIfImported" .. which is not being done - I guess this was a bug already and it has been exposed by the recent changes in the module ownership processing. I will next take a look at that (and the other comments). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126694/new/ https://reviews.llvm.org/D126694 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits