[llvm-driver] Check more specific tools first
authorAlex Brachet <abrachet@google.com>
Mon, 17 Apr 2023 21:38:08 +0000 (21:38 +0000)
committerAlex Brachet <abrachet@google.com>
Mon, 17 Apr 2023 21:39:13 +0000 (21:39 +0000)
We allow tools to be called {tool}-{suffix} to support tools being
called something like clang-17. Many clang tools follow this pattern
too for example, clang-scan-deps. It is pure luck wether clang or
clang-scan-deps will appear first in the LLVMDriverTools.def file. If
the former appears first, clang-scan-deps will match against clang,
which is not preferable. Instead we can control the order that tools
are checked so that we always look at more specific tool names first.

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

llvm/tools/llvm-driver/CMakeLists.txt

index e709cd7..23cc373 100644 (file)
@@ -3,6 +3,8 @@ get_property(LLVM_DRIVER_OBJLIBS GLOBAL PROPERTY LLVM_DRIVER_OBJLIBS)
 
 get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS)
 
+list(SORT LLVM_DRIVER_TOOLS)
+list(REVERSE LLVM_DRIVER_TOOLS)
 foreach(tool ${LLVM_DRIVER_TOOLS})
   string(REPLACE "-" "_" tool_entry ${tool})
   get_property(tool_aliases GLOBAL PROPERTY LLVM_DRIVER_TOOL_ALIASES_${tool})