Skip to content

Commit 7ae77bf

Browse files
committed
review: use std::optional return value
1 parent d8cc1f9 commit 7ae77bf

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,20 @@ namespace hlsl {
2222
namespace rootsig {
2323

2424
template <typename T>
25-
static StringRef getEnumName(const T Value, ArrayRef<EnumEntry<T>> Enums) {
25+
static std::optional<StringRef> getEnumName(const T Value,
26+
ArrayRef<EnumEntry<T>> Enums) {
2627
for (const auto &EnumItem : Enums)
2728
if (EnumItem.Value == Value)
2829
return EnumItem.Name;
29-
return "";
30+
return std::nullopt;
3031
}
3132

3233
template <typename T>
3334
static raw_ostream &printEnum(raw_ostream &OS, const T Value,
3435
ArrayRef<EnumEntry<T>> Enums) {
35-
OS << getEnumName(Value, Enums);
36-
36+
auto MaybeName = getEnumName(Value, Enums);
37+
if (MaybeName)
38+
OS << *MaybeName;
3739
return OS;
3840
}
3941

@@ -234,10 +236,11 @@ MDNode *MetadataBuilder::BuildRootConstants(const RootConstants &Constants) {
234236

235237
MDNode *MetadataBuilder::BuildRootDescriptor(const RootDescriptor &Descriptor) {
236238
IRBuilder<> Builder(Ctx);
237-
StringRef TypeName =
239+
std::optional<StringRef> TypeName =
238240
getEnumName(dxil::ResourceClass(llvm::to_underlying(Descriptor.Type)),
239241
ArrayRef(ResourceClassNames));
240-
llvm::SmallString<7> Name({"Root", TypeName});
242+
assert(TypeName && "Provided an invalid Resource Class");
243+
llvm::SmallString<7> Name({"Root", *TypeName});
241244
Metadata *Operands[] = {
242245
MDString::get(Ctx, Name),
243246
ConstantAsMetadata::get(
@@ -275,11 +278,12 @@ MDNode *MetadataBuilder::BuildDescriptorTable(const DescriptorTable &Table) {
275278
MDNode *MetadataBuilder::BuildDescriptorTableClause(
276279
const DescriptorTableClause &Clause) {
277280
IRBuilder<> Builder(Ctx);
278-
StringRef Name =
281+
std::optional<StringRef> Name =
279282
getEnumName(dxil::ResourceClass(llvm::to_underlying(Clause.Type)),
280283
ArrayRef(ResourceClassNames));
284+
assert(Name && "Provided an invalid Resource Class");
281285
Metadata *Operands[] = {
282-
MDString::get(Ctx, Name),
286+
MDString::get(Ctx, *Name),
283287
ConstantAsMetadata::get(Builder.getInt32(Clause.NumDescriptors)),
284288
ConstantAsMetadata::get(Builder.getInt32(Clause.Reg.Number)),
285289
ConstantAsMetadata::get(Builder.getInt32(Clause.Space)),

0 commit comments

Comments
 (0)