gollvm: honor --version flag

Add support for --version command line option.

Change-Id: Ib77f05f04fe8587f59b8199b6be351db1dfec130
Reviewed-on: https://go-review.googlesource.com/c/162986
Reviewed-by: Cherry Zhang <cherryyz@google.com>
diff --git a/driver-main/llvm-goc.cpp b/driver-main/llvm-goc.cpp
index f03eced..3970074 100644
--- a/driver-main/llvm-goc.cpp
+++ b/driver-main/llvm-goc.cpp
@@ -106,6 +106,12 @@
     exit(0);
   }
 
+  // Honor -version
+  if (args_.hasArg(gollvm::options::OPT_version)) {
+    Driver::emitVersion();
+    exit(0);
+  }
+
   // Honor --print-multi-lib. FIXME: add real multilib support.
   if (args_.hasArg(gollvm::options::OPT_print_multi_lib)) {
     llvm::outs() << ".;@m64\n";
diff --git a/driver/Driver.cpp b/driver/Driver.cpp
index dfe748f..8323881 100644
--- a/driver/Driver.cpp
+++ b/driver/Driver.cpp
@@ -19,6 +19,7 @@
 #include "Driver.h"
 #include "LinuxToolChain.h"
 #include "ToolChain.h"
+#include "GollvmConfig.h"
 
 using namespace llvm;
 
@@ -69,7 +70,8 @@
 {
   // NB: the go build tool keys off the presence of the "experimental"
   // keyword (hashes compiler binary if detected).
-  llvm::errs() << "gollvm version 1 (experimental)\n";
+  llvm::errs() << "gollvm version 1 (experimental) [LLVM version "
+               << GOLLVM_COMPILERVERSION << "]\n";
 }
 
 std::string Driver::getFilePath(llvm::StringRef name,
diff --git a/driver/Driver.h b/driver/Driver.h
index 42c7936..1b62faa 100644
--- a/driver/Driver.h
+++ b/driver/Driver.h
@@ -116,6 +116,7 @@
   void appendInputActions(const inarglist &infiles,
                           ActionList &result,
                           Compilation &compilation);
+  static void emitVersion();
 
  private:
   llvm::Triple triple_;
@@ -134,7 +135,6 @@
 
   bool processAction(Action *act, Compilation &compilation, bool lastAct);
   ArtifactList collectInputArtifacts(Action *act, InternalTool *it);
-  void emitVersion();
 };
 
 template<typename IT>
diff --git a/driver/GollvmOptions.td b/driver/GollvmOptions.td
index 3eda9cf..7142b5f 100644
--- a/driver/GollvmOptions.td
+++ b/driver/GollvmOptions.td
@@ -107,6 +107,9 @@
 def help : Flag<["-", "--"], "help">,
   HelpText<"Display available options">;
 
+def version : Flag<["--"], "version">,
+  HelpText<"Display compiler version information.">;
+
 def B : JoinedOrSeparate<["-"], "B">,
     Flags<[DriverOption]>, MetaVarName<"<prefix>">,
     HelpText<"Add prefix for searching binaries and libraries">;