diff options
Diffstat (limited to 'clang/lib/Driver')
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 9 | ||||
-rw-r--r-- | clang/lib/Driver/Types.cpp | 5 |
2 files changed, 9 insertions, 5 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 729b9afe62e..3fddc8fe6e9 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1589,7 +1589,8 @@ const char *Driver::GetNamedOutputPath(Compilation &C, StringRef Name = llvm::sys::path::filename(BaseInput); std::pair<StringRef, StringRef> Split = Name.split('.'); std::string TmpName = - GetTemporaryPath(Split.first, types::getTypeTempSuffix(JA.getType())); + GetTemporaryPath(Split.first, + types::getTypeTempSuffix(JA.getType(), IsCLMode())); return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str())); } @@ -1620,8 +1621,7 @@ const char *Driver::GetNamedOutputPath(Compilation &C, if (llvm::sys::path::has_extension(Filename.str())) Filename = Filename.substr(0, Filename.rfind(".")); Filename.append("."); - // FIXME: For clang-cl, we want .obj rather than .o for object files. - Filename.append(types::getTypeTempSuffix(types::TY_Object)); + Filename.append(types::getTypeTempSuffix(types::TY_Object, IsCLMode())); } NamedOutput = C.getArgs().MakeArgString(Filename.c_str()); @@ -1665,7 +1665,8 @@ const char *Driver::GetNamedOutputPath(Compilation &C, StringRef Name = llvm::sys::path::filename(BaseInput); std::pair<StringRef, StringRef> Split = Name.split('.'); std::string TmpName = - GetTemporaryPath(Split.first, types::getTypeTempSuffix(JA.getType())); + GetTemporaryPath(Split.first, + types::getTypeTempSuffix(JA.getType(), IsCLMode())); return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str())); } } diff --git a/clang/lib/Driver/Types.cpp b/clang/lib/Driver/Types.cpp index 19870fe6fda..67ef2a6a835 100644 --- a/clang/lib/Driver/Types.cpp +++ b/clang/lib/Driver/Types.cpp @@ -44,7 +44,9 @@ types::ID types::getPreprocessedType(ID Id) { return getInfo(Id).PreprocessedType; } -const char *types::getTypeTempSuffix(ID Id) { +const char *types::getTypeTempSuffix(ID Id, bool CLMode) { + if (Id == TY_Object && CLMode) + return "obj"; return getInfo(Id).TempSuffix; } @@ -135,6 +137,7 @@ types::ID types::lookupTypeForExtension(const char *Ext) { .Case("s", TY_PP_Asm) .Case("S", TY_Asm) .Case("o", TY_Object) + .Case("obj", TY_Object) .Case("ii", TY_PP_CXX) .Case("mi", TY_PP_ObjC) .Case("mm", TY_ObjCXX) |