llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Yusra Syeda (ysyeda) <details> <summary>Changes</summary> This PR adds a function which converts the language to string. --- Full diff: https://github.com/llvm/llvm-project/pull/69487.diff 2 Files Affected: - (modified) clang/include/clang/Basic/LangStandard.h (+1) - (modified) clang/lib/Basic/LangStandards.cpp (+40) ``````````diff diff --git a/clang/include/clang/Basic/LangStandard.h b/clang/include/clang/Basic/LangStandard.h index 6356f16acc811e0..66b2ca0a8397136 100644 --- a/clang/include/clang/Basic/LangStandard.h +++ b/clang/include/clang/Basic/LangStandard.h @@ -43,6 +43,7 @@ enum class Language : uint8_t { HLSL, ///@} }; +const char *languageToString(Language L); enum LangFeatures { LineComment = (1 << 0), diff --git a/clang/lib/Basic/LangStandards.cpp b/clang/lib/Basic/LangStandards.cpp index af9cf4f273920ee..2c894fdafa1cacb 100644 --- a/clang/lib/Basic/LangStandards.cpp +++ b/clang/lib/Basic/LangStandards.cpp @@ -10,9 +10,49 @@ #include "clang/Config/config.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/TargetParser/Triple.h" using namespace clang; +const char *clang::languageToString(Language L) { + // I would like to make this function and the definition of Language + // in the .h file simply expand the contents of a .def file. + // However, in the .h the members of the enum have doxygen annotations + // and/or comments which would be lost. + switch (L) { + case Language::Unknown: + return "Unknown"; + case Language::Asm: + return "Asm"; + case Language::LLVM_IR: + return "LLVM_IR"; + case Language::C: + return "C"; + case Language::CXX: + return "CXX"; + case Language::ObjC: + return "ObjC"; + case Language::ObjCXX: + return "ObjCXX"; + case Language::OpenCL: + return "OpenCL"; + case Language::OpenCLCXX: + return "OpenCLCXX"; + case Language::CUDA: + return "CUDA"; + case Language::RenderScript: + return "RenderScript"; + case Language::HIP: + return "HIP"; + case Language::HLSL: + return "HLSL"; + } + + std::string msg = llvm::formatv( + "Unknown value ({0}) passed to languageToString", (unsigned int)L); + llvm_unreachable(msg.c_str()); +} + #define LANGSTANDARD(id, name, lang, desc, features) \ static const LangStandard Lang_##id = {name, desc, features, Language::lang}; #include "clang/Basic/LangStandards.def" `````````` </details> https://github.com/llvm/llvm-project/pull/69487 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits