diff --git a/llvm/lib/Analysis/DataStructure/Printer.cpp b/llvm/lib/Analysis/DataStructure/Printer.cpp
index 2cd044e..71a5071 100644
--- a/llvm/lib/Analysis/DataStructure/Printer.cpp
+++ b/llvm/lib/Analysis/DataStructure/Printer.cpp
@@ -19,7 +19,10 @@
 #include "llvm/Assembly/Writer.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/GraphWriter.h"
+#include "llvm/System/Path.h"
+#include "llvm/System/Program.h"
 #include "llvm/ADT/Statistic.h"
+#include "llvm/Config/config.h"
 #include <fstream>
 #include <sstream>
 using namespace llvm;
@@ -256,17 +259,90 @@
 /// then cleanup.  For use from the debugger.
 ///
 void DSGraph::viewGraph() const {
-  std::ofstream F("/tmp/tempgraph.dot");
+  char pathsuff[9];
+
+  sprintf(pathsuff, "%06u", unsigned(rand()));
+
+  sys::Path TempDir = sys::Path::GetTemporaryDirectory();
+  sys::Path Filename = TempDir;
+  Filename.appendComponent("ds.tempgraph." + std::string(pathsuff) + ".dot");
+  std::cerr << "Writing '" << Filename << "'... ";
+  std::ofstream F(Filename.c_str());
+
   if (!F.good()) {
-    std::cerr << "Error opening '/tmp/tempgraph.dot' for temporary graph!\n";
+    std::cerr << "  error opening file for writing!\n";
     return;
   }
+
   print(F);
   F.close();
-  if (system("dot -Tps -Gsize=10,7.5 -Grotate=90 /tmp/tempgraph.dot > /tmp/tempgraph.ps"))
-    std::cerr << "Error running dot: 'dot' not in path?\n";
-  system("gv /tmp/tempgraph.ps");
-  system("rm /tmp/tempgraph.dot /tmp/tempgraph.ps");
+  std::cerr << "\n";
+
+#if HAVE_GRAPHVIZ
+  sys::Path Graphviz(LLVM_PATH_GRAPHVIZ);
+  std::vector<const char*> args;
+  args.push_back(Graphviz.c_str());
+  args.push_back(Filename.c_str());
+  args.push_back(0);
+  
+  std::cerr << "Running 'Graphviz' program... " << std::flush;
+  if (sys::Program::ExecuteAndWait(Graphviz, &args[0])) {
+    std::cerr << "Error viewing graph: 'Graphviz' not in path?\n";
+  } else {
+    Filename.eraseFromDisk();
+    return;
+  }
+#elif (HAVE_GV && HAVE_DOT)
+  sys::Path PSFilename = TempDir;
+  PSFilename.appendComponent(std::string("ds.tempgraph") + "." + pathsuff + ".ps");
+
+  sys::Path dot(LLVM_PATH_DOT);
+  std::vector<const char*> args;
+  args.push_back(dot.c_str());
+  args.push_back("-Tps");
+  args.push_back("-Nfontname=Courier");
+  args.push_back("-Gsize=7.5,10");
+  args.push_back(Filename.c_str());
+  args.push_back("-o");
+  args.push_back(PSFilename.c_str());
+  args.push_back(0);
+  
+  std::cerr << "Running 'dot' program... " << std::flush;
+  if (sys::Program::ExecuteAndWait(dot, &args[0])) {
+    std::cerr << "Error viewing graph: 'dot' not in path?\n";
+  } else {
+    std::cerr << "\n";
+
+    sys::Path gv(LLVM_PATH_GV);
+    args.clear();
+    args.push_back(gv.c_str());
+    args.push_back(PSFilename.c_str());
+    args.push_back(0);
+    
+    sys::Program::ExecuteAndWait(gv, &args[0]);
+  }
+  Filename.eraseFromDisk();
+  PSFilename.eraseFromDisk();
+  return;
+#elif HAVE_DOTTY
+  sys::Path dotty(LLVM_PATH_DOTTY);
+  std::vector<const char*> args;
+  args.push_back(Filename.c_str());
+  args.push_back(0);
+  
+  std::cerr << "Running 'dotty' program... " << std::flush;
+  if (sys::Program::ExecuteAndWait(dotty, &args[0])) {
+    std::cerr << "Error viewing graph: 'dotty' not in path?\n";
+  } else {
+#ifndef __MINGW32__ // Dotty spawns another app and doesn't wait until it returns
+    Filename.eraseFromDisk();
+#endif
+    return;
+  }
+#endif
+  
+  Filename.eraseFromDisk();
+  TempDir.eraseFromDisk(true);
 }
 
 
