Index: lldb/include/lldb/Target/Language.h =================================================================== --- lldb/include/lldb/Target/Language.h +++ lldb/include/lldb/Target/Language.h @@ -243,6 +243,9 @@ static lldb::LanguageType GetLanguageTypeFromString(llvm::StringRef string); static const char *GetNameForLanguageType(lldb::LanguageType language); + static llvm::StringRef GetNameForLanguageTypeAsRef(lldb::LanguageType lang) { + return GetNameForLanguageType(lang); + } static void PrintAllLanguages(Stream &s, const char *prefix, const char *suffix); Index: lldb/source/Symbol/TypeSystem.cpp =================================================================== --- lldb/source/Symbol/TypeSystem.cpp +++ lldb/source/Symbol/TypeSystem.cpp @@ -237,7 +237,7 @@ } error = llvm::make_error( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); return std::move(error); @@ -254,7 +254,7 @@ } error = llvm::make_error( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); return std::move(error); @@ -264,7 +264,7 @@ if (!can_create) { error = llvm::make_error( "Unable to find type system for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)), + Language::GetNameForLanguageTypeAsRef(language), llvm::inconvertibleErrorCode()); } else { // Cache even if we get a shared pointer that contains a null type system @@ -277,7 +277,7 @@ } error = llvm::make_error( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); } @@ -306,7 +306,7 @@ } error = llvm::make_error( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); return std::move(error); @@ -323,7 +323,7 @@ } error = llvm::make_error( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); return std::move(error); @@ -333,7 +333,7 @@ if (!can_create) { error = llvm::make_error( "Unable to find type system for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)), + Language::GetNameForLanguageTypeAsRef(language), llvm::inconvertibleErrorCode()); } else { // Cache even if we get a shared pointer that contains a null type system @@ -346,7 +346,7 @@ } error = llvm::make_error( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); } Index: llvm/include/llvm/ADT/StringExtras.h =================================================================== --- llvm/include/llvm/ADT/StringExtras.h +++ llvm/include/llvm/ADT/StringExtras.h @@ -48,8 +48,13 @@ return Result; } -/// Construct a string ref from a boolean. -inline StringRef toStringRef(bool B) { return StringRef(B ? "true" : "false"); } +/// Construct a StringRef from a bool. +// Uses enable_if to prevent implicit conversion to bool from pointers, ints, etc. +template +typename std::enable_if::value, StringRef>::type +toStringRef(T B) { + return StringRef(B ? "true" : "false"); +} /// Construct a string ref from an array ref of unsigned chars. inline StringRef toStringRef(ArrayRef Input) { Index: llvm/include/llvm/CodeGen/CommandFlags.inc =================================================================== --- llvm/include/llvm/CodeGen/CommandFlags.inc +++ llvm/include/llvm/CodeGen/CommandFlags.inc @@ -389,7 +389,7 @@ } if (DisableTailCalls.getNumOccurrences() > 0) NewAttrs.addAttribute("disable-tail-calls", - toStringRef(DisableTailCalls)); + toStringRef((bool)DisableTailCalls)); if (StackRealign) NewAttrs.addAttribute("stackrealign");