[clang] 8427053 - [clang][ARM] When handling multiple -mimplicit-it mark all as used

David Spickett via cfe-commits cfe-commits at lists.llvm.org
Tue May 25 07:53:15 PDT 2021


Author: David Spickett
Date: 2021-05-25T14:53:07Z
New Revision: 8427053f81922b0665a1ad3f561c09f8c0b8dd30

URL: https://github.com/llvm/llvm-project/commit/8427053f81922b0665a1ad3f561c09f8c0b8dd30
DIFF: https://github.com/llvm/llvm-project/commit/8427053f81922b0665a1ad3f561c09f8c0b8dd30.diff

LOG: [clang][ARM] When handling multiple -mimplicit-it mark all as used

Since 4468e5b8999291cc84b78f33f207dcd0e58146bc clang will prefer
the last one it finds of "-mimplicit-it" or "-Wa,-mimplicit-it".

Due to a mistake in that patch the compiler argument "-mimplicit-it"
was never marked as used, even if it was the last one and was passed
to llvm.

Move the Claim call back to the start of the loop and update
the testing to check we don't get any unused argument warnings.

Reviewed By: mstorsjo

Differential Revision: https://reviews.llvm.org/D103086

Added: 
    

Modified: 
    clang/lib/Driver/ToolChains/Clang.cpp
    clang/test/Driver/arm-target-as-mimplicit-it.s

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 45b41c8bf53e..677e2b635354 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2410,6 +2410,8 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
   for (const Arg *A :
        Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler,
                      options::OPT_mimplicit_it_EQ)) {
+    A->claim();
+
     if (A->getOption().getID() == options::OPT_mimplicit_it_EQ) {
       switch (C.getDefaultToolChain().getArch()) {
       case llvm::Triple::arm:
@@ -2427,8 +2429,6 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
       }
     }
 
-    A->claim();
-
     for (StringRef Value : A->getValues()) {
       if (TakeNextArg) {
         CmdArgs.push_back(Value.data());

diff  --git a/clang/test/Driver/arm-target-as-mimplicit-it.s b/clang/test/Driver/arm-target-as-mimplicit-it.s
index eb02aa94e9ad..b4eed3e50632 100644
--- a/clang/test/Driver/arm-target-as-mimplicit-it.s
+++ b/clang/test/Driver/arm-target-as-mimplicit-it.s
@@ -35,6 +35,8 @@
 // RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
 
 
+/// Check that the argument we ignore is still marked as used.
+// ALWAYS-NOT: warning: argument unused during compilation: {{.*}}-mimplicit-it={{.*}}
 /// Check that there isn't a second -arm-implicit-it before or after the one
 /// that was the indended match.
 // ALWAYS-NOT: "-arm-implicit-it={{.*}}"


        


More information about the cfe-commits mailing list