[clang] [llvm] [DirectX] Removing dxbc DescriptorRange from mcbxdc (PR #154629)

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 10 09:49:56 PDT 2025


================
@@ -209,6 +202,13 @@ inline bool isValidParameterType(uint32_t V) {
   return false;
 }
 
+inline bool isValidRangeType(uint32_t V) {
+  static_assert(llvm::to_underlying(dxil::ResourceClass::Sampler) == 3,
+                "dxil::ResourceClass numeric values must match the Root "
+                "Signature values associated to each class.");
+  return V <= llvm::to_underlying(dxil::ResourceClass::Sampler);
----------------
bogner wrote:

I don't think this assert really captures what you want it to here - if we were to add another value to `ResourceClass` after `Sampler` this would still be fine but the `<=` check wouldn't be correct any more. Similarly, if we reordered `SRV` and `UAV` for some reason this wouldn't detect it.

A better way to do this would probably be to add a `LastEntry` to `ResourceClass` that aliases `Sampler`, that is:
```c++
enum class ResourceClass : uint8_t {
  SRV = 0,
  UAV,
  CBuffer,
  Sampler,
  LastEntry = Sampler,
};
```

Then we can just check `V <= llvm::to_underlying(dxil::ResourceClass::LastEntry)` here and we don't need an assert to sanity check the enum. Note that `-Wcovered-switch` will be fine with this, since the value is indeed covered by the "Sampler" case.

https://github.com/llvm/llvm-project/pull/154629


More information about the llvm-commits mailing list