diff options
| author | Joerg Sonnenberger <joerg@bec.de> | 2011-03-16 22:45:02 +0000 |
|---|---|---|
| committer | Joerg Sonnenberger <joerg@bec.de> | 2011-03-16 22:45:02 +0000 |
| commit | bdbdf70334a50191ccf2b53567648e0d4a7f98ad (patch) | |
| tree | 141c115654f62d001a9db578def8b73a356bff69 /clang/lib/Driver/Driver.cpp | |
| parent | b6069255da93443fed224497c4d42c32b21a0f21 (diff) | |
| download | bcm5719-llvm-bdbdf70334a50191ccf2b53567648e0d4a7f98ad.tar.gz bcm5719-llvm-bdbdf70334a50191ccf2b53567648e0d4a7f98ad.zip | |
Use C as fallback type if in C preprocessor mode.
llvm-svn: 127769
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 572323a9638..f713fa0b3bd 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -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. |

