[llvm] [Offload] Define additional device info properties (PR #152533)
Ross Brunton via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 8 01:57:12 PDT 2025
================
@@ -131,17 +131,32 @@ static void ProcessEnum(const EnumRec &Enum, raw_ostream &OS) {
OS << formatv("/// @brief {0}\n", Enum.getDesc());
OS << formatv("typedef enum {0} {{\n", Enum.getName());
- uint32_t EtorVal = 0;
+ uint32_t EtorVal = Enum.isBitField();
for (const auto &EnumVal : Enum.getValues()) {
- if (Enum.isTyped()) {
- OS << MakeComment(
- formatv("[{0}] {1}", EnumVal.getTaggedType(), EnumVal.getDesc())
- .str());
- } else {
- OS << MakeComment(EnumVal.getDesc());
- }
- OS << formatv(TAB_1 "{0}_{1} = {2},\n", Enum.getEnumValNamePrefix(),
- EnumVal.getName(), EtorVal++);
+ size_t NumTemplateValues{EnumVal.getTemplateValues().size()};
+ size_t TemplateIndex{
----------------
RossBrunton wrote:
I think this would be clearer as something like this:
```c++
uint32_t EtorVal = Enum.isBitField();
auto Print = [&](std::string &&Name, std::string &&Desc) {
if (Enum.isTyped()) {
OS << MakeComment(
formatv("[{0}] {1}", EnumVal.getTaggedType(), Desc).str());
} else {
OS << MakeComment(Desc);
}
OS << formatv(TAB_1 "{0}_{1} = {2},\n", Enum.getEnumValNamePrefix(), Name,
EtorVal);
if (Enum.isBitField()) {
EtorVal <<= 1u;
} else {
++EtorVal;
}
};
for (const auto &EnumVal : Enum.getValues()) {
size_t NumTemplateValues{EnumVal.getTemplateValues().size()};
if (NumTemplateValues) {
for (size_t TemplateIndex = 0; TemplateIndex < NumTemplateValues; TemplateIndex ++) {
Print(EnumVal.getTemplateName(TemplateIndex), EnumVal.getTemplateDesc(TemplateIndex));
}
} else {
Print(EnumVal.getName(), EnumVal.getDesc());
}
}
```
https://github.com/llvm/llvm-project/pull/152533
More information about the llvm-commits
mailing list