Index: lld/trunk/COFF/Driver.cpp =================================================================== --- lld/trunk/COFF/Driver.cpp +++ lld/trunk/COFF/Driver.cpp @@ -17,6 +17,7 @@ #include "Symbols.h" #include "Writer.h" #include "lld/Common/Driver.h" +#include "lld/Common/Version.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/BinaryFormat/Magic.h" @@ -731,6 +732,14 @@ return; } + // Handle --version, which is an lld extension. This option is a bit odd + // because it doesn't start with "/", but we deliberately chose "--" to + // avoid conflict with /version and for compatibility with clang-cl. + if (Args.hasArg(OPT_dash_dash_version)) { + outs() << getLLDVersion() << "\n"; + return; + } + // Handle /lldmingw early, since it can potentially affect how other // options are handled. Config->MinGW = Args.hasArg(OPT_lldmingw); Index: lld/trunk/COFF/Options.td =================================================================== --- lld/trunk/COFF/Options.td +++ lld/trunk/COFF/Options.td @@ -110,6 +110,8 @@ def output_def : Joined<["/", "-"], "output-def:">; def rsp_quoting : Joined<["--"], "rsp-quoting=">, HelpText<"Quoting style for response files, 'windows' (default) or 'posix'">; +def dash_dash_version : Flag<["--"], "version">, + HelpText<"Print version information">; // Flags for debugging def lldmap : F<"lldmap">; Index: lld/trunk/test/COFF/driver.test =================================================================== --- lld/trunk/test/COFF/driver.test +++ lld/trunk/test/COFF/driver.test @@ -1,3 +1,6 @@ # RUN: not lld-link nosuchfile.obj >& %t.log # RUN: FileCheck -check-prefix=MISSING %s < %t.log MISSING: nosuchfile.obj: {{[Nn]}}o such file or directory + +# RUN: lld-link --version | FileCheck -check-prefix=VERSION %s +VERSION: {{LLD [0-9]+\.[0-9]+}}