From c8ea8cf5df8261995b1e451085e39cd612c9e038 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 24 Jul 2020 16:49:57 -0700 Subject: [PATCH] update LLVM C++ API wrappers from llvm 10 to 11 --- src-self-hosted/clang.zig | 67 +++++++++++++++++-- src/zig_clang.cpp | 133 ++++++++++++++++++++++++++++++++++---- src/zig_clang.h | 66 +++++++++++++++++-- src/zig_llvm.cpp | 5 +- 4 files changed, 247 insertions(+), 24 deletions(-) diff --git a/src-self-hosted/clang.zig b/src-self-hosted/clang.zig index 624dbe1dad..46a47e5e54 100644 --- a/src-self-hosted/clang.zig +++ b/src-self-hosted/clang.zig @@ -154,15 +154,19 @@ pub const ZigClangTypeClass = extern enum { Auto, DeducedTemplateSpecialization, DependentAddressSpace, + DependentExtInt, DependentName, DependentSizedExtVector, DependentTemplateSpecialization, DependentVector, Elaborated, + ExtInt, FunctionNoProto, FunctionProto, InjectedClassName, MacroQualified, + ConstantMatrix, + DependentSizedMatrix, MemberPointer, ObjCObjectPointer, ObjCObject, @@ -215,6 +219,7 @@ const ZigClangStmtClass = extern enum { OMPCancelDirectiveClass, OMPCancellationPointDirectiveClass, OMPCriticalDirectiveClass, + OMPDepobjDirectiveClass, OMPFlushDirectiveClass, OMPDistributeDirectiveClass, OMPDistributeParallelForDirectiveClass, @@ -246,6 +251,7 @@ const ZigClangStmtClass = extern enum { OMPParallelDirectiveClass, OMPParallelMasterDirectiveClass, OMPParallelSectionsDirectiveClass, + OMPScanDirectiveClass, OMPSectionDirectiveClass, OMPSectionsDirectiveClass, OMPSingleDirectiveClass, @@ -320,6 +326,7 @@ const ZigClangStmtClass = extern enum { BuiltinBitCastExprClass, CStyleCastExprClass, CXXFunctionalCastExprClass, + CXXAddrspaceCastExprClass, CXXConstCastExprClass, CXXDynamicCastExprClass, CXXReinterpretCastExprClass, @@ -355,9 +362,12 @@ const ZigClangStmtClass = extern enum { MSPropertyRefExprClass, MSPropertySubscriptExprClass, MaterializeTemporaryExprClass, + MatrixSubscriptExprClass, MemberExprClass, NoInitExprClass, OMPArraySectionExprClass, + OMPArrayShapingExprClass, + OMPIteratorExprClass, ObjCArrayLiteralClass, ObjCAvailabilityCheckExprClass, ObjCBoolLiteralExprClass, @@ -382,6 +392,7 @@ const ZigClangStmtClass = extern enum { ParenListExprClass, PredefinedExprClass, PseudoObjectExprClass, + RecoveryExprClass, RequiresExprClass, ShuffleVectorExprClass, SizeOfPackExprClass, @@ -549,6 +560,7 @@ pub const ZigClangDeclKind = extern enum { VarTemplatePartialSpecialization, EnumConstant, IndirectField, + MSGuid, OMPDeclareMapper, OMPDeclareReduction, UnresolvedUsingValue, @@ -623,6 +635,43 @@ pub const ZigClangBuiltinTypeKind = extern enum { SveFloat16, SveFloat32, SveFloat64, + SveBFloat16, + SveInt8x2, + SveInt16x2, + SveInt32x2, + SveInt64x2, + SveUint8x2, + SveUint16x2, + SveUint32x2, + SveUint64x2, + SveFloat16x2, + SveFloat32x2, + SveFloat64x2, + SveBFloat16x2, + SveInt8x3, + SveInt16x3, + SveInt32x3, + SveInt64x3, + SveUint8x3, + SveUint16x3, + SveUint32x3, + SveUint64x3, + SveFloat16x3, + SveFloat32x3, + SveFloat64x3, + SveBFloat16x3, + SveInt8x4, + SveInt16x4, + SveInt32x4, + SveInt64x4, + SveUint8x4, + SveUint16x4, + SveUint32x4, + SveUint64x4, + SveFloat16x4, + SveFloat32x4, + SveFloat64x4, + SveBFloat16x4, SveBool, Void, Bool, @@ -674,6 +723,7 @@ pub const ZigClangBuiltinTypeKind = extern enum { Double, LongDouble, Float16, + BFloat16, Float128, NullPtr, ObjCId, @@ -691,7 +741,10 @@ pub const ZigClangBuiltinTypeKind = extern enum { UnknownAny, BuiltinFn, ARCUnbridgedCast, + IncompleteMatrixIdx, OMPArraySection, + OMPArrayShaping, + OMPIterator, }; pub const ZigClangCallingConv = extern enum { @@ -724,12 +777,14 @@ pub const ZigClangStorageClass = extern enum { Register, }; -pub const ZigClangAPFloat_roundingMode = extern enum { - NearestTiesToEven, - TowardPositive, - TowardNegative, - TowardZero, - NearestTiesToAway, +pub const ZigClangAPFloat_roundingMode = extern enum(i8) { + TowardZero = 0, + NearestTiesToEven = 1, + TowardPositive = 2, + TowardNegative = 3, + NearestTiesToAway = 4, + Dynamic = 7, + Invalid = -1, }; pub const ZigClangStringLiteral_StringKind = extern enum { diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index aca20779ad..61f83d27c2 100644 --- a/src/zig_clang.cpp +++ b/src/zig_clang.cpp @@ -288,6 +288,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { case clang::Type::DependentSizedArray: case clang::Type::DependentSizedExtVector: case clang::Type::DependentAddressSpace: + case clang::Type::DependentExtInt: case clang::Type::Vector: case clang::Type::DependentVector: case clang::Type::ExtVector: @@ -297,6 +298,8 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { case clang::Type::Paren: case clang::Type::Typedef: case clang::Type::MacroQualified: + case clang::Type::ConstantMatrix: + case clang::Type::DependentSizedMatrix: case clang::Type::Adjusted: case clang::Type::Decayed: case clang::Type::TypeOfExpr: @@ -306,6 +309,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) { case clang::Type::Record: case clang::Type::Enum: case clang::Type::Elaborated: + case clang::Type::ExtInt: case clang::Type::Attributed: case clang::Type::TemplateTypeParm: case clang::Type::SubstTemplateTypeParm: @@ -342,15 +346,19 @@ static_assert((clang::Type::TypeClass)ZigClangType_Decltype == clang::Type::Decl static_assert((clang::Type::TypeClass)ZigClangType_Auto == clang::Type::Auto, ""); static_assert((clang::Type::TypeClass)ZigClangType_DeducedTemplateSpecialization == clang::Type::DeducedTemplateSpecialization, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentAddressSpace == clang::Type::DependentAddressSpace, ""); +static_assert((clang::Type::TypeClass)ZigClangType_DependentExtInt == clang::Type::DependentExtInt, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentName == clang::Type::DependentName, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedExtVector == clang::Type::DependentSizedExtVector, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentTemplateSpecialization == clang::Type::DependentTemplateSpecialization, ""); static_assert((clang::Type::TypeClass)ZigClangType_DependentVector == clang::Type::DependentVector, ""); static_assert((clang::Type::TypeClass)ZigClangType_Elaborated == clang::Type::Elaborated, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ExtInt == clang::Type::ExtInt, ""); static_assert((clang::Type::TypeClass)ZigClangType_FunctionNoProto == clang::Type::FunctionNoProto, ""); static_assert((clang::Type::TypeClass)ZigClangType_FunctionProto == clang::Type::FunctionProto, ""); static_assert((clang::Type::TypeClass)ZigClangType_InjectedClassName == clang::Type::InjectedClassName, ""); static_assert((clang::Type::TypeClass)ZigClangType_MacroQualified == clang::Type::MacroQualified, ""); +static_assert((clang::Type::TypeClass)ZigClangType_ConstantMatrix == clang::Type::ConstantMatrix, ""); +static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedMatrix == clang::Type::DependentSizedMatrix, ""); static_assert((clang::Type::TypeClass)ZigClangType_MemberPointer == clang::Type::MemberPointer, ""); static_assert((clang::Type::TypeClass)ZigClangType_ObjCObjectPointer == clang::Type::ObjCObjectPointer, ""); static_assert((clang::Type::TypeClass)ZigClangType_ObjCObject == clang::Type::ObjCObject, ""); @@ -404,6 +412,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case ZigClangStmt_OMPCancelDirectiveClass: case ZigClangStmt_OMPCancellationPointDirectiveClass: case ZigClangStmt_OMPCriticalDirectiveClass: + case ZigClangStmt_OMPDepobjDirectiveClass: case ZigClangStmt_OMPFlushDirectiveClass: case ZigClangStmt_OMPDistributeDirectiveClass: case ZigClangStmt_OMPDistributeParallelForDirectiveClass: @@ -435,6 +444,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case ZigClangStmt_OMPParallelDirectiveClass: case ZigClangStmt_OMPParallelMasterDirectiveClass: case ZigClangStmt_OMPParallelSectionsDirectiveClass: + case ZigClangStmt_OMPScanDirectiveClass: case ZigClangStmt_OMPSectionDirectiveClass: case ZigClangStmt_OMPSectionsDirectiveClass: case ZigClangStmt_OMPSingleDirectiveClass: @@ -509,6 +519,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case ZigClangStmt_BuiltinBitCastExprClass: case ZigClangStmt_CStyleCastExprClass: case ZigClangStmt_CXXFunctionalCastExprClass: + case ZigClangStmt_CXXAddrspaceCastExprClass: case ZigClangStmt_CXXConstCastExprClass: case ZigClangStmt_CXXDynamicCastExprClass: case ZigClangStmt_CXXReinterpretCastExprClass: @@ -544,9 +555,12 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case ZigClangStmt_MSPropertyRefExprClass: case ZigClangStmt_MSPropertySubscriptExprClass: case ZigClangStmt_MaterializeTemporaryExprClass: + case ZigClangStmt_MatrixSubscriptExprClass: case ZigClangStmt_MemberExprClass: case ZigClangStmt_NoInitExprClass: case ZigClangStmt_OMPArraySectionExprClass: + case ZigClangStmt_OMPArrayShapingExprClass: + case ZigClangStmt_OMPIteratorExprClass: case ZigClangStmt_ObjCArrayLiteralClass: case ZigClangStmt_ObjCAvailabilityCheckExprClass: case ZigClangStmt_ObjCBoolLiteralExprClass: @@ -571,6 +585,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { case ZigClangStmt_ParenListExprClass: case ZigClangStmt_PredefinedExprClass: case ZigClangStmt_PseudoObjectExprClass: + case ZigClangStmt_RecoveryExprClass: case ZigClangStmt_RequiresExprClass: case ZigClangStmt_ShuffleVectorExprClass: case ZigClangStmt_SizeOfPackExprClass: @@ -590,7 +605,6 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) { } } -//static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoStmtClass == clang::Stmt::NoStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoStmtClass == clang::Stmt::NoStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_GCCAsmStmtClass == clang::Stmt::GCCAsmStmtClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSAsmStmtClass == clang::Stmt::MSAsmStmtClass, ""); @@ -616,6 +630,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == c static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancelDirectiveClass == clang::Stmt::OMPCancelDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirectiveClass == clang::Stmt::OMPCancellationPointDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCriticalDirectiveClass == clang::Stmt::OMPCriticalDirectiveClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDepobjDirectiveClass == clang::Stmt::OMPDepobjDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPFlushDirectiveClass == clang::Stmt::OMPFlushDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeDirectiveClass == clang::Stmt::OMPDistributeDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForDirectiveClass == clang::Stmt::OMPDistributeParallelForDirectiveClass, ""); @@ -647,6 +662,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPOrderedDirectiveClass == c static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelDirectiveClass == clang::Stmt::OMPParallelDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMasterDirectiveClass == clang::Stmt::OMPParallelMasterDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelSectionsDirectiveClass == clang::Stmt::OMPParallelSectionsDirectiveClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPScanDirectiveClass == clang::Stmt::OMPScanDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSectionDirectiveClass == clang::Stmt::OMPSectionDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSectionsDirectiveClass == clang::Stmt::OMPSectionsDirectiveClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSingleDirectiveClass == clang::Stmt::OMPSingleDirectiveClass, ""); @@ -721,6 +737,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_UserDefinedLiteralClass == cl static_assert((clang::Stmt::StmtClass)ZigClangStmt_BuiltinBitCastExprClass == clang::Stmt::BuiltinBitCastExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_CStyleCastExprClass == clang::Stmt::CStyleCastExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXFunctionalCastExprClass == clang::Stmt::CXXFunctionalCastExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXAddrspaceCastExprClass == clang::Stmt::CXXAddrspaceCastExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXConstCastExprClass == clang::Stmt::CXXConstCastExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDynamicCastExprClass == clang::Stmt::CXXDynamicCastExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXReinterpretCastExprClass == clang::Stmt::CXXReinterpretCastExprClass, ""); @@ -756,9 +773,12 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_LambdaExprClass == clang::Stm static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSPropertyRefExprClass == clang::Stmt::MSPropertyRefExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSPropertySubscriptExprClass == clang::Stmt::MSPropertySubscriptExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MaterializeTemporaryExprClass == clang::Stmt::MaterializeTemporaryExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_MatrixSubscriptExprClass == clang::Stmt::MatrixSubscriptExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_MemberExprClass == clang::Stmt::MemberExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoInitExprClass == clang::Stmt::NoInitExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPArraySectionExprClass == clang::Stmt::OMPArraySectionExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPArrayShapingExprClass == clang::Stmt::OMPArrayShapingExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPIteratorExprClass == clang::Stmt::OMPIteratorExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCArrayLiteralClass == clang::Stmt::ObjCArrayLiteralClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAvailabilityCheckExprClass == clang::Stmt::ObjCAvailabilityCheckExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBoolLiteralExprClass == clang::Stmt::ObjCBoolLiteralExprClass, ""); @@ -783,6 +803,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenExprClass == clang::Stmt static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenListExprClass == clang::Stmt::ParenListExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_PredefinedExprClass == clang::Stmt::PredefinedExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_PseudoObjectExprClass == clang::Stmt::PseudoObjectExprClass, ""); +static_assert((clang::Stmt::StmtClass)ZigClangStmt_RecoveryExprClass == clang::Stmt::RecoveryExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_RequiresExprClass == clang::Stmt::RequiresExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_ShuffleVectorExprClass == clang::Stmt::ShuffleVectorExprClass, ""); static_assert((clang::Stmt::StmtClass)ZigClangStmt_SizeOfPackExprClass == clang::Stmt::SizeOfPackExprClass, ""); @@ -905,6 +926,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) { case clang::Decl::VarTemplatePartialSpecialization: case clang::Decl::EnumConstant: case clang::Decl::IndirectField: + case clang::Decl::MSGuid: case clang::Decl::OMPDeclareMapper: case clang::Decl::OMPDeclareReduction: case clang::Decl::UnresolvedUsingValue: @@ -989,6 +1011,7 @@ static_assert((clang::Decl::Kind)ZigClangDeclVarTemplateSpecialization == clang: static_assert((clang::Decl::Kind)ZigClangDeclVarTemplatePartialSpecialization == clang::Decl::VarTemplatePartialSpecialization, ""); static_assert((clang::Decl::Kind)ZigClangDeclEnumConstant == clang::Decl::EnumConstant, ""); static_assert((clang::Decl::Kind)ZigClangDeclIndirectField == clang::Decl::IndirectField, ""); +static_assert((clang::Decl::Kind)ZigClangDeclMSGuid == clang::Decl::MSGuid, ""); static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareMapper == clang::Decl::OMPDeclareMapper, ""); static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareReduction == clang::Decl::OMPDeclareReduction, ""); static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingValue == clang::Decl::UnresolvedUsingValue, ""); @@ -1062,6 +1085,43 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::SveFloat16: case clang::BuiltinType::SveFloat32: case clang::BuiltinType::SveFloat64: + case clang::BuiltinType::SveBFloat16: + case clang::BuiltinType::SveInt8x2: + case clang::BuiltinType::SveInt16x2: + case clang::BuiltinType::SveInt32x2: + case clang::BuiltinType::SveInt64x2: + case clang::BuiltinType::SveUint8x2: + case clang::BuiltinType::SveUint16x2: + case clang::BuiltinType::SveUint32x2: + case clang::BuiltinType::SveUint64x2: + case clang::BuiltinType::SveFloat16x2: + case clang::BuiltinType::SveFloat32x2: + case clang::BuiltinType::SveFloat64x2: + case clang::BuiltinType::SveBFloat16x2: + case clang::BuiltinType::SveInt8x3: + case clang::BuiltinType::SveInt16x3: + case clang::BuiltinType::SveInt32x3: + case clang::BuiltinType::SveInt64x3: + case clang::BuiltinType::SveUint8x3: + case clang::BuiltinType::SveUint16x3: + case clang::BuiltinType::SveUint32x3: + case clang::BuiltinType::SveUint64x3: + case clang::BuiltinType::SveFloat16x3: + case clang::BuiltinType::SveFloat32x3: + case clang::BuiltinType::SveFloat64x3: + case clang::BuiltinType::SveBFloat16x3: + case clang::BuiltinType::SveInt8x4: + case clang::BuiltinType::SveInt16x4: + case clang::BuiltinType::SveInt32x4: + case clang::BuiltinType::SveInt64x4: + case clang::BuiltinType::SveUint8x4: + case clang::BuiltinType::SveUint16x4: + case clang::BuiltinType::SveUint32x4: + case clang::BuiltinType::SveUint64x4: + case clang::BuiltinType::SveFloat16x4: + case clang::BuiltinType::SveFloat32x4: + case clang::BuiltinType::SveFloat64x4: + case clang::BuiltinType::SveBFloat16x4: case clang::BuiltinType::SveBool: case clang::BuiltinType::Void: case clang::BuiltinType::Bool: @@ -1113,6 +1173,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::Double: case clang::BuiltinType::LongDouble: case clang::BuiltinType::Float16: + case clang::BuiltinType::BFloat16: case clang::BuiltinType::Float128: case clang::BuiltinType::NullPtr: case clang::BuiltinType::ObjCId: @@ -1130,7 +1191,10 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) { case clang::BuiltinType::UnknownAny: case clang::BuiltinType::BuiltinFn: case clang::BuiltinType::ARCUnbridgedCast: + case clang::BuiltinType::IncompleteMatrixIdx: case clang::BuiltinType::OMPArraySection: + case clang::BuiltinType::OMPArrayShaping: + case clang::BuiltinType::OMPIterator: break; } } @@ -1194,6 +1258,43 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint64 == clang::B static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16 == clang::BuiltinType::SveFloat16, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32 == clang::BuiltinType::SveFloat32, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64 == clang::BuiltinType::SveFloat64, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16 == clang::BuiltinType::SveBFloat16, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8x2 == clang::BuiltinType::SveInt8x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16x2 == clang::BuiltinType::SveInt16x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32x2 == clang::BuiltinType::SveInt32x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt64x2 == clang::BuiltinType::SveInt64x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint8x2 == clang::BuiltinType::SveUint8x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint16x2 == clang::BuiltinType::SveUint16x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint32x2 == clang::BuiltinType::SveUint32x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint64x2 == clang::BuiltinType::SveUint64x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x2 == clang::BuiltinType::SveFloat16x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32x2 == clang::BuiltinType::SveFloat32x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64x2 == clang::BuiltinType::SveFloat64x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x2 == clang::BuiltinType::SveBFloat16x2, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8x3 == clang::BuiltinType::SveInt8x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16x3 == clang::BuiltinType::SveInt16x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32x3 == clang::BuiltinType::SveInt32x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt64x3 == clang::BuiltinType::SveInt64x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint8x3 == clang::BuiltinType::SveUint8x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint16x3 == clang::BuiltinType::SveUint16x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint32x3 == clang::BuiltinType::SveUint32x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint64x3 == clang::BuiltinType::SveUint64x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x3 == clang::BuiltinType::SveFloat16x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32x3 == clang::BuiltinType::SveFloat32x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64x3 == clang::BuiltinType::SveFloat64x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x3 == clang::BuiltinType::SveBFloat16x3, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt8x4 == clang::BuiltinType::SveInt8x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt16x4 == clang::BuiltinType::SveInt16x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt32x4 == clang::BuiltinType::SveInt32x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveInt64x4 == clang::BuiltinType::SveInt64x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint8x4 == clang::BuiltinType::SveUint8x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint16x4 == clang::BuiltinType::SveUint16x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint32x4 == clang::BuiltinType::SveUint32x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveUint64x4 == clang::BuiltinType::SveUint64x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x4 == clang::BuiltinType::SveFloat16x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat32x4 == clang::BuiltinType::SveFloat32x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat64x4 == clang::BuiltinType::SveFloat64x4, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x4 == clang::BuiltinType::SveBFloat16x4, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBool == clang::BuiltinType::SveBool, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVoid == clang::BuiltinType::Void, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBool == clang::BuiltinType::Bool, ""); @@ -1245,6 +1346,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFloat == clang::Built static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeDouble == clang::BuiltinType::Double, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeLongDouble == clang::BuiltinType::LongDouble, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFloat16 == clang::BuiltinType::Float16, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBFloat16 == clang::BuiltinType::BFloat16, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFloat128 == clang::BuiltinType::Float128, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeNullPtr == clang::BuiltinType::NullPtr, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeObjCId == clang::BuiltinType::ObjCId, ""); @@ -1262,7 +1364,10 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypePseudoObject == clang static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUnknownAny == clang::BuiltinType::UnknownAny, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBuiltinFn == clang::BuiltinType::BuiltinFn, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeARCUnbridgedCast == clang::BuiltinType::ARCUnbridgedCast, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeIncompleteMatrixIdx == clang::BuiltinType::IncompleteMatrixIdx, ""); static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPArraySection == clang::BuiltinType::OMPArraySection, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPArrayShaping == clang::BuiltinType::OMPArrayShaping, ""); +static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPIterator == clang::BuiltinType::OMPIterator, ""); void ZigClang_detect_enum_CallingConv(clang::CallingConv x) { switch (x) { @@ -1326,21 +1431,25 @@ static_assert((clang::StorageClass)ZigClangStorageClass_PrivateExtern == clang:: static_assert((clang::StorageClass)ZigClangStorageClass_Auto == clang::SC_Auto, ""); static_assert((clang::StorageClass)ZigClangStorageClass_Register == clang::SC_Register, ""); -void ZigClang_detect_enum_RoundingMode(llvm::APFloat::roundingMode x) { +void ZigClang_detect_enum_RoundingMode(llvm::RoundingMode x) { switch (x) { - case llvm::APFloat::rmNearestTiesToEven: - case llvm::APFloat::rmTowardPositive: - case llvm::APFloat::rmTowardNegative: - case llvm::APFloat::rmTowardZero: - case llvm::APFloat::rmNearestTiesToAway: + case llvm::RoundingMode::TowardZero: + case llvm::RoundingMode::NearestTiesToEven: + case llvm::RoundingMode::TowardPositive: + case llvm::RoundingMode::TowardNegative: + case llvm::RoundingMode::NearestTiesToAway: + case llvm::RoundingMode::Dynamic: + case llvm::RoundingMode::Invalid: break; } } -static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_NearestTiesToEven == llvm::APFloat::rmNearestTiesToEven, ""); -static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_TowardPositive == llvm::APFloat::rmTowardPositive, ""); -static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_TowardNegative == llvm::APFloat::rmTowardNegative, ""); -static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_TowardZero == llvm::APFloat::rmTowardZero, ""); -static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_NearestTiesToAway == llvm::APFloat::rmNearestTiesToAway, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_NearestTiesToEven == llvm::RoundingMode::NearestTiesToEven, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_TowardPositive == llvm::RoundingMode::TowardPositive, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_TowardNegative == llvm::RoundingMode::TowardNegative, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_TowardZero == llvm::RoundingMode::TowardZero, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_NearestTiesToAway == llvm::RoundingMode::NearestTiesToAway, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_Dynamic == llvm::RoundingMode::Dynamic, ""); +static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_Invalid == llvm::RoundingMode::Invalid, ""); void ZigClang_detect_enum_StringKind(clang::StringLiteral::StringKind x) { switch (x) { diff --git a/src/zig_clang.h b/src/zig_clang.h index 272064a0ef..5af8095bb8 100644 --- a/src/zig_clang.h +++ b/src/zig_clang.h @@ -236,15 +236,19 @@ enum ZigClangTypeClass { ZigClangType_Auto, ZigClangType_DeducedTemplateSpecialization, ZigClangType_DependentAddressSpace, + ZigClangType_DependentExtInt, ZigClangType_DependentName, ZigClangType_DependentSizedExtVector, ZigClangType_DependentTemplateSpecialization, ZigClangType_DependentVector, ZigClangType_Elaborated, + ZigClangType_ExtInt, ZigClangType_FunctionNoProto, ZigClangType_FunctionProto, ZigClangType_InjectedClassName, ZigClangType_MacroQualified, + ZigClangType_ConstantMatrix, + ZigClangType_DependentSizedMatrix, ZigClangType_MemberPointer, ZigClangType_ObjCObjectPointer, ZigClangType_ObjCObject, @@ -297,6 +301,7 @@ enum ZigClangStmtClass { ZigClangStmt_OMPCancelDirectiveClass, ZigClangStmt_OMPCancellationPointDirectiveClass, ZigClangStmt_OMPCriticalDirectiveClass, + ZigClangStmt_OMPDepobjDirectiveClass, ZigClangStmt_OMPFlushDirectiveClass, ZigClangStmt_OMPDistributeDirectiveClass, ZigClangStmt_OMPDistributeParallelForDirectiveClass, @@ -328,6 +333,7 @@ enum ZigClangStmtClass { ZigClangStmt_OMPParallelDirectiveClass, ZigClangStmt_OMPParallelMasterDirectiveClass, ZigClangStmt_OMPParallelSectionsDirectiveClass, + ZigClangStmt_OMPScanDirectiveClass, ZigClangStmt_OMPSectionDirectiveClass, ZigClangStmt_OMPSectionsDirectiveClass, ZigClangStmt_OMPSingleDirectiveClass, @@ -402,6 +408,7 @@ enum ZigClangStmtClass { ZigClangStmt_BuiltinBitCastExprClass, ZigClangStmt_CStyleCastExprClass, ZigClangStmt_CXXFunctionalCastExprClass, + ZigClangStmt_CXXAddrspaceCastExprClass, ZigClangStmt_CXXConstCastExprClass, ZigClangStmt_CXXDynamicCastExprClass, ZigClangStmt_CXXReinterpretCastExprClass, @@ -437,9 +444,12 @@ enum ZigClangStmtClass { ZigClangStmt_MSPropertyRefExprClass, ZigClangStmt_MSPropertySubscriptExprClass, ZigClangStmt_MaterializeTemporaryExprClass, + ZigClangStmt_MatrixSubscriptExprClass, ZigClangStmt_MemberExprClass, ZigClangStmt_NoInitExprClass, ZigClangStmt_OMPArraySectionExprClass, + ZigClangStmt_OMPArrayShapingExprClass, + ZigClangStmt_OMPIteratorExprClass, ZigClangStmt_ObjCArrayLiteralClass, ZigClangStmt_ObjCAvailabilityCheckExprClass, ZigClangStmt_ObjCBoolLiteralExprClass, @@ -464,6 +474,7 @@ enum ZigClangStmtClass { ZigClangStmt_ParenListExprClass, ZigClangStmt_PredefinedExprClass, ZigClangStmt_PseudoObjectExprClass, + ZigClangStmt_RecoveryExprClass, ZigClangStmt_RequiresExprClass, ZigClangStmt_ShuffleVectorExprClass, ZigClangStmt_SizeOfPackExprClass, @@ -614,6 +625,7 @@ enum ZigClangDeclKind { ZigClangDeclVarTemplatePartialSpecialization, ZigClangDeclEnumConstant, ZigClangDeclIndirectField, + ZigClangDeclMSGuid, ZigClangDeclOMPDeclareMapper, ZigClangDeclOMPDeclareReduction, ZigClangDeclUnresolvedUsingValue, @@ -688,6 +700,43 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeSveFloat16, ZigClangBuiltinTypeSveFloat32, ZigClangBuiltinTypeSveFloat64, + ZigClangBuiltinTypeSveBFloat16, + ZigClangBuiltinTypeSveInt8x2, + ZigClangBuiltinTypeSveInt16x2, + ZigClangBuiltinTypeSveInt32x2, + ZigClangBuiltinTypeSveInt64x2, + ZigClangBuiltinTypeSveUint8x2, + ZigClangBuiltinTypeSveUint16x2, + ZigClangBuiltinTypeSveUint32x2, + ZigClangBuiltinTypeSveUint64x2, + ZigClangBuiltinTypeSveFloat16x2, + ZigClangBuiltinTypeSveFloat32x2, + ZigClangBuiltinTypeSveFloat64x2, + ZigClangBuiltinTypeSveBFloat16x2, + ZigClangBuiltinTypeSveInt8x3, + ZigClangBuiltinTypeSveInt16x3, + ZigClangBuiltinTypeSveInt32x3, + ZigClangBuiltinTypeSveInt64x3, + ZigClangBuiltinTypeSveUint8x3, + ZigClangBuiltinTypeSveUint16x3, + ZigClangBuiltinTypeSveUint32x3, + ZigClangBuiltinTypeSveUint64x3, + ZigClangBuiltinTypeSveFloat16x3, + ZigClangBuiltinTypeSveFloat32x3, + ZigClangBuiltinTypeSveFloat64x3, + ZigClangBuiltinTypeSveBFloat16x3, + ZigClangBuiltinTypeSveInt8x4, + ZigClangBuiltinTypeSveInt16x4, + ZigClangBuiltinTypeSveInt32x4, + ZigClangBuiltinTypeSveInt64x4, + ZigClangBuiltinTypeSveUint8x4, + ZigClangBuiltinTypeSveUint16x4, + ZigClangBuiltinTypeSveUint32x4, + ZigClangBuiltinTypeSveUint64x4, + ZigClangBuiltinTypeSveFloat16x4, + ZigClangBuiltinTypeSveFloat32x4, + ZigClangBuiltinTypeSveFloat64x4, + ZigClangBuiltinTypeSveBFloat16x4, ZigClangBuiltinTypeSveBool, ZigClangBuiltinTypeVoid, ZigClangBuiltinTypeBool, @@ -739,6 +788,7 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeDouble, ZigClangBuiltinTypeLongDouble, ZigClangBuiltinTypeFloat16, + ZigClangBuiltinTypeBFloat16, ZigClangBuiltinTypeFloat128, ZigClangBuiltinTypeNullPtr, ZigClangBuiltinTypeObjCId, @@ -756,7 +806,10 @@ enum ZigClangBuiltinTypeKind { ZigClangBuiltinTypeUnknownAny, ZigClangBuiltinTypeBuiltinFn, ZigClangBuiltinTypeARCUnbridgedCast, + ZigClangBuiltinTypeIncompleteMatrixIdx, ZigClangBuiltinTypeOMPArraySection, + ZigClangBuiltinTypeOMPArrayShaping, + ZigClangBuiltinTypeOMPIterator, }; enum ZigClangCallingConv { @@ -794,11 +847,14 @@ enum ZigClangStorageClass { /// IEEE-754R 4.3: Rounding-direction attributes. enum ZigClangAPFloat_roundingMode { - ZigClangAPFloat_roundingMode_NearestTiesToEven, - ZigClangAPFloat_roundingMode_TowardPositive, - ZigClangAPFloat_roundingMode_TowardNegative, - ZigClangAPFloat_roundingMode_TowardZero, - ZigClangAPFloat_roundingMode_NearestTiesToAway, + ZigClangAPFloat_roundingMode_TowardZero = 0, + ZigClangAPFloat_roundingMode_NearestTiesToEven = 1, + ZigClangAPFloat_roundingMode_TowardPositive = 2, + ZigClangAPFloat_roundingMode_TowardNegative = 3, + ZigClangAPFloat_roundingMode_NearestTiesToAway = 4, + + ZigClangAPFloat_roundingMode_Dynamic = 7, + ZigClangAPFloat_roundingMode_Invalid = -1, }; enum ZigClangStringLiteral_StringKind { diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index e5b9df625c..5a66d0ba6a 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -308,7 +309,9 @@ ZIG_EXTERN_C LLVMTypeRef ZigLLVMTokenTypeInContext(LLVMContextRef context_ref) { LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, ZigLLVM_CallingConv CC, ZigLLVM_CallAttr attr, const char *Name) { - CallInst *call_inst = CallInst::Create(unwrap(Fn), makeArrayRef(unwrap(Args), NumArgs), Name); + Value *V = unwrap(Fn); + FunctionType *FnT = cast(cast(V->getType())->getElementType()); + CallInst *call_inst = CallInst::Create(FnT, V, makeArrayRef(unwrap(Args), NumArgs), Name); call_inst->setCallingConv(static_cast(CC)); switch (attr) { case ZigLLVM_CallAttrAuto: