diff options
author | Jonathan Roelofs <jonathan@codesourcery.com> | 2017-09-07 22:01:25 +0000 |
---|---|---|
committer | Jonathan Roelofs <jonathan@codesourcery.com> | 2017-09-07 22:01:25 +0000 |
commit | 6fbb9e017d27cf14154a350d28ba7cb1bdda690a (patch) | |
tree | 38930fb915e488389052af934675a2a07402620c /clang/lib/Driver/ToolChains/Clang.cpp | |
parent | d14d54ba37c232b953744682b8eb0bb9de4ae82b (diff) | |
download | bcm5719-llvm-6fbb9e017d27cf14154a350d28ba7cb1bdda690a.tar.gz bcm5719-llvm-6fbb9e017d27cf14154a350d28ba7cb1bdda690a.zip |
Fix validation of the -mthread-model flag in the Clang driver
The ToolChain class validates the -mthread-model flag in the constructor which
doesn't work correctly since the thread model methods are virtual methods. The
check is moved into Clang::ConstructJob() when constructing the internal
command line.
https://reviews.llvm.org/D37496
Patch by: Ian Tessier!
llvm-svn: 312748
Diffstat (limited to 'clang/lib/Driver/ToolChains/Clang.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index ba03fcd57c6..98652703f1e 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3235,8 +3235,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } CmdArgs.push_back("-mthread-model"); - if (Arg *A = Args.getLastArg(options::OPT_mthread_model)) + if (Arg *A = Args.getLastArg(options::OPT_mthread_model)) { + if (!getToolChain().isThreadModelSupported(A->getValue())) + D.Diag(diag::err_drv_invalid_thread_model_for_target) + << A->getValue() << A->getAsString(Args); CmdArgs.push_back(A->getValue()); + } else CmdArgs.push_back(Args.MakeArgString(getToolChain().getThreadModel())); |