summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains/Gnu.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2018-07-06 21:13:41 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2018-07-06 21:13:41 +0000
commitf5d8b841cef28e1d21bcf6f2757143b94875981b (patch)
tree620a303193a3c0e3404510ebeb3f1c572b116578 /clang/lib/Driver/ToolChains/Gnu.cpp
parent71c7c43695f33b763b4a5c56b2c960dc4b28007c (diff)
downloadbcm5719-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.cpp6
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");
OpenPOWER on IntegriCloud