[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