2020#include " llvm/ADT/Twine.h"
2121#include " llvm/BinaryFormat/DXContainer.h"
2222#include " llvm/Object/Error.h"
23- #include " llvm/Support/Casting.h"
24- #include " llvm/Support/Endian.h"
2523#include " llvm/Support/Error.h"
2624#include " llvm/Support/MemoryBufferRef.h"
2725#include " llvm/TargetParser/Triple.h"
26+ #include < array>
27+ #include < cstddef>
28+ #include < cstdint>
2829#include < variant>
2930
3031namespace llvm {
@@ -40,7 +41,6 @@ template <typename T>
4041std::enable_if_t <std::is_class<T>::value, void > swapBytes (T &value) {
4142 value.swapBytes ();
4243}
43-
4444} // namespace detail
4545
4646// This class provides a view into the underlying resource array. The Resource
@@ -127,16 +127,13 @@ struct RootParameterView {
127127 RootParameterView (const dxbc::RootParameterHeader &H, StringRef P)
128128 : Header(H), ParamData(P) {}
129129
130- template <typename T, typename VersionT = T> Expected<T> readParameter () {
131- assert (sizeof (VersionT) <= sizeof (T) &&
132- " Parameter of higher version must inherit all previous version data "
133- " members" );
134- if (sizeof (VersionT) != ParamData.size ())
130+ template <typename T> Expected<T> readParameter () {
131+ T Struct;
132+ if (sizeof (T) != ParamData.size ())
135133 return make_error<GenericBinaryError>(
136134 " Reading structure out of file bounds" , object_error::parse_failed);
137135
138- T Struct;
139- memcpy (&Struct, ParamData.data (), sizeof (VersionT));
136+ memcpy (&Struct, ParamData.data (), sizeof (T));
140137 // DXContainer is always little endian
141138 if (sys::IsBigEndianHost)
142139 Struct.swapBytes ();
0 commit comments