[lld] r263862 - [LTO] Ignore -plugin/-plugin-opt options.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 18 17:40:10 PDT 2016

Author: davide
Date: Fri Mar 18 19:40:09 2016
New Revision: 263862

URL: http://llvm.org/viewvc/llvm-project?rev=263862&view=rev
[LTO] Ignore -plugin/-plugin-opt options.

This is required to get 'clang -flto' to work transparently
with lld. Please refer to the short comment in the code
for a more detailed explanation.


Modified: lld/trunk/ELF/Options.td
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=263862&r1=263861&r2=263862&view=diff
--- lld/trunk/ELF/Options.td (original)
+++ lld/trunk/ELF/Options.td Fri Mar 18 19:40:09 2016
@@ -181,6 +181,16 @@ def end_group_paren: Flag<["-"], ")">;
 def start_group : Flag<["--"], "start-group">;
 def start_group_paren: Flag<["-"], "(">;
+// Ignore LTO plugin-related options.
+// clang -flto passes -plugin and -plugin-opt to the linker. This is required
+// for ld.gold and ld.bfd to get LTO working. But it's not for lld which doesn't
+// rely on a plugin. Instead of detecting which linker is used on clang side we
+// just ignore the option on lld side as it's easier. In fact, the linker could
+// be called 'ld' and understanding which linker is used would require parsing of
+// --version output.
+def plugin : Separate<["-"], "plugin">;
+def plugin_opt : Joined<["-"], "plugin-opt=">;
 // Options listed below are silently ignored for now for compatibility.
 def fatal_warnings : Flag<["--"], "fatal-warnings">;
 def no_add_needed : Flag<["--"], "no-add-needed">;

More information about the llvm-commits mailing list