https://github.com/inbelic updated https://github.com/llvm/llvm-project/pull/145795
>From 7e3f1398ae2ba147822f96dd262a2c6127f0ff68 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 18:16:12 +0000 Subject: [PATCH 1/8] simple prototype first error --- .../clang/Basic/DiagnosticSemaKinds.td | 2 ++ clang/lib/Sema/SemaHLSL.cpp | 23 ++++++++++++++++++- clang/test/SemaHLSL/RootSignature-err.hlsl | 3 +++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 6eba0619883d3..f41c9f15e2585 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -13059,6 +13059,8 @@ def err_invalid_hlsl_resource_type: Error< def err_hlsl_spirv_only: Error<"%0 is only available for the SPIR-V target">; def err_hlsl_vk_literal_must_contain_constant: Error<"the argument to vk::Literal must be a vk::integral_constant">; +def err_hlsl_invalid_parameter : Error<"finns error">; + def subst_hlsl_format_ranges: TextSubstitution< "%select{t|u|b|s}0[%1;%select{%3]|unbounded)}2">; diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 0974ccbf9267c..a643d2e02f304 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1078,6 +1078,27 @@ void SemaHLSL::ActOnFinishRootSignatureDecl( bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, SourceLocation Loc) { + // Define some common error handling functions + + bool HadError = false; + auto ReportError = [this, Loc, &HadError]() { + HadError = true; + this->Diag(Loc, diag::err_hlsl_invalid_parameter); + }; + + auto VerifyRegister = [ReportError](uint32_t Register) { + if (Register == ~0u) + ReportError(); + }; + + // Iterate through the elements and do basic validations + for (const llvm::hlsl::rootsig::RootElement &Elem : D->getRootElements()) { + if (const auto *Descriptor = + std::get_if<llvm::hlsl::rootsig::RootDescriptor>(&Elem)) { + VerifyRegister(Descriptor->Reg.Number); + } + } + // The following conducts analysis on resource ranges to detect and report // any overlaps in resource ranges. // @@ -1247,7 +1268,7 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, ReportOverlap(&Info, Overlapping.value()); } - return HadOverlap; + return HadError | HadOverlap; } void SemaHLSL::handleRootSignatureAttr(Decl *D, const ParsedAttr &AL) { diff --git a/clang/test/SemaHLSL/RootSignature-err.hlsl b/clang/test/SemaHLSL/RootSignature-err.hlsl index f544247f4db2a..023d5757040c0 100644 --- a/clang/test/SemaHLSL/RootSignature-err.hlsl +++ b/clang/test/SemaHLSL/RootSignature-err.hlsl @@ -18,3 +18,6 @@ void bad_root_signature_3() {} [RootSignature("DescriptorTable(), invalid")] // expected-error {{expected end of stream to denote end of parameters, or, another valid parameter of RootSignature}} void bad_root_signature_4() {} + +[RootSignature("CBV(b4294967295)")] // expected-error {{finns error}} +void bad_root_signature_5() {} >From 08b76795eec849040071bac6aa3e79fc61def85e Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 18:22:02 +0000 Subject: [PATCH 2/8] expand for space --- clang/lib/Sema/SemaHLSL.cpp | 8 +++++++- clang/test/SemaHLSL/RootSignature-err.hlsl | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index a643d2e02f304..703005a044a0f 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1079,7 +1079,6 @@ void SemaHLSL::ActOnFinishRootSignatureDecl( bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, SourceLocation Loc) { // Define some common error handling functions - bool HadError = false; auto ReportError = [this, Loc, &HadError]() { HadError = true; @@ -1091,11 +1090,18 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, ReportError(); }; + auto VerifySpace = [ReportError](uint32_t Space) { + // [0xfffffff0, 0xffffffff] is reserverd system namespace + if (0xfffffff0 <= Space) + ReportError(); + }; + // Iterate through the elements and do basic validations for (const llvm::hlsl::rootsig::RootElement &Elem : D->getRootElements()) { if (const auto *Descriptor = std::get_if<llvm::hlsl::rootsig::RootDescriptor>(&Elem)) { VerifyRegister(Descriptor->Reg.Number); + VerifySpace(Descriptor->Space); } } diff --git a/clang/test/SemaHLSL/RootSignature-err.hlsl b/clang/test/SemaHLSL/RootSignature-err.hlsl index 023d5757040c0..1525bee5f672e 100644 --- a/clang/test/SemaHLSL/RootSignature-err.hlsl +++ b/clang/test/SemaHLSL/RootSignature-err.hlsl @@ -21,3 +21,6 @@ void bad_root_signature_4() {} [RootSignature("CBV(b4294967295)")] // expected-error {{finns error}} void bad_root_signature_5() {} + +[RootSignature("CBV(b0, space = 4294967280)")] // expected-error {{finns error}} +void bad_root_signature_5() {} >From 135242e0531e597a2a12830a45566b9440a4ae35 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 18:28:56 +0000 Subject: [PATCH 3/8] expand basic validation to other element types --- clang/lib/Sema/SemaHLSL.cpp | 13 +++++++++++++ clang/test/SemaHLSL/RootSignature-err.hlsl | 22 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 703005a044a0f..4bcd6415e2b53 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1102,6 +1102,19 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, std::get_if<llvm::hlsl::rootsig::RootDescriptor>(&Elem)) { VerifyRegister(Descriptor->Reg.Number); VerifySpace(Descriptor->Space); + } else if (const auto *Constants = + std::get_if<llvm::hlsl::rootsig::RootConstants>(&Elem)) { + VerifyRegister(Constants->Reg.Number); + VerifySpace(Constants->Space); + } else if (const auto *Sampler = + std::get_if<llvm::hlsl::rootsig::StaticSampler>(&Elem)) { + VerifyRegister(Sampler->Reg.Number); + VerifySpace(Sampler->Space); + } else if (const auto *Clause = + std::get_if<llvm::hlsl::rootsig::DescriptorTableClause>( + &Elem)) { + VerifyRegister(Clause->Reg.Number); + VerifySpace(Clause->Space); } } diff --git a/clang/test/SemaHLSL/RootSignature-err.hlsl b/clang/test/SemaHLSL/RootSignature-err.hlsl index 1525bee5f672e..e893652480585 100644 --- a/clang/test/SemaHLSL/RootSignature-err.hlsl +++ b/clang/test/SemaHLSL/RootSignature-err.hlsl @@ -19,8 +19,24 @@ void bad_root_signature_3() {} [RootSignature("DescriptorTable(), invalid")] // expected-error {{expected end of stream to denote end of parameters, or, another valid parameter of RootSignature}} void bad_root_signature_4() {} -[RootSignature("CBV(b4294967295)")] // expected-error {{finns error}} -void bad_root_signature_5() {} +// Basic validation of register value and space -[RootSignature("CBV(b0, space = 4294967280)")] // expected-error {{finns error}} +// expected-error@+2 {{finns error}} +// expected-error@+1 {{finns error}} +[RootSignature("CBV(b4294967295, space = 4294967280)")] void bad_root_signature_5() {} + +// expected-error@+2 {{finns error}} +// expected-error@+1 {{finns error}} +[RootSignature("RootConstants(b4294967295, space = 4294967280, num32BitConstants = 1)")] +void bad_root_signature_6() {} + +// expected-error@+2 {{finns error}} +// expected-error@+1 {{finns error}} +[RootSignature("StaticSampler(s4294967295, space = 4294967280)")] +void bad_root_signature_7() {} + +// expected-error@+2 {{finns error}} +// expected-error@+1 {{finns error}} +[RootSignature("DescriptorTable(SRV(t4294967295, space = 4294967280))")] +void bad_root_signature_8() {} >From 23503e151058da7dca1c616e9930a31b5f2e2a82 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 18:35:16 +0000 Subject: [PATCH 4/8] add validation of numDescriptors --- clang/lib/Sema/SemaHLSL.cpp | 8 +++++++- clang/test/SemaHLSL/RootSignature-err.hlsl | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 4bcd6415e2b53..5bd14cee41e99 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1115,6 +1115,9 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, &Elem)) { VerifyRegister(Clause->Reg.Number); VerifySpace(Clause->Space); + + if (Clause->NumDescriptors == 0) + ReportError(); } } @@ -1181,7 +1184,10 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, &Elem)) { RangeInfo Info; Info.LowerBound = Clause->Reg.Number; - assert(0 < Clause->NumDescriptors && "Verified as part of TODO(#129940)"); + // Relevant error will have already been reported above and needs to be + // fixed before we can conduct range analysis, so shortcut error return + if (Clause->NumDescriptors == 0) + return true; Info.UpperBound = Clause->NumDescriptors == RangeInfo::Unbounded ? RangeInfo::Unbounded : Info.LowerBound + Clause->NumDescriptors - diff --git a/clang/test/SemaHLSL/RootSignature-err.hlsl b/clang/test/SemaHLSL/RootSignature-err.hlsl index e893652480585..82c47b329d2da 100644 --- a/clang/test/SemaHLSL/RootSignature-err.hlsl +++ b/clang/test/SemaHLSL/RootSignature-err.hlsl @@ -40,3 +40,8 @@ void bad_root_signature_7() {} // expected-error@+1 {{finns error}} [RootSignature("DescriptorTable(SRV(t4294967295, space = 4294967280))")] void bad_root_signature_8() {} + +// expected-error@+2 {{finns error}} +// expected-error@+1 {{finns error}} +[RootSignature("DescriptorTable(UAV(u0, numDescriptors = 0), Sampler(s0, numDescriptors = 0))")] +void bad_root_signature_9() {} >From 4d7d4660fc234c7fb80299fef5e8aec10e591d33 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 18:53:40 +0000 Subject: [PATCH 5/8] add validation of StaticSamplers --- clang/lib/Sema/SemaHLSL.cpp | 9 +++++++++ clang/test/SemaHLSL/RootSignature-err.hlsl | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 5bd14cee41e99..95b3c73e06e48 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -45,6 +45,7 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/TargetParser/Triple.h" #include <cstddef> +#include <cmath> #include <iterator> #include <utility> @@ -1110,6 +1111,14 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, std::get_if<llvm::hlsl::rootsig::StaticSampler>(&Elem)) { VerifyRegister(Sampler->Reg.Number); VerifySpace(Sampler->Space); + + assert(!std::isnan(Sampler->MaxLOD) && !std::isnan(Sampler->MinLOD) && + "By construction, parseFloatParam can't produce a NaN from a float_literal token"); + + if (16 < Sampler->MaxAnisotropy) + ReportError(); + if (Sampler->MipLODBias < -16.f || 15.99 < Sampler->MipLODBias) + ReportError(); } else if (const auto *Clause = std::get_if<llvm::hlsl::rootsig::DescriptorTableClause>( &Elem)) { diff --git a/clang/test/SemaHLSL/RootSignature-err.hlsl b/clang/test/SemaHLSL/RootSignature-err.hlsl index 82c47b329d2da..25fe7326e5e4c 100644 --- a/clang/test/SemaHLSL/RootSignature-err.hlsl +++ b/clang/test/SemaHLSL/RootSignature-err.hlsl @@ -45,3 +45,17 @@ void bad_root_signature_8() {} // expected-error@+1 {{finns error}} [RootSignature("DescriptorTable(UAV(u0, numDescriptors = 0), Sampler(s0, numDescriptors = 0))")] void bad_root_signature_9() {} + +#define ErroneousStaticSampler \ + "StaticSampler(s0" \ + " maxAnisotropy = 17," \ + ")" + +// expected-error@+2 {{finns error}} +// expected-error@+1 {{finns error}} +[RootSignature("StaticSampler(s0, maxAnisotropy = 17, mipLODBias = -16.000001)")] +void bad_root_signature_10() {} + +// expected-error@+1 {{finns error}} +[RootSignature("StaticSampler(s0, mipLODBias = 15.990001)")] +void bad_root_signature_11() {} >From b7bae3c2c35db25166940835357a2febff5687ec Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 21:31:08 +0000 Subject: [PATCH 6/8] add relevant error message --- .../clang/Basic/DiagnosticSemaKinds.td | 2 +- clang/lib/Sema/SemaHLSL.cpp | 29 +++++++++++++------ clang/test/SemaHLSL/RootSignature-err.hlsl | 26 ++++++++--------- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index f41c9f15e2585..294e33418fc33 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -13059,7 +13059,7 @@ def err_invalid_hlsl_resource_type: Error< def err_hlsl_spirv_only: Error<"%0 is only available for the SPIR-V target">; def err_hlsl_vk_literal_must_contain_constant: Error<"the argument to vk::Literal must be a vk::integral_constant">; -def err_hlsl_invalid_parameter : Error<"finns error">; +def err_hlsl_invalid_rootsig_parameter : Error<"parameter value must be in the range [%0, %1]">; def subst_hlsl_format_ranges: TextSubstitution< "%select{t|u|b|s}0[%1;%select{%3]|unbounded)}2">; diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 95b3c73e06e48..53f39f29e2b27 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1081,20 +1081,27 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, SourceLocation Loc) { // Define some common error handling functions bool HadError = false; - auto ReportError = [this, Loc, &HadError]() { + auto ReportError = [this, Loc, &HadError](uint32_t LowerBound, uint32_t UpperBound) { HadError = true; - this->Diag(Loc, diag::err_hlsl_invalid_parameter); + this->Diag(Loc, diag::err_hlsl_invalid_rootsig_parameter) + << LowerBound << UpperBound; + }; + + auto ReportFloatError = [this, Loc, &HadError](float LowerBound, float UpperBound) { + HadError = true; + this->Diag(Loc, diag::err_hlsl_invalid_rootsig_parameter) + << std::to_string(LowerBound) << std::to_string(UpperBound); }; auto VerifyRegister = [ReportError](uint32_t Register) { if (Register == ~0u) - ReportError(); + ReportError(0, 0xfffffffe); }; auto VerifySpace = [ReportError](uint32_t Space) { - // [0xfffffff0, 0xffffffff] is reserverd system namespace + // [0xfffffff0, 0xffffffff] is reserved system namespace if (0xfffffff0 <= Space) - ReportError(); + ReportError(0, 0xffffffef); }; // Iterate through the elements and do basic validations @@ -1116,17 +1123,21 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, "By construction, parseFloatParam can't produce a NaN from a float_literal token"); if (16 < Sampler->MaxAnisotropy) - ReportError(); + ReportError(0, 16); if (Sampler->MipLODBias < -16.f || 15.99 < Sampler->MipLODBias) - ReportError(); + ReportFloatError(-16.f, 15.99); } else if (const auto *Clause = std::get_if<llvm::hlsl::rootsig::DescriptorTableClause>( &Elem)) { VerifyRegister(Clause->Reg.Number); VerifySpace(Clause->Space); - if (Clause->NumDescriptors == 0) - ReportError(); + if (Clause->NumDescriptors == 0) { + // NumDescriptor could techincally be ~0u but that is reserved for + // unbounded, so the diagnostic will not report that as a valid int + // value + ReportError(1, 0xfffffffe); + } } } diff --git a/clang/test/SemaHLSL/RootSignature-err.hlsl b/clang/test/SemaHLSL/RootSignature-err.hlsl index 25fe7326e5e4c..61db61f6cceb4 100644 --- a/clang/test/SemaHLSL/RootSignature-err.hlsl +++ b/clang/test/SemaHLSL/RootSignature-err.hlsl @@ -21,28 +21,28 @@ void bad_root_signature_4() {} // Basic validation of register value and space -// expected-error@+2 {{finns error}} -// expected-error@+1 {{finns error}} +// expected-error@+2 {{parameter value must be in the range [0, 4294967294]}} +// expected-error@+1 {{parameter value must be in the range [0, 4294967279]}} [RootSignature("CBV(b4294967295, space = 4294967280)")] void bad_root_signature_5() {} -// expected-error@+2 {{finns error}} -// expected-error@+1 {{finns error}} +// expected-error@+2 {{parameter value must be in the range [0, 4294967294]}} +// expected-error@+1 {{parameter value must be in the range [0, 4294967279]}} [RootSignature("RootConstants(b4294967295, space = 4294967280, num32BitConstants = 1)")] void bad_root_signature_6() {} -// expected-error@+2 {{finns error}} -// expected-error@+1 {{finns error}} +// expected-error@+2 {{parameter value must be in the range [0, 4294967294]}} +// expected-error@+1 {{parameter value must be in the range [0, 4294967279]}} [RootSignature("StaticSampler(s4294967295, space = 4294967280)")] void bad_root_signature_7() {} -// expected-error@+2 {{finns error}} -// expected-error@+1 {{finns error}} +// expected-error@+2 {{parameter value must be in the range [0, 4294967294]}} +// expected-error@+1 {{parameter value must be in the range [0, 4294967279]}} [RootSignature("DescriptorTable(SRV(t4294967295, space = 4294967280))")] void bad_root_signature_8() {} -// expected-error@+2 {{finns error}} -// expected-error@+1 {{finns error}} +// expected-error@+2 {{parameter value must be in the range [1, 4294967294]}} +// expected-error@+1 {{parameter value must be in the range [1, 4294967294]}} [RootSignature("DescriptorTable(UAV(u0, numDescriptors = 0), Sampler(s0, numDescriptors = 0))")] void bad_root_signature_9() {} @@ -51,11 +51,11 @@ void bad_root_signature_9() {} " maxAnisotropy = 17," \ ")" -// expected-error@+2 {{finns error}} -// expected-error@+1 {{finns error}} +// expected-error@+2 {{parameter value must be in the range [0, 16]}} +// expected-error@+1 {{parameter value must be in the range [-16.000000, 15.990000]}} [RootSignature("StaticSampler(s0, maxAnisotropy = 17, mipLODBias = -16.000001)")] void bad_root_signature_10() {} -// expected-error@+1 {{finns error}} +// expected-error@+1 {{parameter value must be in the range [-16.000000, 15.990000]}} [RootSignature("StaticSampler(s0, mipLODBias = 15.990001)")] void bad_root_signature_11() {} >From e3d729841a7ff11ad1b541cf3156e09be3979cc0 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 21:45:24 +0000 Subject: [PATCH 7/8] clang format --- clang/lib/Sema/SemaHLSL.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 53f39f29e2b27..1132c0c28daa1 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -44,8 +44,8 @@ #include "llvm/Support/DXILABI.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/TargetParser/Triple.h" -#include <cstddef> #include <cmath> +#include <cstddef> #include <iterator> #include <utility> @@ -1081,16 +1081,18 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, SourceLocation Loc) { // Define some common error handling functions bool HadError = false; - auto ReportError = [this, Loc, &HadError](uint32_t LowerBound, uint32_t UpperBound) { + auto ReportError = [this, Loc, &HadError](uint32_t LowerBound, + uint32_t UpperBound) { HadError = true; this->Diag(Loc, diag::err_hlsl_invalid_rootsig_parameter) - << LowerBound << UpperBound; + << LowerBound << UpperBound; }; - auto ReportFloatError = [this, Loc, &HadError](float LowerBound, float UpperBound) { + auto ReportFloatError = [this, Loc, &HadError](float LowerBound, + float UpperBound) { HadError = true; this->Diag(Loc, diag::err_hlsl_invalid_rootsig_parameter) - << std::to_string(LowerBound) << std::to_string(UpperBound); + << std::to_string(LowerBound) << std::to_string(UpperBound); }; auto VerifyRegister = [ReportError](uint32_t Register) { @@ -1111,7 +1113,7 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, VerifyRegister(Descriptor->Reg.Number); VerifySpace(Descriptor->Space); } else if (const auto *Constants = - std::get_if<llvm::hlsl::rootsig::RootConstants>(&Elem)) { + std::get_if<llvm::hlsl::rootsig::RootConstants>(&Elem)) { VerifyRegister(Constants->Reg.Number); VerifySpace(Constants->Space); } else if (const auto *Sampler = @@ -1120,7 +1122,8 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D, VerifySpace(Sampler->Space); assert(!std::isnan(Sampler->MaxLOD) && !std::isnan(Sampler->MinLOD) && - "By construction, parseFloatParam can't produce a NaN from a float_literal token"); + "By construction, parseFloatParam can't produce a NaN from a " + "float_literal token"); if (16 < Sampler->MaxAnisotropy) ReportError(0, 16); >From 4505dfb8cc199434b2f545e064397c4dea7d4184 Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Wed, 25 Jun 2025 22:47:20 +0000 Subject: [PATCH 8/8] self-review: fix invalid testcase --- clang/test/CodeGenHLSL/RootSignature.hlsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/test/CodeGenHLSL/RootSignature.hlsl b/clang/test/CodeGenHLSL/RootSignature.hlsl index 6618ca741aa9d..52f94dfaf52c7 100644 --- a/clang/test/CodeGenHLSL/RootSignature.hlsl +++ b/clang/test/CodeGenHLSL/RootSignature.hlsl @@ -76,7 +76,7 @@ void RootDescriptorsEntry() {} // CHECK-SAME: i32 2, i32 3, i32 5, // checking mipLODBias, maxAnisotropy, comparisonFunc, borderColor -// CHECK-SAME: float 0x40403999A0000000, i32 9, i32 3, i32 2, +// CHECK-SAME: float 0x4028E66660000000, i32 9, i32 3, i32 2, // checking minLOD, maxLOD // CHECK-SAME: float -1.280000e+02, float 1.280000e+02, @@ -90,7 +90,7 @@ void RootDescriptorsEntry() {} " addressU = TEXTURE_ADDRESS_MIRROR, " \ " addressV = TEXTURE_ADDRESS_CLAMP, " \ " addressW = TEXTURE_ADDRESS_MIRRORONCE, " \ - " mipLODBias = 32.45f, maxAnisotropy = 9, " \ + " mipLODBias = 12.45f, maxAnisotropy = 9, " \ " comparisonFunc = COMPARISON_EQUAL, " \ " borderColor = STATIC_BORDER_COLOR_OPAQUE_WHITE, " \ " minLOD = -128.f, maxLOD = 128.f, " \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits