summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/MinGW/Driver.cpp3
-rw-r--r--lld/MinGW/Options.td1
-rw-r--r--lld/test/MinGW/lto-debug-pass-arguments.ll16
3 files changed, 20 insertions, 0 deletions
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp
index 404452bdd02..7d46d877dc7 100644
--- a/lld/MinGW/Driver.cpp
+++ b/lld/MinGW/Driver.cpp
@@ -160,6 +160,9 @@ bool link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
error("unknown parameter: -m" + S);
}
+ for (auto *A : Args.filtered(OPT_mllvm))
+ Add("-mllvm:" + StringRef(A->getValue()));
+
if (Args.getLastArgValue(OPT_m) == "i386pe")
Add("-alternatename:__image_base__=___ImageBase");
else
diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td
index f6f8079891c..74055770a68 100644
--- a/lld/MinGW/Options.td
+++ b/lld/MinGW/Options.td
@@ -11,6 +11,7 @@ def entry: S<"entry">, MetaVarName<"<entry>">,
def l: JoinedOrSeparate<["-"], "l">, MetaVarName<"<libName>">,
HelpText<"Root name of library to use">;
def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
+def mllvm: S<"mllvm">;
def o: JoinedOrSeparate<["-"], "o">, MetaVarName<"<path>">,
HelpText<"Path to file to write output">;
def out_implib: Separate<["--"], "out-implib">, HelpText<"Import library name">;
diff --git a/lld/test/MinGW/lto-debug-pass-arguments.ll b/lld/test/MinGW/lto-debug-pass-arguments.ll
new file mode 100644
index 00000000000..e9fb9ed473a
--- /dev/null
+++ b/lld/test/MinGW/lto-debug-pass-arguments.ll
@@ -0,0 +1,16 @@
+; REQUIRES: x86
+; RUN: llvm-as %s -o %t.obj
+; RUN: ld.lld -m i386pep -shared -o %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-gnu"
+
+define void @dummy() {
+ ret void
+}
+
+define void @_DllMainCRTStartup() {
+ ret void
+}
+
+; CHECK: Pass Arguments:
OpenPOWER on IntegriCloud