[all-commits] [llvm/llvm-project] 994c07: [Sema][SVE] Reject arrays of sizeless types
rsandifo-arm via All-commits
all-commits at lists.llvm.org
Fri Mar 13 12:32:54 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 994c071a1b7eee8de132d78286c730da2be2c48f
https://github.com/llvm/llvm-project/commit/994c071a1b7eee8de132d78286c730da2be2c48f
Author: Richard Sandiford <richard.sandiford at arm.com>
Date: 2020-03-13 (Fri, 13 Mar 2020)
Changed paths:
M clang/include/clang/Basic/DiagnosticSemaKinds.td
M clang/lib/Sema/SemaDecl.cpp
M clang/lib/Sema/SemaExpr.cpp
M clang/lib/Sema/SemaType.cpp
M clang/test/Sema/sizeless-1.c
M clang/test/SemaCXX/sizeless-1.cpp
Log Message:
-----------
[Sema][SVE] Reject arrays of sizeless types
The SVE ACLE doesn't allow arrays of sizeless types. At the moment
clang accepts the TU:
__SVInt8_t x[2];
but trying to code-generate it triggers the LLVM assertion:
llvm/lib/IR/Type.cpp:588: static llvm::ArrayType* llvm::ArrayType::get(llvm::Type*, uint64_t): Assertion `isValidElementType(ElementType) && "Invalid type for array element!"' failed.
This patch reports an appropriate error instead.
The rules are slightly more restrictive than for general incomplete types.
For example:
struct s;
typedef struct s arr[2];
is valid as far as it goes, whereas arrays of sizeless types are
invalid in all contexts. BuildArrayType therefore needs a specific
check for isSizelessType in addition to the usual handling of
incomplete types.
Differential Revision: https://reviews.llvm.org/D76082
More information about the All-commits
mailing list