From: Chad Rosier Date: Sat, 7 Apr 2012 00:01:31 +0000 (+0000) Subject: [driver] In general, the driver claims redundant args and uses the last arg. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a53ab5c569f494e44344ab950ccd6289dfa2d3ef;p=clang [driver] In general, the driver claims redundant args and uses the last arg. However, the '-x' option has special handling and wasn't following this paradigm. Fix it to do so by claiming the arg as we parse the '-x' option. rdar://11203340 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154231 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 35e63989a3..7ab3278c7f 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -1003,6 +1003,7 @@ void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args, } else if (A->getOption().matches(options::OPT_x)) { InputTypeArg = A; InputType = types::lookupTypeForTypeSpecifier(A->getValue(Args)); + A->claim(); // Follow gcc behavior and treat as linker input for invalid -x // options. Its not clear why we shouldn't just revert to unknown; but diff --git a/test/Driver/redundant-args.c b/test/Driver/redundant-args.c new file mode 100644 index 0000000000..7bf98e1e73 --- /dev/null +++ b/test/Driver/redundant-args.c @@ -0,0 +1,2 @@ +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Werror -x c -x c -fsyntax-only %s