diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-05-20 04:24:19 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-05-20 04:24:19 +0000 |
commit | db39021ceebbd311125785d407402b74ec668528 (patch) | |
tree | 6a1a9692eb1269740cf03e7ebf02f9d5626dd4cb /clang/lib/Driver/Tools.cpp | |
parent | 16dc7b68c4d90cd3abac7015c27030f3d6c710f9 (diff) | |
download | llvm-db39021ceebbd311125785d407402b74ec668528.zip llvm-db39021ceebbd311125785d407402b74ec668528.tar.gz llvm-db39021ceebbd311125785d407402b74ec668528.tar.bz2 |
[OPENMP] -fopenmp enables OpenMP support (fix for http://llvm.org/PR23492)
-fopenmp turns on OpenMP support and links libiomp5 as OpenMP library. Also there is -fopenmp={libiomp5|libgomp} option that allows to override effect of -fopenmp and link libgomp library (if -fopenmp=libgomp is specified).
Differential Revision: http://reviews.llvm.org/D9736
llvm-svn: 237769
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 0f191f34..138a31b 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -3793,6 +3793,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree); Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type); + // Forward flags for OpenMP + if (Args.hasArg(options::OPT_fopenmp_EQ) || + Args.hasArg(options::OPT_fopenmp)) { + CmdArgs.push_back("-fopenmp"); + } + const SanitizerArgs &Sanitize = getToolChain().getSanitizerArgs(); Sanitize.addArgs(Args, CmdArgs); @@ -6273,9 +6279,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, Args.AddAllArgs(CmdArgs, options::OPT_L); LibOpenMP UsedOpenMPLib = LibUnknown; - if (Args.hasArg(options::OPT_fopenmp)) { - UsedOpenMPLib = LibGOMP; - } else if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) { + if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) { UsedOpenMPLib = llvm::StringSwitch<LibOpenMP>(A->getValue()) .Case("libgomp", LibGOMP) .Case("libiomp5", LibIOMP5) @@ -6283,6 +6287,8 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, if (UsedOpenMPLib == LibUnknown) getToolChain().getDriver().Diag(diag::err_drv_unsupported_option_argument) << A->getOption().getName() << A->getValue(); + } else if (Args.hasArg(options::OPT_fopenmp)) { + UsedOpenMPLib = LibIOMP5; } switch (UsedOpenMPLib) { case LibGOMP: @@ -7998,16 +8004,16 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA, linkSanitizerRuntimeDeps(ToolChain, CmdArgs); LibOpenMP UsedOpenMPLib = LibUnknown; - if (Args.hasArg(options::OPT_fopenmp)) { - UsedOpenMPLib = LibGOMP; - } else if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) { + if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) { UsedOpenMPLib = llvm::StringSwitch<LibOpenMP>(A->getValue()) - .Case("libgomp", LibGOMP) - .Case("libiomp5", LibIOMP5) - .Default(LibUnknown); + .Case("libgomp", LibGOMP) + .Case("libiomp5", LibIOMP5) + .Default(LibUnknown); if (UsedOpenMPLib == LibUnknown) D.Diag(diag::err_drv_unsupported_option_argument) - << A->getOption().getName() << A->getValue(); + << A->getOption().getName() << A->getValue(); + } else if (Args.hasArg(options::OPT_fopenmp)) { + UsedOpenMPLib = LibIOMP5; } switch (UsedOpenMPLib) { case LibGOMP: |