https://github.com/bob80905 updated 
https://github.com/llvm/llvm-project/pull/115045

>From ef4a7eea3eacce4f77b628aebe7f2838733971d0 Mon Sep 17 00:00:00 2001
From: Joshua Batista <jbati...@microsoft.com>
Date: Tue, 5 Nov 2024 10:35:59 -0800
Subject: [PATCH 1/2] add empty struct test cases

---
 .../SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl | 2 ++
 1 file changed, 2 insertions(+)

diff --git 
a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl 
b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
index acc1f281daddfc..08d75a0c23b228 100644
--- a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
+++ b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
@@ -107,3 +107,5 @@ struct TypeDefTest {
 };
 
 
_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(TypeDefTest),
 "");
+
+

>From 0ed4809a4bb12618e885914c09ba83e44c9c83c9 Mon Sep 17 00:00:00 2001
From: Joshua Batista <jbati...@microsoft.com>
Date: Tue, 5 Nov 2024 10:58:58 -0800
Subject: [PATCH 2/2] remove assert, return false instead

---
 clang/lib/Sema/SemaHLSL.cpp                              | 6 ++++--
 .../Types/Traits/IsTypedResourceElementCompatible.hlsl   | 9 +++++++++
 .../Traits/IsTypedResourceElementCompatibleErrors.hlsl   | 1 -
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp
index 298b7ad4f9e687..4b5b5aa96d5c20 100644
--- a/clang/lib/Sema/SemaHLSL.cpp
+++ b/clang/lib/Sema/SemaHLSL.cpp
@@ -2210,8 +2210,10 @@ bool 
SemaHLSL::IsTypedResourceElementCompatible(clang::QualType QT) {
   llvm::SmallVector<QualType, 4> QTTypes;
   BuildFlattenedTypeList(QT, QTTypes);
 
-  assert(QTTypes.size() > 0 &&
-         "expected at least one constituent type from non-null type");
+  // empty structs are not typed resource element compatible
+  if (QTTypes.size() == 0)
+    return false;
+
   QualType FirstQT = SemaRef.Context.getCanonicalType(QTTypes[0]);
 
   // element count cannot exceed 4
diff --git 
a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl 
b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
index 08d75a0c23b228..0a124be3e0aa60 100644
--- a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
+++ b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
@@ -108,4 +108,13 @@ struct TypeDefTest {
 
 
_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(TypeDefTest),
 "");
 
+struct EmptyStruct {};
+_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(EmptyStruct),
 "");
 
+struct EmptyDerived : EmptyStruct {};
+_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(EmptyDerived),
 "");
+
+struct EmptyBase : EmptyStruct {
+  int4 V;
+};
+_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(EmptyBase), 
""); 
diff --git 
a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl 
b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl
index cb3e9ae7a61509..1cc9880e5b25f1 100644
--- 
a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl
+++ 
b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl
@@ -7,4 +7,3 @@ 
_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(__hlsl_resour
 struct notComplete;
 // expected-error@+1{{incomplete type 'notComplete' where a complete type is 
required}}
 
_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(notComplete),
 "");
- 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to