Skip to content

Commit 096e7ae

Browse files
committed
[ClangImporter][IRGen] Handle SVE builtin types
Clang r368413 introduced the SVE builtin types; update various switch statements to handle them. This assumes that the types should not be mapped into Swift, similar to the OpenCL types.
1 parent 4182539 commit 096e7ae

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

lib/ClangImporter/ClangAdapter.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,21 @@ OmissionTypeName importer::getClangTypeNameForOmission(clang::ASTContext &ctx,
436436
// OpenMP types that don't have Swift equivalents.
437437
case clang::BuiltinType::OMPArraySection:
438438
return OmissionTypeName();
439+
440+
// SVE builtin types that don't have Swift equivalents.
441+
case clang::BuiltinType::SveInt8:
442+
case clang::BuiltinType::SveInt16:
443+
case clang::BuiltinType::SveInt32:
444+
case clang::BuiltinType::SveInt64:
445+
case clang::BuiltinType::SveUint8:
446+
case clang::BuiltinType::SveUint16:
447+
case clang::BuiltinType::SveUint32:
448+
case clang::BuiltinType::SveUint64:
449+
case clang::BuiltinType::SveFloat16:
450+
case clang::BuiltinType::SveFloat32:
451+
case clang::BuiltinType::SveFloat64:
452+
case clang::BuiltinType::SveBool:
453+
return OmissionTypeName();
439454
}
440455
}
441456

lib/ClangImporter/ImportType.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,21 @@ namespace {
331331
// OpenMP types that don't have Swift equivalents.
332332
case clang::BuiltinType::OMPArraySection:
333333
return Type();
334+
335+
// SVE builtin types that don't have Swift equivalents.
336+
case clang::BuiltinType::SveInt8:
337+
case clang::BuiltinType::SveInt16:
338+
case clang::BuiltinType::SveInt32:
339+
case clang::BuiltinType::SveInt64:
340+
case clang::BuiltinType::SveUint8:
341+
case clang::BuiltinType::SveUint16:
342+
case clang::BuiltinType::SveUint32:
343+
case clang::BuiltinType::SveUint64:
344+
case clang::BuiltinType::SveFloat16:
345+
case clang::BuiltinType::SveFloat32:
346+
case clang::BuiltinType::SveFloat64:
347+
case clang::BuiltinType::SveBool:
348+
return Type();
334349
}
335350

336351
llvm_unreachable("Invalid BuiltinType.");

lib/IRGen/GenCall.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,21 @@ namespace {
869869
case clang::BuiltinType::OCLIntelSubgroupAVCImeDualRefStreamin:
870870
llvm_unreachable("OpenCL type in ABI lowering");
871871

872+
// We should never see the SVE types at all.
873+
case clang::BuiltinType::SveInt8:
874+
case clang::BuiltinType::SveInt16:
875+
case clang::BuiltinType::SveInt32:
876+
case clang::BuiltinType::SveInt64:
877+
case clang::BuiltinType::SveUint8:
878+
case clang::BuiltinType::SveUint16:
879+
case clang::BuiltinType::SveUint32:
880+
case clang::BuiltinType::SveUint64:
881+
case clang::BuiltinType::SveFloat16:
882+
case clang::BuiltinType::SveFloat32:
883+
case clang::BuiltinType::SveFloat64:
884+
case clang::BuiltinType::SveBool:
885+
llvm_unreachable("SVE type in ABI lowering");
886+
872887
// Handle all the integer types as opaque values.
873888
#define BUILTIN_TYPE(Id, SingletonId)
874889
#define SIGNED_TYPE(Id, SingletonId) \

lib/IRGen/GenClangType.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ getClangBuiltinTypeFromKind(const clang::ASTContext &context,
8686
case clang::BuiltinType::Id: \
8787
return context.Id##Ty;
8888
#include "clang/Basic/OpenCLExtensionTypes.def"
89+
#define SVE_TYPE(Name, Id, SingletonId) \
90+
case clang::BuiltinType::Id: \
91+
return context.SingletonId;
92+
#include "clang/Basic/AArch64SVEACLETypes.def"
8993
}
9094

9195
llvm_unreachable("Not a valid BuiltinType.");

0 commit comments

Comments
 (0)