diff options
| author | Hans Wennborg <hans@hanshq.net> | 2013-09-11 16:38:41 +0000 |
|---|---|---|
| committer | Hans Wennborg <hans@hanshq.net> | 2013-09-11 16:38:41 +0000 |
| commit | d9ad0681fad9a98f43d9baddb95d505b37153c48 (patch) | |
| tree | b3de738f838b472a1465343898d78cf7dd3fd260 /clang/lib | |
| parent | c90d12d1df14b16aa83700e5dd4ec2009bfa2655 (diff) | |
| download | bcm5719-llvm-d9ad0681fad9a98f43d9baddb95d505b37153c48.tar.gz bcm5719-llvm-d9ad0681fad9a98f43d9baddb95d505b37153c48.zip | |
clang-cl: Warn about overriding /MD with /MT etc.
This also bakes the /M options into a separate option group to make
them easier to refer to from the code.
llvm-svn: 190529
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 16 |
2 files changed, 14 insertions, 6 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 9bbbaae33e2..7461e999634 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1011,8 +1011,8 @@ void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args, Arg *Previous = *it++; bool ShowNote = false; while (it != ie) { - Diag(clang::diag::warn_drv_overriding_t_option) << Previous->getSpelling() - << (*it)->getSpelling(); + Diag(clang::diag::warn_drv_overriding_flag_option) + << Previous->getSpelling() << (*it)->getSpelling(); Previous = *it++; ShowNote = true; } diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index d519a4c9b5c..eca94b66ef6 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -3722,11 +3722,19 @@ void Clang::AddClangCLArgs(const ArgList &Args, ArgStringList &CmdArgs) const { // but defining _DEBUG is sticky. RTOptionID = options::OPT__SLASH_MTd; - if (Arg *A = Args.getLastArg(options::OPT__SLASH_MD, - options::OPT__SLASH_MDd, - options::OPT__SLASH_MT, - options::OPT__SLASH_MTd)) { + if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group)) { RTOptionID = A->getOption().getID(); + + // Diagnose overrides. + arg_iterator it = Args.filtered_begin(options::OPT__SLASH_M_Group); + Arg *Previous = *it++; + const arg_iterator ie = Args.filtered_end(); + while (it != ie) { + const Driver &D = getToolChain().getDriver(); + D.Diag(clang::diag::warn_drv_overriding_flag_option) + << Previous->getSpelling() << (*it)->getSpelling(); + Previous = *it++; + } } switch(RTOptionID) { |

