summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2011-03-16 22:45:02 +0000
committerJoerg Sonnenberger <joerg@bec.de>2011-03-16 22:45:02 +0000
commitbdbdf70334a50191ccf2b53567648e0d4a7f98ad (patch)
tree141c115654f62d001a9db578def8b73a356bff69 /clang/lib/Driver/Driver.cpp
parentb6069255da93443fed224497c4d42c32b21a0f21 (diff)
downloadbcm5719-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.cpp13
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.
OpenPOWER on IntegriCloud