From 8985450e52e924056c248786af72c1ea21a62f3a Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Wed, 29 Mar 2017 04:55:45 +0000 Subject: [PATCH] [XRay][tools] Handle "no subcommand" case for llvm-xray Summary: Currently the llvm-xray commandline tool fails to handle the case for when no subcommand is provided in a graceful manner. This fixes that to print the help message explaining the subcommands and the available options. Reviewers: pcc, pelikan Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31409 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298975 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-xray/X86/no-subcommand-noassert.txt | 3 +++ tools/llvm-xray/llvm-xray.cc | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/tools/llvm-xray/X86/no-subcommand-noassert.txt diff --git a/test/tools/llvm-xray/X86/no-subcommand-noassert.txt b/test/tools/llvm-xray/X86/no-subcommand-noassert.txt new file mode 100644 index 00000000000..3de328d73a4 --- /dev/null +++ b/test/tools/llvm-xray/X86/no-subcommand-noassert.txt @@ -0,0 +1,3 @@ +; RUN: llvm-xray | FileCheck %s + +; CHECK: OVERVIEW: XRay Tools diff --git a/tools/llvm-xray/llvm-xray.cc b/tools/llvm-xray/llvm-xray.cc index ac5faaa408b..98303e7be15 100644 --- a/tools/llvm-xray/llvm-xray.cc +++ b/tools/llvm-xray/llvm-xray.cc @@ -30,12 +30,20 @@ int main(int argc, char *argv[]) { " This program consolidates multiple XRay trace " "processing tools for convenient access.\n"); for (auto *SC : cl::getRegisteredSubcommands()) { - if (*SC) + if (*SC) { + // If no subcommand was provided, we need to explicitly check if this is + // the top-level subcommand. + if (SC == &*cl::TopLevelSubCommand) { + cl::PrintHelpMessage(false, true); + return 0; + } if (auto C = dispatch(SC)) { ExitOnError("llvm-xray: ")(C()); return 0; } + } } + // If all else fails, we still print the usage message. cl::PrintHelpMessage(false, true); } -- 2.11.0