[clang] [llvm] [DirectX] Validate registers are bound to root signature (PR #146785)
Chris B via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 25 07:46:36 PDT 2025
================
@@ -136,6 +136,51 @@ struct OverlappingRanges {
llvm::SmallVector<OverlappingRanges>
findOverlappingRanges(llvm::SmallVector<RangeInfo> &Infos);
+class RootSignatureBindingValidation {
+private:
+ llvm::SmallVector<RangeInfo, 16> Bindings;
+ struct TypeRange {
+ uint32_t Start;
+ uint32_t End;
+ };
+ std::unordered_map<dxil::ResourceClass, TypeRange> Ranges;
+
+public:
+ void addBinding(dxil::ResourceClass Type, const RangeInfo &Binding) {
+ auto It = Ranges.find(Type);
+
+ if (It == Ranges.end()) {
+ uint32_t InsertPos = Bindings.size();
+ Bindings.push_back(Binding);
+ Ranges[Type] = {InsertPos, InsertPos + 1};
+ } else {
+ uint32_t InsertPos = It->second.End;
+ Bindings.insert(Bindings.begin() + InsertPos, Binding);
+
+ It->second.End++;
+
+ for (auto &[Type, Range] : Ranges) {
+ if (Range.Start > InsertPos) {
+ Range.Start++;
+ Range.End++;
+ }
+ }
+ }
+ }
+
+ llvm::ArrayRef<RangeInfo>
+ getBindingsOfType(const dxil::ResourceClass &Type) const {
+ auto It = Ranges.find(Type);
+ if (It == Ranges.end()) {
+ return {};
+ }
----------------
llvm-beanz wrote:
```suggestion
if (It == Ranges.end())
return {};
```
https://llvm.org/docs/CodingStandards.html#don-t-use-braces-on-simple-single-statement-bodies-of-if-else-loop-statements
https://github.com/llvm/llvm-project/pull/146785
More information about the llvm-commits
mailing list