Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp	(revision 213105)
+++ lib/Driver/Tools.cpp	(working copy)
@@ -5313,12 +5313,22 @@
 
 void darwin::MachOTool::AddMachOArch(const ArgList &Args,
                                      ArgStringList &CmdArgs) const {
+  llvm::Triple::ArchType Arch = getToolChain().getArch();
   StringRef ArchName = getMachOToolChain().getMachOArchName(Args);
 
   // Derived from darwin_arch spec.
   CmdArgs.push_back("-arch");
-  CmdArgs.push_back(Args.MakeArgString(ArchName));
 
+  // FIXME: Remove these special cases.
+  if (Arch == llvm::Triple::ppc)
+    CmdArgs.push_back("ppc");
+  else if (Arch == llvm::Triple::ppc64)
+    CmdArgs.push_back("ppc64");
+  else if (Arch == llvm::Triple::ppc64le)
+    CmdArgs.push_back("ppc64le");
+  else
+    CmdArgs.push_back(Args.MakeArgString(ArchName));
+
   // FIXME: Is this needed anymore?
   if (ArchName == "arm")
     CmdArgs.push_back("-force_cpusubtype_ALL");
