diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index e315a2f..cae0766 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -39,6 +39,11 @@
                          const char *LinkingOutput) const {
   ArgStringList CmdArgs;
 
+  CmdArgs.push_back("-triple");
+  const char *TripleStr = 
+    Args.MakeArgString(getToolChain().getTripleString().c_str());
+  CmdArgs.push_back(TripleStr);
+
   if (isa<AnalyzeJobAction>(JA)) {
     assert(JA.getType() == types::TY_Plist && "Invalid output type.");
     CmdArgs.push_back("-analyze");
@@ -371,11 +376,6 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
 
-  // FIXME: Always pass the full triple once we aren't concerned with
-  // ccc compat.
-  CmdArgs.push_back("-arch");
-  CmdArgs.push_back(getToolChain().getArchName().c_str());
-
   if (Output.getType() == types::TY_Dependencies) {
     // Handled with other dependency code.
   } else if (Output.isPipe()) {
diff --git a/test/Driver/clang-translation.c b/test/Driver/clang-translation.c
index b63a437..2421bd1 100644
--- a/test/Driver/clang-translation.c
+++ b/test/Driver/clang-translation.c
@@ -1,4 +1,5 @@
 // RUN: clang -ccc-host-triple i386-unknown-unknown -### -S -O0 -Os %s -o %t.s -fverbose-asm 2> %t.log
+// RUN: grep '"-triple" "i386-unknown-unknown"' %t.log &&
 // RUN: grep '"-S"' %t.log &&
 // RUN: grep '"-disable-free"' %t.log &&
 // RUN: grep '"--relocation-model" "static"' %t.log &&
@@ -6,7 +7,6 @@
 // RUN: grep '"--unwind-tables=0"' %t.log &&
 // RUN: grep '"--fmath-errno=1"' %t.log &&
 // RUN: grep '"-Os"' %t.log &&
-// RUN: grep '"-arch" "i386"' %t.log &&
 // RUN: grep '"-o" .*clang-translation\.c\.out\.tmp\.s' %t.log &&
 // RUN: grep '"--asm-verbose"' %t.log &&
 // RUN: true
diff --git a/tools/clang-cc/clang.cpp b/tools/clang-cc/clang.cpp
index 7541f80..bd6456b 100644
--- a/tools/clang-cc/clang.cpp
+++ b/tools/clang-cc/clang.cpp
@@ -764,7 +764,7 @@
   
   if (MacOSVersionMinIsInvalid) {
     fprintf(stderr, 
-        "-mmacosx-version-min=%s is invalid, expected something like '10.4'.\n", 
+        "-mmacosx-version-min=%s is invalid, expected something like '10.4'.\n",
             MacOSVersionMin.c_str());
     exit(1);
   }
@@ -776,25 +776,8 @@
   // Initialize base triple.  If a -triple option has been specified, use
   // that triple.  Otherwise, default to the host triple.
   std::string Triple = TargetTriple;
-  if (Triple.empty()) {
-    Triple = LLVM_HOSTTRIPLE;
-
-    // Force i<N>86 to i386 when using LLVM_HOSTTRIPLE.
-    if (Triple[0] == 'i' && isdigit(Triple[1]) && 
-        Triple[2] == '8' && Triple[3] == '6')
-      Triple[1] = '3';
-
-    // On darwin, we want to update the version to match that of the
-    // host.    
-    std::string::size_type DarwinDashIdx = Triple.find("-darwin");
-    if (DarwinDashIdx != std::string::npos) {
-      Triple.resize(DarwinDashIdx + strlen("-darwin"));
-
-      // Only add the major part of the os version.
-      std::string Version = llvm::sys::getOSVersion();
-      Triple += Version.substr(0, Version.find('.'));
-    }
-  }
+  if (Triple.empty())
+    Triple = llvm::sys::getHostTriple();
   
   // If -arch foo was specified, remove the architecture from the triple we have
   // so far and replace it with the specified one.
diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp
index d968cc8..880a26a 100644
--- a/tools/driver/driver.cpp
+++ b/tools/driver/driver.cpp
@@ -23,6 +23,7 @@
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm/System/Host.h"
 #include "llvm/System/Path.h"
 #include "llvm/System/Signals.h"
 using namespace clang;
@@ -77,13 +78,10 @@
 
   Diagnostic Diags(DiagClient.get());
 
-  // FIXME: Use the triple of the host, not the triple that we were
-  // compiled on.
-  llvm::OwningPtr<Driver> TheDriver(new Driver(Path.getBasename().c_str(),
-                                               Path.getDirname().c_str(),
-                                               LLVM_HOSTTRIPLE,
-                                               "a.out",
-                                               Diags));
+  llvm::OwningPtr<Driver> 
+    TheDriver(new Driver(Path.getBasename().c_str(), Path.getDirname().c_str(),
+                         llvm::sys::getHostTriple().c_str(),
+                         "a.out", Diags));
                                                
   llvm::OwningPtr<Compilation> C(TheDriver->BuildCompilation(argc, argv));
 
