Add parsing of mllvm command line options.
authorRui Ueyama <ruiu@google.com>
Thu, 30 Mar 2017 20:10:40 +0000 (20:10 +0000)
committerRui Ueyama <ruiu@google.com>
Thu, 30 Mar 2017 20:10:40 +0000 (20:10 +0000)
Patch by Alberto Magni
Original patch by Kyungwoo Lee <kyulee@microsoft.com>

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

llvm-svn: 299106

lld/COFF/Driver.cpp
lld/test/COFF/lto-debug-pass-arguments.ll [new file with mode: 0644]

index 93e92ef..4663dee 100644 (file)
@@ -574,6 +574,13 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
   // Parse command line options.
   opt::InputArgList Args = Parser.parseLINK(ArgsArr.slice(1));
 
+  // Parse and evaluate -mllvm options.
+  std::vector<const char *> V;
+  V.push_back("lld-link (LLVM option parsing)");
+  for (auto *Arg : Args.filtered(OPT_mllvm))
+    V.push_back(Arg->getValue());
+  cl::ParseCommandLineOptions(V.size(), V.data());
+
   // Handle /help
   if (Args.hasArg(OPT_help)) {
     printHelp(ArgsArr[0]);
diff --git a/lld/test/COFF/lto-debug-pass-arguments.ll b/lld/test/COFF/lto-debug-pass-arguments.ll
new file mode 100644 (file)
index 0000000..4381590
--- /dev/null
@@ -0,0 +1,16 @@
+; REQUIRES: x86
+; RUN: llvm-as %s -o %t.obj
+; RUN: lld-link /dll /out:%t.dll %t.obj /mllvm:-debug-pass=Arguments 2>&1 | FileCheck %s
+
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc"
+
+define void @dummy() {
+  ret void
+}
+
+define void @_DllMainCRTStartup() {
+  ret void
+}
+
+; CHECK: Pass Arguments: