llvm-project/clang/lib/Sema
Richard Sandiford eb485fbc71 Add SVE opaque built-in types
This patch adds the SVE built-in types defined by the Procedure Call
Standard for the Arm Architecture:

   https://developer.arm.com/docs/100986/0000

It handles the types in all relevant places that deal with built-in types.
At the moment, some of these places bail out with an error, including:

   (1) trying to generate LLVM IR for the types
   (2) trying to generate debug info for the types
   (3) trying to mangle the types using the Microsoft C++ ABI
   (4) trying to @encode the types in Objective C

(1) and (2) are fixed by follow-on patches but (unlike this patch)
they deal mostly with target-specific LLVM details, so seemed like
a logically separate change.  There is currently no spec for (3) and
(4), so reporting an error seems like the correct behaviour for now.

The intention is that the types will become sizeless types:

   http://lists.llvm.org/pipermail/cfe-dev/2019-June/062523.html

The main purpose of the sizeless type extension is to diagnose
impossible or dangerous uses of the types, such as any that would
require sizeof to have a meaningful defined value.

Until then, the patch sets the alignments of the types to the values
specified in the link above.  It also sets the sizes of the types to
zero, which is chosen to be consistently wrong and shouldn't affect
correctly-written code (i.e. code that would compile even with the
sizeless type extension).

The patch adds the common subset of functionality needed to test the
sizeless type extension on the one hand and to provide SVE intrinsic
functions on the other.  After this patch, the two pieces of work are
essentially independent.

The patch is based on one by Graham Hunter:

   https://reviews.llvm.org/D59245

Differential Revision: https://reviews.llvm.org/D62960

llvm-svn: 368413
2019-08-09 08:52:54 +00:00
..
AnalysisBasedWarnings.cpp Defer capture initialization for blocks until after we've left the 2019-05-31 00:45:09 +00:00
CMakeLists.txt Recommit [OpenCL] Move OpenCLBuiltins.td and remove unused include 2019-06-17 10:06:34 +00:00
CodeCompleteConsumer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CoroutineStmtBuilder.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DeclSpec.cpp [OpenCL] Update comments/diagnostics to refer to C++ for OpenCL 2019-07-18 10:02:35 +00:00
DelayedDiagnostic.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IdentifierResolver.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
JumpDiagnostics.cpp Re-check in clang support gun asm goto after fixing tests. 2019-06-03 15:57:25 +00:00
MultiplexExternalSemaSource.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OpenCLBuiltins.td [OpenCL] Rename builtin definition classes 2019-07-29 14:55:29 +00:00
ParsedAttr.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Scope.cpp Un-revert "[coroutines][PR40978] Emit error for co_yield within catch block" 2019-03-25 00:53:10 +00:00
ScopeInfo.cpp PR42104: Support instantiations of lambdas that implicitly capture 2019-06-04 17:17:20 +00:00
Sema.cpp Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
SemaAccess.cpp Range-style std::find{,_if} -> llvm::find{,_if}. NFC 2019-03-31 08:48:19 +00:00
SemaAttr.cpp gsl::Owner/gsl::Pointer: Add implicit annotations for some std types 2019-08-07 10:45:36 +00:00
SemaCUDA.cpp Split ActOnCallExpr into an ActOnCallExpr to be called by the parser, 2019-05-08 01:36:36 +00:00
SemaCXXScopeSpec.cpp [c++20] Implement P0846R0: allow (ADL-only) calls to template-ids whose 2019-05-09 03:31:27 +00:00
SemaCast.cpp [OpenCL] Update comments/diagnostics to refer to C++ for OpenCL 2019-07-18 10:02:35 +00:00
SemaChecking.cpp [Sema] Enable -Wimplicit-float-conversion for integral to floating point precision loss 2019-08-01 00:16:43 +00:00
SemaCodeComplete.cpp [CodeComplete] Fix ASTUnit cached completion of macros from preamble, broken in r342528 2019-07-18 07:17:49 +00:00
SemaConsumer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SemaCoroutine.cpp Allow copy/move assignment operator to be coroutine as per N4775 2019-06-19 14:12:19 +00:00
SemaDecl.cpp gsl::Owner/gsl::Pointer: Add implicit annotations for some std types 2019-08-07 10:45:36 +00:00
SemaDeclAttr.cpp Add lifetime categories attributes 2019-07-25 17:50:51 +00:00
SemaDeclCXX.cpp Don't try emitting dllexported explicitly defaulted non-trivial ctors twice during explicit template instantiation definition (PR42857) 2019-08-02 07:51:41 +00:00
SemaDeclObjC.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
SemaExceptionSpec.cpp [C++2a] Add __builtin_bit_cast, used to implement std::bit_cast 2019-07-02 18:28:13 +00:00
SemaExpr.cpp Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
SemaExprCXX.cpp [clang][NFCI] Fix random typos 2019-07-23 16:54:11 +00:00
SemaExprMember.cpp [Sema] Actually map a variable template specialization from pattern to instantiation 2019-07-30 23:38:18 +00:00
SemaExprObjC.cpp Implement __builtin_LINE() et. al. to support source location capture. 2019-05-16 21:04:15 +00:00
SemaFixItUtils.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SemaInit.cpp Update fix-it hints for std::move warnings. 2019-08-08 00:12:51 +00:00
SemaLambda.cpp When determining whether a lambda-expression is implicitly constexpr, 2019-07-29 19:59:45 +00:00
SemaLookup.cpp [OpenCL] Make TableGen'd builtin tables and helper functions static 2019-07-15 22:34:19 +00:00
SemaModule.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
SemaObjCProperty.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
SemaOpenMP.cpp [OPENMP]Add support for analysis of linear variables and step. 2019-08-08 13:42:45 +00:00
SemaOverload.cpp [NFC] avoid AlignedCharArray in clang 2019-07-29 23:12:48 +00:00
SemaPseudoObject.cpp Split ActOnCallExpr into an ActOnCallExpr to be called by the parser, 2019-05-08 01:36:36 +00:00
SemaStmt.cpp Implement P1771 2019-07-25 15:10:56 +00:00
SemaStmtAsm.cpp Delay diagnosing asm constraints that require immediates until after inlining 2019-08-06 22:41:22 +00:00
SemaStmtAttr.cpp [Clang] New loop pragma vectorize_predicate 2019-07-25 07:33:13 +00:00
SemaTemplate.cpp gsl::Owner/gsl::Pointer: Add implicit annotations for some std types 2019-08-07 10:45:36 +00:00
SemaTemplateDeduction.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
SemaTemplateInstantiate.cpp PR42104: Support instantiations of lambdas that implicitly capture 2019-06-04 17:17:20 +00:00
SemaTemplateInstantiateDecl.cpp [Sema] Actually map a variable template specialization from pattern to instantiation 2019-07-30 23:38:18 +00:00
SemaTemplateVariadic.cpp [SemaTemplate] Fix uncorrected typos after pack expansion 2019-07-16 10:30:21 +00:00
SemaType.cpp [clang] Fix mismatched args constructing AddressSpaceAttr. 2019-08-07 11:12:43 +00:00
TreeTransform.h [OpenCL][PR42033] Fix addr space deduction with template parameters 2019-07-18 09:12:49 +00:00
TypeLocBuilder.cpp [NFC] avoid AlignedCharArray in clang 2019-07-29 23:12:48 +00:00
TypeLocBuilder.h [NFC] avoid AlignedCharArray in clang 2019-07-29 23:12:48 +00:00