]> granicus.if.org Git - clang/commitdiff
Use C as fallback type if in C preprocessor mode.
authorJoerg Sonnenberger <joerg@bec.de>
Wed, 16 Mar 2011 22:45:02 +0000 (22:45 +0000)
committerJoerg Sonnenberger <joerg@bec.de>
Wed, 16 Mar 2011 22:45:02 +0000 (22:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127769 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Driver.cpp

index 572323a96388c53f9f97f3c2e71b515008c6788f..f713fa0b3bdbd755fbf6f2de2738bec6ab7642b5 100644 (file)
@@ -725,14 +725,19 @@ void Driver::BuildActions(const ToolChain &TC, const DerivedArgList &Args,
             Diag(clang::diag::err_drv_unknown_stdin_type);
           Ty = types::TY_C;
         } else {
-          // Otherwise lookup by extension, and fallback to ObjectType if not
-          // found. We use a host hook here because Darwin at least has its own
+          // Otherwise lookup by extension.
+          // Fallback is C if invoked as C preprocessor or Object otherwise.
+          // We use a host hook here because Darwin at least has its own
           // idea of what .s is.
           if (const char *Ext = strrchr(Value, '.'))
             Ty = TC.LookupTypeForExtension(Ext + 1);
 
-          if (Ty == types::TY_INVALID)
-            Ty = types::TY_Object;
+          if (Ty == types::TY_INVALID) {
+            if (CCCIsCPP)
+              Ty = types::TY_C;
+            else
+              Ty = types::TY_Object;
+          }
 
           // If the driver is invoked as C++ compiler (like clang++ or c++) it
           // should autodetect some input files as C++ for g++ compatibility.