Commit 8ea2e1ded5
Changed files (8)
src/codegen/llvm/bindings.zig
@@ -90,7 +90,7 @@ pub const TargetMachine = opaque {
time_report: bool,
tsan: bool,
sancov: bool,
- lto: bool,
+ lto: LtoPhase,
allow_fast_isel: bool,
asm_filename: ?[*:0]const u8,
bin_filename: ?[*:0]const u8,
@@ -98,6 +98,14 @@ pub const TargetMachine = opaque {
bitcode_filename: ?[*:0]const u8,
coverage: Coverage,
+ pub const LtoPhase = enum(c_int) {
+ None,
+ ThinPreLink,
+ ThinPostLink,
+ FullPreLink,
+ FullPostLink,
+ };
+
pub const Coverage = extern struct {
CoverageType: Coverage.Type,
IndirectCalls: bool,
src/codegen/llvm.zig
@@ -1053,7 +1053,11 @@ pub const Object = struct {
.is_small = options.is_small,
.time_report = options.time_report,
.tsan = options.sanitize_thread,
- .lto = options.lto != .none,
+ .lto = switch (options.lto) {
+ .none => .None,
+ .thin => .ThinPreLink,
+ .full => .FullPreLink,
+ },
// https://github.com/ziglang/zig/issues/21215
.allow_fast_isel = !comp.root_mod.resolved_target.result.cpu.arch.isMIPS(),
.asm_filename = null,
src/clang.zig
@@ -112,13 +112,16 @@ pub const APFloatBaseSemantics = enum(c_int) {
IEEEdouble,
IEEEquad,
PPCDoubleDouble,
+ PPCDoubleDoubleLegacy,
Float8E5M2,
Float8E5M2FNUZ,
Float8E4M3,
Float8E4M3FN,
Float8E4M3FNUZ,
Float8E4M3B11FNUZ,
+ Float8E3M4,
FloatTF32,
+ Float8E8M0FNU,
Float6E3M2FN,
Float6E2M3FN,
Float4E2M1FN,
@@ -1166,6 +1169,7 @@ pub const TypeClass = enum(c_int) {
Elaborated,
FunctionNoProto,
FunctionProto,
+ HLSLAttributedResource,
InjectedClassName,
MacroQualified,
ConstantMatrix,
@@ -1225,6 +1229,7 @@ const StmtClass = enum(c_int) {
PackExpansionExprClass,
UnresolvedMemberExprClass,
UnresolvedLookupExprClass,
+ OpenACCAsteriskSizeExprClass,
OpaqueValueExprClass,
OffsetOfExprClass,
ObjCSubscriptRefExprClass,
@@ -1255,6 +1260,7 @@ const StmtClass = enum(c_int) {
InitListExprClass,
ImplicitValueInitExprClass,
ImaginaryLiteralClass,
+ HLSLOutArgExprClass,
GenericSelectionExprClass,
GNUNullExprClass,
FunctionParmPackExprClass,
@@ -1332,13 +1338,24 @@ const StmtClass = enum(c_int) {
SwitchStmtClass,
DefaultStmtClass,
CaseStmtClass,
+ SYCLKernelCallStmtClass,
SEHTryStmtClass,
SEHLeaveStmtClass,
SEHFinallyStmtClass,
SEHExceptStmtClass,
ReturnStmtClass,
+ OpenACCWaitConstructClass,
+ OpenACCUpdateConstructClass,
+ OpenACCShutdownConstructClass,
+ OpenACCSetConstructClass,
+ OpenACCInitConstructClass,
+ OpenACCExitDataConstructClass,
+ OpenACCEnterDataConstructClass,
OpenACCLoopConstructClass,
+ OpenACCHostDataConstructClass,
+ OpenACCDataConstructClass,
OpenACCComputeConstructClass,
+ OpenACCCombinedConstructClass,
ObjCForCollectionStmtClass,
ObjCAutoreleasePoolStmtClass,
ObjCAtTryStmtClass,
@@ -1420,6 +1437,7 @@ const StmtClass = enum(c_int) {
OMPCancelDirectiveClass,
OMPBarrierDirectiveClass,
OMPAtomicDirectiveClass,
+ OMPAssumeDirectiveClass,
OMPCanonicalLoopClass,
NullStmtClass,
MSDependentExistsStmtClass,
@@ -1514,6 +1532,7 @@ pub const DeclKind = enum(c_int) {
TranslationUnit,
TopLevelStmt,
RequiresExprBody,
+ OutlinedFunction,
LinkageSpec,
ExternCContext,
Export,
@@ -1660,6 +1679,7 @@ pub const BuiltinTypeKind = enum(c_int) {
SveFloat32,
SveFloat64,
SveBFloat16,
+ SveMFloat8,
SveInt8x2,
SveInt16x2,
SveInt32x2,
@@ -1672,6 +1692,7 @@ pub const BuiltinTypeKind = enum(c_int) {
SveFloat32x2,
SveFloat64x2,
SveBFloat16x2,
+ SveMFloat8x2,
SveInt8x3,
SveInt16x3,
SveInt32x3,
@@ -1684,6 +1705,7 @@ pub const BuiltinTypeKind = enum(c_int) {
SveFloat32x3,
SveFloat64x3,
SveBFloat16x3,
+ SveMFloat8x3,
SveInt8x4,
SveInt16x4,
SveInt32x4,
@@ -1696,10 +1718,12 @@ pub const BuiltinTypeKind = enum(c_int) {
SveFloat32x4,
SveFloat64x4,
SveBFloat16x4,
+ SveMFloat8x4,
SveBool,
SveBoolx2,
SveBoolx4,
SveCount,
+ MFloat8,
VectorQuad,
VectorPair,
RvvInt8mf8,
@@ -2027,6 +2051,8 @@ pub const BuiltinTypeKind = enum(c_int) {
RvvBFloat16m4x2,
WasmExternRef,
AMDGPUBufferRsrc,
+ AMDGPUNamedWorkgroupBarrier,
+ HLSLResource,
Void,
Bool,
Char_U,
src/zig_clang.cpp
@@ -329,6 +329,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) {
case clang::Type::TemplateSpecialization:
case clang::Type::Auto:
case clang::Type::DeducedTemplateSpecialization:
+ case clang::Type::HLSLAttributedResource:
case clang::Type::InjectedClassName:
case clang::Type::DependentName:
case clang::Type::DependentTemplateSpecialization:
@@ -371,6 +372,7 @@ static_assert((clang::Type::TypeClass)ZigClangType_DependentVector == clang::Typ
static_assert((clang::Type::TypeClass)ZigClangType_Elaborated == clang::Type::Elaborated, "");
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_HLSLAttributedResource == clang::Type::HLSLAttributedResource, "");
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, "");
@@ -431,6 +433,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
case clang::Stmt::PackExpansionExprClass:
case clang::Stmt::UnresolvedMemberExprClass:
case clang::Stmt::UnresolvedLookupExprClass:
+ case clang::Stmt::OpenACCAsteriskSizeExprClass:
case clang::Stmt::OpaqueValueExprClass:
case clang::Stmt::OffsetOfExprClass:
case clang::Stmt::ObjCSubscriptRefExprClass:
@@ -461,6 +464,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
case clang::Stmt::InitListExprClass:
case clang::Stmt::ImplicitValueInitExprClass:
case clang::Stmt::ImaginaryLiteralClass:
+ case clang::Stmt::HLSLOutArgExprClass:
case clang::Stmt::GenericSelectionExprClass:
case clang::Stmt::GNUNullExprClass:
case clang::Stmt::FunctionParmPackExprClass:
@@ -538,13 +542,24 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
case clang::Stmt::SwitchStmtClass:
case clang::Stmt::DefaultStmtClass:
case clang::Stmt::CaseStmtClass:
+ case clang::Stmt::SYCLKernelCallStmtClass:
case clang::Stmt::SEHTryStmtClass:
case clang::Stmt::SEHLeaveStmtClass:
case clang::Stmt::SEHFinallyStmtClass:
case clang::Stmt::SEHExceptStmtClass:
case clang::Stmt::ReturnStmtClass:
+ case clang::Stmt::OpenACCWaitConstructClass:
+ case clang::Stmt::OpenACCUpdateConstructClass:
+ case clang::Stmt::OpenACCShutdownConstructClass:
+ case clang::Stmt::OpenACCSetConstructClass:
+ case clang::Stmt::OpenACCInitConstructClass:
+ case clang::Stmt::OpenACCExitDataConstructClass:
+ case clang::Stmt::OpenACCEnterDataConstructClass:
case clang::Stmt::OpenACCLoopConstructClass:
+ case clang::Stmt::OpenACCHostDataConstructClass:
+ case clang::Stmt::OpenACCDataConstructClass:
case clang::Stmt::OpenACCComputeConstructClass:
+ case clang::Stmt::OpenACCCombinedConstructClass:
case clang::Stmt::ObjCForCollectionStmtClass:
case clang::Stmt::ObjCAutoreleasePoolStmtClass:
case clang::Stmt::ObjCAtTryStmtClass:
@@ -626,6 +641,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
case clang::Stmt::OMPCancelDirectiveClass:
case clang::Stmt::OMPBarrierDirectiveClass:
case clang::Stmt::OMPAtomicDirectiveClass:
+ case clang::Stmt::OMPAssumeDirectiveClass:
case clang::Stmt::OMPCanonicalLoopClass:
case clang::Stmt::NullStmtClass:
case clang::Stmt::MSDependentExistsStmtClass:
@@ -676,6 +692,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackIndexingExprClass == clan
static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackExpansionExprClass == clang::Stmt::PackExpansionExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedMemberExprClass == clang::Stmt::UnresolvedMemberExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedLookupExprClass == clang::Stmt::UnresolvedLookupExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCAsteriskSizeExprClass == clang::Stmt::OpenACCAsteriskSizeExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpaqueValueExprClass == clang::Stmt::OpaqueValueExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OffsetOfExprClass == clang::Stmt::OffsetOfExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCSubscriptRefExprClass == clang::Stmt::ObjCSubscriptRefExprClass, "");
@@ -706,6 +723,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_IntegerLiteralClass == clang:
static_assert((clang::Stmt::StmtClass)ZigClangStmt_InitListExprClass == clang::Stmt::InitListExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitValueInitExprClass == clang::Stmt::ImplicitValueInitExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImaginaryLiteralClass == clang::Stmt::ImaginaryLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_HLSLOutArgExprClass == clang::Stmt::HLSLOutArgExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_GenericSelectionExprClass == clang::Stmt::GenericSelectionExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_GNUNullExprClass == clang::Stmt::GNUNullExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_FunctionParmPackExprClass == clang::Stmt::FunctionParmPackExprClass, "");
@@ -783,13 +801,24 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_AttributedStmtClass == clang:
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SwitchStmtClass == clang::Stmt::SwitchStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_DefaultStmtClass == clang::Stmt::DefaultStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_CaseStmtClass == clang::Stmt::CaseStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SYCLKernelCallStmtClass == clang::Stmt::SYCLKernelCallStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHTryStmtClass == clang::Stmt::SEHTryStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHLeaveStmtClass == clang::Stmt::SEHLeaveStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHFinallyStmtClass == clang::Stmt::SEHFinallyStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHExceptStmtClass == clang::Stmt::SEHExceptStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ReturnStmtClass == clang::Stmt::ReturnStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCWaitConstructClass == clang::Stmt::OpenACCWaitConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCUpdateConstructClass == clang::Stmt::OpenACCUpdateConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCShutdownConstructClass == clang::Stmt::OpenACCShutdownConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCSetConstructClass == clang::Stmt::OpenACCSetConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCInitConstructClass == clang::Stmt::OpenACCInitConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCExitDataConstructClass == clang::Stmt::OpenACCExitDataConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCEnterDataConstructClass == clang::Stmt::OpenACCEnterDataConstructClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCLoopConstructClass == clang::Stmt::OpenACCLoopConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCHostDataConstructClass == clang::Stmt::OpenACCHostDataConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCDataConstructClass == clang::Stmt::OpenACCDataConstructClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCComputeConstructClass == clang::Stmt::OpenACCComputeConstructClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpenACCCombinedConstructClass == clang::Stmt::OpenACCCombinedConstructClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCForCollectionStmtClass == clang::Stmt::ObjCForCollectionStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAutoreleasePoolStmtClass == clang::Stmt::ObjCAutoreleasePoolStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtTryStmtClass == clang::Stmt::ObjCAtTryStmtClass, "");
@@ -871,6 +900,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirective
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancelDirectiveClass == clang::Stmt::OMPCancelDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == clang::Stmt::OMPBarrierDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAtomicDirectiveClass == clang::Stmt::OMPAtomicDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAssumeDirectiveClass == clang::Stmt::OMPAssumeDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCanonicalLoopClass == clang::Stmt::OMPCanonicalLoopClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_NullStmtClass == clang::Stmt::NullStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSDependentExistsStmtClass == clang::Stmt::MSDependentExistsStmtClass, "");
@@ -932,6 +962,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
switch (x) {
case clang::Decl::TranslationUnit:
case clang::Decl::RequiresExprBody:
+ case clang::Decl::OutlinedFunction:
case clang::Decl::LinkageSpec:
case clang::Decl::ExternCContext:
case clang::Decl::Export:
@@ -1023,6 +1054,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
static_assert((clang::Decl::Kind)ZigClangDeclTranslationUnit == clang::Decl::TranslationUnit, "");
static_assert((clang::Decl::Kind)ZigClangDeclTopLevelStmt == clang::Decl::TopLevelStmt, "");
static_assert((clang::Decl::Kind)ZigClangDeclRequiresExprBody == clang::Decl::RequiresExprBody, "");
+static_assert((clang::Decl::Kind)ZigClangDeclOutlinedFunction == clang::Decl::OutlinedFunction, "");
static_assert((clang::Decl::Kind)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, "");
static_assert((clang::Decl::Kind)ZigClangDeclExternCContext == clang::Decl::ExternCContext, "");
static_assert((clang::Decl::Kind)ZigClangDeclExport == clang::Decl::Export, "");
@@ -1169,6 +1201,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
case clang::BuiltinType::SveFloat32:
case clang::BuiltinType::SveFloat64:
case clang::BuiltinType::SveBFloat16:
+ case clang::BuiltinType::SveMFloat8:
case clang::BuiltinType::SveInt8x2:
case clang::BuiltinType::SveInt16x2:
case clang::BuiltinType::SveInt32x2:
@@ -1181,6 +1214,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
case clang::BuiltinType::SveFloat32x2:
case clang::BuiltinType::SveFloat64x2:
case clang::BuiltinType::SveBFloat16x2:
+ case clang::BuiltinType::SveMFloat8x2:
case clang::BuiltinType::SveInt8x3:
case clang::BuiltinType::SveInt16x3:
case clang::BuiltinType::SveInt32x3:
@@ -1193,6 +1227,7 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
case clang::BuiltinType::SveFloat32x3:
case clang::BuiltinType::SveFloat64x3:
case clang::BuiltinType::SveBFloat16x3:
+ case clang::BuiltinType::SveMFloat8x3:
case clang::BuiltinType::SveInt8x4:
case clang::BuiltinType::SveInt16x4:
case clang::BuiltinType::SveInt32x4:
@@ -1205,10 +1240,12 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
case clang::BuiltinType::SveFloat32x4:
case clang::BuiltinType::SveFloat64x4:
case clang::BuiltinType::SveBFloat16x4:
+ case clang::BuiltinType::SveMFloat8x4:
case clang::BuiltinType::SveBool:
case clang::BuiltinType::SveBoolx2:
case clang::BuiltinType::SveBoolx4:
case clang::BuiltinType::SveCount:
+ case clang::BuiltinType::MFloat8:
case clang::BuiltinType::VectorQuad:
case clang::BuiltinType::VectorPair:
case clang::BuiltinType::RvvInt8mf8:
@@ -1536,6 +1573,8 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
case clang::BuiltinType::RvvBFloat16m4x2:
case clang::BuiltinType::WasmExternRef:
case clang::BuiltinType::AMDGPUBufferRsrc:
+ case clang::BuiltinType::AMDGPUNamedWorkgroupBarrier:
+ case clang::BuiltinType::HLSLResource:
case clang::BuiltinType::Void:
case clang::BuiltinType::Bool:
case clang::BuiltinType::Char_U:
@@ -1674,6 +1713,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16 == clang::
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)ZigClangBuiltinTypeSveMFloat8 == clang::BuiltinType::SveMFloat8, "");
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, "");
@@ -1686,6 +1726,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x2 == clang
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)ZigClangBuiltinTypeSveMFloat8x2 == clang::BuiltinType::SveMFloat8x2, "");
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, "");
@@ -1698,6 +1739,7 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x3 == clang
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)ZigClangBuiltinTypeSveMFloat8x3 == clang::BuiltinType::SveMFloat8x3, "");
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, "");
@@ -1710,10 +1752,12 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveFloat16x4 == clang
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)ZigClangBuiltinTypeSveMFloat8x4 == clang::BuiltinType::SveMFloat8x4, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBool == clang::BuiltinType::SveBool, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBoolx2 == clang::BuiltinType::SveBoolx2, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBoolx4 == clang::BuiltinType::SveBoolx4, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveCount == clang::BuiltinType::SveCount, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeMFloat8 == clang::BuiltinType::MFloat8, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVectorQuad == clang::BuiltinType::VectorQuad, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVectorPair == clang::BuiltinType::VectorPair, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf8 == clang::BuiltinType::RvvInt8mf8, "");
@@ -2041,6 +2085,8 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBFloat16m2x4 == cl
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBFloat16m4x2 == clang::BuiltinType::RvvBFloat16m4x2, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeWasmExternRef == clang::BuiltinType::WasmExternRef, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeAMDGPUBufferRsrc == clang::BuiltinType::AMDGPUBufferRsrc, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeAMDGPUNamedWorkgroupBarrier == clang::BuiltinType::AMDGPUNamedWorkgroupBarrier, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeHLSLResource == clang::BuiltinType::HLSLResource, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVoid == clang::BuiltinType::Void, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBool == clang::BuiltinType::Bool, "");
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar_U == clang::BuiltinType::Char_U, "");
@@ -3074,7 +3120,8 @@ ZigClangAPValueLValueBase ZigClangAPValue_getLValueBase(const ZigClangAPValue *s
ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char **args_end,
struct Stage2ErrorMsg **errors_ptr, size_t *errors_len, const char *resources_path)
{
- clang::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diags(clang::CompilerInstance::createDiagnostics(new clang::DiagnosticOptions));
+ llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = llvm::vfs::getRealFileSystem();
+ clang::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diags(clang::CompilerInstance::createDiagnostics(*VFS, new clang::DiagnosticOptions));
std::shared_ptr<clang::PCHContainerOperations> pch_container_ops = std::make_shared<clang::PCHContainerOperations>();
@@ -3088,7 +3135,6 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char
llvm::StringRef preamble_storage_path = llvm::StringRef();
clang::ArrayRef<clang::ASTUnit::RemappedFile> remapped_files = std::nullopt;
std::unique_ptr<clang::ASTUnit> err_unit;
- llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr;
std::optional<llvm::StringRef> ModuleFormat = std::nullopt;
std::unique_ptr<clang::ASTUnit> ast_unit_unique_ptr = clang::ASTUnit::LoadFromCommandLine(
args_begin, args_end,
@@ -4112,13 +4158,16 @@ static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEsi
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEdouble == llvm::APFloatBase::S_IEEEdouble);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEquad == llvm::APFloatBase::S_IEEEquad);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_PPCDoubleDouble == llvm::APFloatBase::S_PPCDoubleDouble);
+static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_PPCDoubleDoubleLegacy == llvm::APFloatBase::S_PPCDoubleDoubleLegacy);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E5M2 == llvm::APFloatBase::S_Float8E5M2);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ == llvm::APFloatBase::S_Float8E5M2FNUZ);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3 == llvm::APFloatBase::S_Float8E4M3);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3FN == llvm::APFloatBase::S_Float8E4M3FN);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ == llvm::APFloatBase::S_Float8E4M3FNUZ);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ == llvm::APFloatBase::S_Float8E4M3B11FNUZ);
+static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E3M4 == llvm::APFloatBase::S_Float8E3M4);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_FloatTF32 == llvm::APFloatBase::S_FloatTF32);
+static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E8M0FNU == llvm::APFloatBase::S_Float8E8M0FNU);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float6E3M2FN == llvm::APFloatBase::S_Float6E3M2FN);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float6E2M3FN == llvm::APFloatBase::S_Float6E2M3FN);
static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float4E2M1FN == llvm::APFloatBase::S_Float4E2M1FN);
src/zig_clang.h
@@ -75,7 +75,7 @@ struct ZigClangAPValue {
#elif defined(__i386__)
char Data[48];
#else
- char Data[68];
+ char Data[52];
#endif
};
@@ -271,6 +271,7 @@ enum ZigClangTypeClass {
ZigClangType_Elaborated,
ZigClangType_FunctionNoProto,
ZigClangType_FunctionProto,
+ ZigClangType_HLSLAttributedResource,
ZigClangType_InjectedClassName,
ZigClangType_MacroQualified,
ZigClangType_ConstantMatrix,
@@ -330,6 +331,7 @@ enum ZigClangStmtClass {
ZigClangStmt_PackExpansionExprClass,
ZigClangStmt_UnresolvedMemberExprClass,
ZigClangStmt_UnresolvedLookupExprClass,
+ ZigClangStmt_OpenACCAsteriskSizeExprClass,
ZigClangStmt_OpaqueValueExprClass,
ZigClangStmt_OffsetOfExprClass,
ZigClangStmt_ObjCSubscriptRefExprClass,
@@ -360,6 +362,7 @@ enum ZigClangStmtClass {
ZigClangStmt_InitListExprClass,
ZigClangStmt_ImplicitValueInitExprClass,
ZigClangStmt_ImaginaryLiteralClass,
+ ZigClangStmt_HLSLOutArgExprClass,
ZigClangStmt_GenericSelectionExprClass,
ZigClangStmt_GNUNullExprClass,
ZigClangStmt_FunctionParmPackExprClass,
@@ -437,13 +440,24 @@ enum ZigClangStmtClass {
ZigClangStmt_SwitchStmtClass,
ZigClangStmt_DefaultStmtClass,
ZigClangStmt_CaseStmtClass,
+ ZigClangStmt_SYCLKernelCallStmtClass,
ZigClangStmt_SEHTryStmtClass,
ZigClangStmt_SEHLeaveStmtClass,
ZigClangStmt_SEHFinallyStmtClass,
ZigClangStmt_SEHExceptStmtClass,
ZigClangStmt_ReturnStmtClass,
+ ZigClangStmt_OpenACCWaitConstructClass,
+ ZigClangStmt_OpenACCUpdateConstructClass,
+ ZigClangStmt_OpenACCShutdownConstructClass,
+ ZigClangStmt_OpenACCSetConstructClass,
+ ZigClangStmt_OpenACCInitConstructClass,
+ ZigClangStmt_OpenACCExitDataConstructClass,
+ ZigClangStmt_OpenACCEnterDataConstructClass,
ZigClangStmt_OpenACCLoopConstructClass,
+ ZigClangStmt_OpenACCHostDataConstructClass,
+ ZigClangStmt_OpenACCDataConstructClass,
ZigClangStmt_OpenACCComputeConstructClass,
+ ZigClangStmt_OpenACCCombinedConstructClass,
ZigClangStmt_ObjCForCollectionStmtClass,
ZigClangStmt_ObjCAutoreleasePoolStmtClass,
ZigClangStmt_ObjCAtTryStmtClass,
@@ -525,6 +539,7 @@ enum ZigClangStmtClass {
ZigClangStmt_OMPCancelDirectiveClass,
ZigClangStmt_OMPBarrierDirectiveClass,
ZigClangStmt_OMPAtomicDirectiveClass,
+ ZigClangStmt_OMPAssumeDirectiveClass,
ZigClangStmt_OMPCanonicalLoopClass,
ZigClangStmt_NullStmtClass,
ZigClangStmt_MSDependentExistsStmtClass,
@@ -619,6 +634,7 @@ enum ZigClangDeclKind {
ZigClangDeclTranslationUnit,
ZigClangDeclTopLevelStmt,
ZigClangDeclRequiresExprBody,
+ ZigClangDeclOutlinedFunction,
ZigClangDeclLinkageSpec,
ZigClangDeclExternCContext,
ZigClangDeclExport,
@@ -765,6 +781,7 @@ enum ZigClangBuiltinTypeKind {
ZigClangBuiltinTypeSveFloat32,
ZigClangBuiltinTypeSveFloat64,
ZigClangBuiltinTypeSveBFloat16,
+ ZigClangBuiltinTypeSveMFloat8,
ZigClangBuiltinTypeSveInt8x2,
ZigClangBuiltinTypeSveInt16x2,
ZigClangBuiltinTypeSveInt32x2,
@@ -777,6 +794,7 @@ enum ZigClangBuiltinTypeKind {
ZigClangBuiltinTypeSveFloat32x2,
ZigClangBuiltinTypeSveFloat64x2,
ZigClangBuiltinTypeSveBFloat16x2,
+ ZigClangBuiltinTypeSveMFloat8x2,
ZigClangBuiltinTypeSveInt8x3,
ZigClangBuiltinTypeSveInt16x3,
ZigClangBuiltinTypeSveInt32x3,
@@ -789,6 +807,7 @@ enum ZigClangBuiltinTypeKind {
ZigClangBuiltinTypeSveFloat32x3,
ZigClangBuiltinTypeSveFloat64x3,
ZigClangBuiltinTypeSveBFloat16x3,
+ ZigClangBuiltinTypeSveMFloat8x3,
ZigClangBuiltinTypeSveInt8x4,
ZigClangBuiltinTypeSveInt16x4,
ZigClangBuiltinTypeSveInt32x4,
@@ -801,10 +820,12 @@ enum ZigClangBuiltinTypeKind {
ZigClangBuiltinTypeSveFloat32x4,
ZigClangBuiltinTypeSveFloat64x4,
ZigClangBuiltinTypeSveBFloat16x4,
+ ZigClangBuiltinTypeSveMFloat8x4,
ZigClangBuiltinTypeSveBool,
ZigClangBuiltinTypeSveBoolx2,
ZigClangBuiltinTypeSveBoolx4,
ZigClangBuiltinTypeSveCount,
+ ZigClangBuiltinTypeMFloat8,
ZigClangBuiltinTypeVectorQuad,
ZigClangBuiltinTypeVectorPair,
ZigClangBuiltinTypeRvvInt8mf8,
@@ -1132,6 +1153,8 @@ enum ZigClangBuiltinTypeKind {
ZigClangBuiltinTypeRvvBFloat16m4x2,
ZigClangBuiltinTypeWasmExternRef,
ZigClangBuiltinTypeAMDGPUBufferRsrc,
+ ZigClangBuiltinTypeAMDGPUNamedWorkgroupBarrier,
+ ZigClangBuiltinTypeHLSLResource,
ZigClangBuiltinTypeVoid,
ZigClangBuiltinTypeBool,
ZigClangBuiltinTypeChar_U,
@@ -1266,13 +1289,16 @@ enum ZigClangAPFloatBase_Semantics {
ZigClangAPFloatBase_Semantics_IEEEdouble,
ZigClangAPFloatBase_Semantics_IEEEquad,
ZigClangAPFloatBase_Semantics_PPCDoubleDouble,
+ ZigClangAPFloatBase_Semantics_PPCDoubleDoubleLegacy,
ZigClangAPFloatBase_Semantics_Float8E5M2,
ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ,
ZigClangAPFloatBase_Semantics_Float8E4M3,
ZigClangAPFloatBase_Semantics_Float8E4M3FN,
ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ,
ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ,
+ ZigClangAPFloatBase_Semantics_Float8E3M4,
ZigClangAPFloatBase_Semantics_FloatTF32,
+ ZigClangAPFloatBase_Semantics_Float8E8M0FNU,
ZigClangAPFloatBase_Semantics_Float6E3M2FN,
ZigClangAPFloatBase_Semantics_Float6E2M3FN,
ZigClangAPFloatBase_Semantics_Float4E2M1FN,
src/zig_llvm.cpp
@@ -300,7 +300,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
pass_builder.registerLoopAnalyses(loop_am);
pass_builder.crossRegisterProxies(loop_am, function_am, cgscc_am, module_am);
- pass_builder.registerPipelineStartEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) {
+ pass_builder.registerPipelineStartEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) {
// Verify the input
if (assertions_on) {
module_pm.addPass(VerifierPass());
@@ -313,7 +313,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
const bool early_san = options->is_debug;
- pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel OL) {
+ pass_builder.registerOptimizerEarlyEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level, ThinOrFullLTOPhase lto_phase) {
if (early_san) {
// Code coverage instrumentation.
if (options->sancov) {
@@ -328,7 +328,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
}
});
- pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level) {
+ pass_builder.registerOptimizerLastEPCallback([&](ModulePassManager &module_pm, OptimizationLevel level, ThinOrFullLTOPhase lto_phase) {
if (!early_san) {
// Code coverage instrumentation.
if (options->sancov) {
@@ -360,7 +360,7 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi
// Initialize the PassManager
if (opt_level == OptimizationLevel::O0) {
- module_pm = pass_builder.buildO0DefaultPipeline(opt_level, options->lto);
+ module_pm = pass_builder.buildO0DefaultPipeline(opt_level, static_cast<ThinOrFullLTOPhase>(options->lto));
} else if (options->lto) {
module_pm = pass_builder.buildLTOPreLinkDefaultPipeline(opt_level);
} else {
src/zig_llvm.h
@@ -53,13 +53,23 @@ struct ZigLLVMCoverageOptions {
bool CollectControlFlow;
};
+// synchronize with llvm/include/Pass.h::ThinOrFullLTOPhase
+// synchronize with codegen/llvm/bindings.zig::EmitOptions::LtoPhase
+enum ZigLLVMThinOrFullLTOPhase {
+ ZigLLVMThinOrFullLTOPhase_None,
+ ZigLLVMThinOrFullLTOPhase_ThinPreLink,
+ ZigLLVMThinOrFullLTOPhase_ThinkPostLink,
+ ZigLLVMThinOrFullLTOPhase_FullPreLink,
+ ZigLLVMThinOrFullLTOPhase_FullPostLink,
+};
+
struct ZigLLVMEmitOptions {
bool is_debug;
bool is_small;
bool time_report;
bool tsan;
bool sancov;
- bool lto;
+ ZigLLVMThinOrFullLTOPhase lto;
bool allow_fast_isel;
const char *asm_filename;
const char *bin_filename;
test/translate_c.zig
@@ -1061,28 +1061,28 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ VAL23 = 0xFFFFFFFFFFFFFFFF,
\\};
, &[_][]const u8{
- \\pub const VAL01: c_int = 0;
- \\pub const VAL02: c_int = 1;
- \\pub const VAL03: c_int = 2;
- \\pub const VAL04: c_int = 3;
- \\pub const VAL05: c_int = -1;
- \\pub const VAL06: c_int = -2;
- \\pub const VAL07: c_int = -3;
- \\pub const VAL08: c_int = -4;
- \\pub const VAL09: c_int = -3;
- \\pub const VAL10: c_int = -1000012000;
- \\pub const VAL11: c_int = -1000161000;
- \\pub const VAL12: c_int = -1000174001;
- \\pub const VAL13: c_int = -3;
- \\pub const VAL14: c_int = -1000012000;
- \\pub const VAL15: c_int = -1000161000;
- \\pub const VAL16: c_int = -3;
- \\pub const VAL17: c_int = 1000011998;
+ \\pub const VAL01: c_longlong = 0;
+ \\pub const VAL02: c_longlong = 1;
+ \\pub const VAL03: c_longlong = 2;
+ \\pub const VAL04: c_longlong = 3;
+ \\pub const VAL05: c_longlong = -1;
+ \\pub const VAL06: c_longlong = -2;
+ \\pub const VAL07: c_longlong = -3;
+ \\pub const VAL08: c_longlong = -4;
+ \\pub const VAL09: c_longlong = -3;
+ \\pub const VAL10: c_longlong = -1000012000;
+ \\pub const VAL11: c_longlong = -1000161000;
+ \\pub const VAL12: c_longlong = -1000174001;
+ \\pub const VAL13: c_longlong = -3;
+ \\pub const VAL14: c_longlong = -1000012000;
+ \\pub const VAL15: c_longlong = -1000161000;
+ \\pub const VAL16: c_longlong = -3;
+ \\pub const VAL17: c_longlong = 1000011998;
\\pub const VAL18: c_longlong = 1152921504606846976;
\\pub const VAL19: c_longlong = 3458764513820540927;
\\pub const VAL20: c_longlong = 6917529027641081854;
\\pub const VAL21: c_longlong = 6917529027641081853;
- \\pub const VAL22: c_int = 0;
+ \\pub const VAL22: c_longlong = 0;
\\pub const VAL23: c_longlong = -1;
\\pub const enum_EnumWithInits = c_longlong;
});