diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2018-07-06 21:13:41 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2018-07-06 21:13:41 +0000 |
commit | f5d8b841cef28e1d21bcf6f2757143b94875981b (patch) | |
tree | 620a303193a3c0e3404510ebeb3f1c572b116578 /clang/lib/Driver/ToolChains/Gnu.cpp | |
parent | 71c7c43695f33b763b4a5c56b2c960dc4b28007c (diff) | |
download | bcm5719-llvm-f5d8b841cef28e1d21bcf6f2757143b94875981b.tar.gz bcm5719-llvm-f5d8b841cef28e1d21bcf6f2757143b94875981b.zip |
[OPENMP] Fix PR38026: Link -latomic when -fopenmp is used.
On Linux atomic constructs in OpenMP require libatomic library. Patch
links libatomic when -fopenmp is used.
llvm-svn: 336467
Diffstat (limited to 'clang/lib/Driver/ToolChains/Gnu.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Gnu.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 1ecf127c4b9..ee3096813ed 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -479,6 +479,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, bool WantPthread = Args.hasArg(options::OPT_pthread) || Args.hasArg(options::OPT_pthreads); + bool WantAtomic = false; // FIXME: Only pass GompNeedsRT = true for platforms with libgomp that // require librt. Most modern Linux platforms do, but some may not. @@ -487,13 +488,16 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, /* GompNeedsRT= */ true)) // OpenMP runtimes implies pthreads when using the GNU toolchain. // FIXME: Does this really make sense for all GNU toolchains? - WantPthread = true; + WantAtomic = WantPthread = true; AddRunTimeLibs(ToolChain, D, CmdArgs, Args); if (WantPthread && !isAndroid) CmdArgs.push_back("-lpthread"); + if (WantAtomic) + CmdArgs.push_back("-latomic"); + if (Args.hasArg(options::OPT_fsplit_stack)) CmdArgs.push_back("--wrap=pthread_create"); |