-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
[WIP] LLVM 19 #21183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] LLVM 19 #21183
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
Can test on an M3 Pro, give me a couple hours. |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
adf34b7
to
aeaefba
Compare
This comment was marked as resolved.
This comment was marked as resolved.
|
This branch now passes the full test suite on Linux. It would be great if someone with a Windows dev environment already set up would be willing to build and test the branch. |
No worries! Both changes look good. |
Just FYI, 19.1.0-final got pushed back by 2 weeks: https://discourse.llvm.org/t/llvm-19-1-0-rc4-released/81039 |
Co-authored-by: David Rubin <[email protected]>
Co-authored-by: David Rubin <[email protected]>
* Moved the tz.cpp patch to experimental/tzdb.cpp. * Extended the __config_site patch to a few more files.
* Add `ProcessorAlias` support. * Bump output buffer size. * Include `i` extension in RISC-V baselines. * Update evaluation branch quota for RISC-V. * Retain some CPU features that LLVM removed. * Flatten more 'meta-features' used for CPU models. * Remove some superfluous dependencies.
This is no longer supported in LLVM 19; fall back to the generic code path.
…ily. TODO: Figure out what to do about this. Context: https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179 After changing our emit strategy for packed structs to just write to memory: test-behavior └─ run test behavior-x86_64-linux.6.5...6.5-gnu.2.38-x86_64-ReleaseSmall-libc └─ zig test ReleaseSmall native failure error: thread 44346 panic: attempt to unwrap error: ReinterpretDeclRef /home/alexrp/Source/zig/src/Value.zig:571:42: 0x1f33514 in writeToPackedMemory (zig) if (!val.ptrHasIntAddr(mod)) return error.ReinterpretDeclRef; ^ /home/alexrp/Source/zig/src/Value.zig:548:17: 0x1f32f45 in writeToPackedMemory (zig) try field_val.writeToPackedMemory(field_ty, pt, buffer, bit_offset + bits); ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:3706:89: 0x1ca2366 in lowerValueToInt (zig) val.writeToPackedMemory(ty, pt, std.mem.sliceAsBytes(limbs)[0..bytes], 0) catch unreachable; ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:4083:49: 0x1a33800 in lowerValue (zig) return o.lowerValueToInt(llvm_int_ty, arg_val); ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:4798:42: 0x2ec4e6a in resolveValue (zig) const llvm_val = try o.lowerValue(val.toIntern()); ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:4789:47: 0x2ec4bd3 in resolveInst (zig) const llvm_val = try self.resolveValue((try self.air.value(inst, self.ng.object.pt)).?); ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:8996:49: 0x2f022e9 in airStore (zig) const src_operand = try self.resolveInst(bin_op.rhs); ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:4967:53: 0x29f7260 in genBody (zig) .store => try self.airStore(inst, false), ^ /home/alexrp/Source/zig/src/codegen/llvm.zig:1682:19: 0x29f147c in updateFunc (zig) fg.genBody(air.getMainBody()) catch |err| switch (err) { ^ /home/alexrp/Source/zig/src/link/Elf.zig:2916:70: 0x2eb0f15 in updateFunc (zig) if (self.llvm_object) |llvm_object| return llvm_object.updateFunc(pt, func_index, air, liveness); ^ /home/alexrp/Source/zig/src/link.zig:426:82: 0x29fbef5 in updateFunc (zig) return @as(*tag.Type(), @fieldParentPtr("base", base)).updateFunc(pt, func_index, air, liveness); ^ /home/alexrp/Source/zig/src/Zcu/PerThread.zig:876:22: 0x25f3d9e in linkerUpdateFunc (zig) lf.updateFunc(pt, func_index, air, liveness) catch |err| switch (err) { ^ /home/alexrp/Source/zig/src/Compilation.zig:3975:36: 0x21768fe in processOneCodegenJob (zig) try pt.linkerUpdateFunc(func.func, func.air); ^ /home/alexrp/Source/zig/src/Compilation.zig:3928:36: 0x2176541 in queueCodegenJob (zig) return processOneCodegenJob(tid, comp, codegen_job); ^ /home/alexrp/Source/zig/src/Compilation.zig:3682:37: 0x1e9d37f in processOneJob (zig) try comp.queueCodegenJob(tid, .{ .func = .{ ^ /home/alexrp/Source/zig/src/Compilation.zig:3638:30: 0x1c1f6c1 in performAllTheWorkInner (zig) try processOneJob(@intFromEnum(Zcu.PerThread.Id.main), comp, job, main_progress_node); ^ /home/alexrp/Source/zig/src/Compilation.zig:3508:36: 0x1ab6e10 in performAllTheWork (zig) try comp.performAllTheWorkInner(main_progress_node); ^ /home/alexrp/Source/zig/src/Compilation.zig:2269:31: 0x1ab25b9 in update (zig) try comp.performAllTheWork(main_progress_node); ^ /home/alexrp/Source/zig/src/main.zig:4156:32: 0x1b01351 in serve (zig) try comp.update(main_progress_node); ^ /home/alexrp/Source/zig/src/main.zig:3453:22: 0x1b20d7c in buildOutputType (zig) try serve( ^ /home/alexrp/Source/zig/src/main.zig:267:31: 0x1969c54 in mainArgs (zig) return buildOutputType(gpa, arena, args, .zig_test); ^ /home/alexrp/Source/zig/src/main.zig:199:20: 0x19669c5 in main (zig) return mainArgs(gpa, arena, args); ^ /home/alexrp/Source/zig/lib/std/start.zig:614:37: 0x19664ee in main (zig) const result = root.main() catch |err| { ^ ../sysdeps/nptl/libc_start_call_main.h:58:16: 0x7a453da2814f in __libc_start_call_main (../sysdeps/x86/libc-start.c) ../csu/libc-start.c:360:3: 0x7a453da28208 in __libc_start_main_impl (../sysdeps/x86/libc-start.c) ???:?:?: 0x1966134 in ??? (???) ???:?:?: 0x0 in ??? (???)
This reverts commit 234693b.
This partially reverts commit ab4d6bf.
Merged into |
Merged into |
Currently using LLVM 19.1.0-rc3. Following the documented process.
Things to be done:
ProcessorAlias
support totools/update_cpu_features.zig
.lib/std/Target/aarch64.zig
, which in turn breaks macOS builds.bridgeos
tag tostd.Target.Os.Tag
.zig build test-link
.@bitCast of packed struct containing pointer
test.Other than the above, we're in relatively good shape. The full test suite builds successfully for all platforms
(with the CPU model caveat above)and, other than thetest-link
failures, runs successfully for all actively-tested Linux triples (with QEMU and multi-glibc) and macOS. Still need to run tests on Windows.Closes #12011.
Closes #16177.
Closes #17381.
Closes #17514.
Closes #17902.
Closes #18872.
Closes #21064.
Closes #21336.
CI results completely irrelevant at this stage.