[clang] [HLSL][OpenCL] Strip addrspace from implicit cast diags (PR #135830)
Justin Bogner via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 15 14:19:52 PDT 2025
================
@@ -11360,6 +11360,14 @@ static void AnalyzeAssignment(Sema &S, BinaryOperator *E) {
static void DiagnoseImpCast(Sema &S, Expr *E, QualType SourceType, QualType T,
SourceLocation CContext, unsigned diag,
bool pruneControlFlow = false) {
+ // For languages like HLSL and OpenCL, implicit conversion diagnostics listing
+ // address space annotations isn't really useful. The warnings aren't because
+ // you're converting a `private int` to `unsigned int`, it is because you're
+ // conerting `int` to `unsigned int`.
+ if (SourceType.hasAddressSpace())
+ SourceType = S.getASTContext().removeAddrSpaceQualType(SourceType);
+ if (T.hasAddressSpace())
+ T = S.getASTContext().removeAddrSpaceQualType(T);
----------------
bogner wrote:
Should we assert here that `SourceType` and `T` aren't identical after stripping address spaces to protect against misuse of the function?
https://github.com/llvm/llvm-project/pull/135830
More information about the cfe-commits
mailing list