Skip to content

Commit f804a23

Browse files
author
joaosaffran
committed
fix
1 parent b45b1b6 commit f804a23

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

llvm/include/llvm/MC/DXContainerRootSignature.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ struct RootParameterInfo {
2929
: Header(H), Location(L) {}
3030
};
3131

32-
using RootDescriptor = std::variant<dxbc::RST0::v0::RootDescriptor *,
33-
dxbc::RST0::v1::RootDescriptor *>;
32+
using RootDescriptor = std::variant<dxbc::RST0::v0::RootDescriptor,
33+
dxbc::RST0::v1::RootDescriptor>;
3434
using ParametersView = std::variant<const dxbc::RootConstants *,
3535
const dxbc::RST0::v0::RootDescriptor *,
3636
const dxbc::RST0::v1::RootDescriptor *>;
@@ -52,13 +52,13 @@ struct RootParametersContainer {
5252
void addParameter(dxbc::RootParameterHeader H,
5353
dxbc::RST0::v0::RootDescriptor D) {
5454
addInfo(H, Descriptors.size());
55-
Descriptors.push_back(std::move(&D));
55+
Descriptors.push_back(D);
5656
}
5757

5858
void addParameter(dxbc::RootParameterHeader H,
5959
dxbc::RST0::v1::RootDescriptor D) {
6060
addInfo(H, Descriptors.size());
61-
Descriptors.push_back(std::move(&D));
61+
Descriptors.push_back(D);
6262
}
6363

6464
std::optional<ParametersView> getParameter(const RootParameterInfo *H) const {
@@ -68,11 +68,12 @@ struct RootParametersContainer {
6868
case llvm::to_underlying(dxbc::RootParameterType::CBV):
6969
case llvm::to_underlying(dxbc::RootParameterType::SRV):
7070
case llvm::to_underlying(dxbc::RootParameterType::UAV):
71-
RootDescriptor VersionedParam = Descriptors[H->Location];
72-
if (std::holds_alternative<dxbc::RST0::v0::RootDescriptor *>(
73-
VersionedParam))
74-
return std::get<dxbc::RST0::v0::RootDescriptor *>(VersionedParam);
75-
return std::get<dxbc::RST0::v1::RootDescriptor *>(VersionedParam);
71+
const RootDescriptor &VersionedParam = Descriptors[H->Location];
72+
if (std::holds_alternative<dxbc::RST0::v0::RootDescriptor>(
73+
VersionedParam)) {
74+
return &std::get<dxbc::RST0::v0::RootDescriptor>(VersionedParam);
75+
}
76+
return &std::get<dxbc::RST0::v1::RootDescriptor>(VersionedParam);
7677
}
7778

7879
return std::nullopt;

llvm/lib/MC/DXContainerRootSignature.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
8080
auto P = ParametersContainer.getParameter(H);
8181
if (!P)
8282
continue;
83-
if (std::holds_alternative<const dxbc::RootConstants *>(*P)) {
84-
auto *Constants = std::get<const dxbc::RootConstants *>(*P);
83+
if (std::holds_alternative<const dxbc::RootConstants *>(P.value())) {
84+
auto *Constants = std::get<const dxbc::RootConstants *>(P.value());
8585
support::endian::write(BOS, Constants->ShaderRegister,
8686
llvm::endianness::little);
8787
support::endian::write(BOS, Constants->RegisterSpace,
@@ -90,14 +90,16 @@ void RootSignatureDesc::write(raw_ostream &OS) const {
9090
llvm::endianness::little);
9191
} else if (std::holds_alternative<const dxbc::RST0::v0::RootDescriptor *>(
9292
*P)) {
93-
auto *Descriptor = std::get<const dxbc::RST0::v0::RootDescriptor *>(*P);
93+
auto *Descriptor =
94+
std::get<const dxbc::RST0::v0::RootDescriptor *>(P.value());
9495
support::endian::write(BOS, Descriptor->ShaderRegister,
9596
llvm::endianness::little);
9697
support::endian::write(BOS, Descriptor->RegisterSpace,
9798
llvm::endianness::little);
9899
} else if (std::holds_alternative<const dxbc::RST0::v1::RootDescriptor *>(
99100
*P)) {
100-
auto *Descriptor = std::get<const dxbc::RST0::v1::RootDescriptor *>(*P);
101+
auto *Descriptor =
102+
std::get<const dxbc::RST0::v1::RootDescriptor *>(P.value());
101103

102104
support::endian::write(BOS, Descriptor->ShaderRegister,
103105
llvm::endianness::little);

llvm/lib/ObjectYAML/DXContainerEmitter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,13 +299,13 @@ void DXContainerWriter::writeParts(raw_ostream &OS) {
299299
Descriptor.ShaderRegister = Param.Descriptor.ShaderRegister;
300300
Descriptor.Flags = Param.Descriptor.getEncodedFlags();
301301
RS.ParametersContainer.addParameter(Header, Descriptor);
302+
}
302303
break;
303304
default:
304305
// Handling invalid parameter type edge case
305306
RS.ParametersContainer.addInfo(Header, -1);
306307
}
307308
}
308-
}
309309

310310
RS.write(OS);
311311
break;

0 commit comments

Comments
 (0)