diff --git a/clang/tools/clang-cc/clang-cc.cpp b/clang/tools/clang-cc/clang-cc.cpp index f3563e6ab2aa..1e1117a1aa3a 100644 --- a/clang/tools/clang-cc/clang-cc.cpp +++ b/clang/tools/clang-cc/clang-cc.cpp @@ -397,18 +397,11 @@ static llvm::cl::opt PThread("pthread", llvm::cl::desc("Support POSIX threads in generated code"), llvm::cl::init(false)); -static LangKind GetLanguage(const std::string &Filename) { +static LangKind GetLanguage(llvm::StringRef Filename) { if (BaseLang != langkind_unspecified) return BaseLang; - std::string::size_type DotPos = Filename.rfind('.'); - - if (DotPos == std::string::npos) { - BaseLang = langkind_c; // Default to C if no extension. - return langkind_c; - } - - std::string Ext = std::string(Filename.begin()+DotPos+1, Filename.end()); + llvm::StringRef Ext = Filename.rsplit('.').second; if (Ext == "c") return langkind_c; else if (Ext == "S" || Ext == "s")