[clang] Fix double-quotes in diagnostic when attempting to access a ext_vector of bools (PR #118186)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Nov 30 14:08:45 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: William Tran-Viet (smallp-o-p)
<details>
<summary>Changes</summary>
Fixes #<!-- -->116932
---
Full diff: https://github.com/llvm/llvm-project/pull/118186.diff
2 Files Affected:
- (modified) clang/lib/Sema/SemaExprMember.cpp (+3-1)
- (modified) clang/test/SemaCXX/vector-bool.cpp (+4-4)
``````````diff
diff --git a/clang/lib/Sema/SemaExprMember.cpp b/clang/lib/Sema/SemaExprMember.cpp
index 434768b99d631e..3d843bb84d9d8b 100644
--- a/clang/lib/Sema/SemaExprMember.cpp
+++ b/clang/lib/Sema/SemaExprMember.cpp
@@ -1655,8 +1655,10 @@ static ExprResult LookupMemberExpr(Sema &S, LookupResult &R,
// We disallow element access for ext_vector_type bool. There is no way to
// materialize a reference to a vector element as a pointer (each element is
// one bit in the vector).
+ assert(MemberName.isIdentifier() &&
+ "Ext vector component name not an identifier!");
S.Diag(R.getNameLoc(), diag::err_ext_vector_component_name_illegal)
- << MemberName
+ << MemberName.getAsIdentifierInfo()->getName()
<< (BaseExpr.get() ? BaseExpr.get()->getSourceRange() : SourceRange());
return ExprError();
}
diff --git a/clang/test/SemaCXX/vector-bool.cpp b/clang/test/SemaCXX/vector-bool.cpp
index e99d420e73fab2..cd638056f348b0 100644
--- a/clang/test/SemaCXX/vector-bool.cpp
+++ b/clang/test/SemaCXX/vector-bool.cpp
@@ -85,10 +85,10 @@ void foo(const bool& X);
// Disallow element-wise access.
bool* ElementRefs() {
- eight_bools.y = false; // expected-error at 88 {{illegal vector component name ''y''}}
- &eight_bools.z; // expected-error at 89 {{illegal vector component name ''z''}}
- foo(eight_bools.w); // expected-error at 90 {{illegal vector component name ''w''}}
- foo(eight_bools.wyx); // expected-error at 91 {{illegal vector component name ''wyx''}}
+ eight_bools.y = false; // expected-error at 88 {{illegal vector component name 'y'}}
+ &eight_bools.z; // expected-error at 89 {{illegal vector component name 'z'}}
+ foo(eight_bools.w); // expected-error at 90 {{illegal vector component name 'w'}}
+ foo(eight_bools.wyx); // expected-error at 91 {{illegal vector component name 'wyx'}}
}
void Sizeof() {
``````````
</details>
https://github.com/llvm/llvm-project/pull/118186
More information about the cfe-commits
mailing list