[llvm-commits] [gcc-plugin] r82450 - in /gcc-plugin/trunk/utils: ./ target.cpp

Duncan Sands baldrick at free.fr
Mon Sep 21 02:40:08 PDT 2009


Author: baldrick
Date: Mon Sep 21 04:40:06 2009
New Revision: 82450

URL: http://llvm.org/viewvc/llvm-project?rev=82450&view=rev
Log:
Add a helper for printing info extracted from the
target triple.

Added:
    gcc-plugin/trunk/utils/
    gcc-plugin/trunk/utils/target.cpp

Added: gcc-plugin/trunk/utils/target.cpp
URL: http://llvm.org/viewvc/llvm-project/gcc-plugin/trunk/utils/target.cpp?rev=82450&view=auto

==============================================================================
--- gcc-plugin/trunk/utils/target.cpp (added)
+++ gcc-plugin/trunk/utils/target.cpp Mon Sep 21 04:40:06 2009
@@ -0,0 +1,68 @@
+#include <cstring>
+#include <iostream>
+
+#include <llvm/ADT/Triple.h>
+
+using namespace llvm;
+
+static void PrintTriple(Triple &T) {
+  std::cout << T.getTriple() << "\n";
+}
+static void PrintArchName(Triple &T) {
+  std::cout << T.getArchName().str() << "\n";
+}
+static void PrintVendorName(Triple &T) {
+  std::cout << T.getVendorName().str() << "\n";
+}
+static void PrintOSName(Triple &T) {
+  std::cout << T.getOSName().str() << "\n";
+}
+static void PrintEnvironmentName(Triple &T) {
+  std::cout << T.getEnvironmentName().str() << "\n";
+}
+static void PrintOSAndEnvironmentName(Triple &T) {
+  std::cout << T.getOSAndEnvironmentName().str() << "\n";
+}
+static void PrintArchTypePrefix(Triple &T) {
+  std::cout << T.getArchTypePrefix(T.getArch()) << "\n";
+}
+
+struct Option {
+  const char *Name;
+  void (*Action)(Triple &);
+};
+
+static Option Options[] = {
+  { "-t", PrintTriple },
+  { "-a", PrintArchName },
+  { "-v", PrintVendorName },
+  { "-o", PrintOSName },
+  { "-e", PrintEnvironmentName },
+  { "-oe", PrintOSAndEnvironmentName },
+  { "-p", PrintArchTypePrefix },
+  { NULL, NULL }
+};
+
+int main(int argc, char **argv) {
+  Triple T(TARGET_NAME);
+
+  for (int i = 1; i < argc; ++i) {
+    bool Found = false;
+    for (Option *O = Options; O->Name; ++O)
+      if (!strcmp(argv[i], O->Name)) {
+        Found = true;
+        O->Action(T);
+        break;
+      }
+    if (!Found) {
+      std::cerr << "Unknown option \"" << argv[i] << "\"\n";
+      std::cerr << "Usage: " << argv[0];
+      for (Option *O = Options; O->Name; ++O)
+        std::cerr << " " << O->Name;
+      std::cerr << "\n";
+      return 1;
+    }
+  }
+
+  return 0;
+}





More information about the llvm-commits mailing list