From a53ab5c569f494e44344ab950ccd6289dfa2d3ef Mon Sep 17 00:00:00 2001 From: Chad Rosier Date: Sat, 7 Apr 2012 00:01:31 +0000 Subject: [PATCH] [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 --- lib/Driver/Driver.cpp | 1 + test/Driver/redundant-args.c | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 test/Driver/redundant-args.c 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 -- 2.40.0