[llvm] [DirectX] Adding support for Root Descriptors in obj2yaml/yaml2obj (PR #137259)
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 6 13:58:17 PDT 2025
================
@@ -121,16 +121,19 @@ namespace DirectX {
struct RootParameterView {
const dxbc::RootParameterHeader &Header;
StringRef ParamData;
- RootParameterView(const dxbc::RootParameterHeader &H, StringRef P)
+ RootParameterView(uint32_t V, const dxbc::RootParameterHeader &H, StringRef P)
: Header(H), ParamData(P) {}
- template <typename T> Expected<T> readParameter() {
- T Struct;
- if (sizeof(T) != ParamData.size())
+ template <typename T, typename VersionT = T> Expected<T> readParameter() {
+ assert(sizeof(VersionT) <= sizeof(T) &&
+ "Parameter of higher version must inherit all previous version data "
+ "members");
+ if (sizeof(VersionT) != ParamData.size())
return make_error<GenericBinaryError>(
"Reading structure out of file bounds", object_error::parse_failed);
- memcpy(&Struct, ParamData.data(), sizeof(T));
+ T Struct;
+ memcpy(&Struct, ParamData.data(), sizeof(VersionT));
----------------
joaosaffran wrote:
I am not sure if this need addressing, the intended behaviour is to leave things uninitialized, since the fields are not being used by the current version. I am waiting on @bogner comments to see how and if this need addressing.
https://github.com/llvm/llvm-project/pull/137259
More information about the llvm-commits
mailing list