teemperor updated this revision to Diff 220983. teemperor marked an inline comment as done. teemperor added a comment.
- Add GetNameForLanguageTypeAsRef to save some typing. - Add comment for why we use enable_if. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D65942/new/ https://reviews.llvm.org/D65942 Files: lldb/include/lldb/Target/Language.h lldb/source/Symbol/TypeSystem.cpp llvm/include/llvm/ADT/StringExtras.h llvm/include/llvm/CodeGen/CommandFlags.inc
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"); 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 T> +typename std::enable_if<std::is_same<T, bool>::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<uint8_t> Input) { Index: lldb/source/Symbol/TypeSystem.cpp =================================================================== --- lldb/source/Symbol/TypeSystem.cpp +++ lldb/source/Symbol/TypeSystem.cpp @@ -237,7 +237,7 @@ } error = llvm::make_error<llvm::StringError>( "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<llvm::StringError>( "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<llvm::StringError>( "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<llvm::StringError>( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); } @@ -306,7 +306,7 @@ } error = llvm::make_error<llvm::StringError>( "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<llvm::StringError>( "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<llvm::StringError>( "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<llvm::StringError>( "TypeSystem for language " + - llvm::toStringRef(Language::GetNameForLanguageType(language)) + + Language::GetNameForLanguageTypeAsRef(language) + " doesn't exist", llvm::inconvertibleErrorCode()); } 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);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits