aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-02 10:45:56 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-10-02 10:45:56 -0700
commitdde0adcb363f3a3f306c0fc9eaec511cc3b74965 (patch)
tree9388d039a0b77211936c7264f5a3179f63ad51e6 /src
parentc4cd592f0e1eeff5a4056796610d97010ae4e38c (diff)
parent7a2624c3e40e2386a4a8a775b839e1d67608ec42 (diff)
downloadzig-dde0adcb363f3a3f306c0fc9eaec511cc3b74965.tar.gz
zig-dde0adcb363f3a3f306c0fc9eaec511cc3b74965.zip
Merge branch 'llvm13'
Diffstat (limited to 'src')
-rw-r--r--src/Compilation.zig4
-rw-r--r--src/clang.zig79
-rw-r--r--src/codegen/llvm.zig89
-rw-r--r--src/codegen/llvm/bindings.zig30
-rw-r--r--src/config.zig.in4
-rw-r--r--src/libcxx.zig20
-rw-r--r--src/libtsan.zig10
-rw-r--r--src/stage1/codegen.cpp52
-rw-r--r--src/stage1/target.cpp8
-rw-r--r--src/target.zig6
-rw-r--r--src/zig_clang.cpp602
-rw-r--r--src/zig_clang.h79
-rw-r--r--src/zig_clang_cc1_main.cpp15
-rw-r--r--src/zig_clang_cc1as_main.cpp61
-rw-r--r--src/zig_clang_driver.cpp106
-rw-r--r--src/zig_llvm-ar.cpp275
-rw-r--r--src/zig_llvm.cpp68
-rw-r--r--src/zig_llvm.h28
18 files changed, 804 insertions, 732 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 76a84701ce..95337de1e1 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -2725,7 +2725,7 @@ fn reportRetryableCObjectError(
const c_obj_err_msg = try comp.gpa.create(CObject.ErrorMsg);
errdefer comp.gpa.destroy(c_obj_err_msg);
- const msg = try std.fmt.allocPrint(comp.gpa, "unable to build C object: {s}", .{@errorName(err)});
+ const msg = try std.fmt.allocPrint(comp.gpa, "{s}", .{@errorName(err)});
errdefer comp.gpa.free(msg);
c_obj_err_msg.* = .{
.msg = msg,
@@ -2797,6 +2797,8 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P
const tracy = trace(@src());
defer tracy.end();
+ log.debug("updating C object: {s}", .{c_object.src.src_path});
+
if (c_object.clearStatus(comp.gpa)) {
// There was previous failure.
const lock = comp.mutex.acquire();
diff --git a/src/clang.zig b/src/clang.zig
index 1254a505f4..430c9093f2 100644
--- a/src/clang.zig
+++ b/src/clang.zig
@@ -1168,13 +1168,16 @@ const StmtClass = enum(c_int) {
IndirectGotoStmtClass,
MSDependentExistsStmtClass,
NullStmtClass,
+ OMPCanonicalLoopClass,
OMPAtomicDirectiveClass,
OMPBarrierDirectiveClass,
OMPCancelDirectiveClass,
OMPCancellationPointDirectiveClass,
OMPCriticalDirectiveClass,
OMPDepobjDirectiveClass,
+ OMPDispatchDirectiveClass,
OMPFlushDirectiveClass,
+ OMPInteropDirectiveClass,
OMPDistributeDirectiveClass,
OMPDistributeParallelForDirectiveClass,
OMPDistributeParallelForSimdDirectiveClass,
@@ -1200,6 +1203,9 @@ const StmtClass = enum(c_int) {
OMPTeamsDistributeParallelForDirectiveClass,
OMPTeamsDistributeParallelForSimdDirectiveClass,
OMPTeamsDistributeSimdDirectiveClass,
+ OMPTileDirectiveClass,
+ OMPUnrollDirectiveClass,
+ OMPMaskedDirectiveClass,
OMPMasterDirectiveClass,
OMPOrderedDirectiveClass,
OMPParallelDirectiveClass,
@@ -1348,6 +1354,7 @@ const StmtClass = enum(c_int) {
PseudoObjectExprClass,
RecoveryExprClass,
RequiresExprClass,
+ SYCLUniqueStableNameExprClass,
ShuffleVectorExprClass,
SizeOfPackExprClass,
SourceLocExprClass,
@@ -1390,6 +1397,7 @@ pub const CK = enum(c_int) {
PointerToIntegral,
PointerToBoolean,
ToVoid,
+ MatrixCast,
VectorSplat,
IntegralCast,
IntegralToBoolean,
@@ -1445,6 +1453,8 @@ pub const DeclKind = enum(c_int) {
Import,
LifetimeExtendedTemporary,
LinkageSpec,
+ Using,
+ UsingEnum,
Label,
Namespace,
NamespaceAlias,
@@ -1473,7 +1483,7 @@ pub const DeclKind = enum(c_int) {
TypeAlias,
Typedef,
UnresolvedUsingTypename,
- Using,
+ UnresolvedUsingIfExists,
UsingDirective,
UsingPack,
UsingShadow,
@@ -1615,6 +1625,72 @@ pub const BuiltinTypeKind = enum(c_int) {
SveBool,
VectorQuad,
VectorPair,
+ RvvInt8mf8,
+ RvvInt8mf4,
+ RvvInt8mf2,
+ RvvInt8m1,
+ RvvInt8m2,
+ RvvInt8m4,
+ RvvInt8m8,
+ RvvUint8mf8,
+ RvvUint8mf4,
+ RvvUint8mf2,
+ RvvUint8m1,
+ RvvUint8m2,
+ RvvUint8m4,
+ RvvUint8m8,
+ RvvInt16mf4,
+ RvvInt16mf2,
+ RvvInt16m1,
+ RvvInt16m2,
+ RvvInt16m4,
+ RvvInt16m8,
+ RvvUint16mf4,
+ RvvUint16mf2,
+ RvvUint16m1,
+ RvvUint16m2,
+ RvvUint16m4,
+ RvvUint16m8,
+ RvvInt32mf2,
+ RvvInt32m1,
+ RvvInt32m2,
+ RvvInt32m4,
+ RvvInt32m8,
+ RvvUint32mf2,
+ RvvUint32m1,
+ RvvUint32m2,
+ RvvUint32m4,
+ RvvUint32m8,
+ RvvInt64m1,
+ RvvInt64m2,
+ RvvInt64m4,
+ RvvInt64m8,
+ RvvUint64m1,
+ RvvUint64m2,
+ RvvUint64m4,
+ RvvUint64m8,
+ RvvFloat16mf4,
+ RvvFloat16mf2,
+ RvvFloat16m1,
+ RvvFloat16m2,
+ RvvFloat16m4,
+ RvvFloat16m8,
+ RvvFloat32mf2,
+ RvvFloat32m1,
+ RvvFloat32m2,
+ RvvFloat32m4,
+ RvvFloat32m8,
+ RvvFloat64m1,
+ RvvFloat64m2,
+ RvvFloat64m4,
+ RvvFloat64m8,
+ RvvBool1,
+ RvvBool2,
+ RvvBool4,
+ RvvBool8,
+ RvvBool16,
+ RvvBool32,
+ RvvBool64,
Void,
Bool,
Char_U,
@@ -1705,6 +1781,7 @@ pub const CallingConv = enum(c_int) {
SpirFunction,
OpenCLKernel,
Swift,
+ SwiftAsync,
PreserveMost,
PreserveAll,
AArch64VectorCall,
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index a1e9f47df4..d223569d0f 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -7,6 +7,7 @@ const link = @import("../link.zig");
const log = std.log.scoped(.codegen);
const math = std.math;
+const build_options = @import("build_options");
const Module = @import("../Module.zig");
const TypedValue = @import("../TypedValue.zig");
const Zir = @import("../Zir.zig");
@@ -31,6 +32,7 @@ pub fn targetTriple(allocator: *Allocator, target: std.Target) ![:0]u8 {
.bpfeb => "bpfeb",
.csky => "csky",
.hexagon => "hexagon",
+ .m68k => "m68k",
.mips => "mips",
.mipsel => "mipsel",
.mips64 => "mips64",
@@ -140,6 +142,7 @@ pub fn targetTriple(allocator: *Allocator, target: std.Target) ![:0]u8 {
.musl => "musl",
.musleabi => "musleabi",
.musleabihf => "musleabihf",
+ .muslx32 => "muslx32",
.msvc => "msvc",
.itanium => "itanium",
.cygnus => "cygnus",
@@ -1902,6 +1905,7 @@ pub const FuncGen = struct {
llvm.Bool.fromBool(is_volatile),
.False,
.ATT,
+ .False,
);
return self.builder.buildCall(
asm_fn,
@@ -2552,15 +2556,15 @@ pub const FuncGen = struct {
new_value = self.builder.buildZExt(new_value, abi_ty, "");
}
}
- const result = self.builder.buildCmpXchg(
+ const result = self.builder.buildAtomicCmpXchg(
ptr,
expected_value,
new_value,
toLlvmAtomicOrdering(extra.successOrder()),
toLlvmAtomicOrdering(extra.failureOrder()),
- is_weak,
- self.single_threaded,
+ llvm.Bool.fromBool(self.single_threaded),
);
+ result.setWeak(llvm.Bool.fromBool(is_weak));
const optional_ty = self.air.typeOfIndex(inst);
@@ -2873,7 +2877,7 @@ fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
llvm.LLVMInitializeAMDGPUAsmPrinter();
llvm.LLVMInitializeAMDGPUAsmParser();
},
- .arm, .armeb => {
+ .thumb, .thumbeb, .arm, .armeb => {
llvm.LLVMInitializeARMTarget();
llvm.LLVMInitializeARMTargetInfo();
llvm.LLVMInitializeARMTargetMC();
@@ -2976,25 +2980,66 @@ fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
llvm.LLVMInitializeXCoreTargetInfo();
llvm.LLVMInitializeXCoreTargetMC();
llvm.LLVMInitializeXCoreAsmPrinter();
- // There is no LLVMInitializeXCoreAsmParser function available.
+ // There is no LLVMInitializeXCoreAsmParser function.
+ },
+ .m68k => {
+ if (build_options.llvm_has_m68k) {
+ llvm.LLVMInitializeM68kTarget();
+ llvm.LLVMInitializeM68kTargetInfo();
+ llvm.LLVMInitializeM68kTargetMC();
+ llvm.LLVMInitializeM68kAsmPrinter();
+ llvm.LLVMInitializeM68kAsmParser();
+ }
+ },
+ .csky => {
+ if (build_options.llvm_has_csky) {
+ llvm.LLVMInitializeCSKYTarget();
+ llvm.LLVMInitializeCSKYTargetInfo();
+ llvm.LLVMInitializeCSKYTargetMC();
+ // There is no LLVMInitializeCSKYAsmPrinter function.
+ llvm.LLVMInitializeCSKYAsmParser();
+ }
},
- .arc => {},
- .csky => {},
- .r600 => {},
- .tce, .tcele => {},
- .thumb, .thumbeb => {},
- .le32, .le64 => {},
- .amdil, .amdil64 => {},
- .hsail, .hsail64 => {},
- .spir, .spir64 => {},
- .kalimba => {},
- .shave => {},
- .renderscript32 => {},
- .renderscript64 => {},
- .ve => {},
- .spu_2 => {},
- .spirv32 => {},
- .spirv64 => {},
+ .ve => {
+ if (build_options.llvm_has_ve) {
+ llvm.LLVMInitializeVETarget();
+ llvm.LLVMInitializeVETargetInfo();
+ llvm.LLVMInitializeVETargetMC();
+ llvm.LLVMInitializeVEAsmPrinter();
+ llvm.LLVMInitializeVEAsmParser();
+ }
+ },
+ .arc => {
+ if (build_options.llvm_has_arc) {
+ llvm.LLVMInitializeARCTarget();
+ llvm.LLVMInitializeARCTargetInfo();
+ llvm.LLVMInitializeARCTargetMC();
+ llvm.LLVMInitializeARCAsmPrinter();
+ // There is no LLVMInitializeARCAsmParser function.
+ }
+ },
+
+ // LLVM backends that have no initialization functions.
+ .tce,
+ .tcele,
+ .r600,
+ .le32,
+ .le64,
+ .amdil,
+ .amdil64,
+ .hsail,
+ .hsail64,
+ .shave,
+ .spir,
+ .spir64,
+ .kalimba,
+ .renderscript32,
+ .renderscript64,
+ => {},
+
+ .spu_2 => unreachable, // LLVM does not support this backend
+ .spirv32 => unreachable, // LLVM does not support this backend
+ .spirv64 => unreachable, // LLVM does not support this backend
}
}
diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig
index 69845c0899..496579008e 100644
--- a/src/codegen/llvm/bindings.zig
+++ b/src/codegen/llvm/bindings.zig
@@ -137,6 +137,9 @@ pub const Value = opaque {
pub const constIntToPtr = LLVMConstIntToPtr;
extern fn LLVMConstIntToPtr(ConstantVal: *const Value, ToType: *const Type) *const Value;
+ pub const setWeak = LLVMSetWeak;
+ extern fn LLVMSetWeak(CmpXchgInst: *const Value, IsWeak: Bool) void;
+
pub const setOrdering = LLVMSetOrdering;
extern fn LLVMSetOrdering(MemoryAccessInst: *const Value, Ordering: AtomicOrdering) void;
@@ -308,6 +311,7 @@ extern fn LLVMGetInlineAsm(
HasSideEffects: Bool,
IsAlignStack: Bool,
Dialect: InlineAsmDialect,
+ CanThrow: Bool,
) *const Value;
pub const functionType = LLVMFunctionType;
@@ -589,16 +593,15 @@ pub const Builder = opaque {
Name: [*:0]const u8,
) *const Value;
- pub const buildCmpXchg = ZigLLVMBuildCmpXchg;
- extern fn ZigLLVMBuildCmpXchg(
+ pub const buildAtomicCmpXchg = LLVMBuildAtomicCmpXchg;
+ extern fn LLVMBuildAtomicCmpXchg(
builder: *const Builder,
ptr: *const Value,
cmp: *const Value,
new_val: *const Value,
success_ordering: AtomicOrdering,
failure_ordering: AtomicOrdering,
- is_weak: bool,
- is_single_threaded: bool,
+ is_single_threaded: Bool,
) *const Value;
pub const buildSelect = LLVMBuildSelect;
@@ -842,6 +845,10 @@ pub extern fn LLVMInitializeSystemZTargetInfo() void;
pub extern fn LLVMInitializeWebAssemblyTargetInfo() void;
pub extern fn LLVMInitializeX86TargetInfo() void;
pub extern fn LLVMInitializeXCoreTargetInfo() void;
+pub extern fn LLVMInitializeM68kTargetInfo() void;
+pub extern fn LLVMInitializeCSKYTargetInfo() void;
+pub extern fn LLVMInitializeVETargetInfo() void;
+pub extern fn LLVMInitializeARCTargetInfo() void;
pub extern fn LLVMInitializeAArch64Target() void;
pub extern fn LLVMInitializeAMDGPUTarget() void;
@@ -860,6 +867,10 @@ pub extern fn LLVMInitializeSystemZTarget() void;
pub extern fn LLVMInitializeWebAssemblyTarget() void;
pub extern fn LLVMInitializeX86Target() void;
pub extern fn LLVMInitializeXCoreTarget() void;
+pub extern fn LLVMInitializeM68kTarget() void;
+pub extern fn LLVMInitializeVETarget() void;
+pub extern fn LLVMInitializeCSKYTarget() void;
+pub extern fn LLVMInitializeARCTarget() void;
pub extern fn LLVMInitializeAArch64TargetMC() void;
pub extern fn LLVMInitializeAMDGPUTargetMC() void;
@@ -878,6 +889,10 @@ pub extern fn LLVMInitializeSystemZTargetMC() void;
pub extern fn LLVMInitializeWebAssemblyTargetMC() void;
pub extern fn LLVMInitializeX86TargetMC() void;
pub extern fn LLVMInitializeXCoreTargetMC() void;
+pub extern fn LLVMInitializeM68kTargetMC() void;
+pub extern fn LLVMInitializeCSKYTargetMC() void;
+pub extern fn LLVMInitializeVETargetMC() void;
+pub extern fn LLVMInitializeARCTargetMC() void;
pub extern fn LLVMInitializeAArch64AsmPrinter() void;
pub extern fn LLVMInitializeAMDGPUAsmPrinter() void;
@@ -896,6 +911,9 @@ pub extern fn LLVMInitializeSystemZAsmPrinter() void;
pub extern fn LLVMInitializeWebAssemblyAsmPrinter() void;
pub extern fn LLVMInitializeX86AsmPrinter() void;
pub extern fn LLVMInitializeXCoreAsmPrinter() void;
+pub extern fn LLVMInitializeM68kAsmPrinter() void;
+pub extern fn LLVMInitializeVEAsmPrinter() void;
+pub extern fn LLVMInitializeARCAsmPrinter() void;
pub extern fn LLVMInitializeAArch64AsmParser() void;
pub extern fn LLVMInitializeAMDGPUAsmParser() void;
@@ -912,6 +930,9 @@ pub extern fn LLVMInitializeSparcAsmParser() void;
pub extern fn LLVMInitializeSystemZAsmParser() void;
pub extern fn LLVMInitializeWebAssemblyAsmParser() void;
pub extern fn LLVMInitializeX86AsmParser() void;
+pub extern fn LLVMInitializeM68kAsmParser() void;
+pub extern fn LLVMInitializeCSKYAsmParser() void;
+pub extern fn LLVMInitializeVEAsmParser() void;
extern fn ZigLLDLinkCOFF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool) c_int;
extern fn ZigLLDLinkELF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool) c_int;
@@ -991,6 +1012,7 @@ pub const ArchType = enum(c_int) {
bpfeb,
csky,
hexagon,
+ m68k,
mips,
mipsel,
mips64,
diff --git a/src/config.zig.in b/src/config.zig.in
index 1bd1b35505..62e8785ccb 100644
--- a/src/config.zig.in
+++ b/src/config.zig.in
@@ -1,4 +1,8 @@
pub const have_llvm = true;
+pub const llvm_has_m68k = false;
+pub const llvm_has_csky = false;
+pub const llvm_has_ve = false;
+pub const llvm_has_arc = false;
pub const version: [:0]const u8 = "@ZIG_VERSION@";
pub const semver = @import("std").SemanticVersion.parse(version) catch unreachable;
pub const enable_logging: bool = @ZIG_ENABLE_LOGGING_BOOL@;
diff --git a/src/libcxx.zig b/src/libcxx.zig
index 5ba6e47ece..2cff5d738a 100644
--- a/src/libcxx.zig
+++ b/src/libcxx.zig
@@ -45,6 +45,7 @@ const libcxx_files = [_][]const u8{
"src/filesystem/directory_iterator.cpp",
"src/filesystem/int128_builtins.cpp",
"src/filesystem/operations.cpp",
+ "src/format.cpp",
"src/functional.cpp",
"src/future.cpp",
"src/hash.cpp",
@@ -64,6 +65,7 @@ const libcxx_files = [_][]const u8{
"src/stdexcept.cpp",
"src/string.cpp",
"src/strstream.cpp",
+ "src/support/ibm/xlocale_zos.cpp",
"src/support/solaris/xlocale.cpp",
"src/support/win32/locale_win32.cpp",
"src/support/win32/support.cpp",
@@ -119,10 +121,12 @@ pub fn buildLibCXX(comp: *Compilation) !void {
continue;
}
- if (target.os.tag != .windows) {
- if (std.mem.startsWith(u8, cxx_src, "src/support/win32/"))
- continue;
- }
+ if (std.mem.startsWith(u8, cxx_src, "src/support/win32/") and target.os.tag != .windows)
+ continue;
+ if (std.mem.startsWith(u8, cxx_src, "src/support/solaris/") and target.os.tag != .solaris)
+ continue;
+ if (std.mem.startsWith(u8, cxx_src, "src/support/ibm/") and target.os.tag != .zos)
+ continue;
try cflags.append("-DNDEBUG");
try cflags.append("-D_LIBCPP_BUILDING_LIBRARY");
@@ -144,6 +148,12 @@ pub fn buildLibCXX(comp: *Compilation) !void {
try cflags.append("-fno-exceptions");
}
+ if (target.os.tag == .zos) {
+ try cflags.append("-fno-aligned-allocation");
+ } else {
+ try cflags.append("-faligned-allocation");
+ }
+
try cflags.append("-I");
try cflags.append(cxx_include_path);
@@ -154,7 +164,7 @@ pub fn buildLibCXX(comp: *Compilation) !void {
try cflags.append("-fPIC");
}
try cflags.append("-nostdinc++");
- try cflags.append("-std=c++14");
+ try cflags.append("-std=c++20");
try cflags.append("-Wno-user-defined-literals");
c_source_files.appendAssumeCapacity(.{
diff --git a/src/libtsan.zig b/src/libtsan.zig
index 2f288df9c2..57f1f8c78e 100644
--- a/src/libtsan.zig
+++ b/src/libtsan.zig
@@ -260,7 +260,6 @@ const tsan_sources = [_][]const u8{
"tsan_malloc_mac.cpp",
"tsan_md5.cpp",
"tsan_mman.cpp",
- "tsan_mutex.cpp",
"tsan_mutexset.cpp",
"tsan_preinit.cpp",
"tsan_report.cpp",
@@ -270,7 +269,6 @@ const tsan_sources = [_][]const u8{
"tsan_rtl_report.cpp",
"tsan_rtl_thread.cpp",
"tsan_stack_trace.cpp",
- "tsan_stat.cpp",
"tsan_suppressions.cpp",
"tsan_symbolize.cpp",
"tsan_sync.cpp",
@@ -295,14 +293,15 @@ const sanitizer_common_sources = [_][]const u8{
"sanitizer_deadlock_detector2.cpp",
"sanitizer_errno.cpp",
"sanitizer_file.cpp",
- "sanitizer_flags.cpp",
"sanitizer_flag_parser.cpp",
+ "sanitizer_flags.cpp",
"sanitizer_fuchsia.cpp",
"sanitizer_libc.cpp",
"sanitizer_libignore.cpp",
"sanitizer_linux.cpp",
"sanitizer_linux_s390.cpp",
"sanitizer_mac.cpp",
+ "sanitizer_mutex.cpp",
"sanitizer_netbsd.cpp",
"sanitizer_openbsd.cpp",
"sanitizer_persistent_allocator.cpp",
@@ -314,20 +313,19 @@ const sanitizer_common_sources = [_][]const u8{
"sanitizer_platform_limits_solaris.cpp",
"sanitizer_posix.cpp",
"sanitizer_printf.cpp",
- "sanitizer_procmaps_common.cpp",
"sanitizer_procmaps_bsd.cpp",
+ "sanitizer_procmaps_common.cpp",
"sanitizer_procmaps_fuchsia.cpp",
"sanitizer_procmaps_linux.cpp",
"sanitizer_procmaps_mac.cpp",
"sanitizer_procmaps_solaris.cpp",
- "sanitizer_rtems.cpp",
"sanitizer_solaris.cpp",
"sanitizer_stoptheworld_fuchsia.cpp",
"sanitizer_stoptheworld_mac.cpp",
"sanitizer_suppressions.cpp",
"sanitizer_termination.cpp",
- "sanitizer_tls_get_addr.cpp",
"sanitizer_thread_registry.cpp",
+ "sanitizer_tls_get_addr.cpp",
"sanitizer_type_traits.cpp",
"sanitizer_win.cpp",
};
diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp
index a0f130b79e..a3f87c9f5a 100644
--- a/src/stage1/codegen.cpp
+++ b/src/stage1/codegen.cpp
@@ -3869,14 +3869,10 @@ static LLVMValueRef ir_render_load_ptr(CodeGen *g, Stage1Air *executable,
LLVMValueRef shift_amt_val = LLVMConstInt(LLVMTypeOf(containing_int), shift_amt, false);
LLVMValueRef shifted_value = LLVMBuildLShr(g->builder, containing_int, shift_amt_val, "");
- LLVMTypeRef same_size_int = LLVMIntType(size_in_bits);
- LLVMValueRef mask = LLVMConstAllOnes(LLVMIntType(size_in_bits));
- mask = LLVMConstZExt(mask, LLVMTypeOf(containing_int));
- LLVMValueRef masked_value = LLVMBuildAnd(g->builder, shifted_value, mask, "");
-
if (handle_is_ptr(g, child_type)) {
LLVMValueRef result_loc = ir_llvm_value(g, instruction->result_loc);
- LLVMValueRef truncated_int = LLVMBuildTrunc(g->builder, masked_value, same_size_int, "");
+ LLVMTypeRef same_size_int = LLVMIntType(size_in_bits);
+ LLVMValueRef truncated_int = LLVMBuildTrunc(g->builder, shifted_value, same_size_int, "");
LLVMValueRef bitcasted_ptr = LLVMBuildBitCast(g->builder, result_loc,
LLVMPointerType(same_size_int, 0), "");
LLVMBuildStore(g->builder, truncated_int, bitcasted_ptr);
@@ -3884,11 +3880,12 @@ static LLVMValueRef ir_render_load_ptr(CodeGen *g, Stage1Air *executable,
}
if (child_type->id == ZigTypeIdFloat) {
- LLVMValueRef truncated_int = LLVMBuildTrunc(g->builder, masked_value, same_size_int, "");
+ LLVMTypeRef same_size_int = LLVMIntType(size_in_bits);
+ LLVMValueRef truncated_int = LLVMBuildTrunc(g->builder, shifted_value, same_size_int, "");
return LLVMBuildBitCast(g->builder, truncated_int, get_llvm_type(g, child_type), "");
}
- return LLVMBuildTrunc(g->builder, masked_value, get_llvm_type(g, child_type), "");
+ return LLVMBuildTrunc(g->builder, shifted_value, get_llvm_type(g, child_type), "");
}
static bool value_is_all_undef_array(CodeGen *g, ZigValue *const_val, size_t len) {
@@ -3994,7 +3991,7 @@ static LLVMValueRef gen_valgrind_client_request(CodeGen *g, LLVMValueRef default
input_and_output_count, false);
LLVMValueRef asm_fn = LLVMGetInlineAsm(function_type, buf_ptr(asm_template), buf_len(asm_template),
buf_ptr(asm_constraints), buf_len(asm_constraints), asm_has_side_effects, asm_is_alignstack,
- LLVMInlineAsmDialectATT);
+ LLVMInlineAsmDialectATT, false);
return LLVMBuildCall(g->builder, asm_fn, param_values, input_and_output_count, "");
}
}
@@ -5105,7 +5102,7 @@ static LLVMValueRef ir_render_asm_gen(CodeGen *g, Stage1Air *executable, Stage1A
bool is_volatile = instruction->has_side_effects || (asm_expr->output_list.length == 0);
LLVMValueRef asm_fn = LLVMGetInlineAsm(function_type, buf_ptr(&llvm_template), buf_len(&llvm_template),
- buf_ptr(&constraint_buf), buf_len(&constraint_buf), is_volatile, false, LLVMInlineAsmDialectATT);
+ buf_ptr(&constraint_buf), buf_len(&constraint_buf), is_volatile, false, LLVMInlineAsmDialectATT, false);
LLVMValueRef built_call = LLVMBuildCall(g->builder, asm_fn, param_values, (unsigned)input_and_output_count, "");
heap::c_allocator.deallocate(param_values, input_and_output_count);
@@ -5647,21 +5644,21 @@ static LLVMAtomicOrdering to_LLVMAtomicOrdering(AtomicOrder atomic_order) {
zig_unreachable();
}
-static enum ZigLLVM_AtomicRMWBinOp to_ZigLLVMAtomicRMWBinOp(AtomicRmwOp op, bool is_signed, bool is_float) {
+static LLVMAtomicRMWBinOp to_LLVMAtomicRMWBinOp(AtomicRmwOp op, bool is_signed, bool is_float) {
switch (op) {
- case AtomicRmwOp_xchg: return ZigLLVMAtomicRMWBinOpXchg;
+ case AtomicRmwOp_xchg: return LLVMAtomicRMWBinOpXchg;
case AtomicRmwOp_add:
- return is_float ? ZigLLVMAtomicRMWBinOpFAdd : ZigLLVMAtomicRMWBinOpAdd;
+ return is_float ? LLVMAtomicRMWBinOpFAdd : LLVMAtomicRMWBinOpAdd;
case AtomicRmwOp_sub:
- return is_float ? ZigLLVMAtomicRMWBinOpFSub : ZigLLVMAtomicRMWBinOpSub;
- case AtomicRmwOp_and: return ZigLLVMAtomicRMWBinOpAnd;
- case AtomicRmwOp_nand: return ZigLLVMAtomicRMWBinOpNand;
- case AtomicRmwOp_or: return ZigLLVMAtomicRMWBinOpOr;
- case AtomicRmwOp_xor: return ZigLLVMAtomicRMWBinOpXor;
+ return is_float ? LLVMAtomicRMWBinOpFSub : LLVMAtomicRMWBinOpSub;
+ case AtomicRmwOp_and: return LLVMAtomicRMWBinOpAnd;
+ case AtomicRmwOp_nand: return LLVMAtomicRMWBinOpNand;
+ case AtomicRmwOp_or: return LLVMAtomicRMWBinOpOr;
+ case AtomicRmwOp_xor: return LLVMAtomicRMWBinOpXor;
case AtomicRmwOp_max:
- return is_signed ? ZigLLVMAtomicRMWBinOpMax : ZigLLVMAtomicRMWBinOpUMax;
+ return is_signed ? LLVMAtomicRMWBinOpMax : LLVMAtomicRMWBinOpUMax;
case AtomicRmwOp_min:
- return is_signed ? ZigLLVMAtomicRMWBinOpMin : ZigLLVMAtomicRMWBinOpUMin;
+ return is_signed ? LLVMAtomicRMWBinOpMin : LLVMAtomicRMWBinOpUMin;
}
zig_unreachable();
}
@@ -5720,8 +5717,9 @@ static LLVMValueRef ir_render_cmpxchg(CodeGen *g, Stage1Air *executable, Stage1A
LLVMAtomicOrdering success_order = to_LLVMAtomicOrdering(instruction->success_order);
LLVMAtomicOrdering failure_order = to_LLVMAtomicOrdering(instruction->failure_order);
- LLVMValueRef result_val = ZigLLVMBuildCmpXchg(g->builder, ptr_val, cmp_val, new_val,
- success_order, failure_order, instruction->is_weak, g->is_single_threaded);
+ LLVMValueRef result_val = LLVMBuildAtomicCmpXchg(g->builder, ptr_val, cmp_val, new_val,
+ success_order, failure_order, g->is_single_threaded);
+ LLVMSetWeak(result_val, instruction->is_weak);
ZigType *optional_type = instruction->base.value->type;
assert(optional_type->id == ZigTypeIdOptional);
@@ -6487,13 +6485,13 @@ static LLVMValueRef ir_render_atomic_rmw(CodeGen *g, Stage1Air *executable,
} else {
is_signed = false;
}
- enum ZigLLVM_AtomicRMWBinOp op = to_ZigLLVMAtomicRMWBinOp(instruction->op, is_signed, is_float);
+ LLVMAtomicRMWBinOp op = to_LLVMAtomicRMWBinOp(instruction->op, is_signed, is_float);
LLVMAtomicOrdering ordering = to_LLVMAtomicOrdering(instruction->ordering);
LLVMValueRef ptr = ir_llvm_value(g, instruction->ptr);
LLVMValueRef operand = ir_llvm_value(g, instruction->operand);
LLVMTypeRef actual_abi_type = get_atomic_abi_type(g, instruction->ptr,
- op == ZigLLVMAtomicRMWBinOpXchg);
+ op == LLVMAtomicRMWBinOpXchg);
if (actual_abi_type != nullptr) {
// operand needs widening and truncating or bitcasting.
LLVMValueRef casted_ptr = LLVMBuildBitCast(g->builder, ptr,
@@ -6506,7 +6504,7 @@ static LLVMValueRef ir_render_atomic_rmw(CodeGen *g, Stage1Air *executable,
} else {
casted_operand = LLVMBuildZExt(g->builder, operand, actual_abi_type, "");
}
- LLVMValueRef uncasted_result = ZigLLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
+ LLVMValueRef uncasted_result = LLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
g->is_single_threaded);
if (is_float) {
return LLVMBuildBitCast(g->builder, uncasted_result, get_llvm_type(g, operand_type), "");
@@ -6516,14 +6514,14 @@ static LLVMValueRef ir_render_atomic_rmw(CodeGen *g, Stage1Air *executable,
}
if (get_codegen_ptr_type_bail(g, operand_type) == nullptr) {
- return ZigLLVMBuildAtomicRMW(g->builder, op, ptr, operand, ordering, g->is_single_threaded);
+ return LLVMBuildAtomicRMW(g->builder, op, ptr, operand, ordering, g->is_single_threaded);
}
// it's a pointer but we need to treat it as an int
LLVMValueRef casted_ptr = LLVMBuildBitCast(g->builder, ptr,
LLVMPointerType(g->builtin_types.entry_usize->llvm_type, 0), "");
LLVMValueRef casted_operand = LLVMBuildPtrToInt(g->builder, operand, g->builtin_types.entry_usize->llvm_type, "");
- LLVMValueRef uncasted_result = ZigLLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
+ LLVMValueRef uncasted_result = LLVMBuildAtomicRMW(g->builder, op, casted_ptr, casted_operand, ordering,
g->is_single_threaded);
return LLVMBuildIntToPtr(g->builder, uncasted_result, get_llvm_type(g, operand_type), "");
}
diff --git a/src/stage1/target.cpp b/src/stage1/target.cpp
index 4da19e4c36..eca468e5c0 100644
--- a/src/stage1/target.cpp
+++ b/src/stage1/target.cpp
@@ -25,6 +25,7 @@ static const ZigLLVM_ArchType arch_list[] = {
ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
ZigLLVM_csky, // CSKY: csky
ZigLLVM_hexagon, // Hexagon: hexagon
+ ZigLLVM_m68k, // M68k: Motorola 680x0 family
ZigLLVM_mips, // MIPS: mips, mipsallegrex, mipsr6
ZigLLVM_mipsel, // MIPSEL: mipsel, mipsallegrexe, mipsr6el
ZigLLVM_mips64, // MIPS64: mips64, mips64r6, mipsn32, mipsn32r6
@@ -147,6 +148,7 @@ static const ZigLLVM_EnvironmentType abi_list[] = {
ZigLLVM_Musl,
ZigLLVM_MuslEABI,
ZigLLVM_MuslEABIHF,
+ ZigLLVM_MuslX32,
ZigLLVM_MSVC,
ZigLLVM_Itanium,
@@ -500,6 +502,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
case ZigLLVM_arm:
case ZigLLVM_armeb:
case ZigLLVM_hexagon:
+ case ZigLLVM_m68k:
case ZigLLVM_le32:
case ZigLLVM_mips:
case ZigLLVM_mipsel:
@@ -567,6 +570,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {
case ZigLLVM_arm:
case ZigLLVM_armeb:
case ZigLLVM_hexagon:
+ case ZigLLVM_m68k:
case ZigLLVM_le32:
case ZigLLVM_mips:
case ZigLLVM_mipsel:
@@ -801,6 +805,8 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
case ZigLLVM_aarch64_32:
case ZigLLVM_riscv32:
case ZigLLVM_riscv64:
+ case ZigLLVM_m68k:
+ case ZigLLVM_mips:
case ZigLLVM_mipsel:
case ZigLLVM_ppc:
case ZigLLVM_ppcle:
@@ -827,7 +833,6 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
case ZigLLVM_kalimba:
case ZigLLVM_le32:
case ZigLLVM_le64:
- case ZigLLVM_mips:
case ZigLLVM_mips64:
case ZigLLVM_mips64el:
case ZigLLVM_msp430:
@@ -876,6 +881,7 @@ bool target_is_arm(const ZigTarget *target) {
case ZigLLVM_bpfel:
case ZigLLVM_csky:
case ZigLLVM_hexagon:
+ case ZigLLVM_m68k:
case ZigLLVM_lanai:
case ZigLLVM_hsail:
case ZigLLVM_hsail64:
diff --git a/src/target.zig b/src/target.zig
index 621335209c..6b6ed2fbc5 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -34,6 +34,8 @@ pub const available_libcs = [_]ArchOsAbi{
.{ .arch = .i386, .os = .linux, .abi = .gnu },
.{ .arch = .i386, .os = .linux, .abi = .musl },
.{ .arch = .i386, .os = .windows, .abi = .gnu },
+ .{ .arch = .m68k, .os = .linux, .abi = .gnu },
+ .{ .arch = .m68k, .os = .linux, .abi = .musl },
.{ .arch = .mips64el, .os = .linux, .abi = .gnuabi64 },
.{ .arch = .mips64el, .os = .linux, .abi = .gnuabin32 },
.{ .arch = .mips64el, .os = .linux, .abi = .musl },
@@ -83,6 +85,7 @@ pub fn libCGenericName(target: std.Target) [:0]const u8 {
.musl,
.musleabi,
.musleabihf,
+ .muslx32,
.none,
=> return "musl",
.code16,
@@ -186,6 +189,7 @@ pub fn hasLlvmSupport(target: std.Target) bool {
.bpfeb,
.csky,
.hexagon,
+ .m68k,
.mips,
.mipsel,
.mips64,
@@ -295,6 +299,7 @@ pub fn archToLLVM(arch_tag: std.Target.Cpu.Arch) llvm.ArchType {
.bpfeb => .bpfeb,
.csky => .csky,
.hexagon => .hexagon,
+ .m68k => .m68k,
.mips => .mips,
.mipsel => .mipsel,
.mips64 => .mips64,
@@ -496,6 +501,7 @@ pub fn largestAtomicBits(target: std.Target) u32 {
.arm,
.armeb,
.hexagon,
+ .m68k,
.le32,
.mips,
.mipsel,
diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp
index 685ee8bcce..f5b04ddd9d 100644
--- a/src/zig_clang.cpp
+++ b/src/zig_clang.cpp
@@ -164,6 +164,10 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
case clang::CK_DerivedToBase:
case clang::CK_DerivedToBaseMemberPointer:
case clang::CK_Dynamic:
+ case clang::CK_FixedPointCast:
+ case clang::CK_FixedPointToBoolean:
+ case clang::CK_FixedPointToFloating:
+ case clang::CK_FixedPointToIntegral:
case clang::CK_FloatingCast:
case clang::CK_FloatingComplexCast:
case clang::CK_FloatingComplexToBoolean:
@@ -171,6 +175,7 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
case clang::CK_FloatingComplexToReal:
case clang::CK_FloatingRealToComplex:
case clang::CK_FloatingToBoolean:
+ case clang::CK_FloatingToFixedPoint:
case clang::CK_FloatingToIntegral:
case clang::CK_FunctionToPointerDecay:
case clang::CK_IntToOCLSampler:
@@ -181,13 +186,13 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
case clang::CK_IntegralComplexToReal:
case clang::CK_IntegralRealToComplex:
case clang::CK_IntegralToBoolean:
+ case clang::CK_IntegralToFixedPoint:
case clang::CK_IntegralToFloating:
case clang::CK_IntegralToPointer:
- case clang::CK_FloatingToFixedPoint:
- case clang::CK_FixedPointToFloating:
case clang::CK_LValueBitCast:
- case clang::CK_LValueToRValueBitCast:
case clang::CK_LValueToRValue:
+ case clang::CK_LValueToRValueBitCast:
+ case clang::CK_MatrixCast:
case clang::CK_MemberPointerToBoolean:
case clang::CK_NoOp:
case clang::CK_NonAtomicToAtomic:
@@ -203,10 +208,6 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
case clang::CK_UserDefinedConversion:
case clang::CK_VectorSplat:
case clang::CK_ZeroToOCLOpaqueType:
- case clang::CK_FixedPointCast:
- case clang::CK_FixedPointToIntegral:
- case clang::CK_IntegralToFixedPoint:
- case clang::CK_FixedPointToBoolean:
break;
}
};
@@ -236,6 +237,7 @@ static_assert((clang::CastKind)ZigClangCK_IntegralToPointer == clang::CK_Integra
static_assert((clang::CastKind)ZigClangCK_PointerToIntegral == clang::CK_PointerToIntegral, "");
static_assert((clang::CastKind)ZigClangCK_PointerToBoolean == clang::CK_PointerToBoolean, "");
static_assert((clang::CastKind)ZigClangCK_ToVoid == clang::CK_ToVoid, "");
+static_assert((clang::CastKind)ZigClangCK_MatrixCast == clang::CK_MatrixCast, "");
static_assert((clang::CastKind)ZigClangCK_VectorSplat == clang::CK_VectorSplat, "");
static_assert((clang::CastKind)ZigClangCK_IntegralCast == clang::CK_IntegralCast, "");
static_assert((clang::CastKind)ZigClangCK_IntegralToBoolean == clang::CK_IntegralToBoolean, "");
@@ -390,221 +392,228 @@ static_assert((clang::Type::TypeClass)ZigClangType_ExtVector == clang::Type::Ext
// Detect additions to the enum
void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
- switch (static_cast<ZigClangStmtClass>(x)) {
- case ZigClangStmt_NoStmtClass:
- case ZigClangStmt_GCCAsmStmtClass:
- case ZigClangStmt_MSAsmStmtClass:
- case ZigClangStmt_BreakStmtClass:
- case ZigClangStmt_CXXCatchStmtClass:
- case ZigClangStmt_CXXForRangeStmtClass:
- case ZigClangStmt_CXXTryStmtClass:
- case ZigClangStmt_CapturedStmtClass:
- case ZigClangStmt_CompoundStmtClass:
- case ZigClangStmt_ContinueStmtClass:
- case ZigClangStmt_CoreturnStmtClass:
- case ZigClangStmt_CoroutineBodyStmtClass:
- case ZigClangStmt_DeclStmtClass:
- case ZigClangStmt_DoStmtClass:
- case ZigClangStmt_ForStmtClass:
- case ZigClangStmt_GotoStmtClass:
- case ZigClangStmt_IfStmtClass:
- case ZigClangStmt_IndirectGotoStmtClass:
- case ZigClangStmt_MSDependentExistsStmtClass:
- case ZigClangStmt_NullStmtClass:
- case ZigClangStmt_OMPAtomicDirectiveClass:
- case ZigClangStmt_OMPBarrierDirectiveClass:
- case ZigClangStmt_OMPCancelDirectiveClass:
- case ZigClangStmt_OMPCancellationPointDirectiveClass:
- case ZigClangStmt_OMPCriticalDirectiveClass:
- case ZigClangStmt_OMPDepobjDirectiveClass:
- case ZigClangStmt_OMPFlushDirectiveClass:
- case ZigClangStmt_OMPDistributeDirectiveClass:
- case ZigClangStmt_OMPDistributeParallelForDirectiveClass:
- case ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass:
- case ZigClangStmt_OMPDistributeSimdDirectiveClass:
- case ZigClangStmt_OMPForDirectiveClass:
- case ZigClangStmt_OMPForSimdDirectiveClass:
- case ZigClangStmt_OMPMasterTaskLoopDirectiveClass:
- case ZigClangStmt_OMPMasterTaskLoopSimdDirectiveClass:
- case ZigClangStmt_OMPParallelForDirectiveClass:
- case ZigClangStmt_OMPParallelForSimdDirectiveClass:
- case ZigClangStmt_OMPParallelMasterTaskLoopDirectiveClass:
- case ZigClangStmt_OMPParallelMasterTaskLoopSimdDirectiveClass:
- case ZigClangStmt_OMPSimdDirectiveClass:
- case ZigClangStmt_OMPTargetParallelForSimdDirectiveClass:
- case ZigClangStmt_OMPTargetSimdDirectiveClass:
- case ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass:
- case ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass:
- case ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
- case ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass:
- case ZigClangStmt_OMPTaskLoopDirectiveClass:
- case ZigClangStmt_OMPTaskLoopSimdDirectiveClass:
- case ZigClangStmt_OMPTeamsDistributeDirectiveClass:
- case ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass:
- case ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass:
- case ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass:
- case ZigClangStmt_OMPMasterDirectiveClass:
- case ZigClangStmt_OMPOrderedDirectiveClass:
- case ZigClangStmt_OMPParallelDirectiveClass:
- case ZigClangStmt_OMPParallelMasterDirectiveClass:
- case ZigClangStmt_OMPParallelSectionsDirectiveClass:
- case ZigClangStmt_OMPScanDirectiveClass:
- case ZigClangStmt_OMPSectionDirectiveClass:
- case ZigClangStmt_OMPSectionsDirectiveClass:
- case ZigClangStmt_OMPSingleDirectiveClass:
- case ZigClangStmt_OMPTargetDataDirectiveClass:
- case ZigClangStmt_OMPTargetDirectiveClass:
- case ZigClangStmt_OMPTargetEnterDataDirectiveClass:
- case ZigClangStmt_OMPTargetExitDataDirectiveClass:
- case ZigClangStmt_OMPTargetParallelDirectiveClass:
- case ZigClangStmt_OMPTargetParallelForDirectiveClass:
- case ZigClangStmt_OMPTargetTeamsDirectiveClass:
- case ZigClangStmt_OMPTargetUpdateDirectiveClass:
- case ZigClangStmt_OMPTaskDirectiveClass:
- case ZigClangStmt_OMPTaskgroupDirectiveClass:
- case ZigClangStmt_OMPTaskwaitDirectiveClass:
- case ZigClangStmt_OMPTaskyieldDirectiveClass:
- case ZigClangStmt_OMPTeamsDirectiveClass:
- case ZigClangStmt_ObjCAtCatchStmtClass:
- case ZigClangStmt_ObjCAtFinallyStmtClass:
- case ZigClangStmt_ObjCAtSynchronizedStmtClass:
- case ZigClangStmt_ObjCAtThrowStmtClass:
- case ZigClangStmt_ObjCAtTryStmtClass:
- case ZigClangStmt_ObjCAutoreleasePoolStmtClass:
- case ZigClangStmt_ObjCForCollectionStmtClass:
- case ZigClangStmt_ReturnStmtClass:
- case ZigClangStmt_SEHExceptStmtClass:
- case ZigClangStmt_SEHFinallyStmtClass:
- case ZigClangStmt_SEHLeaveStmtClass:
- case ZigClangStmt_SEHTryStmtClass:
- case ZigClangStmt_CaseStmtClass:
- case ZigClangStmt_DefaultStmtClass:
- case ZigClangStmt_SwitchStmtClass:
- case ZigClangStmt_AttributedStmtClass:
- case ZigClangStmt_BinaryConditionalOperatorClass:
- case ZigClangStmt_ConditionalOperatorClass:
- case ZigClangStmt_AddrLabelExprClass:
- case ZigClangStmt_ArrayInitIndexExprClass:
- case ZigClangStmt_ArrayInitLoopExprClass:
- case ZigClangStmt_ArraySubscriptExprClass:
- case ZigClangStmt_ArrayTypeTraitExprClass:
- case ZigClangStmt_AsTypeExprClass:
- case ZigClangStmt_AtomicExprClass:
- case ZigClangStmt_BinaryOperatorClass:
- case ZigClangStmt_CompoundAssignOperatorClass:
- case ZigClangStmt_BlockExprClass:
- case ZigClangStmt_CXXBindTemporaryExprClass:
- case ZigClangStmt_CXXBoolLiteralExprClass:
- case ZigClangStmt_CXXConstructExprClass:
- case ZigClangStmt_CXXTemporaryObjectExprClass:
- case ZigClangStmt_CXXDefaultArgExprClass:
- case ZigClangStmt_CXXDefaultInitExprClass:
- case ZigClangStmt_CXXDeleteExprClass:
- case ZigClangStmt_CXXDependentScopeMemberExprClass:
- case ZigClangStmt_CXXFoldExprClass:
- case ZigClangStmt_CXXInheritedCtorInitExprClass:
- case ZigClangStmt_CXXNewExprClass:
- case ZigClangStmt_CXXNoexceptExprClass:
- case ZigClangStmt_CXXNullPtrLiteralExprClass:
- case ZigClangStmt_CXXPseudoDestructorExprClass:
- case ZigClangStmt_CXXRewrittenBinaryOperatorClass:
- case ZigClangStmt_CXXScalarValueInitExprClass:
- case ZigClangStmt_CXXStdInitializerListExprClass:
- case ZigClangStmt_CXXThisExprClass:
- case ZigClangStmt_CXXThrowExprClass:
- case ZigClangStmt_CXXTypeidExprClass:
- case ZigClangStmt_CXXUnresolvedConstructExprClass:
- case ZigClangStmt_CXXUuidofExprClass:
- case ZigClangStmt_CallExprClass:
- case ZigClangStmt_CUDAKernelCallExprClass:
- case ZigClangStmt_CXXMemberCallExprClass:
- case ZigClangStmt_CXXOperatorCallExprClass:
- case ZigClangStmt_UserDefinedLiteralClass:
- case ZigClangStmt_BuiltinBitCastExprClass:
- case ZigClangStmt_CStyleCastExprClass:
- case ZigClangStmt_CXXFunctionalCastExprClass:
- case ZigClangStmt_CXXAddrspaceCastExprClass:
- case ZigClangStmt_CXXConstCastExprClass:
- case ZigClangStmt_CXXDynamicCastExprClass:
- case ZigClangStmt_CXXReinterpretCastExprClass:
- case ZigClangStmt_CXXStaticCastExprClass:
- case ZigClangStmt_ObjCBridgedCastExprClass:
- case ZigClangStmt_ImplicitCastExprClass:
- case ZigClangStmt_CharacterLiteralClass:
- case ZigClangStmt_ChooseExprClass:
- case ZigClangStmt_CompoundLiteralExprClass:
- case ZigClangStmt_ConceptSpecializationExprClass:
- case ZigClangStmt_ConvertVectorExprClass:
- case ZigClangStmt_CoawaitExprClass:
- case ZigClangStmt_CoyieldExprClass:
- case ZigClangStmt_DeclRefExprClass:
- case ZigClangStmt_DependentCoawaitExprClass:
- case ZigClangStmt_DependentScopeDeclRefExprClass:
- case ZigClangStmt_DesignatedInitExprClass:
- case ZigClangStmt_DesignatedInitUpdateExprClass:
- case ZigClangStmt_ExpressionTraitExprClass:
- case ZigClangStmt_ExtVectorElementExprClass:
- case ZigClangStmt_FixedPointLiteralClass:
- case ZigClangStmt_FloatingLiteralClass:
- case ZigClangStmt_ConstantExprClass:
- case ZigClangStmt_ExprWithCleanupsClass:
- case ZigClangStmt_FunctionParmPackExprClass:
- case ZigClangStmt_GNUNullExprClass:
- case ZigClangStmt_GenericSelectionExprClass:
- case ZigClangStmt_ImaginaryLiteralClass:
- case ZigClangStmt_ImplicitValueInitExprClass:
- case ZigClangStmt_InitListExprClass:
- case ZigClangStmt_IntegerLiteralClass:
- case ZigClangStmt_LambdaExprClass:
- 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:
- case ZigClangStmt_ObjCBoxedExprClass:
- case ZigClangStmt_ObjCDictionaryLiteralClass:
- case ZigClangStmt_ObjCEncodeExprClass:
- case ZigClangStmt_ObjCIndirectCopyRestoreExprClass:
- case ZigClangStmt_ObjCIsaExprClass:
- case ZigClangStmt_ObjCIvarRefExprClass:
- case ZigClangStmt_ObjCMessageExprClass:
- case ZigClangStmt_ObjCPropertyRefExprClass:
- case ZigClangStmt_ObjCProtocolExprClass:
- case ZigClangStmt_ObjCSelectorExprClass:
- case ZigClangStmt_ObjCStringLiteralClass:
- case ZigClangStmt_ObjCSubscriptRefExprClass:
- case ZigClangStmt_OffsetOfExprClass:
- case ZigClangStmt_OpaqueValueExprClass:
- case ZigClangStmt_UnresolvedLookupExprClass:
- case ZigClangStmt_UnresolvedMemberExprClass:
- case ZigClangStmt_PackExpansionExprClass:
- case ZigClangStmt_ParenExprClass:
- case ZigClangStmt_ParenListExprClass:
- case ZigClangStmt_PredefinedExprClass:
- case ZigClangStmt_PseudoObjectExprClass:
- case ZigClangStmt_RecoveryExprClass:
- case ZigClangStmt_RequiresExprClass:
- case ZigClangStmt_ShuffleVectorExprClass:
- case ZigClangStmt_SizeOfPackExprClass:
- case ZigClangStmt_SourceLocExprClass:
- case ZigClangStmt_StmtExprClass:
- case ZigClangStmt_StringLiteralClass:
- case ZigClangStmt_SubstNonTypeTemplateParmExprClass:
- case ZigClangStmt_SubstNonTypeTemplateParmPackExprClass:
- case ZigClangStmt_TypeTraitExprClass:
- case ZigClangStmt_TypoExprClass:
- case ZigClangStmt_UnaryExprOrTypeTraitExprClass:
- case ZigClangStmt_UnaryOperatorClass:
- case ZigClangStmt_VAArgExprClass:
- case ZigClangStmt_LabelStmtClass:
- case ZigClangStmt_WhileStmtClass:
+ switch (x) {
+ case clang::Stmt::NoStmtClass:
+ case clang::Stmt::GCCAsmStmtClass:
+ case clang::Stmt::MSAsmStmtClass:
+ case clang::Stmt::BreakStmtClass:
+ case clang::Stmt::CXXCatchStmtClass:
+ case clang::Stmt::CXXForRangeStmtClass:
+ case clang::Stmt::CXXTryStmtClass:
+ case clang::Stmt::CapturedStmtClass:
+ case clang::Stmt::CompoundStmtClass:
+ case clang::Stmt::ContinueStmtClass:
+ case clang::Stmt::CoreturnStmtClass:
+ case clang::Stmt::CoroutineBodyStmtClass:
+ case clang::Stmt::DeclStmtClass:
+ case clang::Stmt::DoStmtClass:
+ case clang::Stmt::ForStmtClass:
+ case clang::Stmt::GotoStmtClass:
+ case clang::Stmt::IfStmtClass:
+ case clang::Stmt::IndirectGotoStmtClass:
+ case clang::Stmt::MSDependentExistsStmtClass:
+ case clang::Stmt::NullStmtClass:
+ case clang::Stmt::OMPCanonicalLoopClass:
+ case clang::Stmt::OMPAtomicDirectiveClass:
+ case clang::Stmt::OMPBarrierDirectiveClass:
+ case clang::Stmt::OMPCancelDirectiveClass:
+ case clang::Stmt::OMPCancellationPointDirectiveClass:
+ case clang::Stmt::OMPCriticalDirectiveClass:
+ case clang::Stmt::OMPDepobjDirectiveClass:
+ case clang::Stmt::OMPDispatchDirectiveClass:
+ case clang::Stmt::OMPFlushDirectiveClass:
+ case clang::Stmt::OMPInteropDirectiveClass:
+ case clang::Stmt::OMPDistributeDirectiveClass:
+ case clang::Stmt::OMPDistributeParallelForDirectiveClass:
+ case clang::Stmt::OMPDistributeParallelForSimdDirectiveClass:
+ case clang::Stmt::OMPDistributeSimdDirectiveClass:
+ case clang::Stmt::OMPForDirectiveClass:
+ case clang::Stmt::OMPForSimdDirectiveClass:
+ case clang::Stmt::OMPMasterTaskLoopDirectiveClass:
+ case clang::Stmt::OMPMasterTaskLoopSimdDirectiveClass:
+ case clang::Stmt::OMPParallelForDirectiveClass:
+ case clang::Stmt::OMPParallelForSimdDirectiveClass:
+ case clang::Stmt::OMPParallelMasterTaskLoopDirectiveClass:
+ case clang::Stmt::OMPParallelMasterTaskLoopSimdDirectiveClass:
+ case clang::Stmt::OMPSimdDirectiveClass:
+ case clang::Stmt::OMPTargetParallelForSimdDirectiveClass:
+ case clang::Stmt::OMPTargetSimdDirectiveClass:
+ case clang::Stmt::OMPTargetTeamsDistributeDirectiveClass:
+ case clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
+ case clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
+ case clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
+ case clang::Stmt::OMPTaskLoopDirectiveClass:
+ case clang::Stmt::OMPTaskLoopSimdDirectiveClass:
+ case clang::Stmt::OMPTeamsDistributeDirectiveClass:
+ case clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass:
+ case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
+ case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass:
+ case clang::Stmt::OMPTileDirectiveClass:
+ case clang::Stmt::OMPUnrollDirectiveClass:
+ case clang::Stmt::OMPMaskedDirectiveClass:
+ case clang::Stmt::OMPMasterDirectiveClass:
+ case clang::Stmt::OMPOrderedDirectiveClass:
+ case clang::Stmt::OMPParallelDirectiveClass:
+ case clang::Stmt::OMPParallelMasterDirectiveClass:
+ case clang::Stmt::OMPParallelSectionsDirectiveClass:
+ case clang::Stmt::OMPScanDirectiveClass:
+ case clang::Stmt::OMPSectionDirectiveClass:
+ case clang::Stmt::OMPSectionsDirectiveClass:
+ case clang::Stmt::OMPSingleDirectiveClass:
+ case clang::Stmt::OMPTargetDataDirectiveClass:
+ case clang::Stmt::OMPTargetDirectiveClass:
+ case clang::Stmt::OMPTargetEnterDataDirectiveClass:
+ case clang::Stmt::OMPTargetExitDataDirectiveClass:
+ case clang::Stmt::OMPTargetParallelDirectiveClass:
+ case clang::Stmt::OMPTargetParallelForDirectiveClass:
+ case clang::Stmt::OMPTargetTeamsDirectiveClass:
+ case clang::Stmt::OMPTargetUpdateDirectiveClass:
+ case clang::Stmt::OMPTaskDirectiveClass:
+ case clang::Stmt::OMPTaskgroupDirectiveClass:
+ case clang::Stmt::OMPTaskwaitDirectiveClass:
+ case clang::Stmt::OMPTaskyieldDirectiveClass:
+ case clang::Stmt::OMPTeamsDirectiveClass:
+ case clang::Stmt::ObjCAtCatchStmtClass:
+ case clang::Stmt::ObjCAtFinallyStmtClass:
+ case clang::Stmt::ObjCAtSynchronizedStmtClass:
+ case clang::Stmt::ObjCAtThrowStmtClass:
+ case clang::Stmt::ObjCAtTryStmtClass:
+ case clang::Stmt::ObjCAutoreleasePoolStmtClass:
+ case clang::Stmt::ObjCForCollectionStmtClass:
+ case clang::Stmt::ReturnStmtClass:
+ case clang::Stmt::SEHExceptStmtClass:
+ case clang::Stmt::SEHFinallyStmtClass:
+ case clang::Stmt::SEHLeaveStmtClass:
+ case clang::Stmt::SEHTryStmtClass:
+ case clang::Stmt::CaseStmtClass:
+ case clang::Stmt::DefaultStmtClass:
+ case clang::Stmt::SwitchStmtClass:
+ case clang::Stmt::AttributedStmtClass:
+ case clang::Stmt::BinaryConditionalOperatorClass:
+ case clang::Stmt::ConditionalOperatorClass:
+ case clang::Stmt::AddrLabelExprClass:
+ case clang::Stmt::ArrayInitIndexExprClass:
+ case clang::Stmt::ArrayInitLoopExprClass:
+ case clang::Stmt::ArraySubscriptExprClass:
+ case clang::Stmt::ArrayTypeTraitExprClass:
+ case clang::Stmt::AsTypeExprClass:
+ case clang::Stmt::AtomicExprClass:
+ case clang::Stmt::BinaryOperatorClass:
+ case clang::Stmt::CompoundAssignOperatorClass:
+ case clang::Stmt::BlockExprClass:
+ case clang::Stmt::CXXBindTemporaryExprClass:
+ case clang::Stmt::CXXBoolLiteralExprClass:
+ case clang::Stmt::CXXConstructExprClass:
+ case clang::Stmt::CXXTemporaryObjectExprClass:
+ case clang::Stmt::CXXDefaultArgExprClass:
+ case clang::Stmt::CXXDefaultInitExprClass:
+ case clang::Stmt::CXXDeleteExprClass:
+ case clang::Stmt::CXXDependentScopeMemberExprClass:
+ case clang::Stmt::CXXFoldExprClass:
+ case clang::Stmt::CXXInheritedCtorInitExprClass:
+ case clang::Stmt::CXXNewExprClass:
+ case clang::Stmt::CXXNoexceptExprClass:
+ case clang::Stmt::CXXNullPtrLiteralExprClass:
+ case clang::Stmt::CXXPseudoDestructorExprClass:
+ case clang::Stmt::CXXRewrittenBinaryOperatorClass:
+ case clang::Stmt::CXXScalarValueInitExprClass:
+ case clang::Stmt::CXXStdInitializerListExprClass:
+ case clang::Stmt::CXXThisExprClass:
+ case clang::Stmt::CXXThrowExprClass:
+ case clang::Stmt::CXXTypeidExprClass:
+ case clang::Stmt::CXXUnresolvedConstructExprClass:
+ case clang::Stmt::CXXUuidofExprClass:
+ case clang::Stmt::CallExprClass:
+ case clang::Stmt::CUDAKernelCallExprClass:
+ case clang::Stmt::CXXMemberCallExprClass:
+ case clang::Stmt::CXXOperatorCallExprClass:
+ case clang::Stmt::UserDefinedLiteralClass:
+ case clang::Stmt::BuiltinBitCastExprClass:
+ case clang::Stmt::CStyleCastExprClass:
+ case clang::Stmt::CXXFunctionalCastExprClass:
+ case clang::Stmt::CXXAddrspaceCastExprClass:
+ case clang::Stmt::CXXConstCastExprClass:
+ case clang::Stmt::CXXDynamicCastExprClass:
+ case clang::Stmt::CXXReinterpretCastExprClass:
+ case clang::Stmt::CXXStaticCastExprClass:
+ case clang::Stmt::ObjCBridgedCastExprClass:
+ case clang::Stmt::ImplicitCastExprClass:
+ case clang::Stmt::CharacterLiteralClass:
+ case clang::Stmt::ChooseExprClass:
+ case clang::Stmt::CompoundLiteralExprClass:
+ case clang::Stmt::ConceptSpecializationExprClass:
+ case clang::Stmt::ConvertVectorExprClass:
+ case clang::Stmt::CoawaitExprClass:
+ case clang::Stmt::CoyieldExprClass:
+ case clang::Stmt::DeclRefExprClass:
+ case clang::Stmt::DependentCoawaitExprClass:
+ case clang::Stmt::DependentScopeDeclRefExprClass:
+ case clang::Stmt::DesignatedInitExprClass:
+ case clang::Stmt::DesignatedInitUpdateExprClass:
+ case clang::Stmt::ExpressionTraitExprClass:
+ case clang::Stmt::ExtVectorElementExprClass:
+ case clang::Stmt::FixedPointLiteralClass:
+ case clang::Stmt::FloatingLiteralClass:
+ case clang::Stmt::ConstantExprClass:
+ case clang::Stmt::ExprWithCleanupsClass:
+ case clang::Stmt::FunctionParmPackExprClass:
+ case clang::Stmt::GNUNullExprClass:
+ case clang::Stmt::GenericSelectionExprClass:
+ case clang::Stmt::ImaginaryLiteralClass:
+ case clang::Stmt::ImplicitValueInitExprClass:
+ case clang::Stmt::InitListExprClass:
+ case clang::Stmt::IntegerLiteralClass:
+ case clang::Stmt::LambdaExprClass:
+ case clang::Stmt::MSPropertyRefExprClass:
+ case clang::Stmt::MSPropertySubscriptExprClass:
+ case clang::Stmt::MaterializeTemporaryExprClass:
+ case clang::Stmt::MatrixSubscriptExprClass:
+ case clang::Stmt::MemberExprClass:
+ case clang::Stmt::NoInitExprClass:
+ case clang::Stmt::OMPArraySectionExprClass:
+ case clang::Stmt::OMPArrayShapingExprClass:
+ case clang::Stmt::OMPIteratorExprClass:
+ case clang::Stmt::ObjCArrayLiteralClass:
+ case clang::Stmt::ObjCAvailabilityCheckExprClass:
+ case clang::Stmt::ObjCBoolLiteralExprClass:
+ case clang::Stmt::ObjCBoxedExprClass:
+ case clang::Stmt::ObjCDictionaryLiteralClass:
+ case clang::Stmt::ObjCEncodeExprClass:
+ case clang::Stmt::ObjCIndirectCopyRestoreExprClass:
+ case clang::Stmt::ObjCIsaExprClass:
+ case clang::Stmt::ObjCIvarRefExprClass:
+ case clang::Stmt::ObjCMessageExprClass:
+ case clang::Stmt::ObjCPropertyRefExprClass:
+ case clang::Stmt::ObjCProtocolExprClass:
+ case clang::Stmt::ObjCSelectorExprClass:
+ case clang::Stmt::ObjCStringLiteralClass:
+ case clang::Stmt::ObjCSubscriptRefExprClass:
+ case clang::Stmt::OffsetOfExprClass:
+ case clang::Stmt::OpaqueValueExprClass:
+ case clang::Stmt::UnresolvedLookupExprClass:
+ case clang::Stmt::UnresolvedMemberExprClass:
+ case clang::Stmt::PackExpansionExprClass:
+ case clang::Stmt::ParenExprClass:
+ case clang::Stmt::ParenListExprClass:
+ case clang::Stmt::PredefinedExprClass:
+ case clang::Stmt::PseudoObjectExprClass:
+ case clang::Stmt::RecoveryExprClass:
+ case clang::Stmt::RequiresExprClass:
+ case clang::Stmt::SYCLUniqueStableNameExprClass:
+ case clang::Stmt::ShuffleVectorExprClass:
+ case clang::Stmt::SizeOfPackExprClass:
+ case clang::Stmt::SourceLocExprClass:
+ case clang::Stmt::StmtExprClass:
+ case clang::Stmt::StringLiteralClass:
+ case clang::Stmt::SubstNonTypeTemplateParmExprClass:
+ case clang::Stmt::SubstNonTypeTemplateParmPackExprClass:
+ case clang::Stmt::TypeTraitExprClass:
+ case clang::Stmt::TypoExprClass:
+ case clang::Stmt::UnaryExprOrTypeTraitExprClass:
+ case clang::Stmt::UnaryOperatorClass:
+ case clang::Stmt::VAArgExprClass:
+ case clang::Stmt::LabelStmtClass:
+ case clang::Stmt::WhileStmtClass:
break;
}
}
@@ -629,13 +638,16 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_IfStmtClass == clang::Stmt::I
static_assert((clang::Stmt::StmtClass)ZigClangStmt_IndirectGotoStmtClass == clang::Stmt::IndirectGotoStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSDependentExistsStmtClass == clang::Stmt::MSDependentExistsStmtClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_NullStmtClass == clang::Stmt::NullStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCanonicalLoopClass == clang::Stmt::OMPCanonicalLoopClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAtomicDirectiveClass == clang::Stmt::OMPAtomicDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == clang::Stmt::OMPBarrierDirectiveClass, "");
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_OMPDispatchDirectiveClass == clang::Stmt::OMPDispatchDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPFlushDirectiveClass == clang::Stmt::OMPFlushDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPInteropDirectiveClass == clang::Stmt::OMPInteropDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeDirectiveClass == clang::Stmt::OMPDistributeDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForDirectiveClass == clang::Stmt::OMPDistributeParallelForDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPDistributeParallelForSimdDirectiveClass, "");
@@ -661,6 +673,9 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeDirectiveCl
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTileDirectiveClass == clang::Stmt::OMPTileDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPUnrollDirectiveClass == clang::Stmt::OMPUnrollDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMaskedDirectiveClass == clang::Stmt::OMPMaskedDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterDirectiveClass == clang::Stmt::OMPMasterDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPOrderedDirectiveClass == clang::Stmt::OMPOrderedDirectiveClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelDirectiveClass == clang::Stmt::OMPParallelDirectiveClass, "");
@@ -809,6 +824,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_PredefinedExprClass == clang:
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_SYCLUniqueStableNameExprClass == clang::Stmt::SYCLUniqueStableNameExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_ShuffleVectorExprClass == clang::Stmt::ShuffleVectorExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SizeOfPackExprClass == clang::Stmt::SizeOfPackExprClass, "");
static_assert((clang::Stmt::StmtClass)ZigClangStmt_SourceLocExprClass == clang::Stmt::SourceLocExprClass, "");
@@ -876,6 +892,8 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
case clang::Decl::Import:
case clang::Decl::LifetimeExtendedTemporary:
case clang::Decl::LinkageSpec:
+ case clang::Decl::Using:
+ case clang::Decl::UsingEnum:
case clang::Decl::Label:
case clang::Decl::Namespace:
case clang::Decl::NamespaceAlias:
@@ -904,7 +922,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
case clang::Decl::TypeAlias:
case clang::Decl::Typedef:
case clang::Decl::UnresolvedUsingTypename:
- case clang::Decl::Using:
+ case clang::Decl::UnresolvedUsingIfExists:
case clang::Decl::UsingDirective:
case clang::Decl::UsingPack:
case clang::Decl::UsingShadow:
@@ -961,6 +979,8 @@ static_assert((clang::Decl::Kind)ZigClangDeclFriendTemplate == clang::Decl::Frie
static_assert((clang::Decl::Kind)ZigClangDeclImport == clang::Decl::Import, "");
static_assert((clang::Decl::Kind)ZigClangDeclLifetimeExtendedTemporary == clang::Decl::LifetimeExtendedTemporary, "");
static_assert((clang::Decl::Kind)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, "");
+static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
+static_assert((clang::Decl::Kind)ZigClangDeclUsingEnum == clang::Decl::UsingEnum, "");
static_assert((clang::Decl::Kind)ZigClangDeclLabel == clang::Decl::Label, "");
static_assert((clang::Decl::Kind)ZigClangDeclNamespace == clang::Decl::Namespace, "");
static_assert((clang::Decl::Kind)ZigClangDeclNamespaceAlias == clang::Decl::NamespaceAlias, "");
@@ -989,8 +1009,8 @@ static_assert((clang::Decl::Kind)ZigClangDeclObjCTypeParam == clang::Decl::ObjCT
static_assert((clang::Decl::Kind)ZigClangDeclTypeAlias == clang::Decl::TypeAlias, "");
static_assert((clang::Decl::Kind)ZigClangDeclTypedef == clang::Decl::Typedef, "");
static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingTypename == clang::Decl::UnresolvedUsingTypename, "");
+static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingIfExists == clang::Decl::UnresolvedUsingIfExists, "");
static_assert((clang::Decl::Kind)ZigClangDeclOMPAllocate == clang::Decl::OMPAllocate, "");
-static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
static_assert((clang::Decl::Kind)ZigClangDeclUsingDirective == clang::Decl::UsingDirective, "");
static_assert((clang::Decl::Kind)ZigClangDeclUsingPack == clang::Decl::UsingPack, "");
static_assert((clang::Decl::Kind)ZigClangDeclUsingShadow == clang::Decl::UsingShadow, "");
@@ -1131,6 +1151,72 @@ void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
case clang::BuiltinType::SveBool:
case clang::BuiltinType::VectorQuad:
case clang::BuiltinType::VectorPair:
+ case clang::BuiltinType::RvvInt8mf8:
+ case clang::BuiltinType::RvvInt8mf4:
+ case clang::BuiltinType::RvvInt8mf2:
+ case clang::BuiltinType::RvvInt8m1:
+ case clang::BuiltinType::RvvInt8m2:
+ case clang::BuiltinType::RvvInt8m4:
+ case clang::BuiltinType::RvvInt8m8:
+ case clang::BuiltinType::RvvUint8mf8:
+ case clang::BuiltinType::RvvUint8mf4:
+ case clang::BuiltinType::RvvUint8mf2:
+ case clang::BuiltinType::RvvUint8m1:
+ case clang::BuiltinType::RvvUint8m2:
+ case clang::BuiltinType::RvvUint8m4:
+ case clang::BuiltinType::RvvUint8m8:
+ case clang::BuiltinType::RvvInt16mf4:
+ case clang::BuiltinType::RvvInt16mf2:
+ case clang::BuiltinType::RvvInt16m1:
+ case clang::BuiltinType::RvvInt16m2:
+ case clang::BuiltinType::RvvInt16m4:
+ case clang::BuiltinType::RvvInt16m8:
+ case clang::BuiltinType::RvvUint16mf4:
+ case clang::BuiltinType::RvvUint16mf2:
+ case clang::BuiltinType::RvvUint16m1:
+ case clang::BuiltinType::RvvUint16m2:
+ case clang::BuiltinType::RvvUint16m4:
+ case clang::BuiltinType::RvvUint16m8:
+ case clang::BuiltinType::RvvInt32mf2:
+ case clang::BuiltinType::RvvInt32m1:
+ case clang::BuiltinType::RvvInt32m2:
+ case clang::BuiltinType::RvvInt32m4:
+ case clang::BuiltinType::RvvInt32m8:
+ case clang::BuiltinType::RvvUint32mf2:
+ case clang::BuiltinType::RvvUint32m1:
+ case clang::BuiltinType::RvvUint32m2:
+ case clang::BuiltinType::RvvUint32m4:
+ case clang::BuiltinType::RvvUint32m8:
+ case clang::BuiltinType::RvvInt64m1:
+ case clang::BuiltinType::RvvInt64m2:
+ case clang::BuiltinType::RvvInt64m4:
+ case clang::BuiltinType::RvvInt64m8:
+ case clang::BuiltinType::RvvUint64m1:
+ case clang::BuiltinType::RvvUint64m2:
+ case clang::BuiltinType::RvvUint64m4:
+ case clang::BuiltinType::RvvUint64m8:
+ case clang::BuiltinType::RvvFloat16mf4:
+ case clang::BuiltinType::RvvFloat16mf2:
+ case clang::BuiltinType::RvvFloat16m1:
+ case clang::BuiltinType::RvvFloat16m2:
+ case clang::BuiltinType::RvvFloat16m4:
+ case clang::BuiltinType::RvvFloat16m8:
+ case clang::BuiltinType::RvvFloat32mf2:
+ case clang::BuiltinType::RvvFloat32m1:
+ case clang::BuiltinType::RvvFloat32m2:
+ case clang::BuiltinType::RvvFloat32m4:
+ case clang::BuiltinType::RvvFloat32m8:
+ case clang::BuiltinType::RvvFloat64m1:
+ case clang::BuiltinType::RvvFloat64m2:
+ case clang::BuiltinType::RvvFloat64m4:
+ case clang::BuiltinType::RvvFloat64m8:
+ case clang::BuiltinType::RvvBool1:
+ case clang::BuiltinType::RvvBool2:
+ case clang::BuiltinType::RvvBool4:
+ case clang::BuiltinType::RvvBool8:
+ case clang::BuiltinType::RvvBool16:
+ case clang::BuiltinType::RvvBool32:
+ case clang::BuiltinType::RvvBool64:
case clang::BuiltinType::Void:
case clang::BuiltinType::Bool:
case clang::BuiltinType::Char_U:
@@ -1306,6 +1392,72 @@ static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBFloat16x4 == clan
static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSveBool == clang::BuiltinType::SveBool, "");
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, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf4 == clang::BuiltinType::RvvInt8mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8mf2 == clang::BuiltinType::RvvInt8mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m1 == clang::BuiltinType::RvvInt8m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m2 == clang::BuiltinType::RvvInt8m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m4 == clang::BuiltinType::RvvInt8m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt8m8 == clang::BuiltinType::RvvInt8m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8mf8 == clang::BuiltinType::RvvUint8mf8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8mf4 == clang::BuiltinType::RvvUint8mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8mf2 == clang::BuiltinType::RvvUint8mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m1 == clang::BuiltinType::RvvUint8m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m2 == clang::BuiltinType::RvvUint8m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m4 == clang::BuiltinType::RvvUint8m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint8m8 == clang::BuiltinType::RvvUint8m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16mf4 == clang::BuiltinType::RvvInt16mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16mf2 == clang::BuiltinType::RvvInt16mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m1 == clang::BuiltinType::RvvInt16m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m2 == clang::BuiltinType::RvvInt16m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m4 == clang::BuiltinType::RvvInt16m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt16m8 == clang::BuiltinType::RvvInt16m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16mf4 == clang::BuiltinType::RvvUint16mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16mf2 == clang::BuiltinType::RvvUint16mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m1 == clang::BuiltinType::RvvUint16m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m2 == clang::BuiltinType::RvvUint16m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m4 == clang::BuiltinType::RvvUint16m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint16m8 == clang::BuiltinType::RvvUint16m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32mf2 == clang::BuiltinType::RvvInt32mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m1 == clang::BuiltinType::RvvInt32m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m2 == clang::BuiltinType::RvvInt32m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m4 == clang::BuiltinType::RvvInt32m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt32m8 == clang::BuiltinType::RvvInt32m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32mf2 == clang::BuiltinType::RvvUint32mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m1 == clang::BuiltinType::RvvUint32m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m2 == clang::BuiltinType::RvvUint32m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m4 == clang::BuiltinType::RvvUint32m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint32m8 == clang::BuiltinType::RvvUint32m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m1 == clang::BuiltinType::RvvInt64m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m2 == clang::BuiltinType::RvvInt64m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m4 == clang::BuiltinType::RvvInt64m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvInt64m8 == clang::BuiltinType::RvvInt64m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m1 == clang::BuiltinType::RvvUint64m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m2 == clang::BuiltinType::RvvUint64m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m4 == clang::BuiltinType::RvvUint64m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvUint64m8 == clang::BuiltinType::RvvUint64m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16mf4 == clang::BuiltinType::RvvFloat16mf4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16mf2 == clang::BuiltinType::RvvFloat16mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m1 == clang::BuiltinType::RvvFloat16m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m2 == clang::BuiltinType::RvvFloat16m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m4 == clang::BuiltinType::RvvFloat16m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat16m8 == clang::BuiltinType::RvvFloat16m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32mf2 == clang::BuiltinType::RvvFloat32mf2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m1 == clang::BuiltinType::RvvFloat32m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m2 == clang::BuiltinType::RvvFloat32m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m4 == clang::BuiltinType::RvvFloat32m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat32m8 == clang::BuiltinType::RvvFloat32m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m1 == clang::BuiltinType::RvvFloat64m1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m2 == clang::BuiltinType::RvvFloat64m2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m4 == clang::BuiltinType::RvvFloat64m4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvFloat64m8 == clang::BuiltinType::RvvFloat64m8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool1 == clang::BuiltinType::RvvBool1, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool2 == clang::BuiltinType::RvvBool2, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool4 == clang::BuiltinType::RvvBool4, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool8 == clang::BuiltinType::RvvBool8, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool16 == clang::BuiltinType::RvvBool16, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool32 == clang::BuiltinType::RvvBool32, "");
+static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeRvvBool64 == clang::BuiltinType::RvvBool64, "");
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, "");
@@ -1396,6 +1548,7 @@ void ZigClang_detect_enum_CallingConv(clang::CallingConv x) {
case clang::CC_SpirFunction:
case clang::CC_OpenCLKernel:
case clang::CC_Swift:
+ case clang::CC_SwiftAsync:
case clang::CC_PreserveMost:
case clang::CC_PreserveAll:
case clang::CC_AArch64VectorCall:
@@ -1418,6 +1571,7 @@ static_assert((clang::CallingConv)ZigClangCallingConv_IntelOclBicc == clang::CC_
static_assert((clang::CallingConv)ZigClangCallingConv_SpirFunction == clang::CC_SpirFunction, "");
static_assert((clang::CallingConv)ZigClangCallingConv_OpenCLKernel == clang::CC_OpenCLKernel, "");
static_assert((clang::CallingConv)ZigClangCallingConv_Swift == clang::CC_Swift, "");
+static_assert((clang::CallingConv)ZigClangCallingConv_SwiftAsync == clang::CC_SwiftAsync, "");
static_assert((clang::CallingConv)ZigClangCallingConv_PreserveMost == clang::CC_PreserveMost, "");
static_assert((clang::CallingConv)ZigClangCallingConv_PreserveAll == clang::CC_PreserveAll, "");
static_assert((clang::CallingConv)ZigClangCallingConv_AArch64VectorCall == clang::CC_AArch64VectorCall, "");
diff --git a/src/zig_clang.h b/src/zig_clang.h
index 26b4b3ca9a..f704b50b18 100644
--- a/src/zig_clang.h
+++ b/src/zig_clang.h
@@ -318,13 +318,16 @@ enum ZigClangStmtClass {
ZigClangStmt_IndirectGotoStmtClass,
ZigClangStmt_MSDependentExistsStmtClass,
ZigClangStmt_NullStmtClass,
+ ZigClangStmt_OMPCanonicalLoopClass,
ZigClangStmt_OMPAtomicDirectiveClass,
ZigClangStmt_OMPBarrierDirectiveClass,
ZigClangStmt_OMPCancelDirectiveClass,
ZigClangStmt_OMPCancellationPointDirectiveClass,
ZigClangStmt_OMPCriticalDirectiveClass,
ZigClangStmt_OMPDepobjDirectiveClass,
+ ZigClangStmt_OMPDispatchDirectiveClass,
ZigClangStmt_OMPFlushDirectiveClass,
+ ZigClangStmt_OMPInteropDirectiveClass,
ZigClangStmt_OMPDistributeDirectiveClass,
ZigClangStmt_OMPDistributeParallelForDirectiveClass,
ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass,
@@ -350,6 +353,9 @@ enum ZigClangStmtClass {
ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass,
ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass,
ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass,
+ ZigClangStmt_OMPTileDirectiveClass,
+ ZigClangStmt_OMPUnrollDirectiveClass,
+ ZigClangStmt_OMPMaskedDirectiveClass,
ZigClangStmt_OMPMasterDirectiveClass,
ZigClangStmt_OMPOrderedDirectiveClass,
ZigClangStmt_OMPParallelDirectiveClass,
@@ -498,6 +504,7 @@ enum ZigClangStmtClass {
ZigClangStmt_PseudoObjectExprClass,
ZigClangStmt_RecoveryExprClass,
ZigClangStmt_RequiresExprClass,
+ ZigClangStmt_SYCLUniqueStableNameExprClass,
ZigClangStmt_ShuffleVectorExprClass,
ZigClangStmt_SizeOfPackExprClass,
ZigClangStmt_SourceLocExprClass,
@@ -540,6 +547,7 @@ enum ZigClangCK {
ZigClangCK_PointerToIntegral,
ZigClangCK_PointerToBoolean,
ZigClangCK_ToVoid,
+ ZigClangCK_MatrixCast,
ZigClangCK_VectorSplat,
ZigClangCK_IntegralCast,
ZigClangCK_IntegralToBoolean,
@@ -595,6 +603,8 @@ enum ZigClangDeclKind {
ZigClangDeclImport,
ZigClangDeclLifetimeExtendedTemporary,
ZigClangDeclLinkageSpec,
+ ZigClangDeclUsing,
+ ZigClangDeclUsingEnum,
ZigClangDeclLabel,
ZigClangDeclNamespace,
ZigClangDeclNamespaceAlias,
@@ -623,7 +633,7 @@ enum ZigClangDeclKind {
ZigClangDeclTypeAlias,
ZigClangDeclTypedef,
ZigClangDeclUnresolvedUsingTypename,
- ZigClangDeclUsing,
+ ZigClangDeclUnresolvedUsingIfExists,
ZigClangDeclUsingDirective,
ZigClangDeclUsingPack,
ZigClangDeclUsingShadow,
@@ -765,6 +775,72 @@ enum ZigClangBuiltinTypeKind {
ZigClangBuiltinTypeSveBool,
ZigClangBuiltinTypeVectorQuad,
ZigClangBuiltinTypeVectorPair,
+ ZigClangBuiltinTypeRvvInt8mf8,
+ ZigClangBuiltinTypeRvvInt8mf4,
+ ZigClangBuiltinTypeRvvInt8mf2,
+ ZigClangBuiltinTypeRvvInt8m1,
+ ZigClangBuiltinTypeRvvInt8m2,
+ ZigClangBuiltinTypeRvvInt8m4,
+ ZigClangBuiltinTypeRvvInt8m8,
+ ZigClangBuiltinTypeRvvUint8mf8,
+ ZigClangBuiltinTypeRvvUint8mf4,
+ ZigClangBuiltinTypeRvvUint8mf2,
+ ZigClangBuiltinTypeRvvUint8m1,
+ ZigClangBuiltinTypeRvvUint8m2,
+ ZigClangBuiltinTypeRvvUint8m4,
+ ZigClangBuiltinTypeRvvUint8m8,
+ ZigClangBuiltinTypeRvvInt16mf4,
+ ZigClangBuiltinTypeRvvInt16mf2,
+ ZigClangBuiltinTypeRvvInt16m1,
+ ZigClangBuiltinTypeRvvInt16m2,
+ ZigClangBuiltinTypeRvvInt16m4,
+ ZigClangBuiltinTypeRvvInt16m8,
+ ZigClangBuiltinTypeRvvUint16mf4,
+ ZigClangBuiltinTypeRvvUint16mf2,
+ ZigClangBuiltinTypeRvvUint16m1,
+ ZigClangBuiltinTypeRvvUint16m2,
+ ZigClangBuiltinTypeRvvUint16m4,
+ ZigClangBuiltinTypeRvvUint16m8,
+ ZigClangBuiltinTypeRvvInt32mf2,
+ ZigClangBuiltinTypeRvvInt32m1,
+ ZigClangBuiltinTypeRvvInt32m2,
+ ZigClangBuiltinTypeRvvInt32m4,
+ ZigClangBuiltinTypeRvvInt32m8,
+ ZigClangBuiltinTypeRvvUint32mf2,
+ ZigClangBuiltinTypeRvvUint32m1,
+ ZigClangBuiltinTypeRvvUint32m2,
+ ZigClangBuiltinTypeRvvUint32m4,
+ ZigClangBuiltinTypeRvvUint32m8,
+ ZigClangBuiltinTypeRvvInt64m1,
+ ZigClangBuiltinTypeRvvInt64m2,
+ ZigClangBuiltinTypeRvvInt64m4,
+ ZigClangBuiltinTypeRvvInt64m8,
+ ZigClangBuiltinTypeRvvUint64m1,
+ ZigClangBuiltinTypeRvvUint64m2,
+ ZigClangBuiltinTypeRvvUint64m4,
+ ZigClangBuiltinTypeRvvUint64m8,
+ ZigClangBuiltinTypeRvvFloat16mf4,
+ ZigClangBuiltinTypeRvvFloat16mf2,
+ ZigClangBuiltinTypeRvvFloat16m1,
+ ZigClangBuiltinTypeRvvFloat16m2,
+ ZigClangBuiltinTypeRvvFloat16m4,
+ ZigClangBuiltinTypeRvvFloat16m8,
+ ZigClangBuiltinTypeRvvFloat32mf2,
+ ZigClangBuiltinTypeRvvFloat32m1,
+ ZigClangBuiltinTypeRvvFloat32m2,
+ ZigClangBuiltinTypeRvvFloat32m4,
+ ZigClangBuiltinTypeRvvFloat32m8,
+ ZigClangBuiltinTypeRvvFloat64m1,
+ ZigClangBuiltinTypeRvvFloat64m2,
+ ZigClangBuiltinTypeRvvFloat64m4,
+ ZigClangBuiltinTypeRvvFloat64m8,
+ ZigClangBuiltinTypeRvvBool1,
+ ZigClangBuiltinTypeRvvBool2,
+ ZigClangBuiltinTypeRvvBool4,
+ ZigClangBuiltinTypeRvvBool8,
+ ZigClangBuiltinTypeRvvBool16,
+ ZigClangBuiltinTypeRvvBool32,
+ ZigClangBuiltinTypeRvvBool64,
ZigClangBuiltinTypeVoid,
ZigClangBuiltinTypeBool,
ZigClangBuiltinTypeChar_U,
@@ -855,6 +931,7 @@ enum ZigClangCallingConv {
ZigClangCallingConv_SpirFunction, // default for OpenCL functions on SPIR target
ZigClangCallingConv_OpenCLKernel, // inferred for OpenCL kernels
ZigClangCallingConv_Swift, // __attribute__((swiftcall))
+ ZigClangCallingConv_SwiftAsync, // __attribute__((swiftasynccall))
ZigClangCallingConv_PreserveMost, // __attribute__((preserve_most))
ZigClangCallingConv_PreserveAll, // __attribute__((preserve_all))
ZigClangCallingConv_AArch64VectorCall, // __attribute__((aarch64_vector_pcs))
diff --git a/src/zig_clang_cc1_main.cpp b/src/zig_clang_cc1_main.cpp
index 0918860015..396d6ff529 100644
--- a/src/zig_clang_cc1_main.cpp
+++ b/src/zig_clang_cc1_main.cpp
@@ -203,6 +203,12 @@ int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
TextDiagnosticBuffer *DiagsBuffer = new TextDiagnosticBuffer;
DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagsBuffer);
+
+ // Setup round-trip remarks for the DiagnosticsEngine used in CreateFromArgs.
+ if (find(Argv, StringRef("-Rround-trip-cc1-args")) != Argv.end())
+ Diags.setSeverity(diag::remark_cc1_round_trip_generated,
+ diag::Severity::Remark, {});
+
bool Success = CompilerInvocation::CreateFromArgs(Clang->getInvocation(),
Argv, Diags, Argv0);
@@ -248,12 +254,9 @@ int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
if (llvm::timeTraceProfilerEnabled()) {
SmallString<128> Path(Clang->getFrontendOpts().OutputFile);
llvm::sys::path::replace_extension(Path, "json");
- if (auto profilerOutput =
- Clang->createOutputFile(Path.str(),
- /*Binary=*/false,
- /*RemoveFileOnSignal=*/false,
- /*useTemporary=*/false)) {
-
+ if (auto profilerOutput = Clang->createOutputFile(
+ Path.str(), /*Binary=*/false, /*RemoveFileOnSignal=*/false,
+ /*useTemporary=*/false)) {
llvm::timeTraceProfilerWrite(*profilerOutput);
// FIXME(ibiryukov): make profilerOutput flush in destructor instead.
profilerOutput->flush();
diff --git a/src/zig_clang_cc1as_main.cpp b/src/zig_clang_cc1as_main.cpp
index de71026fbf..086ce0ea77 100644
--- a/src/zig_clang_cc1as_main.cpp
+++ b/src/zig_clang_cc1as_main.cpp
@@ -91,6 +91,7 @@ struct AssemblerInvocation {
unsigned SaveTemporaryLabels : 1;
unsigned GenDwarfForAssembly : 1;
unsigned RelaxELFRelocations : 1;
+ unsigned Dwarf64 : 1;
unsigned DwarfVersion;
std::string DwarfDebugFlags;
std::string DwarfDebugProducer;
@@ -160,6 +161,7 @@ public:
FatalWarnings = 0;
NoWarn = 0;
IncrementalLinkerCompatible = 0;
+ Dwarf64 = 0;
DwarfVersion = 0;
EmbedBitcode = 0;
}
@@ -231,13 +233,16 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts,
}
Opts.RelaxELFRelocations = Args.hasArg(OPT_mrelax_relocations);
+ if (auto *DwarfFormatArg = Args.getLastArg(OPT_gdwarf64, OPT_gdwarf32))
+ Opts.Dwarf64 = DwarfFormatArg->getOption().matches(OPT_gdwarf64);
Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 2, Diags);
Opts.DwarfDebugFlags =
std::string(Args.getLastArgValue(OPT_dwarf_debug_flags));
Opts.DwarfDebugProducer =
std::string(Args.getLastArgValue(OPT_dwarf_debug_producer));
- Opts.DebugCompilationDir =
- std::string(Args.getLastArgValue(OPT_fdebug_compilation_dir));
+ if (const Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ,
+ options::OPT_fdebug_compilation_dir_EQ))
+ Opts.DebugCompilationDir = A->getValue();
Opts.MainFileName = std::string(Args.getLastArgValue(OPT_main_file_name));
for (const auto &Arg : Args.getAllArgValues(OPT_fdebug_prefix_map_EQ)) {
@@ -319,7 +324,7 @@ getOutputStream(StringRef Path, DiagnosticsEngine &Diags, bool Binary) {
std::error_code EC;
auto Out = std::make_unique<raw_fd_ostream>(
- Path, EC, (Binary ? sys::fs::OF_None : sys::fs::OF_Text));
+ Path, EC, (Binary ? sys::fs::OF_None : sys::fs::OF_TextWithCRLF));
if (EC) {
Diags.Report(diag::err_fe_unable_to_open_output) << Path << EC.message();
return nullptr;
@@ -328,8 +333,8 @@ getOutputStream(StringRef Path, DiagnosticsEngine &Diags, bool Binary) {
return Out;
}
-static bool ExecuteAssembler(AssemblerInvocation &Opts,
- DiagnosticsEngine &Diags) {
+static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
+ DiagnosticsEngine &Diags) {
// Get the target specific parser.
std::string Error;
const Target *TheTarget = TargetRegistry::lookupTarget(Opts.Triple, Error);
@@ -337,7 +342,7 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts,
return Diags.Report(diag::err_target_unknown_triple) << Opts.Triple;
ErrorOr<std::unique_ptr<MemoryBuffer>> Buffer =
- MemoryBuffer::getFileOrSTDIN(Opts.InputFile);
+ MemoryBuffer::getFileOrSTDIN(Opts.InputFile, /*IsText=*/true);
if (std::error_code EC = Buffer.getError()) {
Error = EC.message();
@@ -378,11 +383,15 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts,
if (!Opts.SplitDwarfOutput.empty())
DwoOS = getOutputStream(Opts.SplitDwarfOutput, Diags, IsBinary);
- // FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
- // MCObjectFileInfo needs a MCContext reference in order to initialize itself.
- std::unique_ptr<MCObjectFileInfo> MOFI(new MCObjectFileInfo());
+ // Build up the feature string from the target feature list.
+ std::string FS = llvm::join(Opts.Features, ",");
- MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &SrcMgr, &MCOptions);
+ std::unique_ptr<MCSubtargetInfo> STI(
+ TheTarget->createMCSubtargetInfo(Opts.Triple, Opts.CPU, FS));
+ assert(STI && "Unable to create subtarget info!");
+
+ MCContext Ctx(Triple(Opts.Triple), MAI.get(), MRI.get(), STI.get(), &SrcMgr,
+ &MCOptions);
bool PIC = false;
if (Opts.RelocationModel == "static") {
@@ -395,7 +404,12 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts,
PIC = false;
}
- MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, Ctx);
+ // FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
+ // MCObjectFileInfo needs a MCContext reference in order to initialize itself.
+ std::unique_ptr<MCObjectFileInfo> MOFI(
+ TheTarget->createMCObjectFileInfo(Ctx, PIC));
+ Ctx.setObjectFileInfo(MOFI.get());
+
if (Opts.SaveTemporaryLabels)
Ctx.setAllowTemporaryLabels(false);
if (Opts.GenDwarfForAssembly)
@@ -417,23 +431,17 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts,
Ctx.addDebugPrefixMapEntry(KV.first, KV.second);
if (!Opts.MainFileName.empty())
Ctx.setMainFileName(StringRef(Opts.MainFileName));
+ Ctx.setDwarfFormat(Opts.Dwarf64 ? dwarf::DWARF64 : dwarf::DWARF32);
Ctx.setDwarfVersion(Opts.DwarfVersion);
if (Opts.GenDwarfForAssembly)
Ctx.setGenDwarfRootFile(Opts.InputFile,
SrcMgr.getMemoryBuffer(BufferIndex)->getBuffer());
- // Build up the feature string from the target feature list.
- std::string FS = llvm::join(Opts.Features, ",");
-
std::unique_ptr<MCStreamer> Str;
std::unique_ptr<MCInstrInfo> MCII(TheTarget->createMCInstrInfo());
assert(MCII && "Unable to create instruction info!");
- std::unique_ptr<MCSubtargetInfo> STI(
- TheTarget->createMCSubtargetInfo(Opts.Triple, Opts.CPU, FS));
- assert(STI && "Unable to create subtarget info!");
-
raw_pwrite_stream *Out = FDOS.get();
std::unique_ptr<buffer_ostream> BOS;
@@ -487,8 +495,7 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts,
// When -fembed-bitcode is passed to clang_as, a 1-byte marker
// is emitted in __LLVM,__asm section if the object file is MachO format.
- if (Opts.EmbedBitcode && Ctx.getObjectFileInfo()->getObjectFileType() ==
- MCObjectFileInfo::IsMachO) {
+ if (Opts.EmbedBitcode && Ctx.getObjectFileType() == MCContext::IsMachO) {
MCSection *AsmLabel = Ctx.getMachOSection(
"__LLVM", "__asm", MachO::S_REGULAR, 4, SectionKind::getReadOnly());
Str.get()->SwitchSection(AsmLabel);
@@ -525,12 +532,12 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts,
Failed = Parser->Run(Opts.NoInitialTextSection);
}
- // Parser has a reference to the output stream (Str), so close Parser first.
- Parser.reset();
- Str.reset();
- // Close the output stream early.
- BOS.reset();
- FDOS.reset();
+ return Failed;
+}
+
+static bool ExecuteAssembler(AssemblerInvocation &Opts,
+ DiagnosticsEngine &Diags) {
+ bool Failed = ExecuteAssemblerImpl(Opts, Diags);
// Delete output file if there were errors.
if (Failed) {
@@ -578,7 +585,7 @@ int cc1as_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
return 1;
if (Asm.ShowHelp) {
- getDriverOptTable().PrintHelp(
+ getDriverOptTable().printHelp(
llvm::outs(), "clang -cc1as [options] file...",
"Clang Integrated Assembler",
/*Include=*/driver::options::CC1AsOption, /*Exclude=*/0,
diff --git a/src/zig_clang_driver.cpp b/src/zig_clang_driver.cpp
index e358fea83a..3c38250df3 100644
--- a/src/zig_clang_driver.cpp
+++ b/src/zig_clang_driver.cpp
@@ -242,20 +242,28 @@ static void getCLEnvVarOptions(std::string &EnvValue, llvm::StringSaver &Saver,
}
static void SetBackdoorDriverOutputsFromEnvVars(Driver &TheDriver) {
- // Handle CC_PRINT_OPTIONS and CC_PRINT_OPTIONS_FILE.
- TheDriver.CCPrintOptions = !!::getenv("CC_PRINT_OPTIONS");
- if (TheDriver.CCPrintOptions)
- TheDriver.CCPrintOptionsFilename = ::getenv("CC_PRINT_OPTIONS_FILE");
-
- // Handle CC_PRINT_HEADERS and CC_PRINT_HEADERS_FILE.
- TheDriver.CCPrintHeaders = !!::getenv("CC_PRINT_HEADERS");
- if (TheDriver.CCPrintHeaders)
- TheDriver.CCPrintHeadersFilename = ::getenv("CC_PRINT_HEADERS_FILE");
-
- // Handle CC_LOG_DIAGNOSTICS and CC_LOG_DIAGNOSTICS_FILE.
- TheDriver.CCLogDiagnostics = !!::getenv("CC_LOG_DIAGNOSTICS");
- if (TheDriver.CCLogDiagnostics)
- TheDriver.CCLogDiagnosticsFilename = ::getenv("CC_LOG_DIAGNOSTICS_FILE");
+ auto CheckEnvVar = [](const char *EnvOptSet, const char *EnvOptFile,
+ std::string &OptFile) {
+ bool OptSet = !!::getenv(EnvOptSet);
+ if (OptSet) {
+ if (const char *Var = ::getenv(EnvOptFile))
+ OptFile = Var;
+ }
+ return OptSet;
+ };
+
+ TheDriver.CCPrintOptions =
+ CheckEnvVar("CC_PRINT_OPTIONS", "CC_PRINT_OPTIONS_FILE",
+ TheDriver.CCPrintOptionsFilename);
+ TheDriver.CCPrintHeaders =
+ CheckEnvVar("CC_PRINT_HEADERS", "CC_PRINT_HEADERS_FILE",
+ TheDriver.CCPrintHeadersFilename);
+ TheDriver.CCLogDiagnostics =
+ CheckEnvVar("CC_LOG_DIAGNOSTICS", "CC_LOG_DIAGNOSTICS_FILE",
+ TheDriver.CCLogDiagnosticsFilename);
+ TheDriver.CCPrintProcessStats =
+ CheckEnvVar("CC_PRINT_PROC_STAT", "CC_PRINT_PROC_STAT_FILE",
+ TheDriver.CCPrintStatReportFilename);
}
static void FixupDiagPrefixExeName(TextDiagnosticPrinter *DiagClient,
@@ -263,7 +271,7 @@ static void FixupDiagPrefixExeName(TextDiagnosticPrinter *DiagClient,
// If the clang binary happens to be named cl.exe for compatibility reasons,
// use clang-cl.exe as the prefix to avoid confusion between clang and MSVC.
StringRef ExeBasename(llvm::sys::path::stem(Path));
- if (ExeBasename.equals_lower("cl"))
+ if (ExeBasename.equals_insensitive("cl"))
ExeBasename = "clang-cl";
DiagClient->setPrefix(std::string(ExeBasename));
}
@@ -335,56 +343,49 @@ static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV) {
return 1;
}
-extern "C" int ZigClang_main(int argc_, const char **argv_);
-int ZigClang_main(int argc_, const char **argv_) {
+extern "C" int ZigClang_main(int Argc, const char **Argv);
+int ZigClang_main(int Argc, const char **Argv) {
noteBottomOfStack();
-
- // ZIG MOD: On windows, InitLLVM calls GetCommandLineW(),
+ // ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(),
// and overwrites the args. We don't want it to do that,
// and we also don't need the signal handlers it installs
// (we have our own already), so we just use llvm_shutdown_obj
// instead.
- // llvm::InitLLVM X(argc_, argv_);
+ // llvm::InitLLVM X(Argc, Argv);
llvm::llvm_shutdown_obj X;
llvm::setBugReportMsg("PLEASE submit a bug report to " BUG_REPORT_URL
" and include the crash backtrace, preprocessed "
"source, and associated run script.\n");
- size_t argv_offset = (strcmp(argv_[1], "-cc1") == 0 || strcmp(argv_[1], "-cc1as") == 0) ? 0 : 1;
- SmallVector<const char *, 256> argv(argv_ + argv_offset, argv_ + argc_);
+ size_t argv_offset = (strcmp(Argv[1], "-cc1") == 0 || strcmp(Argv[1], "-cc1as") == 0) ? 0 : 1;
+ SmallVector<const char *, 256> Args(Argv + argv_offset, Argv + Argc);
if (llvm::sys::Process::FixupStandardFileDescriptors())
return 1;
llvm::InitializeAllTargets();
- auto TargetAndMode = ToolChain::getTargetAndModeFromProgramName(argv[0]);
llvm::BumpPtrAllocator A;
llvm::StringSaver Saver(A);
// Parse response files using the GNU syntax, unless we're in CL mode. There
- // are two ways to put clang in CL compatibility mode: argv[0] is either
+ // are two ways to put clang in CL compatibility mode: Args[0] is either
// clang-cl or cl, or --driver-mode=cl is on the command line. The normal
// command line parsing can't happen until after response file parsing, so we
// have to manually search for a --driver-mode=cl argument the hard way.
// Finally, our -cc1 tools don't care which tokenization mode we use because
// response files written by clang will tokenize the same way in either mode.
- bool ClangCLMode = false;
- if (StringRef(TargetAndMode.DriverMode).equals("--driver-mode=cl") ||
- llvm::find_if(argv, [](const char *F) {
- return F && strcmp(F, "--driver-mode=cl") == 0;
- }) != argv.end()) {
- ClangCLMode = true;
- }
+ bool ClangCLMode =
+ IsClangCL(getDriverMode(Args[0], llvm::makeArrayRef(Args).slice(1)));
enum { Default, POSIX, Windows } RSPQuoting = Default;
- for (const char *F : argv) {
+ for (const char *F : Args) {
if (strcmp(F, "--rsp-quoting=posix") == 0)
RSPQuoting = POSIX;
else if (strcmp(F, "--rsp-quoting=windows") == 0)
RSPQuoting = Windows;
}
- // Determines whether we want nullptr markers in argv to indicate response
+ // Determines whether we want nullptr markers in Args to indicate response
// files end-of-lines. We only use this for the /LINK driver argument with
// clang-cl.exe on Windows.
bool MarkEOLs = ClangCLMode;
@@ -395,31 +396,31 @@ int ZigClang_main(int argc_, const char **argv_) {
else
Tokenizer = &llvm::cl::TokenizeGNUCommandLine;
- if (MarkEOLs && argv.size() > 1 && StringRef(argv[1]).startswith("-cc1"))
+ if (MarkEOLs && Args.size() > 1 && StringRef(Args[1]).startswith("-cc1"))
MarkEOLs = false;
- llvm::cl::ExpandResponseFiles(Saver, Tokenizer, argv, MarkEOLs);
+ llvm::cl::ExpandResponseFiles(Saver, Tokenizer, Args, MarkEOLs);
// Handle -cc1 integrated tools, even if -cc1 was expanded from a response
// file.
- auto FirstArg = std::find_if(argv.begin() + 1, argv.end(),
+ auto FirstArg = std::find_if(Args.begin() + 1, Args.end(),
[](const char *A) { return A != nullptr; });
- if (FirstArg != argv.end() && StringRef(*FirstArg).startswith("-cc1")) {
+ if (FirstArg != Args.end() && StringRef(*FirstArg).startswith("-cc1")) {
// If -cc1 came from a response file, remove the EOL sentinels.
if (MarkEOLs) {
- auto newEnd = std::remove(argv.begin(), argv.end(), nullptr);
- argv.resize(newEnd - argv.begin());
+ auto newEnd = std::remove(Args.begin(), Args.end(), nullptr);
+ Args.resize(newEnd - Args.begin());
}
- return ExecuteCC1Tool(argv);
+ return ExecuteCC1Tool(Args);
}
// Handle options that need handling before the real command line parsing in
// Driver::BuildCompilation()
bool CanonicalPrefixes = true;
- for (int i = 1, size = argv.size(); i < size; ++i) {
+ for (int i = 1, size = Args.size(); i < size; ++i) {
// Skip end-of-line response file markers
- if (argv[i] == nullptr)
+ if (Args[i] == nullptr)
continue;
- if (StringRef(argv[i]) == "-no-canonical-prefixes") {
+ if (StringRef(Args[i]) == "-no-canonical-prefixes") {
CanonicalPrefixes = false;
break;
}
@@ -435,7 +436,7 @@ int ZigClang_main(int argc_, const char **argv_) {
getCLEnvVarOptions(OptCL.getValue(), Saver, PrependedOpts);
// Insert right after the program name to prepend to the argument list.
- argv.insert(argv.begin() + 1, PrependedOpts.begin(), PrependedOpts.end());
+ Args.insert(Args.begin() + 1, PrependedOpts.begin(), PrependedOpts.end());
}
// Arguments in "_CL_" are appended.
llvm::Optional<std::string> Opt_CL_ = llvm::sys::Process::GetEnv("_CL_");
@@ -444,7 +445,7 @@ int ZigClang_main(int argc_, const char **argv_) {
getCLEnvVarOptions(Opt_CL_.getValue(), Saver, AppendedOpts);
// Insert at the end of the argument list to append.
- argv.append(AppendedOpts.begin(), AppendedOpts.end());
+ Args.append(AppendedOpts.begin(), AppendedOpts.end());
}
}
@@ -453,12 +454,12 @@ int ZigClang_main(int argc_, const char **argv_) {
// scenes.
if (const char *OverrideStr = ::getenv("CCC_OVERRIDE_OPTIONS")) {
// FIXME: Driver shouldn't take extra initial argument.
- ApplyQAOverride(argv, OverrideStr, SavedStrings);
+ ApplyQAOverride(Args, OverrideStr, SavedStrings);
}
- // Pass local param `argv_[0]` as fallback.
+ // Pass local param `Argv[0]` as fallback.
// See https://github.com/ziglang/zig/pull/3292 .
- std::string Path = GetExecutablePath(argv_[0], CanonicalPrefixes);
+ std::string Path = GetExecutablePath(Argv[0], CanonicalPrefixes);
// Whether the cc1 tool should be called inside the current process, or if we
// should spawn a new clang subprocess (old behavior).
@@ -467,7 +468,7 @@ int ZigClang_main(int argc_, const char **argv_) {
bool UseNewCC1Process;
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts =
- CreateAndPopulateDiagOpts(argv, UseNewCC1Process);
+ CreateAndPopulateDiagOpts(Args, UseNewCC1Process);
TextDiagnosticPrinter *DiagClient
= new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
@@ -488,10 +489,11 @@ int ZigClang_main(int argc_, const char **argv_) {
ProcessWarningOptions(Diags, *DiagOpts, /*ReportDiags=*/false);
Driver TheDriver(Path, llvm::sys::getDefaultTargetTriple(), Diags);
- SetInstallDir(argv, TheDriver, CanonicalPrefixes);
+ SetInstallDir(Args, TheDriver, CanonicalPrefixes);
+ auto TargetAndMode = ToolChain::getTargetAndModeFromProgramName(Args[0]);
TheDriver.setTargetAndMode(TargetAndMode);
- insertTargetAndModeArgs(TargetAndMode, argv, SavedStrings);
+ insertTargetAndModeArgs(TargetAndMode, Args, SavedStrings);
SetBackdoorDriverOutputsFromEnvVars(TheDriver);
@@ -501,7 +503,7 @@ int ZigClang_main(int argc_, const char **argv_) {
llvm::CrashRecoveryContext::Enable();
}
- std::unique_ptr<Compilation> C(TheDriver.BuildCompilation(argv));
+ std::unique_ptr<Compilation> C(TheDriver.BuildCompilation(Args));
int Res = 1;
bool IsCrash = false;
if (C && !C->containsError()) {
diff --git a/src/zig_llvm-ar.cpp b/src/zig_llvm-ar.cpp
index 107f500fcb..9516af4096 100644
--- a/src/zig_llvm-ar.cpp
+++ b/src/zig_llvm-ar.cpp
@@ -1,263 +1,3 @@
-// In this file is copy+pasted WindowsSupport.h from LLVM 12.0.1-rc1.
-// This is so that we can patch it. The upstream sources are incorrectly
-// including "llvm/Config/config.h" which is a private header and thus not
-// available in the include files distributed with LLVM.
-// The patch here changes it to include "llvm/Config/config.h" instead.
-// Patch submitted upstream: https://reviews.llvm.org/D103370
-#if !defined(_WIN32)
-#define LLVM_SUPPORT_WINDOWSSUPPORT_H
-#endif
-
-//===- WindowsSupport.h - Common Windows Include File -----------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines things specific to Windows implementations. In addition to
-// providing some helpers for working with win32 APIs, this header wraps
-// <windows.h> with some portability macros. Always include WindowsSupport.h
-// instead of including <windows.h> directly.
-//
-//===----------------------------------------------------------------------===//
-
-//===----------------------------------------------------------------------===//
-//=== WARNING: Implementation here must contain only generic Win32 code that
-//=== is guaranteed to work on *all* Win32 variants.
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_SUPPORT_WINDOWSSUPPORT_H
-#define LLVM_SUPPORT_WINDOWSSUPPORT_H
-
-// mingw-w64 tends to define it as 0x0502 in its headers.
-#undef _WIN32_WINNT
-#undef _WIN32_IE
-
-// Require at least Windows 7 API.
-#define _WIN32_WINNT 0x0601
-#define _WIN32_IE 0x0800 // MinGW at it again. FIXME: verify if still needed.
-#define WIN32_LEAN_AND_MEAN
-#ifndef NOMINMAX
-#define NOMINMAX
-#endif
-
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/Config/llvm-config.h" // Get build system configuration settings
-#include "llvm/Support/Allocator.h"
-#include "llvm/Support/Chrono.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/VersionTuple.h"
-#include <cassert>
-#include <string>
-#include <system_error>
-#include <windows.h>
-
-// Must be included after windows.h
-#include <wincrypt.h>
-
-namespace llvm {
-
-/// Determines if the program is running on Windows 8 or newer. This
-/// reimplements one of the helpers in the Windows 8.1 SDK, which are intended
-/// to supercede raw calls to GetVersionEx. Old SDKs, Cygwin, and MinGW don't
-/// yet have VersionHelpers.h, so we have our own helper.
-bool RunningWindows8OrGreater();
-
-/// Returns the Windows version as Major.Minor.0.BuildNumber. Uses
-/// RtlGetVersion or GetVersionEx under the hood depending on what is available.
-/// GetVersionEx is deprecated, but this API exposes the build number which can
-/// be useful for working around certain kernel bugs.
-llvm::VersionTuple GetWindowsOSVersion();
-
-bool MakeErrMsg(std::string *ErrMsg, const std::string &prefix);
-
-// Include GetLastError() in a fatal error message.
-LLVM_ATTRIBUTE_NORETURN inline void ReportLastErrorFatal(const char *Msg) {
- std::string ErrMsg;
- MakeErrMsg(&ErrMsg, Msg);
- llvm::report_fatal_error(ErrMsg);
-}
-
-template <typename HandleTraits>
-class ScopedHandle {
- typedef typename HandleTraits::handle_type handle_type;
- handle_type Handle;
-
- ScopedHandle(const ScopedHandle &other) = delete;
- void operator=(const ScopedHandle &other) = delete;
-public:
- ScopedHandle()
- : Handle(HandleTraits::GetInvalid()) {}
-
- explicit ScopedHandle(handle_type h)
- : Handle(h) {}
-
- ~ScopedHandle() {
- if (HandleTraits::IsValid(Handle))
- HandleTraits::Close(Handle);
- }
-
- handle_type take() {
- handle_type t = Handle;
- Handle = HandleTraits::GetInvalid();
- return t;
- }
-
- ScopedHandle &operator=(handle_type h) {
- if (HandleTraits::IsValid(Handle))
- HandleTraits::Close(Handle);
- Handle = h;
- return *this;
- }
-
- // True if Handle is valid.
- explicit operator bool() const {
- return HandleTraits::IsValid(Handle) ? true : false;
- }
-
- operator handle_type() const {
- return Handle;
- }
-};
-
-struct CommonHandleTraits {
- typedef HANDLE handle_type;
-
- static handle_type GetInvalid() {
- return INVALID_HANDLE_VALUE;
- }
-
- static void Close(handle_type h) {
- ::CloseHandle(h);
- }
-
- static bool IsValid(handle_type h) {
- return h != GetInvalid();
- }
-};
-
-struct JobHandleTraits : CommonHandleTraits {
- static handle_type GetInvalid() {
- return NULL;
- }
-};
-
-struct CryptContextTraits : CommonHandleTraits {
- typedef HCRYPTPROV handle_type;
-
- static handle_type GetInvalid() {
- return 0;
- }
-
- static void Close(handle_type h) {
- ::CryptReleaseContext(h, 0);
- }
-
- static bool IsValid(handle_type h) {
- return h != GetInvalid();
- }
-};
-
-struct RegTraits : CommonHandleTraits {
- typedef HKEY handle_type;
-
- static handle_type GetInvalid() {
- return NULL;
- }
-
- static void Close(handle_type h) {
- ::RegCloseKey(h);
- }
-
- static bool IsValid(handle_type h) {
- return h != GetInvalid();
- }
-};
-
-struct FindHandleTraits : CommonHandleTraits {
- static void Close(handle_type h) {
- ::FindClose(h);
- }
-};
-
-struct FileHandleTraits : CommonHandleTraits {};
-
-typedef ScopedHandle<CommonHandleTraits> ScopedCommonHandle;
-typedef ScopedHandle<FileHandleTraits> ScopedFileHandle;
-typedef ScopedHandle<CryptContextTraits> ScopedCryptContext;
-typedef ScopedHandle<RegTraits> ScopedRegHandle;
-typedef ScopedHandle<FindHandleTraits> ScopedFindHandle;
-typedef ScopedHandle<JobHandleTraits> ScopedJobHandle;
-
-template <class T>
-class SmallVectorImpl;
-
-template <class T>
-typename SmallVectorImpl<T>::const_pointer
-c_str(SmallVectorImpl<T> &str) {
- str.push_back(0);
- str.pop_back();
- return str.data();
-}
-
-namespace sys {
-
-inline std::chrono::nanoseconds toDuration(FILETIME Time) {
- ULARGE_INTEGER TimeInteger;
- TimeInteger.LowPart = Time.dwLowDateTime;
- TimeInteger.HighPart = Time.dwHighDateTime;
-
- // FILETIME's are # of 100 nanosecond ticks (1/10th of a microsecond)
- return std::chrono::nanoseconds(100 * TimeInteger.QuadPart);
-}
-
-inline TimePoint<> toTimePoint(FILETIME Time) {
- ULARGE_INTEGER TimeInteger;
- TimeInteger.LowPart = Time.dwLowDateTime;
- TimeInteger.HighPart = Time.dwHighDateTime;
-
- // Adjust for different epoch
- TimeInteger.QuadPart -= 11644473600ll * 10000000;
-
- // FILETIME's are # of 100 nanosecond ticks (1/10th of a microsecond)
- return TimePoint<>(std::chrono::nanoseconds(100 * TimeInteger.QuadPart));
-}
-
-inline FILETIME toFILETIME(TimePoint<> TP) {
- ULARGE_INTEGER TimeInteger;
- TimeInteger.QuadPart = TP.time_since_epoch().count() / 100;
- TimeInteger.QuadPart += 11644473600ll * 10000000;
-
- FILETIME Time;
- Time.dwLowDateTime = TimeInteger.LowPart;
- Time.dwHighDateTime = TimeInteger.HighPart;
- return Time;
-}
-
-namespace windows {
-// Returns command line arguments. Unlike arguments given to main(),
-// this function guarantees that the returned arguments are encoded in
-// UTF-8 regardless of the current code page setting.
-std::error_code GetCommandLineArguments(SmallVectorImpl<const char *> &Args,
- BumpPtrAllocator &Alloc);
-
-/// Convert UTF-8 path to a suitable UTF-16 path for use with the Win32 Unicode
-/// File API.
-std::error_code widenPath(const Twine &Path8, SmallVectorImpl<wchar_t> &Path16,
- size_t MaxPathLen = MAX_PATH);
-
-} // end namespace windows
-} // end namespace sys
-} // end namespace llvm.
-
-#endif
-
//===-- llvm-ar.cpp - LLVM archive librarian utility ----------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -386,9 +126,9 @@ MODIFIERS:
)";
static void printHelpMessage() {
- if (Stem.contains_lower("ranlib"))
+ if (Stem.contains_insensitive("ranlib"))
outs() << RanlibHelp;
- else if (Stem.contains_lower("ar"))
+ else if (Stem.contains_insensitive("ar"))
outs() << ArHelp;
}
@@ -530,7 +270,8 @@ static void getArchive() {
}
static object::Archive &readLibrary(const Twine &Library) {
- auto BufOrErr = MemoryBuffer::getFile(Library, -1, false);
+ auto BufOrErr = MemoryBuffer::getFile(Library, /*IsText=*/false,
+ /*RequiresNullTerminator=*/false);
failIfError(BufOrErr.getError(), "could not open library " + Library);
ArchiveBuffers.push_back(std::move(*BufOrErr));
auto LibOrErr =
@@ -1255,8 +996,8 @@ static void performOperation(ArchiveOperation Operation,
static int performOperation(ArchiveOperation Operation,
std::vector<NewArchiveMember> *NewMembers) {
// Create or open the archive object.
- ErrorOr<std::unique_ptr<MemoryBuffer>> Buf =
- MemoryBuffer::getFile(ArchiveName, -1, false);
+ ErrorOr<std::unique_ptr<MemoryBuffer>> Buf = MemoryBuffer::getFile(
+ ArchiveName, /*IsText=*/false, /*RequiresNullTerminator=*/false);
std::error_code EC = Buf.getError();
if (EC && EC != errc::no_such_file_or_directory)
fail("unable to open '" + ArchiveName + "': " + EC.message());
@@ -1522,7 +1263,7 @@ static int ranlib_main(int argc, char **argv) {
extern "C" int ZigLlvmAr_main(int argc, char **argv);
int ZigLlvmAr_main(int argc, char **argv) {
- // ZIG MOD: On windows, InitLLVM calls GetCommandLineW(),
+ // ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(),
// and overwrites the args. We don't want it to do that,
// and we also don't need the signal handlers it installs
// (we have our own already), so we just use llvm_shutdown_obj
@@ -1543,7 +1284,7 @@ int ZigLlvmAr_main(int argc, char **argv) {
// Lib.exe -> lib (see D44808, MSBuild runs Lib.exe)
// dlltool.exe -> dlltool
// arm-pokymllib32-linux-gnueabi-llvm-ar-10 -> ar
- auto I = Stem.rfind_lower(Tool);
+ auto I = Stem.rfind_insensitive(Tool);
return I != StringRef::npos &&
(I + Tool.size() == Stem.size() || !isAlnum(Stem[I + Tool.size()]));
};
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp
index 6e136161a6..11cbf38368 100644
--- a/src/zig_llvm.cpp
+++ b/src/zig_llvm.cpp
@@ -155,10 +155,6 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri
TargetOptions opt;
- // Work around the missing initialization of this field in the default
- // constructor. Use -1 so that the default value is used.
- opt.StackProtectorGuardOffset = (unsigned)-1;
-
opt.FunctionSections = function_sections;
switch (float_abi) {
case ZigLLVMABITypeDefault:
@@ -240,7 +236,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
if (asm_filename) {
std::error_code EC;
- dest_asm_ptr = new(std::nothrow) raw_fd_ostream(asm_filename, EC, sys::fs::F_None);
+ dest_asm_ptr = new(std::nothrow) raw_fd_ostream(asm_filename, EC, sys::fs::OF_None);
if (EC) {
*error_message = strdup((const char *)StringRef(EC.message()).bytes_begin());
return true;
@@ -248,7 +244,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
}
if (bin_filename) {
std::error_code EC;
- dest_bin_ptr = new(std::nothrow) raw_fd_ostream(bin_filename, EC, sys::fs::F_None);
+ dest_bin_ptr = new(std::nothrow) raw_fd_ostream(bin_filename, EC, sys::fs::OF_None);
if (EC) {
*error_message = strdup((const char *)StringRef(EC.message()).bytes_begin());
return true;
@@ -256,7 +252,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
}
if (bitcode_filename) {
std::error_code EC;
- dest_bitcode_ptr = new(std::nothrow) raw_fd_ostream(bitcode_filename, EC, sys::fs::F_None);
+ dest_bitcode_ptr = new(std::nothrow) raw_fd_ostream(bitcode_filename, EC, sys::fs::OF_None);
if (EC) {
*error_message = strdup((const char *)StringRef(EC.message()).bytes_begin());
return true;
@@ -292,7 +288,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
StandardInstrumentations std_instrumentations(false);
std_instrumentations.registerCallbacks(instr_callbacks);
- PassBuilder pass_builder(false, &target_machine, pipeline_opts,
+ PassBuilder pass_builder(&target_machine, pipeline_opts,
None, &instr_callbacks);
using OptimizationLevel = typename PassBuilder::OptimizationLevel;
@@ -1077,31 +1073,6 @@ void ZigLLVMSetModuleCodeModel(LLVMModuleRef module, LLVMCodeModel code_model) {
assert(!JIT);
}
-static AtomicOrdering mapFromLLVMOrdering(LLVMAtomicOrdering Ordering) {
- switch (Ordering) {
- case LLVMAtomicOrderingNotAtomic: return AtomicOrdering::NotAtomic;
- case LLVMAtomicOrderingUnordered: return AtomicOrdering::Unordered;
- case LLVMAtomicOrderingMonotonic: return AtomicOrdering::Monotonic;
- case LLVMAtomicOrderingAcquire: return AtomicOrdering::Acquire;
- case LLVMAtomicOrderingRelease: return AtomicOrdering::Release;
- case LLVMAtomicOrderingAcquireRelease: return AtomicOrdering::AcquireRelease;
- case LLVMAtomicOrderingSequentiallyConsistent: return AtomicOrdering::SequentiallyConsistent;
- }
- abort();
-}
-
-LLVMValueRef ZigLLVMBuildCmpXchg(LLVMBuilderRef builder, LLVMValueRef ptr, LLVMValueRef cmp,
- LLVMValueRef new_val, LLVMAtomicOrdering success_ordering,
- LLVMAtomicOrdering failure_ordering, bool is_weak, bool is_single_threaded)
-{
- AtomicCmpXchgInst *inst = unwrap(builder)->CreateAtomicCmpXchg(unwrap(ptr),
- unwrap(cmp), unwrap(new_val),
- mapFromLLVMOrdering(success_ordering), mapFromLLVMOrdering(failure_ordering),
- is_single_threaded ? SyncScope::SingleThread : SyncScope::System);
- inst->setWeak(is_weak);
- return wrap(inst);
-}
-
LLVMValueRef ZigLLVMBuildNSWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
const char *name)
{
@@ -1296,25 +1267,6 @@ int ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early) {
return lld::wasm::link(args, can_exit_early, llvm::outs(), llvm::errs());
}
-static AtomicRMWInst::BinOp toLLVMRMWBinOp(enum ZigLLVM_AtomicRMWBinOp BinOp) {
- switch (BinOp) {
- default:
- case ZigLLVMAtomicRMWBinOpXchg: return AtomicRMWInst::Xchg;
- case ZigLLVMAtomicRMWBinOpAdd: return AtomicRMWInst::Add;
- case ZigLLVMAtomicRMWBinOpSub: return AtomicRMWInst::Sub;
- case ZigLLVMAtomicRMWBinOpAnd: return AtomicRMWInst::And;
- case ZigLLVMAtomicRMWBinOpNand: return AtomicRMWInst::Nand;
- case ZigLLVMAtomicRMWBinOpOr: return AtomicRMWInst::Or;
- case ZigLLVMAtomicRMWBinOpXor: return AtomicRMWInst::Xor;
- case ZigLLVMAtomicRMWBinOpMax: return AtomicRMWInst::Max;
- case ZigLLVMAtomicRMWBinOpMin: return AtomicRMWInst::Min;
- case ZigLLVMAtomicRMWBinOpUMax: return AtomicRMWInst::UMax;
- case ZigLLVMAtomicRMWBinOpUMin: return AtomicRMWInst::UMin;
- case ZigLLVMAtomicRMWBinOpFAdd: return AtomicRMWInst::FAdd;
- case ZigLLVMAtomicRMWBinOpFSub: return AtomicRMWInst::FSub;
- }
-}
-
inline LLVMAttributeRef wrap(Attribute Attr) {
return reinterpret_cast<LLVMAttributeRef>(Attr.getRawPointer());
}
@@ -1323,16 +1275,6 @@ inline Attribute unwrap(LLVMAttributeRef Attr) {
return Attribute::fromRawPointer(Attr);
}
-LLVMValueRef ZigLLVMBuildAtomicRMW(LLVMBuilderRef B, enum ZigLLVM_AtomicRMWBinOp op,
- LLVMValueRef PTR, LLVMValueRef Val,
- LLVMAtomicOrdering ordering, LLVMBool singleThread)
-{
- AtomicRMWInst::BinOp intop = toLLVMRMWBinOp(op);
- return wrap(unwrap(B)->CreateAtomicRMW(intop, unwrap(PTR),
- unwrap(Val), mapFromLLVMOrdering(ordering),
- singleThread ? SyncScope::SingleThread : SyncScope::System));
-}
-
LLVMValueRef ZigLLVMBuildAndReduce(LLVMBuilderRef B, LLVMValueRef Val) {
return wrap(unwrap(B)->CreateAndReduce(unwrap(Val)));
}
@@ -1389,6 +1331,7 @@ static_assert((Triple::ArchType)ZigLLVM_bpfel == Triple::bpfel, "");
static_assert((Triple::ArchType)ZigLLVM_bpfeb == Triple::bpfeb, "");
static_assert((Triple::ArchType)ZigLLVM_csky == Triple::csky, "");
static_assert((Triple::ArchType)ZigLLVM_hexagon == Triple::hexagon, "");
+static_assert((Triple::ArchType)ZigLLVM_m68k == Triple::m68k, "");
static_assert((Triple::ArchType)ZigLLVM_mips == Triple::mips, "");
static_assert((Triple::ArchType)ZigLLVM_mipsel == Triple::mipsel, "");
static_assert((Triple::ArchType)ZigLLVM_mips64 == Triple::mips64, "");
@@ -1505,6 +1448,7 @@ static_assert((Triple::EnvironmentType)ZigLLVM_Android == Triple::Android, "");
static_assert((Triple::EnvironmentType)ZigLLVM_Musl == Triple::Musl, "");
static_assert((Triple::EnvironmentType)ZigLLVM_MuslEABI == Triple::MuslEABI, "");
static_assert((Triple::EnvironmentType)ZigLLVM_MuslEABIHF == Triple::MuslEABIHF, "");
+static_assert((Triple::EnvironmentType)ZigLLVM_MuslX32 == Triple::MuslX32, "");
static_assert((Triple::EnvironmentType)ZigLLVM_MSVC == Triple::MSVC, "");
static_assert((Triple::EnvironmentType)ZigLLVM_Itanium == Triple::Itanium, "");
static_assert((Triple::EnvironmentType)ZigLLVM_Cygnus == Triple::Cygnus, "");
diff --git a/src/zig_llvm.h b/src/zig_llvm.h
index 49a4c0e8fd..d1e4fa2556 100644
--- a/src/zig_llvm.h
+++ b/src/zig_llvm.h
@@ -149,10 +149,6 @@ ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildUShlSat(LLVMBuilderRef builder, LLVMValueR
ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildSShlSat(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS, const char* name);
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildCmpXchg(LLVMBuilderRef builder, LLVMValueRef ptr, LLVMValueRef cmp,
- LLVMValueRef new_val, LLVMAtomicOrdering success_ordering,
- LLVMAtomicOrdering failure_ordering, bool is_weak, bool is_single_threaded);
-
ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildNSWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
const char *name);
ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildNUWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
@@ -315,6 +311,7 @@ enum ZigLLVM_ArchType {
ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
ZigLLVM_csky, // CSKY: csky
ZigLLVM_hexagon, // Hexagon: hexagon
+ ZigLLVM_m68k, // M68k: Motorola 680x0 family
ZigLLVM_mips, // MIPS: mips, mipsallegrex, mipsr6
ZigLLVM_mipsel, // MIPSEL: mipsel, mipsallegrexe, mipsr6el
ZigLLVM_mips64, // MIPS64: mips64, mips64r6, mipsn32, mipsn32r6
@@ -357,7 +354,6 @@ enum ZigLLVM_ArchType {
ZigLLVM_renderscript32, // 32-bit RenderScript
ZigLLVM_renderscript64, // 64-bit RenderScript
ZigLLVM_ve, // NEC SX-Aurora Vector Engine
-
ZigLLVM_LastArchType = ZigLLVM_ve
};
@@ -442,6 +438,7 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_Musl,
ZigLLVM_MuslEABI,
ZigLLVM_MuslEABIHF,
+ ZigLLVM_MuslX32,
ZigLLVM_MSVC,
ZigLLVM_Itanium,
@@ -449,7 +446,6 @@ enum ZigLLVM_EnvironmentType {
ZigLLVM_CoreCLR,
ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS
ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target.
-
ZigLLVM_LastEnvironmentType = ZigLLVM_MacABI
};
@@ -464,26 +460,6 @@ enum ZigLLVM_ObjectFormatType {
ZigLLVM_XCOFF,
};
-enum ZigLLVM_AtomicRMWBinOp {
- ZigLLVMAtomicRMWBinOpXchg,
- ZigLLVMAtomicRMWBinOpAdd,
- ZigLLVMAtomicRMWBinOpSub,
- ZigLLVMAtomicRMWBinOpAnd,
- ZigLLVMAtomicRMWBinOpNand,
- ZigLLVMAtomicRMWBinOpOr,
- ZigLLVMAtomicRMWBinOpXor,
- ZigLLVMAtomicRMWBinOpMax,
- ZigLLVMAtomicRMWBinOpMin,
- ZigLLVMAtomicRMWBinOpUMax,
- ZigLLVMAtomicRMWBinOpUMin,
- ZigLLVMAtomicRMWBinOpFAdd,
- ZigLLVMAtomicRMWBinOpFSub,
-};
-
-LLVMValueRef ZigLLVMBuildAtomicRMW(LLVMBuilderRef B, enum ZigLLVM_AtomicRMWBinOp op,
- LLVMValueRef PTR, LLVMValueRef Val,
- LLVMAtomicOrdering ordering, LLVMBool singleThread);
-
LLVMValueRef ZigLLVMBuildAndReduce(LLVMBuilderRef B, LLVMValueRef Val);
LLVMValueRef ZigLLVMBuildOrReduce(LLVMBuilderRef B, LLVMValueRef Val);
LLVMValueRef ZigLLVMBuildXorReduce(LLVMBuilderRef B, LLVMValueRef Val);