diff --git a/lib/CodeGen/InstrSelection/InstrForest.cpp b/lib/CodeGen/InstrSelection/InstrForest.cpp
index 9ff6818..ea2ccad 100644
--- a/lib/CodeGen/InstrSelection/InstrForest.cpp
+++ b/lib/CodeGen/InstrSelection/InstrForest.cpp
@@ -255,7 +255,7 @@
   // if a fixed array is too small.
   // 
   int numChildren = 0;
-  std::vector<InstrTreeNode*> childArray(instr->getNumOperands());
+  InstrTreeNode** childArray = new InstrTreeNode*[instr->getNumOperands()];
   
   //
   // Walk the operands of the instruction
@@ -362,6 +362,7 @@
       assert(n == 1);
       setRightChild(parent, childArray[numChildren - 1]);
     }
-  
+
+  delete [] childArray;
   return treeNode;
 }
diff --git a/lib/Support/SystemUtils.cpp b/lib/Support/SystemUtils.cpp
index 6ecaf2b..51f3d18 100644
--- a/lib/Support/SystemUtils.cpp
+++ b/lib/Support/SystemUtils.cpp
@@ -10,7 +10,6 @@
 #include <fstream>
 #include <iostream>
 #include <cstdlib>
-#include <vector>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -33,13 +32,13 @@
     return FilenameBase;    // Couldn't open the file? Use it!
 
   // Create a pattern for mkstemp...
-  std::vector<char> FNBuffer(FilenameBase.size()+8);
-  strcpy(&FNBuffer[0], FilenameBase.c_str());
-  strcpy(&FNBuffer[FilenameBase.size()], "-XXXXXX");
+  char *FNBuffer = new char[FilenameBase.size()+8];
+  strcpy(FNBuffer, FilenameBase.c_str());
+  strcpy(FNBuffer+FilenameBase.size(), "-XXXXXX");
 
   // Agree on a temporary file name to use....
   int TempFD;
-  if ((TempFD = mkstemp(&FNBuffer[0])) == -1) {
+  if ((TempFD = mkstemp(FNBuffer)) == -1) {
     std::cerr << "bugpoint: ERROR: Cannot create temporary file in the current "
 	      << " directory!\n";
     exit(1);
@@ -48,7 +47,9 @@
   // We don't need to hold the temp file descriptor... we will trust that noone
   // will overwrite/delete the file while we are working on it...
   close(TempFD);
-  return std::string(&FNBuffer[0]);
+  std::string Result(FNBuffer);
+  delete[] FNBuffer;
+  return Result;
 }
 
 /// isExecutableFile - This function returns true if the filename specified
diff --git a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
index 9ff6818..ea2ccad 100644
--- a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
+++ b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
@@ -255,7 +255,7 @@
   // if a fixed array is too small.
   // 
   int numChildren = 0;
-  std::vector<InstrTreeNode*> childArray(instr->getNumOperands());
+  InstrTreeNode** childArray = new InstrTreeNode*[instr->getNumOperands()];
   
   //
   // Walk the operands of the instruction
@@ -362,6 +362,7 @@
       assert(n == 1);
       setRightChild(parent, childArray[numChildren - 1]);
     }
-  
+
+  delete [] childArray;
   return treeNode;
 }
