-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Revert "[HLSL] add IsTypedResourceElementCompatible type trait" #114853
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
bob80905
merged 1 commit into
main
from
revert-113730-add_builtin_line_vector_compatible
Nov 4, 2024
Merged
Revert "[HLSL] add IsTypedResourceElementCompatible type trait" #114853
bob80905
merged 1 commit into
main
from
revert-113730-add_builtin_line_vector_compatible
Nov 4, 2024
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…)" This reverts commit 4894c67.
@llvm/pr-subscribers-hlsl @llvm/pr-subscribers-clang Author: Joshua Batista (bob80905) ChangesReverts llvm/llvm-project#113730 Full diff: https://github.com/llvm/llvm-project/pull/114853.diff 6 Files Affected:
diff --git a/clang/include/clang/Basic/TokenKinds.def b/clang/include/clang/Basic/TokenKinds.def
index 2c692c999bdff5..fdfb35de9cf287 100644
--- a/clang/include/clang/Basic/TokenKinds.def
+++ b/clang/include/clang/Basic/TokenKinds.def
@@ -662,7 +662,6 @@ KEYWORD(out , KEYHLSL)
// HLSL Type traits
TYPE_TRAIT_2(__builtin_hlsl_is_scalarized_layout_compatible, IsScalarizedLayoutCompatible, KEYHLSL)
TYPE_TRAIT_1(__builtin_hlsl_is_intangible, IsIntangibleType, KEYHLSL)
-TYPE_TRAIT_1(__builtin_hlsl_is_typed_resource_element_compatible, IsTypedResourceElementCompatible, KEYHLSL)
// OpenMP Type Traits
UNARY_EXPR_OR_TYPE_TRAIT(__builtin_omp_required_simd_align, OpenMPRequiredSimdAlign, KEYALL)
diff --git a/clang/include/clang/Sema/SemaHLSL.h b/clang/include/clang/Sema/SemaHLSL.h
index 06c541dec08cc8..e30acd87f77218 100644
--- a/clang/include/clang/Sema/SemaHLSL.h
+++ b/clang/include/clang/Sema/SemaHLSL.h
@@ -132,7 +132,6 @@ class SemaHLSL : public SemaBase {
// HLSL Type trait implementations
bool IsScalarizedLayoutCompatible(QualType T1, QualType T2) const;
- bool IsTypedResourceElementCompatible(QualType T1);
bool CheckCompatibleParameterABI(FunctionDecl *New, FunctionDecl *Old);
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 0001e343da84be..50c1b24fce6da7 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -5032,7 +5032,6 @@ static bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT,
case UTT_IsScalar:
case UTT_IsCompound:
case UTT_IsMemberPointer:
- case UTT_IsTypedResourceElementCompatible:
// Fall-through
// These traits are modeled on type predicates in C++0x [meta.unary.prop]
@@ -5715,15 +5714,6 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, TypeTrait UTT,
tok::kw___builtin_hlsl_is_intangible))
return false;
return T->isHLSLIntangibleType();
-
- case UTT_IsTypedResourceElementCompatible:
- assert(Self.getLangOpts().HLSL &&
- "line vector layout compatible types are HLSL-only feature");
- if (Self.RequireCompleteType(TInfo->getTypeLoc().getBeginLoc(), T,
- diag::err_incomplete_type))
- return false;
-
- return Self.HLSL().IsTypedResourceElementCompatible(T);
}
}
diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp
index e5eb75765383c0..a472538236e2d9 100644
--- a/clang/lib/Sema/SemaHLSL.cpp
+++ b/clang/lib/Sema/SemaHLSL.cpp
@@ -2199,51 +2199,6 @@ static void BuildFlattenedTypeList(QualType BaseTy,
}
}
-bool SemaHLSL::IsTypedResourceElementCompatible(clang::QualType QT) {
- if (QT.isNull())
- return false;
-
- // check if the outer type was an array type
- if (QT->isArrayType())
- return false;
-
- llvm::SmallVector<QualType, 4> QTTypes;
- BuildFlattenedTypeList(QT, QTTypes);
-
- assert(QTTypes.size() > 0 &&
- "expected at least one constituent type from non-null type");
- QualType FirstQT = QTTypes[0];
-
- // element count cannot exceed 4
- if (QTTypes.size() > 4)
- return false;
-
- for (QualType TempQT : QTTypes) {
- // ensure homogeneity
- if (TempQT != FirstQT)
- return false;
-
- if (const BuiltinType *BT = TempQT->getAs<BuiltinType>()) {
- if (BT->getKind() == BuiltinType::Bool ||
- BT->getKind() == BuiltinType::Enum)
- return false;
-
- // Check if it is an array type.
- if (TempQT->isArrayType())
- return false;
- }
- }
-
- // if the loop above completes without returning, then
- // we've guaranteed homogeneity
- int TotalSizeInBytes =
- (SemaRef.Context.getTypeSize(FirstQT) / 8) * QTTypes.size();
- if (TotalSizeInBytes > 16)
- return false;
-
- return true;
-}
-
bool SemaHLSL::IsScalarizedLayoutCompatible(QualType T1, QualType T2) const {
if (T1.isNull() || T2.isNull())
return false;
diff --git a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
deleted file mode 100644
index 669c03ea39c8f7..00000000000000
--- a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatible.hlsl
+++ /dev/null
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.6-library -finclude-default-header -fnative-half-type -verify %s
-// expected-no-diagnostics
-
-struct oneInt {
- int i;
-};
-
-struct twoInt {
- int aa;
- int ab;
-};
-
-struct threeInts {
- oneInt o;
- twoInt t;
-};
-
-struct oneFloat {
- float f;
-};
-struct depthDiff {
- int i;
- oneInt o;
- oneFloat f;
-};
-
-struct notHomogenous{
- int i;
- float f;
-};
-
-struct EightElements {
- twoInt x[2];
- twoInt y[2];
-};
-
-struct EightHalves {
-half x[8];
-};
-
-struct intVec {
- int2 i;
-};
-
-struct oneIntWithVec {
- int i;
- oneInt i2;
- int2 i3;
-};
-
-struct weirdStruct {
- int i;
- intVec iv;
-};
-
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(int), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(float), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(float4), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(double2), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(oneInt), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(oneFloat), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(twoInt), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(threeInts), "");
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(notHomogenous), "");
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(depthDiff), "");
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(EightElements), "");
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(EightHalves), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(oneIntWithVec), "");
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(weirdStruct), "");
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(RWBuffer<int>), "");
-
-
-// arrays not allowed
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(half[4]), "");
-
-template<typename T> struct TemplatedBuffer {
- T a;
- __hlsl_resource_t h;
-};
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(TemplatedBuffer<int>), "");
-
-struct MyStruct1 : TemplatedBuffer<float> {
- float x;
-};
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(MyStruct1), "");
-
-struct MyStruct2 {
- const TemplatedBuffer<float> TB[10];
-};
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(MyStruct2), "");
-
-template<typename T> struct SimpleTemplate {
- T a;
-};
-
-// though the element type is incomplete, the type trait should still technically return true
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(SimpleTemplate<__hlsl_resource_t>), "");
-
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(SimpleTemplate<float>), "");
-
-
diff --git a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl b/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl
deleted file mode 100644
index 167a5be6e93843..00000000000000
--- a/clang/test/SemaHLSL/Types/Traits/IsTypedResourceElementCompatibleErrors.hlsl
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.6-library -finclude-default-header -fnative-half-type -verify %s
-
-// types must be complete
-_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(__hlsl_resource_t), "");
-
-// expected-note@+1{{forward declaration of 'notComplete'}}
-struct notComplete;
-// expected-error@+1{{incomplete type 'notComplete' where a complete type is required}}
-_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(notComplete), "");
-
|
PhilippRados
pushed a commit
to PhilippRados/llvm-project
that referenced
this pull request
Nov 6, 2024
…#114853) Reverts llvm#113730 Reverting because test compiler-rt default failed, with: error: comparison of different enumeration types ('Kind' and 'clang::Type::TypeClass')
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
clang:frontend
Language frontend issues, e.g. anything involving "Sema"
clang
Clang issues not falling into any other category
HLSL
HLSL Language Support
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reverts #113730
Reverting because test compiler-rt default failed, with:
error: comparison of different enumeration types ('Kind' and 'clang::Type::TypeClass')