summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2013-09-11 16:38:41 +0000
committerHans Wennborg <hans@hanshq.net>2013-09-11 16:38:41 +0000
commitd9ad0681fad9a98f43d9baddb95d505b37153c48 (patch)
treeb3de738f838b472a1465343898d78cf7dd3fd260 /clang/lib/Driver/Tools.cpp
parentc90d12d1df14b16aa83700e5dd4ec2009bfa2655 (diff)
downloadbcm5719-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/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp16
1 files changed, 12 insertions, 4 deletions
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) {
OpenPOWER on IntegriCloud