Skip to content

Commit

Permalink
Auto merge of #135763 - nikic:llvm-20, r=<try>
Browse files Browse the repository at this point in the history
Update to LLVM 20

r? `@ghost`
  • Loading branch information
bors committed Jan 20, 2025
2 parents ecda83b + fc35e8c commit 79efb5f
Show file tree
Hide file tree
Showing 14 changed files with 108 additions and 18 deletions.
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
shallow = true
[submodule "src/llvm-project"]
path = src/llvm-project
url = https://github.com/rust-lang/llvm-project.git
branch = rustc/19.1-2024-12-03
url = https://github.com/nikic/llvm-project.git
branch = rust-llvm-20
shallow = true
[submodule "src/doc/embedded-book"]
path = src/doc/embedded-book
Expand Down
2 changes: 1 addition & 1 deletion src/llvm-project
19 changes: 13 additions & 6 deletions tests/assembly/x86_64-bigint-helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
//@ assembly-output: emit-asm
//@ compile-flags: --crate-type=lib -O -C target-cpu=x86-64-v4
//@ compile-flags: -C llvm-args=-x86-asm-syntax=intel
//@ revisions: llvm-pre-20 llvm-20
//@ [llvm-20] min-llvm-version: 20
//@ [llvm-pre-20] max-llvm-major-version: 19

#![no_std]
#![feature(bigint_helper_methods)]
Expand All @@ -20,12 +23,16 @@ pub unsafe extern "sysv64" fn bigint_chain_carrying_add(
n: usize,
mut carry: bool,
) -> bool {
// CHECK: mov [[TEMP:r..]], qword ptr [rsi + 8*[[IND:r..]] + 8]
// CHECK: adc [[TEMP]], qword ptr [rdx + 8*[[IND]] + 8]
// CHECK: mov qword ptr [rdi + 8*[[IND]] + 8], [[TEMP]]
// CHECK: mov [[TEMP]], qword ptr [rsi + 8*[[IND]] + 16]
// CHECK: adc [[TEMP]], qword ptr [rdx + 8*[[IND]] + 16]
// CHECK: mov qword ptr [rdi + 8*[[IND]] + 16], [[TEMP]]
// llvm-pre-20: mov [[TEMP:r..]], qword ptr [rsi + 8*[[IND:r..]] + 8]
// llvm-pre-20: adc [[TEMP]], qword ptr [rdx + 8*[[IND]] + 8]
// llvm-pre-20: mov qword ptr [rdi + 8*[[IND]] + 8], [[TEMP]]
// llvm-pre-20: mov [[TEMP]], qword ptr [rsi + 8*[[IND]] + 16]
// llvm-pre-20: adc [[TEMP]], qword ptr [rdx + 8*[[IND]] + 16]
// llvm-pre-20: mov qword ptr [rdi + 8*[[IND]] + 16], [[TEMP]]
// llvm-20: adc [[TEMP:r..]], qword ptr [rdx + 8*[[IND:r..]]]
// llvm-20: mov qword ptr [rdi + 8*[[IND]]], [[TEMP]]
// llvm-20: mov [[TEMP]], qword ptr [rsi + 8*[[IND]] + 8]
// llvm-20: adc [[TEMP]], qword ptr [rdx + 8*[[IND]] + 8]
for i in 0..n {
(*dest.add(i), carry) = u64::carrying_add(*src1.add(i), *src2.add(i), carry);
}
Expand Down
43 changes: 43 additions & 0 deletions tests/ui/abi/sparcv8plus-llvm19.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//@ revisions: sparc sparcv8plus sparc_cpu_v9 sparc_feature_v8plus sparc_cpu_v9_feature_v8plus
//@[sparc] compile-flags: --target sparc-unknown-none-elf
//@[sparc] needs-llvm-components: sparc
//@[sparcv8plus] compile-flags: --target sparc-unknown-linux-gnu
//@[sparcv8plus] needs-llvm-components: sparc
//@[sparc_cpu_v9] compile-flags: --target sparc-unknown-none-elf -C target-cpu=v9
//@[sparc_cpu_v9] needs-llvm-components: sparc
//@[sparc_feature_v8plus] compile-flags: --target sparc-unknown-none-elf -C target-feature=+v8plus
//@[sparc_feature_v8plus] needs-llvm-components: sparc
//@[sparc_cpu_v9_feature_v8plus] compile-flags: --target sparc-unknown-none-elf -C target-cpu=v9 -C target-feature=+v8plus
//@[sparc_cpu_v9_feature_v8plus] needs-llvm-components: sparc
//@ exact-llvm-major-version: 19

#![crate_type = "rlib"]
#![feature(no_core, rustc_attrs, lang_items)]
#![no_core]

#[lang = "sized"]
trait Sized {}
#[lang = "copy"]
trait Copy {}

#[rustc_builtin_macro]
macro_rules! compile_error {
() => {};
}

#[cfg(all(not(target_feature = "v8plus"), not(target_feature = "v9")))]
compile_error!("-v8plus,-v9");
//[sparc]~^ ERROR -v8plus,-v9

// FIXME: sparc_cpu_v9 should be in "-v8plus,+v9" group (fixed in LLVM 20)
#[cfg(all(target_feature = "v8plus", target_feature = "v9"))]
compile_error!("+v8plus,+v9");
//[sparcv8plus,sparc_cpu_v9_feature_v8plus,sparc_cpu_v9]~^ ERROR +v8plus,+v9

// FIXME: should be rejected
#[cfg(all(target_feature = "v8plus", not(target_feature = "v9")))]
compile_error!("+v8plus,-v9 (FIXME)");
//[sparc_feature_v8plus]~^ ERROR +v8plus,-v9 (FIXME)

#[cfg(all(not(target_feature = "v8plus"), target_feature = "v9"))]
compile_error!("-v8plus,+v9");
8 changes: 8 additions & 0 deletions tests/ui/abi/sparcv8plus-llvm19.sparc.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error: -v8plus,-v9
--> $DIR/sparcv8plus.rs:29:1
|
LL | compile_error!("-v8plus,-v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

8 changes: 8 additions & 0 deletions tests/ui/abi/sparcv8plus-llvm19.sparc_cpu_v9.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error: +v8plus,+v9
--> $DIR/sparcv8plus.rs:34:1
|
LL | compile_error!("+v8plus,+v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error: +v8plus,+v9
--> $DIR/sparcv8plus.rs:34:1
|
LL | compile_error!("+v8plus,+v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

8 changes: 8 additions & 0 deletions tests/ui/abi/sparcv8plus-llvm19.sparc_feature_v8plus.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error: +v8plus,-v9 (FIXME)
--> $DIR/sparcv8plus.rs:39:1
|
LL | compile_error!("+v8plus,-v9 (FIXME)");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

8 changes: 8 additions & 0 deletions tests/ui/abi/sparcv8plus-llvm19.sparcv8plus.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error: +v8plus,+v9
--> $DIR/sparcv8plus.rs:34:1
|
LL | compile_error!("+v8plus,+v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

6 changes: 3 additions & 3 deletions tests/ui/abi/sparcv8plus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
//@[sparc_feature_v8plus] needs-llvm-components: sparc
//@[sparc_cpu_v9_feature_v8plus] compile-flags: --target sparc-unknown-none-elf -C target-cpu=v9 -C target-feature=+v8plus
//@[sparc_cpu_v9_feature_v8plus] needs-llvm-components: sparc
//@ min-llvm-version: 19
//@ min-llvm-version: 20

#![crate_type = "rlib"]
#![feature(no_core, rustc_attrs, lang_items)]
Expand All @@ -29,10 +29,9 @@ macro_rules! compile_error {
compile_error!("-v8plus,-v9");
//[sparc]~^ ERROR -v8plus,-v9

// FIXME: sparc_cpu_v9 should be in "-v8plus,+v9" group (fixed in LLVM 20)
#[cfg(all(target_feature = "v8plus", target_feature = "v9"))]
compile_error!("+v8plus,+v9");
//[sparcv8plus,sparc_cpu_v9_feature_v8plus,sparc_cpu_v9]~^ ERROR +v8plus,+v9
//[sparcv8plus,sparc_cpu_v9_feature_v8plus]~^ ERROR +v8plus,+v9

// FIXME: should be rejected
#[cfg(all(target_feature = "v8plus", not(target_feature = "v9")))]
Expand All @@ -41,3 +40,4 @@ compile_error!("+v8plus,-v9 (FIXME)");

#[cfg(all(not(target_feature = "v8plus"), target_feature = "v9"))]
compile_error!("-v8plus,+v9");
//[sparc_cpu_v9]~^ ERROR -v8plus,+v9
6 changes: 3 additions & 3 deletions tests/ui/abi/sparcv8plus.sparc_cpu_v9.stderr
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
error: +v8plus,+v9
--> $DIR/sparcv8plus.rs:34:1
error: -v8plus,+v9
--> $DIR/sparcv8plus.rs:42:1
|
LL | compile_error!("+v8plus,+v9");
LL | compile_error!("-v8plus,+v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error: +v8plus,+v9
--> $DIR/sparcv8plus.rs:34:1
--> $DIR/sparcv8plus.rs:33:1
|
LL | compile_error!("+v8plus,+v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/abi/sparcv8plus.sparc_feature_v8plus.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error: +v8plus,-v9 (FIXME)
--> $DIR/sparcv8plus.rs:39:1
--> $DIR/sparcv8plus.rs:38:1
|
LL | compile_error!("+v8plus,-v9 (FIXME)");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/abi/sparcv8plus.sparcv8plus.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error: +v8plus,+v9
--> $DIR/sparcv8plus.rs:34:1
--> $DIR/sparcv8plus.rs:33:1
|
LL | compile_error!("+v8plus,+v9");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down

0 comments on commit 79efb5f

Please sign in to comment.