llvm-project/clang/lib/Basic
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
..
Targets Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
Attributes.cpp Introduce the _Clang scoped attribute token. 2018-11-09 17:19:45 +00:00
Builtins.cpp [OpenCL] Support pipe keyword in C++ mode 2019-05-22 13:12:20 +00:00
CMakeLists.txt Move LangStandard*, InputKind::Language to Basic 2019-08-05 13:59:26 +00:00
CharInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CodeGenOptions.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Cuda.cpp [HIP] Add GPU arch gfx1010, gfx1011, and gfx1012 2019-07-11 17:50:09 +00:00
Diagnostic.cpp Change std::{lower,upper}_bound to llvm::{lower,upper}_bound or llvm::partition_point. NFC 2019-07-03 08:13:17 +00:00
DiagnosticIDs.cpp Use a unique_ptr instead of manual memory management for CustomDiagInfo 2019-07-15 17:20:34 +00:00
DiagnosticOptions.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
FileManager.cpp [clang] Adopt llvm::ErrorOr in FileManager methods 2019-08-01 21:31:49 +00:00
FileSystemStatCache.cpp [FileSystemStatCache] Return std::error_code from stat cache methods 2019-04-16 17:34:26 +00:00
FixedPoint.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
IdentifierTable.cpp [C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor. 2019-04-11 21:18:23 +00:00
LangOptions.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LangStandards.cpp Move LangStandard*, InputKind::Language to Basic 2019-08-05 13:59:26 +00:00
Module.cpp [clang] Adopt new FileManager error-returning APIs 2019-08-01 21:31:56 +00:00
ObjCRuntime.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OpenMPKinds.cpp [OPENMP]Initial support for 'allocate' clause. 2019-03-27 14:14:31 +00:00
OperatorPrecedence.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SanitizerBlacklist.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SanitizerSpecialCaseList.cpp [Driver] Allow enum SanitizerOrdinal to represent more than 64 different sanitizer checks, NFC. 2019-03-01 10:05:15 +00:00
Sanitizers.cpp Tweak r355278 for compatibility with gcc 6 and earlier. 2019-03-02 21:55:36 +00:00
SourceLocation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SourceManager.cpp [clang] Adopt new FileManager error-returning APIs 2019-08-01 21:31:56 +00:00
TargetInfo.cpp Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
Targets.cpp [RISCV] Add FreeBSD targets 2019-08-01 13:14:30 +00:00
Targets.h De-templatize non-dependent VS macro logic, NFC 2019-07-09 20:57:28 +00:00
TokenKinds.cpp Use switch instead of series of comparisons 2019-08-03 16:32:49 +00:00
Version.cpp This reverts commit 632a36bfcfc8273c1861f04ff6758d863c47c784. 2019-07-13 06:27:35 +00:00
Warnings.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
XRayInstr.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
XRayLists.cpp Fix file headers. NFC 2019-03-01 06:49:51 +00:00