mstorsjo added a comment.

In D126291#3556096 <https://reviews.llvm.org/D126291#3556096>, @mmuetzel wrote:

> The error message I get without `-lc++`:
>
>   ld.lld: error: undefined symbol: std::__1::mutex::lock()
>   >>> referenced by 
> libFortranRuntime.a(io-api.cpp.obj):(Fortran::runtime::io::IoStatementState* 
> Fortran::runtime::io::BeginExternalListIO<(Fortran::runtime::io::Direction)0, 
> Fortran::runtime::io::ExternalListIoStatementState>(int, char const*, int))
>   >>> referenced by 
> libFortranRuntime.a(io-api.cpp.obj):(Fortran::runtime::io::IoStatementState* 
> Fortran::runtime::io::BeginExternalListIO<(Fortran::runtime::io::Direction)0, 
> Fortran::runtime::io::ExternalListIoStatementState>(int, char const*, int))
>   >>> referenced by 
> libFortranRuntime.a(io-api.cpp.obj):(Fortran::runtime::io::IoStatementState* 
> Fortran::runtime::io::BeginExternalListIO<(Fortran::runtime::io::Direction)1, 
> Fortran::runtime::io::ExternalListIoStatementState>(int, char const*, int))
>   >>> referenced 36 more times
>   
>   ld.lld: error: undefined symbol: std::__1::mutex::unlock()
>   >>> referenced by 
> libFortranRuntime.a(unit.cpp.obj):(Fortran::runtime::io::FlushOutputOnCrash(Fortran::runtime::Terminator
>  const&))
>   >>> referenced by 
> libFortranRuntime.a(unit.cpp.obj):(Fortran::runtime::io::ExternalFileUnit::LookUp(int))
>   >>> referenced by 
> libFortranRuntime.a(unit.cpp.obj):(Fortran::runtime::io::ExternalFileUnit::GetUnitMap())
>   >>> referenced 23 more times
>   flang-new: error: linker command failed with exit code 1 (use -v to see 
> invocation)
>
> Edit: That's probably because of this:
> https://github.com/llvm/llvm-project/blob/main/flang/runtime/lock.h
>
>   // Avoid <mutex> if possible to avoid introduction of C++ runtime
>   // library dependence.
>   #ifndef _WIN32
>   #define USE_PTHREADS 1
>   #else
>   #undef USE_PTHREADS
>   #endif
>   
>   #if USE_PTHREADS
>   #include <pthread.h>
>   #else
>   #include <mutex>
>   #endif
>
> So, there will be a C++ runtime library dependency on Windows.

If the only need is for mutexes, using a corresponding native windows api is 
quite straightforward. (If other synchronization primitives are needed, it may 
require a bit more effort.)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126291/new/

https://reviews.llvm.org/D126291

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to