[clang] [clang] Language to String function (PR #69487)
https://github.com/ysyeda closed 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/ysyeda edited 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
[clang] [clang] Language to String function (PR #69487)
MaskRay wrote: > This is intended to be used by the z/OS target, see the patch here: #68926 Can the description (first comment) https://github.com/llvm/llvm-project/pull/69487#issue-195029 be amended to link to this PR? 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/AaronBallman approved this pull request. LGTM! 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
[clang] [clang] Language to String function (PR #69487)
@@ -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"; ysyeda wrote: Done 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/ysyeda updated https://github.com/llvm/llvm-project/pull/69487 >From 7214e2ad580724c6b747ce5da126f4e8dbdc825c Mon Sep 17 00:00:00 2001 From: Yusra Syeda Date: Wed, 18 Oct 2023 13:20:58 -0400 Subject: [PATCH 1/3] add language to string function --- clang/include/clang/Basic/LangStandard.h | 1 + clang/lib/Basic/LangStandards.cpp| 40 2 files changed, 41 insertions(+) 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" >From e38d717dd1ca527acbc7ab724ab09b438ed365b6 Mon Sep 17 00:00:00 2001 From: Yusra Syeda Date: Thu, 26 Oct 2023 13:51:39 -0400 Subject: [PATCH 2/3] address review comments --- clang/include/clang/Basic/LangStandard.h | 2 +- clang/lib/Basic/LangStandards.cpp| 13 +++-- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/clang/include/clang/Basic/LangStandard.h b/clang/include/clang/Basic/LangStandard.h index 66b2ca0a8397136..bc49669a82ad2db 100644 --- a/clang/include/clang/Basic/LangStandard.h +++ b/clang/include/clang/Basic/LangStandard.h @@ -43,7 +43,7 @@ enum class Language : uint8_t { HLSL, ///@} }; -const char *languageToString(Language L); +StringRef languageToString(Language L); enum LangFeatures { LineComment = (1 << 0), diff --git a/clang/lib/Basic/LangStandards.cpp b/clang/lib/Basic/LangStandards.cpp index 2c894fdafa1cacb..ade84cf2fa77ec9 100644 --- a/clang/lib/Basic/LangStandards.cpp +++ b/clang/lib/Basic/LangStandards.cpp @@ -10,22 +10,17 @@ #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. +StringRef clang::languageToString(Language L) { switch (L) { case Language::Unknown: return "Unknown"; case Language::Asm: return "Asm"; case Language::LLVM_IR: -return "LLVM_IR"; +return "LLVM IR"; case Language::C: return "C"; case Language::CXX: @@ -48,9 +43,7 @@ const char *clang::languageToString(Language L) { return "HLSL"; } - std::string msg = llvm::formatv( - "Unknown value ({0}) passed to languageToString", (unsigned int)L); - llvm_unreachable(msg.c_str()); + llvm_unreachable("unhandled language kind"); } #define LANGSTANDARD(id, name, lang, desc, features) \ >From 605f64f2031a4b418b0a5485c0d32ebd28c5e03b Mon Sep 17 00:00:00 2001 From: Yusra Syeda Date: Thu, 26 Oct 2023 16:14:38 -0400 Subject: [PATCH 3/3] update lang name --- clang/lib/Basic/LangStandards.cpp | 8 1
[clang] [clang] Language to String function (PR #69487)
@@ -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"; AaronBallman wrote: I don't have a strong preference here, but I think it would make sense to use `C++`, `Objective-C`, `Objective-C++`, etc. Whatever the official language name is as best we can tell. 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
[clang] [clang] Language to String function (PR #69487)
@@ -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"; ysyeda wrote: Would you suggest changing this to C++? 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/ysyeda updated https://github.com/llvm/llvm-project/pull/69487 >From 7214e2ad580724c6b747ce5da126f4e8dbdc825c Mon Sep 17 00:00:00 2001 From: Yusra Syeda Date: Wed, 18 Oct 2023 13:20:58 -0400 Subject: [PATCH 1/2] add language to string function --- clang/include/clang/Basic/LangStandard.h | 1 + clang/lib/Basic/LangStandards.cpp| 40 2 files changed, 41 insertions(+) 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" >From e38d717dd1ca527acbc7ab724ab09b438ed365b6 Mon Sep 17 00:00:00 2001 From: Yusra Syeda Date: Thu, 26 Oct 2023 13:51:39 -0400 Subject: [PATCH 2/2] address review comments --- clang/include/clang/Basic/LangStandard.h | 2 +- clang/lib/Basic/LangStandards.cpp| 13 +++-- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/clang/include/clang/Basic/LangStandard.h b/clang/include/clang/Basic/LangStandard.h index 66b2ca0a8397136..bc49669a82ad2db 100644 --- a/clang/include/clang/Basic/LangStandard.h +++ b/clang/include/clang/Basic/LangStandard.h @@ -43,7 +43,7 @@ enum class Language : uint8_t { HLSL, ///@} }; -const char *languageToString(Language L); +StringRef languageToString(Language L); enum LangFeatures { LineComment = (1 << 0), diff --git a/clang/lib/Basic/LangStandards.cpp b/clang/lib/Basic/LangStandards.cpp index 2c894fdafa1cacb..ade84cf2fa77ec9 100644 --- a/clang/lib/Basic/LangStandards.cpp +++ b/clang/lib/Basic/LangStandards.cpp @@ -10,22 +10,17 @@ #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. +StringRef clang::languageToString(Language L) { switch (L) { case Language::Unknown: return "Unknown"; case Language::Asm: return "Asm"; case Language::LLVM_IR: -return "LLVM_IR"; +return "LLVM IR"; case Language::C: return "C"; case Language::CXX: @@ -48,9 +43,7 @@ const char *clang::languageToString(Language L) { return "HLSL"; } - std::string msg = llvm::formatv( - "Unknown value ({0}) passed to languageToString", (unsigned int)L); - llvm_unreachable(msg.c_str()); + llvm_unreachable("unhandled language kind"); } #define LANGSTANDARD(id, name, lang, desc, features) \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Language to String function (PR #69487)
@@ -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"; AaronBallman wrote: I wonder how often people are going to call this expecting to get back `C++` instead of `CXX` (similar question for others)... 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
[clang] [clang] Language to String function (PR #69487)
@@ -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) { AaronBallman wrote: ```suggestion StringRef clang::languageToString(Language L) { ``` 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
[clang] [clang] Language to String function (PR #69487)
@@ -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"; AaronBallman wrote: ```suggestion return "LLVM IR"; ``` 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
[clang] [clang] Language to String function (PR #69487)
@@ -10,9 +10,49 @@ #include "clang/Config/config.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/FormatVariadic.h" AaronBallman wrote: Let's drop this, it's kind of overkill for an unreachable message. 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
[clang] [clang] Language to String function (PR #69487)
@@ -43,6 +43,7 @@ enum class Language : uint8_t { HLSL, ///@} }; +const char *languageToString(Language L); AaronBallman wrote: ```suggestion StringRef languageToString(Language L); ``` 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
[clang] [clang] Language to String function (PR #69487)
@@ -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()); AaronBallman wrote: ```suggestion llvm_unreachable("unhandled language kind"); ``` 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
[clang] [clang] Language to String function (PR #69487)
@@ -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. AaronBallman wrote: I was trying to figure out whether we should add the notion of a "family" to LangStandards.def but then I realized, that's just the `Language` enumeration in string form. So I think we can drop this comment entirely -- this is a reasonable implementation as-is. 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
[clang] [clang] Language to String function (PR #69487)
AaronBallman wrote: > This is intended to be used by the z/OS target, see the patch here: #68926 > > I asked Yusra to pull this part out into a separate PR. Thank you for the context! 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
[clang] [clang] Language to String function (PR #69487)
uweigand wrote: This is intended to be used by the z/OS target, see the patch here: https://github.com/llvm/llvm-project/pull/68926 I asked Yusra to pull this part out into a separate PR. 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/AaronBallman requested changes to this pull request. Agreed with others; what's the in-tree use case for this? 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
[clang] [clang] Language to String function (PR #69487)
MaskRay wrote: same question: if a dependent patch uses `languageToString`, please link to it. 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
[clang] [clang] Language to String function (PR #69487)
shafik wrote: What is the intended use for this? 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/muiez approved this pull request. LGTM 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
[clang] [clang] Language to String function (PR #69487)
llvmbot wrote: @llvm/pr-subscribers-clang Author: Yusra Syeda (ysyeda) Changes 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" `` 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
[clang] [clang] Language to String function (PR #69487)
https://github.com/ysyeda created https://github.com/llvm/llvm-project/pull/69487 This PR adds a function which converts the language to string. >From 7214e2ad580724c6b747ce5da126f4e8dbdc825c Mon Sep 17 00:00:00 2001 From: Yusra Syeda Date: Wed, 18 Oct 2023 13:20:58 -0400 Subject: [PATCH] add language to string function --- clang/include/clang/Basic/LangStandard.h | 1 + clang/lib/Basic/LangStandards.cpp| 40 2 files changed, 41 insertions(+) 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" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits