diff options
author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2024-04-30 11:34:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-30 11:34:34 +0200 |
commit | f73e87f53f5d8a86c29251dedc9dbd264179203a (patch) | |
tree | a7bc393055ffbec56e6216359f505bbf0a0648e8 /clang/lib/Sema/DeclSpec.cpp | |
parent | 10aab63c9cb49d3ddfbe2cf8992de433efeef6f1 (diff) | |
download | llvm-f73e87f53f5d8a86c29251dedc9dbd264179203a.zip llvm-f73e87f53f5d8a86c29251dedc9dbd264179203a.tar.gz llvm-f73e87f53f5d8a86c29251dedc9dbd264179203a.tar.bz2 |
[Clang][Sema] Do not accept "vector _Complex" for AltiVec/ZVector (#90467)
The AltiVec (POWER) and ZVector (IBM Z) language extensions do not
support using the "vector" keyword when the element type is a complex
type, but current code does not verify this.
Add a Sema check and diagnostic for this case.
Fixes: https://github.com/llvm/llvm-project/issues/88399
Diffstat (limited to 'clang/lib/Sema/DeclSpec.cpp')
-rw-r--r-- | clang/lib/Sema/DeclSpec.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp index 5f63c85..60e8189 100644 --- a/clang/lib/Sema/DeclSpec.cpp +++ b/clang/lib/Sema/DeclSpec.cpp @@ -1202,7 +1202,10 @@ void DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) { !S.Context.getTargetInfo().hasFeature("power8-vector")) S.Diag(TSTLoc, diag::err_invalid_vector_int128_decl_spec); - if (TypeAltiVecBool) { + // Complex vector types are not supported. + if (TypeSpecComplex != TSC_unspecified) + S.Diag(TSCLoc, diag::err_invalid_vector_complex_decl_spec); + else if (TypeAltiVecBool) { // Sign specifiers are not allowed with vector bool. (PIM 2.1) if (getTypeSpecSign() != TypeSpecifierSign::Unspecified) { S.Diag(TSSLoc, diag::err_invalid_vector_bool_decl_spec) |