ccc/Driver: .s defaults to 'assembler-with-cpp' on Darwin.
 - <rdar://problem/6669441> ccc doesn't handle assembler-with-cpp
   semantics correctly (but clang supports it)

 - This is sad, because it requires a fairly useless target
   hook. C'est la vie.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67418 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Driver/HostInfo.cpp b/lib/Driver/HostInfo.cpp
index 39a688a..8c24a3c 100644
--- a/lib/Driver/HostInfo.cpp
+++ b/lib/Driver/HostInfo.cpp
@@ -57,6 +57,17 @@
 
   virtual bool useDriverDriver() const;
 
+  virtual types::ID lookupTypeForExtension(const char *Ext) const {
+    types::ID Ty = types::lookupTypeForExtension(Ext);
+
+    // Darwin always preprocesses assembly files (unless -x is used
+    // explicitly).
+    if (Ty == types::TY_PP_Asm)
+      return types::TY_Asm;
+
+    return Ty;
+  }
+
   virtual ToolChain *getToolChain(const ArgList &Args, 
                                   const char *ArchName) const;
 };
@@ -173,6 +184,10 @@
 
   virtual bool useDriverDriver() const;
 
+  virtual types::ID lookupTypeForExtension(const char *Ext) const {
+    return types::lookupTypeForExtension(Ext);
+  }
+
   virtual ToolChain *getToolChain(const ArgList &Args, 
                                   const char *ArchName) const;
 };