]> granicus.if.org Git - clang/commitdiff
Driver: fix an assertion with `-print-prog-name=`
authorSaleem Abdulrasool <compnerd@compnerd.org>
Tue, 1 May 2018 18:40:42 +0000 (18:40 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Tue, 1 May 2018 18:40:42 +0000 (18:40 +0000)
Fix an assertion when -print-prog-name= is invoked without parameter.
Returns an empty string.

Patch by Christian Bruel!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331296 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Driver.cpp
test/Driver/print-empty-prog-name.c [new file with mode: 0644]

index f41fd56669bd407252681d75cb11a15fda9b719d..598a8f10a4b42aa288d85e9ea8c2d18cc96226d2 100644 (file)
@@ -1594,7 +1594,13 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
   }
 
   if (Arg *A = C.getArgs().getLastArg(options::OPT_print_prog_name_EQ)) {
-    llvm::outs() << GetProgramPath(A->getValue(), TC) << "\n";
+    StringRef ProgName = A->getValue();
+
+    // Null program name cannot have a path.
+    if (! ProgName.empty())
+      llvm::outs() << GetProgramPath(ProgName, TC);
+
+    llvm::outs() << "\n";
     return false;
   }
 
diff --git a/test/Driver/print-empty-prog-name.c b/test/Driver/print-empty-prog-name.c
new file mode 100644 (file)
index 0000000..e01715f
--- /dev/null
@@ -0,0 +1,5 @@
+// Test that -print-prog-name= correctly returns an empty string
+
+// RUN: %clang -print-prog-name= 2>&1 | FileCheck %s
+// CHECK-NOT:{{.+}}
+